{"id":13402299,"url":"https://github.com/exercism/javascript","last_synced_at":"2025-05-14T13:05:47.040Z","repository":{"id":16137855,"uuid":"18883207","full_name":"exercism/javascript","owner":"exercism","description":"Exercism exercises in JavaScript.","archived":false,"fork":false,"pushed_at":"2025-05-05T13:00:51.000Z","size":35839,"stargazers_count":609,"open_issues_count":48,"forks_count":632,"subscribers_count":25,"default_branch":"main","last_synced_at":"2025-05-08T10:26:17.946Z","etag":null,"topics":["community-contributions-paused","exercism-track","maintained"],"latest_commit_sha":null,"homepage":"https://exercism.org/tracks/javascript","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/exercism.png","metadata":{"funding":{"github":["exercism"],"custom":["https://exercism.org/donate"]},"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":"docs/ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2014-04-17T15:24:48.000Z","updated_at":"2025-05-05T12:37:27.000Z","dependencies_parsed_at":"2024-03-14T06:33:13.434Z","dependency_job_id":"ceed1077-f827-427f-9809-519a0ba52a6a","html_url":"https://github.com/exercism/javascript","commit_stats":{"total_commits":1904,"total_committers":298,"mean_commits":6.389261744966443,"dds":0.7489495798319328,"last_synced_commit":"432ca4e14cc6af6594f1b414adfad411a6488569"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exercism%2Fjavascript","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exercism%2Fjavascript/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exercism%2Fjavascript/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exercism%2Fjavascript/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/exercism","download_url":"https://codeload.github.com/exercism/javascript/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253815401,"owners_count":21968618,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["community-contributions-paused","exercism-track","maintained"],"created_at":"2024-07-30T19:01:14.174Z","updated_at":"2025-05-14T13:05:47.000Z","avatar_url":"https://github.com/exercism.png","language":"JavaScript","readme":"# Exercism JavaScript Track\n\n[![Configlet](https://github.com/exercism/javascript/actions/workflows/configlet.yml/badge.svg)](https://github.com/exercism/javascript/actions/workflows/configlet.yml) [![javascript / main](https://github.com/exercism/javascript/workflows/javascript%20/%20main/badge.svg)](https://github.com/exercism/javascript/actions?query=workflow%3A%22javascript+%2F+main%22)\n\n\u003e [!IMPORTANT]\n\u003e We 💙 our community but **this repository does not accept community contributions at this time**.\u003cbr\u003e\n\u003e There are no active maintainers to review PRs.\u003cbr\u003e\n\u003e Please read this [community blog post][freeing-maintainers] for details.\n\n**Exercism exercises in JavaScript**\n\nThis is the JavaScript track, one of the many tracks on [Exercism][web-exercism].\nIt holds all the _exercises_ that are currently implemented and available for students to complete.\nThe track consists of various **concept** exercises that teach the [JavaScript syllabus][web-syllabus], and various practice exercises, which are unlocked by progressing in the syllabus and can be used to practice concepts learned.\nYou can find this in the [`config.json`][file-config].\n\n## Tools\n\nSee [CONTRIBUTING.md][file-contributing] for a list of requirements to contribute to this track.\nIt also has a list of tools you can use, of which the `test` tool is one of them.\n\n## Running the code quality tooling (linter)\n\nThis run `eslint` for all files that _require_ linting.\n\n```shell\ncorepack pnpm node scripts/lint.mjs --fix\n```\n\nThese are also the files that are linted using the lint script, mentioned in [CONTRIBUTING.md][file-contributing].\nThe lint rules imposed on contributors and maintainers are stricter than those for the student.\nThe idea is that we do **not** impose style rules on the students, but we guard for (potential) errors.\n\nFiles with strict rules:\n\n- `\u003cslug\u003e.spec.js`\n- `.meta/proof.ci.js`\n- `.meta/exemplar.js`\n\nFiles with loose rules:\n\n- `custom.spec.js`\n- `\u003cslug\u003e.js`\n\n## Running the test suite\n\nThis runs `jest` tests for all sample solutions.\nThis _does not_ use the regular way to run `jest`, because the example solution files must be renamed to be imported correctly into the test files.\n\n```shell\ncorepack pnpm node scripts/test.mjs\n```\n\nIf the `ASSIGNMENT` environment variable is set, only _that_ exercise is tested.\nFor example, if you only want to test the `example.js` for the practice exercise `two-fer`, you may, depending on your environment, use:\n\n```shell\nASSIGNMENT=practice/two-fer corepack pnpm node scripts/test.mjs\n```\n\n\u003e Running on Windows? Depending on your shell, environment variables are set differently.\n\u003e You can use `cross-env` to normalize this. The following should work across environments:\n\u003e\n\u003e ```bash\n\u003e # if installed globally\n\u003e cross-env ASSIGNMENT=practice/two-fer corepack pnpm node scripts/test.mjs\n\u003e\n\u003e # otherwise\n\u003e corepack pnpm dlx cross-env ASSIGNMENT=practice/two-fer node scripts/test.mjs\n\u003e ```\n\n## Related repositories\n\n- [Website Copy][git-website-copy] (Mentor Notes)\n- [The JavaScript Analyzer][git-javascript-analyzer] (Automated Code Analysis)\n- [The JavaScript Representer][git-javascript-representer]\n- [The JavaScript Test Runner][git-javascript-test-runner]\n- [Static Analysis Shared Library][git-javascript-lib-static-analysis]\n\n### Related TypeScript repositories\n\nA lot of the improvements made to this track and tooling are also made to the TypeScript track and tooling and vice-versa.\n\n- [The TypeScript track][git-typescript]\n- [The TypeScript Analyzer][git-typescript-analyzer]\n- [The TypeScript Representer][git-typescript-representer]\n- [The TypeScript Test Runner][git-typescript-test-runner]\n\n[web-exercism]: https://exercism.org\n[web-syllabus]: https://exercism.org/tracks/javascript/concepts\n[git-configlet]: https://exercism.org/docs/building/configlet\n[bin-fetch-configlet]: https://github.com/exercism/javascript/blob/main/bin/fetch-configlet\n[file-config]: https://github.com/exercism/javascript/blob/main/config.json\n[file-contributing]: https://github.com/exercism/javascript/blob/main/CONTRIBUTING.md\n[git-javascript]: https://github.com/exercism/javascript\n[git-javascript-analyzer]: https://github.com/exercism/javascript-analyzer\n[git-javascript-representer]: https://github.com/exercism/javascript-representer\n[git-javascript-test-runner]: https://github.com/exercism/javascript-test-runner\n[git-javascript-lib-static-analysis]: https://github.com/exercism/javascript-lib-static-analysis\n[git-typescript]: https://github.com/exercism/typescript/\n[git-typescript-analyzer]: https://github.com/exercism/typescript-analyzer\n[git-typescript-representer]: https://github.com/exercism/typescript-representer\n[git-typescript-test-runner]: https://github.com/exercism/typescript-test-runner\n[git-website-copy]: https://github.com/exercism/website-copy\n[freeing-maintainers]: https://exercism.org/blog/freeing-our-maintainers\n","funding_links":["https://github.com/sponsors/exercism","https://exercism.org/donate"],"categories":["JavaScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexercism%2Fjavascript","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexercism%2Fjavascript","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexercism%2Fjavascript/lists"}