{ "name": "@freecodecamp/freecodecamp", "version": "0.0.1", "description": "The freeCodeCamp.org open-source codebase and curriculum", "license": "BSD-3-Clause", "private": true, "engines": { "node": ">=16", "npm": ">=8" }, "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", "workspaces": [ "api-server", "client", "client/plugins/fcc-source-challenges", "client/plugins/gatsby-remark-node-identity", "curriculum", "tools/challenge-editor/api", "tools/challenge-editor/client", "tools/challenge-helper-scripts", "tools/challenge-parser", "tools/crowdin", "tools/scripts/build", "tools/scripts/seed", "tools/ui-components" ], "scripts": { "analyze-bundle": "webpack-bundle-analyzer", "prebuild": "npm-run-all create:*", "build": "npm-run-all -p build:*", "build-workers": "cd ./client && npm run prebuild", "build:client": "cd ./client && npm run build", "build:curriculum": "cd ./curriculum && npm run build", "build:server": "cd ./api-server && npm run build", "challenge-editor": "npm-run-all -p challenge-editor:*", "challenge-editor:client": "cd ./tools/challenge-editor/client && npm start", "challenge-editor:server": "cd ./tools/challenge-editor/api && npm start", "clean": "npm-run-all -p clean:*", "clean-and-develop": "npm run clean && npm ci && npm run develop", "clean:client": "cd ./client && npm run clean", "clean:curriculum": "rimraf ./config/curriculum.json", "clean:packages": "rimraf ./**/node_modules", "clean:server": "rimraf ./api-server/lib", "create:config": "tsc -p config && npm run ensure-env", "create:utils": "tsc -p utils", "precypress": "node ./cypress-install.js", "cypress": "cypress", "cypress:dev:run": "npm run cypress -- run", "cypress:dev:watch": "npm run cypress -- open", "cypress:install": "cypress install && echo 'for use with ./cypress-install.js'", "cypress:install-build-tools": "sh ./cypress-install.sh", "cypress:prd:run": "npm run cypress -- run", "cypress:prd:watch": "npm run cypress -- open", "predevelop": "npm-run-all create:*", "develop": "npm-run-all build:curriculum -p develop:*", "develop:client": "npm run build:curriculum && cd ./client && npm run develop", "develop:server": "npm run predevelop && cd ./api-server && npm run develop", "docs:serve": "docsify serve ./docs -o --port 3200", "e2e": "npm run e2e:dev:run", "e2e:dev:run": "start-test develop ':3000/status/ping|8000' cypress:dev:run", "e2e:dev:watch": "start-test develop ':3000/status/ping|8000' cypress:dev:watch", "e2e:prd:run": "npm run build && start-test ':3000/status/ping|8000' cypress:dev:run", "e2e:prd:watch": "npm run build && start-test ':3000/status/ping|8000' cypress:dev:watch", "ensure-env": "cross-env DEBUG=fcc:* ts-node ./tools/scripts/build/ensure-env.ts", "format": "run-s format:eslint format:prettier", "format:eslint": "eslint . --fix", "format:prettier": "prettier --write .", "hooks:install": "node node_modules/husky/husky.js install", "hooks:uninstall": "node node_modules/husky/husky.js uninstall", "prelint": "npm run -w=client predevelop", "lint": "npm-run-all create:* -p lint:*", "lint:challenges": "cd ./curriculum && npm run lint", "lint:js": "eslint --max-warnings 0 .", "lint:ts": "tsc && tsc -p config && tsc -p tools/ui-components && tsc -p utils", "lint:prettier": "prettier --list-different .", "seed": "cross-env DEBUG=fcc:* node ./tools/scripts/seed/seedAuthUser", "seed:certified-user": "cross-env DEBUG=fcc:* node ./tools/scripts/seed/seedAuthUser certUser", "serve:client": "cd ./client && npm run serve", "serve:client-ci": "cd ./client && npm run serve-ci", "start": "npm-run-all create:* -p develop:server serve:client", "start-ci": "npm-run-all create:* -p start:server serve:client-ci", "start:server": "cd ./api-server && npm start", "storybook": "cd ./tools/ui-components && npm run storybook", "test": "run-s create:* build:curriculum build-workers test:*", "test:source": "jest", "test:curriculum": "cd ./curriculum && npm test", "test-curriculum-full-output": "cd ./curriculum && npm run test:full-output", "test-client": "jest client", "test-curriculum-js": "jest curriculum", "test-server": "jest api-server", "test-tools": "jest tools", "test-utils": "jest utils", "test-ui-components": "jest tools/ui-components", "prepare": "husky install" }, "dependencies": { "dotenv": "10.0.0", "invariant": "2.2.4" }, "devDependencies": { "@babel/eslint-parser": "7.18.2", "@babel/plugin-proposal-function-bind": "7.16.7", "@babel/preset-env": "7.18.2", "@babel/preset-react": "7.17.12", "@babel/preset-typescript": "7.17.12", "@testing-library/cypress": "8.0.3", "@testing-library/dom": "8.13.0", "@testing-library/jest-dom": "5.16.4", "@testing-library/user-event": "13.5.0", "@types/chai": "4.3.1", "@types/enzyme": "3.10.12", "@types/enzyme-adapter-react-16": "1.0.6", "@types/eslint": "7.29.0", "@types/estree": "0.0.51", "@types/faker": "5.5.9", "@types/inquirer": "8.2.1", "@types/jest": "27.5.2", "@types/jquery": "3.5.14", "@types/loadable__component": "5.13.4", "@types/lodash-es": "4.17.6", "@types/node": "16.11.38", "@types/prismjs": "1.26.0", "@types/psl": "1.1.0", "@types/reach__router": "1.3.10", "@types/react": "17.0.45", "@types/react-dom": "17.0.17", "@types/react-helmet": "6.1.5", "@types/react-instantsearch-dom": "6.12.1", "@types/react-monaco-editor": "0.16.0", "@types/react-redux": "7.1.24", "@types/react-responsive": "8.0.4", "@types/react-spinkit": "3.0.7", "@types/react-test-renderer": "17.0.2", "@types/react-transition-group": "4.4.4", "@types/redux-actions": "2.6.2", "@types/sanitize-html": "2.6.2", "@types/store": "2.0.2", "@types/validator": "13.7.3", "@typescript-eslint/eslint-plugin": "5.13.0", "@typescript-eslint/parser": "5.13.0", "babel-eslint": "10.1.0", "babel-plugin-transform-imports": "2.0.0", "cross-env": "7.0.3", "cypress": "9.7.0", "docsify-cli": "4.4.4", "eslint": "7.32.0", "eslint-config-prettier": "8.5.0", "eslint-plugin-import": "2.26.0", "eslint-plugin-jest-dom": "3.9.4", "eslint-plugin-jsx-a11y": "6.5.1", "eslint-plugin-prefer-object-spread": "1.2.1", "eslint-plugin-react": "7.29.4", "eslint-plugin-react-hooks": "4.5.0", "eslint-plugin-testing-library": "4.12.4", "execa": "5.1.1", "faker": "5.5.3", "husky": "7.0.4", "jest": "27.5.1", "js-yaml": "3.14.1", "lint-staged": "12.5.0", "lodash": "4.17.21", "markdownlint": "0.25.1", "mock-fs": "5.1.2", "npm-run-all": "4.1.5", "ora": "5.4.1", "prettier": "2.6.2", "prismjs": "1.28.0", "process": "0.11.10", "rimraf": "3.0.2", "start-server-and-test": "1.14.0", "ts-node": "10.8.1", "typescript": "4.7.3", "webpack-bundle-analyzer": "4.5.0" } }