{ "name": "@freecodecamp/freecodecamp", "version": "0.0.1", "description": "The freeCodeCamp.org open-source codebase and curriculum", "license": "BSD-3-Clause", "private": true, "engines": { "node": ">=20", "pnpm": ">=9" }, "repository": { "type": "git", "url": "git+https://github.com/freeCodeCamp/freeCodeCamp.git" }, "bugs": { "url": "https://github.com/freeCodeCamp/freeCodeCamp/issues" }, "homepage": "https://github.com/freeCodeCamp/freeCodeCamp#readme", "author": "freeCodeCamp ", "main": "none", "scripts": { "preinstall": "npx -y only-allow pnpm", "audit-challenges": "pnpm run create:shared && ts-node tools/challenge-auditor/index.ts", "analyze-bundle": "webpack-bundle-analyzer", "prebuild": "npm-run-all create:shared", "build": "npm-run-all -p build:*", "build-workers": "cd ./client && pnpm run prebuild", "build:client": "cd ./client && pnpm run build", "build:curriculum": "cd ./curriculum && pnpm run build", "build:server": "cd ./api-server && pnpm run build", "challenge-editor": "npm-run-all -p challenge-editor:*", "challenge-editor:client": "cd ./tools/challenge-editor/client && pnpm start", "challenge-editor:server": "cd ./tools/challenge-editor/api && pnpm start", "clean": "npm-run-all -p clean:client clean:server clean:curriculum --serial clean:packages", "clean-and-develop": "pnpm run clean && pnpm install && pnpm run develop", "clean:api": "cd api && pnpm clean", "clean:client": "cd ./client && pnpm run clean", "clean:curriculum": "rm -rf ./shared/config/curriculum.json", "clean:packages": "find . -name 'node_modules' -type d -prune -exec rm -rf '{}' +", "clean:server": "rm -rf ./api-server/lib", "create:shared": "tsc -p shared", "create-new-project": "cd ./tools/challenge-helper-scripts/ && pnpm run create-project", "predevelop": "npm-run-all -p create:shared -s build:curriculum", "develop": "npm-run-all -p develop:*", "develop:client": "cd ./client && pnpm run develop", "develop:server": "cd ./api-server && pnpm run develop", "format": "run-s format:eslint format:prettier", "format:eslint": "eslint . --fix", "format:prettier": "prettier --write .", "i18n-sync": "ts-node ./tools/scripts/sync-i18n.ts", "knip": "npx -y knip@5 --include files", "knip:all": "npx -y knip@5 ", "prelint": "pnpm run -F=client predevelop", "lint": "NODE_OPTIONS=\"--max-old-space-size=7168\" npm-run-all create:shared -p lint:*", "lint:challenges": "cd ./curriculum && pnpm run lint", "lint:js": "eslint --cache --max-warnings 0 .", "lint:ts": "tsc && tsc -p shared && tsc -p api && tsc -p client", "lint:prettier": "prettier --list-different .", "lint:css": "stylelint '**/*.css'", "reload:server": "pm2 reload api-server/ecosystem.config.js", "preseed": "npm-run-all create:shared", "playwright:install-build-tools": "npx playwright install --with-deps", "rename-challenges": "ts-node tools/challenge-helper-scripts/rename-challenge-files.ts", "seed": "pnpm seed:surveys && pnpm seed:exams && DEBUG=fcc:* node ./tools/scripts/seed/seed-demo-user", "seed:certified-user": "pnpm seed:surveys && pnpm seed:exams && pnpm seed:ms-username && DEBUG=fcc:* node ./tools/scripts/seed/seed-demo-user --certified-user", "seed:exams": "DEBUG=fcc:* node tools/scripts/seed-exams/create-exams", "seed:env-exam": "cd api && pnpm run seed:env-exam", "seed:surveys": "DEBUG=fcc:* node ./tools/scripts/seed/seed-surveys", "seed:ms-username": "DEBUG=fcc:* node ./tools/scripts/seed/seed-ms-username", "serve:client": "cd ./client && pnpm run serve", "serve:client-ci": "cd ./client && pnpm run serve-ci", "start": "npm-run-all create:shared -p develop:server serve:client", "start-ci": "npm-run-all create:shared -p start:server serve:client-ci", "start:server": "pm2 start api-server/ecosystem.config.js", "test": "NODE_OPTIONS='--max-old-space-size=7168' run-s create:shared build:curriculum build-workers test:*", "test:source": "jest", "test:api": "cd api && jest --force-exit", "test:curriculum": "cd ./curriculum && pnpm test", "test-curriculum-full-output": "cd ./curriculum && pnpm run test:full-output", "test-client": "jest client", "test-config": "jest config", "test-curriculum-js": "jest curriculum", "test-server": "jest api-server", "test-tools": "jest tools", "test-utils": "jest utils", "prepare": "husky", "playwright:run": "playwright test", "playwright:watch": "playwright test --ui" }, "dependencies": { "dotenv": "16.4.5" }, "devDependencies": { "@babel/eslint-parser": "7.26.5", "@babel/preset-react": "7.26.3", "@eslint/compat": "^1.2.6", "@eslint/eslintrc": "^3.2.0", "@eslint/js": "^9.19.0", "@playwright/test": "^1.47.1", "@testing-library/dom": "10.4.0", "@testing-library/jest-dom": "6.6.3", "@types/jest": "29.5.12", "@types/lodash": "4.14.202", "@types/node": "20.12.8", "@types/testing-library__jest-dom": "^5.14.5", "@typescript-eslint/eslint-plugin": "8.24.0", "@typescript-eslint/parser": "8.23.0", "babel-jest": "29.7.0", "eslint": "9.19.0", "eslint-config-prettier": "10.0.1", "eslint-import-resolver-typescript": "^3.5.5", "eslint-plugin-filenames-simple": "0.9.0", "eslint-plugin-import": "2.31.0", "eslint-plugin-jest-dom": "5.5.0", "eslint-plugin-jsdoc": "48.2.1", "eslint-plugin-jsx-a11y": "6.10.2", "eslint-plugin-no-only-tests": "3.1.0", "eslint-plugin-react": "7.37.4", "eslint-plugin-react-hooks": "4.6.0", "eslint-plugin-testing-library": "7.1.1", "globals": "^15.14.0", "husky": "9.0.11", "identity-obj-proxy": "^3.0.0", "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", "js-yaml": "3.14.1", "lint-staged": "^13.1.0", "lodash": "4.17.21", "markdownlint": "0.33.0", "npm-run-all2": "5.0.2", "prettier": "3.2.5", "prismjs": "1.29.0", "stylelint": "16.14.1", "ts-node": "10.9.2", "typescript": "5.7.3", "typescript-eslint": "^8.23.0", "webpack-bundle-analyzer": "4.10.1", "yargs": "17.7.2" }, "packageManager": "pnpm@9.10.0+sha512.73a29afa36a0d092ece5271de5177ecbf8318d454ecd701343131b8ebc0c1a91c487da46ab77c8e596d6acf1461e3594ced4becedf8921b074fbd8653ed7051c", "pnpm": { "patchedDependencies": { "@fastify/oauth2@7.8.1": "patches/@fastify__oauth2@7.8.1.patch" }, "peerDependencyRules": { "allowedVersions": { "react-scrollable-anchor>react": "17", "react-scrollable-anchor>react-dom": "17" } } } }