diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 620981e664..19de7789ef 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -67,7 +67,7 @@ The challenge hints and articles will still be available on the forum which we h We do intend to make the curriculum available in more languages, right now we do not have a timeline for this. -We will begin by making the curriculum available in *Chinese* first. This will help us understand the caveats and the streamline the development workflows. China is one of the largest demographic regions in terms of our non-english audience. It is hence an ideal candiate for the internationalization (i18n). We currently have hundreds of thousands of users using an old version of the platform. +We will begin by making the curriculum available in *Chinese* first. This will help us understand the caveats and the streamline the development workflows. China is one of the largest demographic regions in terms of our non-english audience. It is hence an ideal candidate for the internationalization (i18n). We currently have hundreds of thousands of users using an old version of the platform. The next languages to follow would be *Arabic, Portuguese, Russian and Spanish* in no particular order. For Portuguese and Spanish we will focus on Latin America as our target demographic region based on the audience we have. diff --git a/api-server/public/json/bootcamps.json b/api-server/public/json/bootcamps.json index 19b016607c..1bbbaea491 100644 --- a/api-server/public/json/bootcamps.json +++ b/api-server/public/json/bootcamps.json @@ -39,7 +39,7 @@ "chicago" ] }, { - "name": "General Asssembly", + "name": "General Assembly", "cost": "11500", "housing": "500", "finance": true, diff --git a/api-server/server/boot/certificate.js b/api-server/server/boot/certificate.js index 88cb48772d..81e4768bfd 100644 --- a/api-server/server/boot/certificate.js +++ b/api-server/server/boot/certificate.js @@ -70,7 +70,7 @@ function ifNoSuperBlock404(req, res, next) { return res.status(404).end(); } -const renderCertifedEmail = loopback.template( +const renderCertifiedEmail = loopback.template( path.join(__dirname, '..', 'views', 'emails', 'certified.ejs') ); @@ -186,7 +186,7 @@ function sendCertifiedEmail( Congratulations on completing all of the freeCodeCamp certifications! `, - text: renderCertifedEmail({ + text: renderCertifiedEmail({ username, name }) diff --git a/api-server/server/boot/randomAPIs.js b/api-server/server/boot/randomAPIs.js index 4990728ff5..2c9d8e3efe 100644 --- a/api-server/server/boot/randomAPIs.js +++ b/api-server/server/boot/randomAPIs.js @@ -13,8 +13,8 @@ module.exports = function(app) { const User = app.models.User; router.get('/api/github', githubCalls); - router.get('/u/:email', unsubscribeDepricated); - router.get('/unsubscribe/:email', unsubscribeDepricated); + router.get('/u/:email', unsubscribeDeprecated); + router.get('/unsubscribe/:email', unsubscribeDeprecated); router.get('/ue/:unsubscribeId', unsubscribeById); router.get( '/the-fastest-web-page-on-the-internet', @@ -48,7 +48,7 @@ module.exports = function(app) { }); } - function unsubscribeDepricated(req, res) { + function unsubscribeDeprecated(req, res) { req.flash( 'info', 'We are no longer able to process this unsubscription request. ' + diff --git a/api-server/server/boot_tests/challenge.test.js b/api-server/server/boot_tests/challenge.test.js index 8f574698c3..a481fdd23d 100644 --- a/api-server/server/boot_tests/challenge.test.js +++ b/api-server/server/boot_tests/challenge.test.js @@ -164,7 +164,7 @@ describe('boot/challenge', () => { expect(result).toEqual(requestedChallengeUrl); }); - it('can handle non-url-complient challenge names', () => { + it('can handle non-url-compliant challenge names', () => { const challenge = { ...mockChallenge, superBlock: 'my awesome' }; const expected = '/learn/my-awesome/actual/challenge'; const result = buildChallengeUrl(challenge); diff --git a/api-server/server/middlewares/error-reporter.js b/api-server/server/middlewares/error-reporter.js index f3d338d421..d9af236994 100644 --- a/api-server/server/middlewares/error-reporter.js +++ b/api-server/server/middlewares/error-reporter.js @@ -33,7 +33,7 @@ export function reportError(err) { : console.error(err); } -export default function errrorReporter() { +export default function errorReporter() { if ( process.env.FREECODECAMP_NODE_ENV !== 'production' && process.env.ERROR_REPORTER === 'true' diff --git a/api-server/server/models/donation.js b/api-server/server/models/donation.js index 6b8db5ea89..5f43c8067e 100644 --- a/api-server/server/models/donation.js +++ b/api-server/server/models/donation.js @@ -43,7 +43,7 @@ export default function(Donation) { function seedTheCache() { return new Promise((resolve, reject) => Observable.defer(activeDonationsQuery$).subscribe(count => { - log('activeDonator count: %d', count); + log('activeDonor count: %d', count); activeDonationCountCache.update(() => count); return resolve(); }, reject) @@ -55,7 +55,7 @@ export default function(Donation) { () => Observable.defer(activeDonationsQuery$).subscribe( count => { - log('activeDonator count: %d', count); + log('activeDonor count: %d', count); return activeDonationCountCache.update(() => count); }, err => { diff --git a/api-server/server/models/donation.json b/api-server/server/models/donation.json index 1ae4684821..c1280e8db3 100644 --- a/api-server/server/models/donation.json +++ b/api-server/server/models/donation.json @@ -1,6 +1,6 @@ { "name": "Donation", - "description": "A representaion of a donation to freeCodeCamp", + "description": "A representation of a donation to freeCodeCamp", "plural": "donations", "base": "PersistedModel", "idInjection": true, @@ -46,7 +46,7 @@ "customerId": { "type": "string", "required": true, - "description": "The providers reference for the donator" + "description": "The providers reference for the donor" } }, "validations": [ diff --git a/client/plugins/gatsby-remark-node-identity/gatsby-node.js b/client/plugins/gatsby-remark-node-identity/gatsby-node.js index 531ca54ef5..c92927b05e 100644 --- a/client/plugins/gatsby-remark-node-identity/gatsby-node.js +++ b/client/plugins/gatsby-remark-node-identity/gatsby-node.js @@ -7,7 +7,7 @@ exports.onCreateNode = function remarkNodeIdentityOnCreateNode( 'Please supply a predicate function to `gatsby-plugin-identity`' ); } - if (typeof identity !== 'string' || identity.lenght === 0) { + if (typeof identity !== 'string' || identity.length === 0) { reporter.panic( '`gatsby-plugin-identity` requires an identify string to add to nodes ' + 'that match the predicate' diff --git a/client/src/components/AppMountNotifier.js b/client/src/components/AppMountNotifier.js index 5d921c577c..af32321c71 100644 --- a/client/src/components/AppMountNotifier.js +++ b/client/src/components/AppMountNotifier.js @@ -9,7 +9,7 @@ const mapStateToProps = () => ({}); const mapDispatchToProps = dispatch => bindActionCreators({ appMount }, dispatch); -class AppMountNotifer extends Component { +class AppMountNotifier extends Component { componentDidMount() { return this.props.appMount(); } @@ -18,8 +18,8 @@ class AppMountNotifer extends Component { } } -AppMountNotifer.displayName = 'AppMountNotifier'; -AppMountNotifer.propTypes = { +AppMountNotifier.displayName = 'AppMountNotifier'; +AppMountNotifier.propTypes = { appMount: PropTypes.func.isRequired, render: PropTypes.func.isRequired }; @@ -27,4 +27,4 @@ AppMountNotifer.propTypes = { export default connect( mapStateToProps, mapDispatchToProps -)(AppMountNotifer); +)(AppMountNotifier); diff --git a/client/src/components/Donation/DonateFormChildViewForHOC.js b/client/src/components/Donation/DonateFormChildViewForHOC.js index db57f7e9a7..8e73e1b578 100644 --- a/client/src/components/Donation/DonateFormChildViewForHOC.js +++ b/client/src/components/Donation/DonateFormChildViewForHOC.js @@ -53,7 +53,7 @@ class DonateFormChildViewForHOC extends Component { ...initialState, donationAmount: this.props.donationAmount, donationDuration: this.props.donationDuration, - isSubmitionValid: null, + isSubmissionValid: null, email: null, isEmailValid: true, isFormValid: false @@ -96,12 +96,12 @@ class DonateFormChildViewForHOC extends Component { if ((!isEmailValid, !isFormValid)) { return this.setState({ - isSubmitionValid: false + isSubmissionValid: false }); } this.setState({ - isSubmitionValid: null + isSubmissionValid: null }); const email = this.getUserEmail(); @@ -228,12 +228,12 @@ class DonateFormChildViewForHOC extends Component { } renderDonateForm() { - const { isEmailValid, isSubmitionValid, email } = this.state; + const { isEmailValid, isSubmissionValid, email } = this.state; const { getDonationButtonLabel, theme, defaultTheme } = this.props; return (
-
{isSubmitionValid !== null ? this.renderErrorMessage() : ''}
+
{isSubmissionValid !== null ? this.renderErrorMessage() : ''}
Email (we'll send you a tax-deductible donation receipt): diff --git a/client/src/components/Intro/Intro.test.js b/client/src/components/Intro/Intro.test.js index d1708aa44b..1a5c9636de 100644 --- a/client/src/components/Intro/Intro.test.js +++ b/client/src/components/Intro/Intro.test.js @@ -24,7 +24,7 @@ describe('', () => { const loggedInProps = { complete: true, isSignedIn: true, - name: 'Developement User', + name: 'Development User', navigate: () => {}, pending: false, slug: '/', diff --git a/client/src/components/Map/index.js b/client/src/components/Map/index.js index de1c165d5c..c0635f9467 100644 --- a/client/src/components/Map/index.js +++ b/client/src/components/Map/index.js @@ -81,7 +81,7 @@ export class Map extends Component { node = nodes.find(node => dasherize(node.superBlock) === hash); } - // whitout hash only expand when signed in + // without hash only expand when signed in if (isSignedIn) { // if there is no hash or the hash did not match any challenge superblock // and there was a currentChallengeId diff --git a/client/src/components/settings/Certification.js b/client/src/components/settings/Certification.js index de8073e013..efcc7e26ad 100644 --- a/client/src/components/settings/Certification.js +++ b/client/src/components/settings/Certification.js @@ -326,7 +326,7 @@ export class CertificationSettings extends Component { // filter the new solutions that need to be updated const completedChallenges = this.props.completedChallenges; let challengesToUpdate = {}; - let newChalleneFound = true; + let newChallengeFound = true; let oldSubmissions = 0; for (let submittedChal of Object.keys(idsToSolutions)) { for (let i of completedChallenges) { @@ -335,14 +335,14 @@ export class CertificationSettings extends Component { challengesToUpdate[submittedChal] = idsToSolutions[submittedChal]; } oldSubmissions++; - newChalleneFound = false; + newChallengeFound = false; break; } } - if (newChalleneFound && idsToSolutions[submittedChal] !== '') { + if (newChallengeFound && idsToSolutions[submittedChal] !== '') { challengesToUpdate[submittedChal] = idsToSolutions[submittedChal]; } - newChalleneFound = true; + newChallengeFound = true; } const valuesSaved = values(formChalObj) @@ -536,7 +536,7 @@ export class CertificationSettings extends Component { solutionViewer: { files, solution, isOpen, projectTitle } } = this.state; return ( -
+
Certifications {certifications.map(this.renderCertifications)} {this.renderFullStack()} diff --git a/client/src/components/settings/Certification.test.js b/client/src/components/settings/Certification.test.js index 9e0ef74850..b59b1c0eed 100644 --- a/client/src/components/settings/Certification.test.js +++ b/client/src/components/settings/Certification.test.js @@ -9,7 +9,7 @@ import { CertificationSettings } from './Certification'; describe('', () => { // shallow rendering does not render children component // form buttons are not included in shallow render - it('Should render show cert button for calimed legacy cert', () => { + it('Should render show cert button for claimed legacy cert', () => { const { container } = render( ); @@ -19,7 +19,7 @@ describe('', () => { ).toHaveTextContent('Show Certification'); }); - it('Should link show cert button to the calimed legacy cert', () => { + it('Should link show cert button to the claimed legacy cert', () => { const { container } = render( ); @@ -28,7 +28,7 @@ describe('', () => { container.querySelector('#button-legacy-data-visualization') ).toHaveAttribute( 'href', - '/certification/developementuser/legacy-data-visualization' + '/certification/developmentuser/legacy-data-visualization' ); }); @@ -152,7 +152,7 @@ const defaultTestProps = { isJsAlgoDataStructCert: false, isRespWebDesignCert: false, updateLegacyCert: () => {}, - username: 'developementuser', + username: 'developmentuser', verifyCert: () => {}, errors: {}, submit: () => {} diff --git a/client/src/components/settings/Portfolio.js b/client/src/components/settings/Portfolio.js index c47434e25d..322573ba93 100644 --- a/client/src/components/settings/Portfolio.js +++ b/client/src/components/settings/Portfolio.js @@ -65,15 +65,15 @@ class PortfolioSettings extends Component { const userInput = e.target.value.slice(); return this.setState(state => { const { portfolio: currentPortfolio } = state; - const mutatblePortfolio = currentPortfolio.slice(0); + const mutablePortfolio = currentPortfolio.slice(0); const index = findIndex(currentPortfolio, p => p.id === id); - mutatblePortfolio[index] = { - ...mutatblePortfolio[index], + mutablePortfolio[index] = { + ...mutablePortfolio[index], [key]: userInput }; - return { portfolio: mutatblePortfolio }; + return { portfolio: mutablePortfolio }; }); }; @@ -135,14 +135,14 @@ class PortfolioSettings extends Component { if (charsLeft < 0) { return { state: 'error', - message: 'There is a maxiumum limit of 288 characters, you have 0 left' + message: 'There is a maximum limit of 288 characters, you have 0 left' }; } if (charsLeft < 41 && charsLeft > 0) { return { state: 'warning', message: - 'There is a maxiumum limit of 288 characters, you have ' + + 'There is a maximum limit of 288 characters, you have ' + charsLeft + ' left' }; diff --git a/client/src/components/settings/certification.css b/client/src/components/settings/certification.css index bc26e47889..855a09b15f 100644 --- a/client/src/components/settings/certification.css +++ b/client/src/components/settings/certification.css @@ -1,14 +1,14 @@ -#certifcation-settings .solutions-dropdown, -#certifcation-settings .solutions-dropdown .dropdown-menu, -#certifcation-settings .solutions-dropdown .dropdown { +#certification-settings .solutions-dropdown, +#certification-settings .solutions-dropdown .dropdown-menu, +#certification-settings .solutions-dropdown .dropdown { width: 100%; } -#certifcation-settings tr { +#certification-settings tr { height: 57px; } -#certifcation-settings .project-title > a { +#certification-settings .project-title > a { line-height: 40px; } diff --git a/client/src/pages/learn/data-visualization/data-visualization-projects/index.md b/client/src/pages/learn/data-visualization/data-visualization-projects/index.md index 20f87f20ab..5abf6aa35a 100644 --- a/client/src/pages/learn/data-visualization/data-visualization-projects/index.md +++ b/client/src/pages/learn/data-visualization/data-visualization-projects/index.md @@ -5,6 +5,6 @@ superBlock: Data Visualization --- ## Introduction to the Data Visualization Projects -These challenges let you test your data visualzation skills and how to transfer and use data using AJAX technologies. +These challenges let you test your data visualization skills and how to transfer and use data using AJAX technologies. By the end of this, you would have 5 projects to showcase your data visualization skills that you can show off to friends, family, employers, etc. Have fun and remember to use the [Read-Search-Ask](https://www.freecodecamp.org/forum/t/how-to-get-help-when-you-are-stuck-coding/19514) method if you get stuck. diff --git a/client/src/redux/failed-updates-epic.js b/client/src/redux/failed-updates-epic.js index 64b7270f03..ad21f337f3 100644 --- a/client/src/redux/failed-updates-epic.js +++ b/client/src/redux/failed-updates-epic.js @@ -27,7 +27,7 @@ function delay(time = 0, fn) { return setTimeout(fn, time); } -// check if backenEndProjects have a solution +// check if backendEndProjects have a solution const isSubmitable = failure => failure.payload.challengeType !== backEndProject || failure.payload.solution; @@ -64,7 +64,7 @@ function failedUpdateEpic(action$, state$) { const batch = failures.map((update, i) => { // we stagger the updates here so we don't hammer the server // ********************************************************* - // progressivly increase additional delay by the amount of updates + // progressively increase additional delay by the amount of updates // 1st: 100ms delay // 2nd: 200ms delay // 3rd: 400ms delay diff --git a/client/src/redux/failed-updates-epic.test.js b/client/src/redux/failed-updates-epic.test.js index 2fa6c6c16b..45607e9ee5 100644 --- a/client/src/redux/failed-updates-epic.test.js +++ b/client/src/redux/failed-updates-epic.test.js @@ -9,8 +9,8 @@ import store from 'store'; const key = 'fcc-failed-updates'; describe('failed-updates-epic', () => { - it('should remove falty backend challenges from localStorage', async () => { - store.set(key, failedSubmitions); + it('should remove faulty backend challenges from localStorage', async () => { + store.set(key, failedSubmissions); const action$ = ActionsObservable.of({ type: types.updateComplete @@ -31,7 +31,7 @@ const initialState = { } }; -const failedSubmitions = [ +const failedSubmissions = [ { endpoint: '/project-completed', id: 'b1507944-7310-479f-bb59-ccafac488592', @@ -59,4 +59,4 @@ const failedSubmitions = [ } ]; -const submitableChallenges = failedSubmitions.slice(1); +const submitableChallenges = failedSubmissions.slice(1); diff --git a/client/src/redux/settings/settings-sagas.js b/client/src/redux/settings/settings-sagas.js index a5439056f7..61470c57d1 100644 --- a/client/src/redux/settings/settings-sagas.js +++ b/client/src/redux/settings/settings-sagas.js @@ -44,7 +44,7 @@ function* submitNewUsernameSaga({ payload: username }) { } } -function* sumbitProfileUISaga({ payload }) { +function* submitProfileUISaga({ payload }) { try { const { data: response } = yield call(putUpdateMyProfileUI, payload); yield put(submitProfileUIComplete({ ...response, payload })); @@ -94,7 +94,7 @@ export function createSettingsSagas(types) { takeLatest(types.submitNewAbout, submitNewAboutSaga), takeLatest(types.submitNewUsername, submitNewUsernameSaga), takeLatest(types.validateUsername, validateUsernameSaga), - takeLatest(types.submitProfileUI, sumbitProfileUISaga), + takeLatest(types.submitProfileUI, submitProfileUISaga), takeEvery(types.verifyCert, verifyCertificationSaga) ]; } diff --git a/client/src/resources/certProjectMap.js b/client/src/resources/certProjectMap.js index e74cb9fb92..e9130ca9dc 100644 --- a/client/src/resources/certProjectMap.js +++ b/client/src/resources/certProjectMap.js @@ -36,7 +36,7 @@ export const legacyProjectMap = { }, { id: 'bd7158d8c442eddfaeb5bd17', - title: 'Build a Javascript Calculator', + title: 'Build a JavaScript Calculator', link: `${legacyFrontEndBase}/build-a-javascript-calculator`, superBlock: 'legacy-front-end' }, diff --git a/client/utils/formatting.js b/client/utils/formatting.js index a7a19a57e8..f6679d5ddf 100644 --- a/client/utils/formatting.js +++ b/client/utils/formatting.js @@ -58,7 +58,7 @@ const preFormatted = { ignorecase: 'ignoreCase', io: 'IO', isarray: 'isArray', - isealed: 'isSealed', + issealed: 'isSealed', isextensible: 'isExtensible', isfinite: 'isFinite', isfrozen: 'isFrozen', diff --git a/curriculum/CHANGELOG.md b/curriculum/CHANGELOG.md index 5c903d6491..691b00d956 100644 --- a/curriculum/CHANGELOG.md +++ b/curriculum/CHANGELOG.md @@ -22,7 +22,7 @@ * **challenges:** adding code tags to description ([57d5b55](https://github.com/freeCodeCamp/curriculum/commit/57d5b55)), closes [#17911](https://github.com/freeCodeCamp/curriculum/issues/17911) * **challenges:** adding negative integer to challenge to improve tests ([#211](https://github.com/freeCodeCamp/curriculum/issues/211)) ([2adc516](https://github.com/freeCodeCamp/curriculum/commit/2adc516)) * **challenges:** allow user to comment out undesired code ([72c2407](https://github.com/freeCodeCamp/curriculum/commit/72c2407)) -* **challenges:** challenge description is formatted and concised ([dcd8e45](https://github.com/freeCodeCamp/curriculum/commit/dcd8e45)) +* **challenges:** challenge description is formatted and concise ([dcd8e45](https://github.com/freeCodeCamp/curriculum/commit/dcd8e45)) * **challenges:** change challengeType to fix help button ([ddcc661](https://github.com/freeCodeCamp/curriculum/commit/ddcc661)) * **challenges:** change definition of complementary colors ([#299](https://github.com/freeCodeCamp/curriculum/issues/299)) ([c022dff](https://github.com/freeCodeCamp/curriculum/commit/c022dff)) * **challenges:** check for shorthand character in regex ([#238](https://github.com/freeCodeCamp/curriculum/issues/238)) ([0bf8d32](https://github.com/freeCodeCamp/curriculum/commit/0bf8d32)) @@ -50,7 +50,7 @@ * **challenges:** rephrased wording in applied visual design ([#268](https://github.com/freeCodeCamp/curriculum/issues/268)) ([d560d58](https://github.com/freeCodeCamp/curriculum/commit/d560d58)) * **challenges:** replaced em tags with code tags ([68daaf7](https://github.com/freeCodeCamp/curriculum/commit/68daaf7)), closes [#18048](https://github.com/freeCodeCamp/curriculum/issues/18048) * **challenges:** reword test text and improve test accuracy ([f834a98](https://github.com/freeCodeCamp/curriculum/commit/f834a98)) -* **challenges:** small edit to correct sematic issues ([322bf80](https://github.com/freeCodeCamp/curriculum/commit/322bf80)) +* **challenges:** small edit to correct semantic issues ([322bf80](https://github.com/freeCodeCamp/curriculum/commit/322bf80)) * clickjacking challenge description ([037990c](https://github.com/freeCodeCamp/curriculum/commit/037990c)) * **challenges:** spelling and grammar errors addressed ([8f17adf](https://github.com/freeCodeCamp/curriculum/commit/8f17adf)) * **challenges:** typo ([4f7faba](https://github.com/freeCodeCamp/curriculum/commit/4f7faba)) @@ -93,7 +93,7 @@ * **challenges:** add comments to getter/setter instructions codeblock ([9e9bc27](https://github.com/freeCodeCamp/curriculum/commit/9e9bc27)), closes [#92](https://github.com/freeCodeCamp/curriculum/issues/92) * **challenges:** add solution project euler 52 ([f31fe38](https://github.com/freeCodeCamp/curriculum/commit/f31fe38)) * **challenges:** add solution to project euler 53 ([56d7caf](https://github.com/freeCodeCamp/curriculum/commit/56d7caf)) -* **challenges:** add user story to tribute page challange ([12c78d4](https://github.com/freeCodeCamp/curriculum/commit/12c78d4)) +* **challenges:** add user story to tribute page challenge ([12c78d4](https://github.com/freeCodeCamp/curriculum/commit/12c78d4)) * **challenges:** allows single quotes ([57dab6d](https://github.com/freeCodeCamp/curriculum/commit/57dab6d)) * **challenges:** broken link ([64b93df](https://github.com/freeCodeCamp/curriculum/commit/64b93df)) * **challenges:** broken link ([de30ac8](https://github.com/freeCodeCamp/curriculum/commit/de30ac8)), closes [#17823](https://github.com/freeCodeCamp/curriculum/issues/17823) @@ -114,7 +114,7 @@ * **challenges:** fix typo in findOneAndUpdate() challenge ([ab912e4](https://github.com/freeCodeCamp/curriculum/commit/ab912e4)) * **challenges:** fix typo in node and express challenge ([7f3ed42](https://github.com/freeCodeCamp/curriculum/commit/7f3ed42)) * **challenges:** fix typos ([82f85b0](https://github.com/freeCodeCamp/curriculum/commit/82f85b0)) -* **challenges:** fixed a typo in Data structures challege ([a4f810e](https://github.com/freeCodeCamp/curriculum/commit/a4f810e)), closes [freeCodeCamp/freeCodeCamp#17786](https://github.com/freeCodeCamp/freeCodeCamp/issues/17786) +* **challenges:** fixed a typo in Data structures challenge ([a4f810e](https://github.com/freeCodeCamp/curriculum/commit/a4f810e)), closes [freeCodeCamp/freeCodeCamp#17786](https://github.com/freeCodeCamp/freeCodeCamp/issues/17786) * **challenges:** fixed RegEx for template literals javascript challenge ([66d8463](https://github.com/freeCodeCamp/curriculum/commit/66d8463)), closes [#65](https://github.com/freeCodeCamp/curriculum/issues/65) * **challenges:** fixed regex in a challenge ([c28aac0](https://github.com/freeCodeCamp/curriculum/commit/c28aac0)), closes [freeCodeCamp/freeCodeCamp#17861](https://github.com/freeCodeCamp/freeCodeCamp/issues/17861) * **challenges:** glitch links in backend projects now open in new tabs ([507c22d](https://github.com/freeCodeCamp/curriculum/commit/507c22d)), closes [#17799](https://github.com/freeCodeCamp/curriculum/issues/17799) diff --git a/curriculum/challenges/_meta/es6/meta.json b/curriculum/challenges/_meta/es6/meta.json index 566da07a42..8581ceaaf9 100644 --- a/curriculum/challenges/_meta/es6/meta.json +++ b/curriculum/challenges/_meta/es6/meta.json @@ -102,7 +102,7 @@ ], [ "587d7b8c367417b2b2512b55", - "Reuse Javascript Code Using import" + "Reuse JavaScript Code Using import" ], [ "587d7b8c367417b2b2512b57", diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/basic-data-structures/add-items-using-splice.english.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/basic-data-structures/add-items-using-splice.english.md index e5a5894a50..682822359a 100644 --- a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/basic-data-structures/add-items-using-splice.english.md +++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/basic-data-structures/add-items-using-splice.english.md @@ -33,8 +33,8 @@ We have defined a function, htmlColorNames, which takes an array of ```yml tests: - - text: htmlColorNames should return ["DarkSalmon", "BlanchedAlmond", "LavenderBlush", "PaleTurqoise", "FireBrick"] - testString: assert.deepEqual(htmlColorNames(['DarkGoldenRod', 'WhiteSmoke', 'LavenderBlush', 'PaleTurqoise', 'FireBrick']), ['DarkSalmon', 'BlanchedAlmond', 'LavenderBlush', 'PaleTurqoise', 'FireBrick']); + - text: htmlColorNames should return ["DarkSalmon", "BlanchedAlmond", "LavenderBlush", "PaleTurquoise", "FireBrick"] + testString: assert.deepEqual(htmlColorNames(['DarkGoldenRod', 'WhiteSmoke', 'LavenderBlush', 'PaleTurquoise', 'FireBrick']), ['DarkSalmon', 'BlanchedAlmond', 'LavenderBlush', 'PaleTurquoise', 'FireBrick']); - text: The htmlColorNames function should utilize the splice() method testString: assert(/.splice/.test(code)); - text: You should not use shift() or unshift(). @@ -60,7 +60,7 @@ function htmlColorNames(arr) { } // do not change code below this line -console.log(htmlColorNames(['DarkGoldenRod', 'WhiteSmoke', 'LavenderBlush', 'PaleTurqoise', 'FireBrick'])); +console.log(htmlColorNames(['DarkGoldenRod', 'WhiteSmoke', 'LavenderBlush', 'PaleTurquoise', 'FireBrick'])); ``` diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/debugging/understanding-the-differences-between-the-freecodecamp-and-browser-console.english.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/debugging/understanding-the-differences-between-the-freecodecamp-and-browser-console.english.md index 4fc79352b9..38ed9d79af 100644 --- a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/debugging/understanding-the-differences-between-the-freecodecamp-and-browser-console.english.md +++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/debugging/understanding-the-differences-between-the-freecodecamp-and-browser-console.english.md @@ -70,7 +70,7 @@ console.clear(); // Use console.log() to print the output variable. console.log(output); -// Check the two consoles to see the difference. The freeCodeCamp console should have printed the variable twice, one for each test of this challenge. The browser console should only print the variable once becuase you cleared it first. +// Check the two consoles to see the difference. The freeCodeCamp console should have printed the variable twice, one for each test of this challenge. The browser console should only print the variable once because you cleared it first. ```
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/es6/reuse-javascript-code-using-import.english.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/es6/reuse-javascript-code-using-import.english.md index 66ed8f48b3..ae953db816 100644 --- a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/es6/reuse-javascript-code-using-import.english.md +++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/es6/reuse-javascript-code-using-import.english.md @@ -1,6 +1,6 @@ --- id: 587d7b8c367417b2b2512b55 -title: Reuse Javascript Code Using import +title: Reuse JavaScript Code Using import challengeType: 1 forumTopicId: 301208 --- diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/everything-be-true.english.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/everything-be-true.english.md index dcfbc6f22a..9c48c9b5e1 100644 --- a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/everything-be-true.english.md +++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/everything-be-true.english.md @@ -30,10 +30,10 @@ tests: testString: 'assert.strictEqual(truthCheck([{"user": "Tinky-Winky", "sex": "male"}, {"user": "Dipsy"}, {"user": "Laa-Laa", "sex": "female"}, {"user": "Po", "sex": "female"}], "sex"), false);' - text: 'truthCheck([{"user": "Tinky-Winky", "sex": "male", "age": 0}, {"user": "Dipsy", "sex": "male", "age": 3}, {"user": "Laa-Laa", "sex": "female", "age": 5}, {"user": "Po", "sex": "female", "age": 4}], "age") should return false.' testString: 'assert.strictEqual(truthCheck([{"user": "Tinky-Winky", "sex": "male", "age": 2}, {"user": "Dipsy", "sex": "male", "age": 0}, {"user": "Laa-Laa", "sex": "female", "age": 5}, {"user": "Po", "sex": "female", "age": 4}], "age"), false);' - - text: 'truthCheck([{"name": "Pete", "onBoat": true}, {"name": "Repeat", "onBoat": true}, {"name": "FastFoward", "onBoat": null}], "onBoat") should return false' - testString: 'assert.strictEqual(truthCheck([{"name": "Pete", "onBoat": true}, {"name": "Repeat", "onBoat": true}, {"name": "FastFoward", "onBoat": null}], "onBoat"), false);' - - text: 'truthCheck([{"name": "Pete", "onBoat": true}, {"name": "Repeat", "onBoat": true, "alias": "Repete"}, {"name": "FastFoward", "onBoat": true}], "onBoat") should return true' - testString: 'assert.strictEqual(truthCheck([{"name": "Pete", "onBoat": true}, {"name": "Repeat", "onBoat": true, "alias": "Repete"}, {"name": "FastFoward", "onBoat": true}], "onBoat"), true);' + - text: 'truthCheck([{"name": "Pete", "onBoat": true}, {"name": "Repeat", "onBoat": true}, {"name": "FastForward", "onBoat": null}], "onBoat") should return false' + testString: 'assert.strictEqual(truthCheck([{"name": "Pete", "onBoat": true}, {"name": "Repeat", "onBoat": true}, {"name": "FastForward", "onBoat": null}], "onBoat"), false);' + - text: 'truthCheck([{"name": "Pete", "onBoat": true}, {"name": "Repeat", "onBoat": true, "alias": "Repete"}, {"name": "FastForward", "onBoat": true}], "onBoat") should return true' + testString: 'assert.strictEqual(truthCheck([{"name": "Pete", "onBoat": true}, {"name": "Repeat", "onBoat": true, "alias": "Repete"}, {"name": "FastForward", "onBoat": true}], "onBoat"), true);' - text: 'truthCheck([{"single": "yes"}], "single") should return true' testString: 'assert.strictEqual(truthCheck([{"single": "yes"}], "single"), true);' - text: 'truthCheck([{"single": ""}, {"single": "double"}], "single") should return false' diff --git a/curriculum/challenges/english/03-front-end-libraries/redux/combine-multiple-reducers.english.md b/curriculum/challenges/english/03-front-end-libraries/redux/combine-multiple-reducers.english.md index 954ff01231..092c6bb390 100644 --- a/curriculum/challenges/english/03-front-end-libraries/redux/combine-multiple-reducers.english.md +++ b/curriculum/challenges/english/03-front-end-libraries/redux/combine-multiple-reducers.english.md @@ -33,7 +33,7 @@ There are counterReducer() and authReducer() functions ```yml tests: - text: The counterReducer should increment and decrement the state. - testString: 'assert((function() { const initalState = store.getState().count; store.dispatch({type: INCREMENT}); store.dispatch({type: INCREMENT}); const firstState = store.getState().count; store.dispatch({type: DECREMENT}); const secondState = store.getState().count; return firstState === initalState + 2 && secondState === firstState - 1 })());' + testString: 'assert((function() { const initialState = store.getState().count; store.dispatch({type: INCREMENT}); store.dispatch({type: INCREMENT}); const firstState = store.getState().count; store.dispatch({type: DECREMENT}); const secondState = store.getState().count; return firstState === initialState + 2 && secondState === firstState - 1 })());' - text: The authReducer should toggle the state of authenticated between true and false. testString: 'assert((function() { store.dispatch({type: LOGIN}); const loggedIn = store.getState().auth.authenticated; store.dispatch({type: LOGOUT}); const loggedOut = store.getState().auth.authenticated; return loggedIn === true && loggedOut === false })());' - text: 'The store state should have two keys: count, which holds a number, and auth, which holds an object. The auth object should have a property of authenticated, which holds a boolean.' diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/announce-new-users.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/announce-new-users.english.md index 459bae2502..ab8addffd3 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/announce-new-users.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/announce-new-users.english.md @@ -41,8 +41,8 @@ Submit your page when you think you've got it right. tests: - text: Event 'user' should be emitted with name, currentUsers, and connected. testString: getUserInput => $.get(getUserInput('url')+ '/_api/server.js') .then(data => { assert.match(data, /io.emit.*('|")user('|").*name.*currentUsers.*connected/gi, 'You should have an event emitted named user sending name, currentUsers, and connected'); }, xhr => { throw new Error(xhr.statusText); }) - - text: Client should properly handlle and display the new data from event 'user'. - testString: "getUserInput => $.get(getUserInput('url')+ '/public/client.js') .then(data => { assert.match(data, /socket.on.*('|\")user('|\")[^]*num-users/gi, 'You should change the text of #num-users within on your client within the \"user\" even listener to show the current users connected'); assert.match(data, /socket.on.*('|\")user('|\")[^]*messages.*li/gi, 'You should append a list item to #messages on your client within the \"user\" event listener to annouce a user came or went'); }, xhr => { throw new Error(xhr.statusText); })" + - text: Client should properly handle and display the new data from event 'user'. + testString: "getUserInput => $.get(getUserInput('url')+ '/public/client.js') .then(data => { assert.match(data, /socket.on.*('|\")user('|\")[^]*num-users/gi, 'You should change the text of #num-users within on your client within the \"user\" even listener to show the current users connected'); assert.match(data, /socket.on.*('|\")user('|\")[^]*messages.*li/gi, 'You should append a list item to #messages on your client within the \"user\" event listener to announce a user came or went'); }, xhr => { throw new Error(xhr.statusText); })" ``` diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/hashing-your-passwords.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/hashing-your-passwords.english.md index a43519feb6..a6bcda5c27 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/hashing-your-passwords.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/hashing-your-passwords.english.md @@ -10,7 +10,7 @@ forumTopicId: 301553 As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. Going back to the information security section you may remember that storing plaintext passwords is never okay. Now it is time to implement BCrypt to solve this issue.
Add BCrypt as a dependency and require it in your server. You will need to handle hashing in 2 key areas: where you handle registering/saving a new account and when you check to see that a password is correct on login. -Currently on our registeration route, you insert a user's password into the database like the following: password: req.body.password. An easy way to implement saving a hash instead is to add the following before your database logic var hash = bcrypt.hashSync(req.body.password, 12); and replacing the req.body.password in the database saving with just password: hash. +Currently on our registration route, you insert a user's password into the database like the following: password: req.body.password. An easy way to implement saving a hash instead is to add the following before your database logic var hash = bcrypt.hashSync(req.body.password, 12); and replacing the req.body.password in the database saving with just password: hash. Finally on our authentication strategy we check for the following in our code before completing the process: if (password !== user.password) { return done(null, false); }. After making the previous changes, now user.password is a hash. Before making a change to the existing code, notice how the statement is checking if the password is NOT equal then return non-authenticated. With this in mind your code could look as follows to properly check the password entered against the hash: if (!bcrypt.compareSync(password, user.password)) { return done(null, false); } That is all it takes to implement one of the most important security features when you have to store passwords! Submit your page when you think you've got it right.
diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/set-up-passport.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/set-up-passport.english.md index d5330b9bdb..c6c5e1195a 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/set-up-passport.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/set-up-passport.english.md @@ -36,7 +36,7 @@ Submit your page when you think you've got it right. If you're running into erro ```yml tests: - - text: Passort and Express-session should be dependencies. + - text: Passport and Express-session should be dependencies. testString: getUserInput => $.get(getUserInput('url')+ '/_api/package.json') .then(data => { var packJson = JSON.parse(data); assert.property(packJson.dependencies, 'passport', 'Your project should list "passport" as a dependency'); assert.property(packJson.dependencies, 'express-session', 'Your project should list "express-session" as a dependency'); }, xhr => { throw new Error(xhr.statusText); }) - text: Dependencies should be correctly required. testString: getUserInput => $.get(getUserInput('url')+ '/_api/server.js') .then(data => { assert.match(data, /require.*("|')passport("|')/gi, 'You should have required passport'); assert.match(data, /require.*("|')express-session("|')/gi, 'You should have required express-session'); }, xhr => { throw new Error(xhr.statusText); }) diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/use-assert.isok-and-assert.isnotok.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/use-assert.isok-and-assert.isnotok.english.md index 0051363239..51a3592e0d 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/use-assert.isok-and-assert.isnotok.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/use-assert.isok-and-assert.isnotok.english.md @@ -29,7 +29,7 @@ tests: - text: All tests should pass. testString: getUserInput => $.get(getUserInput('url') + '/_api/get-tests?type=unit&n=2').then(data => {assert.equal(data.state,'passed'); }, xhr => { throw new Error(xhr.responseText); }) - text: You should choose the right assertion - isOk vs. isNotOk. - testString: getUserInput => $.get(getUserInput('url') + '/_api/get-tests?type=unit&n=2').then(data => { assert.equal(data.assertions[0].method, 'isNotOk', 'Null is falsey'); }, xhr => { throw new Error(xhr.responseText); }) + testString: getUserInput => $.get(getUserInput('url') + '/_api/get-tests?type=unit&n=2').then(data => { assert.equal(data.assertions[0].method, 'isNotOk', 'Null is falsy'); }, xhr => { throw new Error(xhr.responseText); }) - text: You should choose the right assertion - isOk vs. isNotOk. testString: getUserInput => $.get(getUserInput('url') + '/_api/get-tests?type=unit&n=2').then(data => { assert.equal(data.assertions[1].method, 'isOk','A string is truthy'); }, xhr => { throw new Error(xhr.responseText); }) - text: You should choose the right assertion - isOk vs. isNotOk. diff --git a/curriculum/challenges/english/08-coding-interview-prep/algorithms/no-repeats-please.english.md b/curriculum/challenges/english/08-coding-interview-prep/algorithms/no-repeats-please.english.md index 8ba7eb2586..95db4df569 100644 --- a/curriculum/challenges/english/08-coding-interview-prep/algorithms/no-repeats-please.english.md +++ b/curriculum/challenges/english/08-coding-interview-prep/algorithms/no-repeats-please.english.md @@ -71,12 +71,12 @@ permAlone('aab'); ```js function permAlone(str) { - return permutor(str).filter(function(perm) { + return permuter(str).filter(function(perm) { return !perm.match(/(.)\1/g); }).length; } -function permutor(str) { +function permuter(str) { // http://staff.roguecc.edu/JMiller/JavaScript/permute.html //permArr: Global array which holds the list of permutations //usedChars: Global utility array which holds a list of "currently-in-use" characters diff --git a/curriculum/challenges/english/08-coding-interview-prep/project-euler/problem-102-triangle-containment.english.md b/curriculum/challenges/english/08-coding-interview-prep/project-euler/problem-102-triangle-containment.english.md index d4c1451a7f..43ee98327c 100644 --- a/curriculum/challenges/english/08-coding-interview-prep/project-euler/problem-102-triangle-containment.english.md +++ b/curriculum/challenges/english/08-coding-interview-prep/project-euler/problem-102-triangle-containment.english.md @@ -12,7 +12,7 @@ Consider the following two triangles: A(-340,495), B(-153,-910), C(835,-947) X(-175,41), Y(-421,-714), Z(574,-645) It can be verified that triangle ABC contains the origin, whereas triangle XYZ does not. -Using triangles.txt (right click and 'Save Link/Target As...'), a 27K text file containing the co-ordinates of one thousand "random" triangles, find the number of triangles for which the interior contains the origin. +Using triangles.txt (right click and 'Save Link/Target As...'), a 27K text file containing the coordinates of one thousand "random" triangles, find the number of triangles for which the interior contains the origin. NOTE: The first two examples in the file represent the triangles in the example given above. diff --git a/curriculum/challenges/english/08-coding-interview-prep/project-euler/problem-184-triangles-containing-the-origin.english.md b/curriculum/challenges/english/08-coding-interview-prep/project-euler/problem-184-triangles-containing-the-origin.english.md index d521199eed..1900e92b0c 100644 --- a/curriculum/challenges/english/08-coding-interview-prep/project-euler/problem-184-triangles-containing-the-origin.english.md +++ b/curriculum/challenges/english/08-coding-interview-prep/project-euler/problem-184-triangles-containing-the-origin.english.md @@ -7,7 +7,7 @@ forumTopicId: 301820 ## Description
-Consider the set Ir of points (x,y) with integer co-ordinates in the interior of the circle with radius r, centered at the origin, i.e. x2 + y2 < r2. +Consider the set Ir of points (x,y) with integer coordinates in the interior of the circle with radius r, centered at the origin, i.e. x2 + y2 < r2. For a radius of 2, I2 contains the nine points (0,0), (1,0), (1,1), (0,1), (-1,1), (-1,0), (-1,-1), (0,-1) and (1,-1). There are eight triangles having all three vertices in I2 which contain the origin in the interior. Two of them are shown below, the others are obtained from these by rotation. diff --git a/curriculum/challenges/english/08-coding-interview-prep/project-euler/problem-278-linear-combinations-of-semiprimes.english.md b/curriculum/challenges/english/08-coding-interview-prep/project-euler/problem-278-linear-combinations-of-semiprimes.english.md index 89b69692a0..d32aaf79fc 100644 --- a/curriculum/challenges/english/08-coding-interview-prep/project-euler/problem-278-linear-combinations-of-semiprimes.english.md +++ b/curriculum/challenges/english/08-coding-interview-prep/project-euler/problem-278-linear-combinations-of-semiprimes.english.md @@ -7,7 +7,7 @@ forumTopicId: 301928 ## Description
-Given the values of integers 1 < a1 < a2 <... < an, consider the linear combinationq1a1 + q2a2 + ... + qnan = b, using only integer values qk ≥ 0. +Given the values of integers 1 < a1 < a2 <... < an, consider the linear combination q1a1 + q2a2 + ... + qnan = b, using only integer values qk ≥ 0. Note that for a given set of ak, it may be that not all values of b are possible. diff --git a/curriculum/challenges/english/08-coding-interview-prep/project-euler/problem-35-circular-primes.english.md b/curriculum/challenges/english/08-coding-interview-prep/project-euler/problem-35-circular-primes.english.md index b9c6be1a01..8d4065026d 100644 --- a/curriculum/challenges/english/08-coding-interview-prep/project-euler/problem-35-circular-primes.english.md +++ b/curriculum/challenges/english/08-coding-interview-prep/project-euler/problem-35-circular-primes.english.md @@ -12,7 +12,7 @@ There are thirteen such primes below 100: 2, 3, 5, 7, 11, 13, 17, 31, 37, 71, 73 How many circular primes are there below n, whereas 100 <= n <= 1000000?
Note:
-Circular primes individual rotation can exceeed `n`. +Circular primes individual rotation can exceed `n`.
## Instructions @@ -106,7 +106,7 @@ function circularPrimes(n) { continue; } else if (!primes[x]) { - // If the rotated value is 0 then its not a ciruclar prime, break the loop + // If the rotated value is 0 then it isn't a circular prime, break the loop tmp = 0; break; } diff --git a/curriculum/challenges/english/08-coding-interview-prep/project-euler/problem-428-necklace-of-circles.english.md b/curriculum/challenges/english/08-coding-interview-prep/project-euler/problem-428-necklace-of-circles.english.md index e0dbdcd3a0..c2c3038e51 100644 --- a/curriculum/challenges/english/08-coding-interview-prep/project-euler/problem-428-necklace-of-circles.english.md +++ b/curriculum/challenges/english/08-coding-interview-prep/project-euler/problem-428-necklace-of-circles.english.md @@ -15,7 +15,7 @@ Let Cout be the circle having the diameter WZ. The triplet (a, b, c) is called a necklace triplet if you can place k ≥ 3 distinct circles C1, C2, ..., Ck such that:
  • Ci has no common interior points with any Cj for 1 ≤ i, jk and ij,
  • Ci is tangent to both Cin and Cout for 1 ≤ ik,
  • Ci is tangent to Ci+1 for 1 ≤ i < k, and
  • Ck is tangent to C1.
For example, (5, 5, 5) and (4, 3, 21) are necklace triplets, while it can be shown that (2, 2, 5) is not. -a visual reresentation of a necklace triplet +a visual representation of a necklace triplet Let T(n) be the number of necklace triplets (a, b, c) such that a, b and c are positive integers, and bn. For example, T(1) = 9, T(20) = 732 and T(3000) = 438106. diff --git a/curriculum/challenges/english/08-coding-interview-prep/project-euler/problem-91-right-triangles-with-integer-coordinates.english.md b/curriculum/challenges/english/08-coding-interview-prep/project-euler/problem-91-right-triangles-with-integer-coordinates.english.md index 5bf579c225..f7a9a21464 100644 --- a/curriculum/challenges/english/08-coding-interview-prep/project-euler/problem-91-right-triangles-with-integer-coordinates.english.md +++ b/curriculum/challenges/english/08-coding-interview-prep/project-euler/problem-91-right-triangles-with-integer-coordinates.english.md @@ -7,12 +7,12 @@ forumTopicId: 302208 ## Description
-The points P (x1, y1) and Q (x2, y2) are plotted at integer co-ordinates and are joined to the origin, O(0,0), to form ΔOPQ. +The points P (x1, y1) and Q (x2, y2) are plotted at integer coordinates and are joined to the origin, O(0,0), to form ΔOPQ. -There are exactly fourteen triangles containing a right angle that can be formed when each co-ordinate lies between 0 and 2 inclusive; that is,0 ≤ x1, y1, x2, y2 ≤ 2. +There are exactly fourteen triangles containing a right angle that can be formed when each coordinate lies between 0 and 2 inclusive; that is,0 ≤ x1, y1, x2, y2 ≤ 2. diff --git a/curriculum/challenges/english/08-coding-interview-prep/rosetta-code/count-the-coins.english.md b/curriculum/challenges/english/08-coding-interview-prep/rosetta-code/count-the-coins.english.md index 360c1205f4..1295f90013 100644 --- a/curriculum/challenges/english/08-coding-interview-prep/rosetta-code/count-the-coins.english.md +++ b/curriculum/challenges/english/08-coding-interview-prep/rosetta-code/count-the-coins.english.md @@ -37,7 +37,7 @@ Implement a function to determine how many ways there are to make change for a d tests: - text: countCoins should be a function. testString: assert(typeof countCoins === 'function'); - - text: countCoints() should return 242. + - text: countCoins() should return 242. testString: assert.equal(countCoins(), 242); ``` diff --git a/curriculum/challenges/english/08-coding-interview-prep/rosetta-code/date-manipulation.english.md b/curriculum/challenges/english/08-coding-interview-prep/rosetta-code/date-manipulation.english.md index 05830a94c2..450bc90de5 100644 --- a/curriculum/challenges/english/08-coding-interview-prep/rosetta-code/date-manipulation.english.md +++ b/curriculum/challenges/english/08-coding-interview-prep/rosetta-code/date-manipulation.english.md @@ -28,13 +28,13 @@ tests: testString: assert(typeof add12Hours('January 17 2017 11:43am EST') === 'string'); - text: add12Hours("January 17 2017 11:43am EST") should return "January 17 2017 11:43pm EST" testString: assert(add12Hours('January 17 2017 11:43am EST') === 'January 17 2017 11:43pm EST'); - - text: Should handel day change. add12Hours("March 7 2009 7:30pm EST") should return "March 8 2009 7:30am EST" + - text: Should handle day change. add12Hours("March 7 2009 7:30pm EST") should return "March 8 2009 7:30am EST" testString: assert(add12Hours('March 7 2009 7:30pm EST') === 'March 8 2009 7:30am EST'); - - text: Should handel month change in a leap years. add12Hours("February 29 2004 9:15pm EST") should return "March 1 2004 9:15am EST" + - text: Should handle month change in a leap years. add12Hours("February 29 2004 9:15pm EST") should return "March 1 2004 9:15am EST" testString: assert(add12Hours('February 29 2004 9:15pm EST') === 'March 1 2004 9:15am EST'); - - text: Should handel month change in a common years. add12Hours("February 28 1999 3:15pm EST") should return "March 1 1999 3:15am EST" + - text: Should handle month change in a common years. add12Hours("February 28 1999 3:15pm EST") should return "March 1 1999 3:15am EST" testString: assert(add12Hours('February 28 1999 3:15pm EST') === 'March 1 1999 3:15am EST'); - - text: Should handel year change. add12Hours("December 31 2020 1:45pm EST") should return "January 1 2021 1:45am EST" + - text: Should handle year change. add12Hours("December 31 2020 1:45pm EST") should return "January 1 2021 1:45am EST" testString: assert(add12Hours('December 31 2020 1:45pm EST') === 'January 1 2021 1:45am EST'); ``` diff --git a/curriculum/challenges/english/08-coding-interview-prep/rosetta-code/general-fizzbuzz.english.md b/curriculum/challenges/english/08-coding-interview-prep/rosetta-code/general-fizzbuzz.english.md index 4feb0b5419..9621f8c74a 100644 --- a/curriculum/challenges/english/08-coding-interview-prep/rosetta-code/general-fizzbuzz.english.md +++ b/curriculum/challenges/english/08-coding-interview-prep/rosetta-code/general-fizzbuzz.english.md @@ -10,7 +10,7 @@ forumTopicId: 302273 Write a generalized version of FizzBuzz that works for any list of factors, along with their words. This is basically a "fizzbuzz" implementation where the rules of the game are supplied to the user. Create a function to implement this. The function should take two parameters. The first will be an array with the FizzBuzz rules. For example: [ [3, "Fizz"] , [5, "Buzz"] ]. -This indcates that Fizz should be printed if the number is a multiple of 3 and Buzz if it is a multiple of 5. If it is a multiple of both then the strings should be concatenated in the order specified in the array. In this case, FizzBuzz if the number is a multiple of 3 and 5. +This indicates that Fizz should be printed if the number is a multiple of 3 and Buzz if it is a multiple of 5. If it is a multiple of both then the strings should be concatenated in the order specified in the array. In this case, FizzBuzz if the number is a multiple of 3 and 5. The second parameter is the number for which the function should return a string as stated above.
diff --git a/curriculum/challenges/english/08-coding-interview-prep/rosetta-code/least-common-multiple.english.md b/curriculum/challenges/english/08-coding-interview-prep/rosetta-code/least-common-multiple.english.md index e924e576e3..bf24c795af 100644 --- a/curriculum/challenges/english/08-coding-interview-prep/rosetta-code/least-common-multiple.english.md +++ b/curriculum/challenges/english/08-coding-interview-prep/rosetta-code/least-common-multiple.english.md @@ -17,7 +17,7 @@ If you already have gcd for lengthSorter(["Mine", "is", "going", "great"]) should return ["going", "great", "Mine", "is"].'); - text: lengthSorter(["Have", "fun", "sorting", "!!"]) should return ["sorting", "Have", "fun", "!!"]. testString: assert.deepEqual(lengthSorter(["Have", "fun", "sorting", "!!"]), ["sorting", "Have", "fun", "!!"], 'lengthSorter(["Have", "fun", "sorting", "!!"]) should return ["sorting", "Have", "fun", "!!"].'); - - text: lengthSorter(["Everthing", "is", "good", "!!"]) should return ["Everthing", "good", "!!", "is"]. - testString: assert.deepEqual(lengthSorter(["Everthing", "is", "good", "!!"]), ["Everthing", "good", "!!", "is"], 'lengthSorter(["Everthing", "is", "good", "!!"]) should return ["Everthing", "good", "!!", "is"].'); + - text: lengthSorter(["Everything", "is", "good", "!!"]) should return ["Everything", "good", "!!", "is"]. + testString: assert.deepEqual(lengthSorter(["Everything", "is", "good", "!!"]), ["Everything", "good", "!!", "is"], 'lengthSorter(["Everything", "is", "good", "!!"]) should return ["Everything", "good", "!!", "is"].'); ```
diff --git a/curriculum/challenges/english/08-coding-interview-prep/rosetta-code/sorting-algorithms-stooge-sort.english.md b/curriculum/challenges/english/08-coding-interview-prep/rosetta-code/sorting-algorithms-stooge-sort.english.md index 61936bb27f..586bd619a5 100644 --- a/curriculum/challenges/english/08-coding-interview-prep/rosetta-code/sorting-algorithms-stooge-sort.english.md +++ b/curriculum/challenges/english/08-coding-interview-prep/rosetta-code/sorting-algorithms-stooge-sort.english.md @@ -7,7 +7,7 @@ forumTopicId: 302318 ## Description
-Write a function to permform Stooge Sort on an array of integers. The function should return a sorted array. +Write a function to perform Stooge Sort on an array of integers. The function should return a sorted array. The Stooge Sort algorithm is as follows:
 algorithm stoogesort(array L, i = 0, j = length(L)-1)
diff --git a/curriculum/challenges/english/08-coding-interview-prep/rosetta-code/word-wrap.english.md b/curriculum/challenges/english/08-coding-interview-prep/rosetta-code/word-wrap.english.md
index 4d595d1248..d40a76b1ed 100644
--- a/curriculum/challenges/english/08-coding-interview-prep/rosetta-code/word-wrap.english.md
+++ b/curriculum/challenges/english/08-coding-interview-prep/rosetta-code/word-wrap.english.md
@@ -67,7 +67,7 @@ const text =
 `Wrap text using a more sophisticated algorithm such as the Knuth and Plass TeX algorithm.
 If your language provides this, you get easy extra credit,
 but you ''must reference documentation'' indicating that the algorithm
-is something better than a simple minimimum length algorithm.`;
+is something better than a simple minimum length algorithm.`;
 
 const wrapped80 = wrap(text, 80);
 const wrapped42 = wrap(text, 42);
diff --git a/docs/devops.md b/docs/devops.md
index ae760349b2..4befe1140e 100644
--- a/docs/devops.md
+++ b/docs/devops.md
@@ -203,7 +203,7 @@ The domain name will be different than **`freeCodeCamp.org`**. Currently this pu
 
 

www.freecodecamp.dev

-To prevent accidental indexing on search engines and users accidenatly using this site (without knowledge of it being a developement site) is closed off with a simple password: +To prevent accidental indexing on search engines and users accidentally using this site (without knowledge of it being a development site) is closed off with a simple password:

freecodecamp-is-awesome

diff --git a/search-indexing/data-push/init/index.js b/search-indexing/data-push/init/index.js index a905b57c7b..c946c69d71 100644 --- a/search-indexing/data-push/init/index.js +++ b/search-indexing/data-push/init/index.js @@ -4,7 +4,7 @@ require('dotenv').config({ path: envPath }); const { zip, timer, from } = require('rxjs'); /* - * The below has been commented out to aviod inadvertant + * The below has been commented out to avoid inadvertant * ops usage with algolia */ diff --git a/tools/challenge-md-parser/challengeSeed-to-data.js b/tools/challenge-md-parser/challengeSeed-to-data.js index 08302c46ef..fae6b912bd 100644 --- a/tools/challenge-md-parser/challengeSeed-to-data.js +++ b/tools/challenge-md-parser/challengeSeed-to-data.js @@ -44,20 +44,20 @@ function createPlugin() { if (sectionFilter(node, 'challengeSeed')) { let seeds = {}; const codeDivs = selectAll('div', node); - const seedConatiners = codeDivs.filter(({ properties: { id } }) => + const seedContainers = codeDivs.filter(({ properties: { id } }) => seedRE.test(id) ); - seedConatiners.forEach(createCodeGetter('contents', seedRE, seeds)); + seedContainers.forEach(createCodeGetter('contents', seedRE, seeds)); - const headConatiners = codeDivs.filter(({ properties: { id } }) => + const headContainers = codeDivs.filter(({ properties: { id } }) => headRE.test(id) ); - headConatiners.forEach(createCodeGetter('head', headRE, seeds)); + headContainers.forEach(createCodeGetter('head', headRE, seeds)); - const tailConatiners = codeDivs.filter(({ properties: { id } }) => + const tailContainers = codeDivs.filter(({ properties: { id } }) => tailRE.test(id) ); - tailConatiners.forEach(createCodeGetter('tail', tailRE, seeds)); + tailContainers.forEach(createCodeGetter('tail', tailRE, seeds)); file.data = { ...file.data, diff --git a/tools/challenge-md-parser/text-to-data.test.js b/tools/challenge-md-parser/text-to-data.test.js index 6dfce757c4..7fd0d7cd01 100644 --- a/tools/challenge-md-parser/text-to-data.test.js +++ b/tools/challenge-md-parser/text-to-data.test.js @@ -6,7 +6,7 @@ const textToData = require('./text-to-data'); describe('text-to-data', () => { const expectedField = 'description'; const otherExpectedField = 'instructions'; - const unexpectedField = 'does-not-exis'; + const unexpectedField = 'does-not-exist'; let file = { data: {} }; beforeEach(() => { diff --git a/tools/scripts/build/create-redirects.js b/tools/scripts/build/create-redirects.js index e29751b0e1..da8bcf4ef8 100644 --- a/tools/scripts/build/create-redirects.js +++ b/tools/scripts/build/create-redirects.js @@ -1,6 +1,6 @@ const apiPlaceholderRE = /#\{\{API\}\}/g; const newsPlaceholderRE = /#\{\{NEWS\}\}/g; -const forumPlacehilderRE = /#\{\{FORUM\}\}/g; +const forumPlaceholderRE = /#\{\{FORUM\}\}/g; exports.createRedirects = function createRedirects(locations) { const { api, newsProxy, forumProxy } = locations; @@ -18,7 +18,7 @@ exports.createRedirects = function createRedirects(locations) { return template .replace(apiPlaceholderRE, api) .replace(newsPlaceholderRE, newsProxy) - .replace(forumPlacehilderRE, forumProxy); + .replace(forumPlaceholderRE, forumProxy); }; /* eslint-disable max-len */ diff --git a/tools/translation/translate-challenges.js b/tools/translation/translate-challenges.js index c78e776166..e4fd574da7 100644 --- a/tools/translation/translate-challenges.js +++ b/tools/translation/translate-challenges.js @@ -64,7 +64,7 @@ function getFile(file, dir) { processFile(fileString, description, instructions, tests, title, file, dir); } -// Get translatins from Google Translate API and insert into file +// Get translations from Google Translate API and insert into file function processFile( fileString, description,