Skip to content

Commit

Permalink
refactor: organise TypeScript config and migrate helpers (freeCodeCam…
Browse files Browse the repository at this point in the history
…p#44747)

* feat: allow more 1000 steps to be created at once

* refactor: start migrating to typescript

* refactor: delete-step to ts

* refactor: migrated some helpers

* refactor: migrate create-empty-steps

* refactor: migrate create-step-between

* refactor: finish migrating to TS

* refactor: migrate tests

* fix: ensure mock.restore is done after each test

* fix: prevent double-tscing

* fix: repair the tests

* chore: use ts-node for scripts

We don't need the performance boost of incremental compilation and
ts-node is easier to work with

* refactor: consolidate tsconfigs

* refactor: replace gulp

* fix: use ts-node for build-curriculum

* fix: allow ts compilation of config

* feat: create and use create:config script

* fix: add /config to eslint projects

* fix: remove gulp script
  • Loading branch information
ojeytonwilliams authored Jan 25, 2022
1 parent 82ca6d8 commit 7216ca5
Show file tree
Hide file tree
Showing 61 changed files with 444 additions and 4,287 deletions.
3 changes: 0 additions & 3 deletions .eslintignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,5 @@ client/static/**
client/public/**
api-server/src/public/**
api-server/lib/**
tools/scripts/build/ensure-env.js
tools/scripts/lint/validate-keys.js
tools/scripts/build/tsconfig.tsbuildinfo
config/i18n/all-langs.js
config/certification-settings.js
4 changes: 2 additions & 2 deletions .eslintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@
"parserOptions": {
"project": [
"./tsconfig.json",
"./tools/ui-components/tsconfig.json",
"./tools/tsconfig.json"
"./config/tsconfig.json",
"./tools/ui-components/tsconfig.json"
]
},
"extends": [
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/cypress.yml
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ jobs:
- name: Install and Build
run: |
npm ci
npm run ensure-env
npm run create:config
npm run build:curriculum
npm run build:server
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/node.js-tests-upcoming.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ jobs:
- name: Lint Source Files
run: |
npm ci
npm run ensure-env
npm run create:config
npm run build:curriculum
npm run lint
Expand Down Expand Up @@ -73,7 +73,7 @@ jobs:
- name: Install Dependencies
run: |
npm ci
npm run ensure-env
npm run create:config
npm run build:curriculum
- name: Run Tests
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/node.js-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ jobs:
- name: Lint Source Files
run: |
npm ci
npm run ensure-env
npm run create:config
npm run build:curriculum
npm run lint
Expand Down Expand Up @@ -66,7 +66,7 @@ jobs:
- name: Install Dependencies
run: |
npm ci
npm run ensure-env
npm run create:config
npm run build:curriculum
- name: Run Tests
Expand Down Expand Up @@ -102,7 +102,7 @@ jobs:
- name: Install Dependencies
run: |
npm ci
npm run ensure-env
npm run create:config
npm run build:curriculum
- name: Run Tests
Expand Down Expand Up @@ -142,7 +142,7 @@ jobs:
CLIENT_LOCALE: ${{ matrix.locale }}
run: |
npm ci
npm run ensure-env
npm run create:config
npm run build:curriculum
- name: Run Tests
Expand Down
3 changes: 0 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -165,9 +165,6 @@ config/curriculum.json
config/i18n/all-langs.js
config/certification-settings.js

tools/scripts/build/ensure-env.js
tools/tsconfig.tsbuildinfo
tools/scripts/lint/validate-keys.js

### vim ###
# Swap
Expand Down
2 changes: 1 addition & 1 deletion .gitpod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ tasks:
npm run seed &&
mongo --eval "db.fsyncLock(); db.fsyncUnlock()"
command: >
npm run ensure-env &&
npm run create:config &&
npm run build:curriculum &&
gp await-port 27017 &&
npm run develop:server
Expand Down
2 changes: 0 additions & 2 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,3 @@ config/certification-settings.js
client/i18n/**/*.json
docs/i18n
**/package-lock.json
tools/scripts/build/ensure-env.js
tools/scripts/lint/validate-keys.js
2 changes: 1 addition & 1 deletion client.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ USER node
WORKDIR /home/node/build
COPY --chown=node:node . .
RUN npm ci
# we don't need to separately run ensure-env, since it gets called as part of
# we don't need to separately run create:config, since it gets called as part of
# build:client
RUN npm run build:client

Expand Down
7 changes: 4 additions & 3 deletions client/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,18 +19,18 @@
"author": "freeCodeCamp <[email protected]>",
"main": "none",
"scripts": {
"prebuild": "tsc -p ../tools/ && node ../tools/scripts/build/ensure-env.js && npm run build:workers -- --env production",
"prebuild": "npm --prefix ../ run create:config && npm run build:workers -- --env production",
"build": "cross-env NODE_OPTIONS=\"--max-old-space-size=7168\" gatsby build --prefix-paths",
"build:workers": "cross-env NODE_OPTIONS=\"--max-old-space-size=7168\" webpack --config ./webpack-workers.js",
"clean": "gatsby clean",
"predevelop": "tsc -p ../tools/ && node ../tools/scripts/build/ensure-env.js && npm run build:workers -- --env development",
"predevelop": "npm --prefix ../ run create:config && npm run build:workers -- --env development",
"develop": "cross-env NODE_OPTIONS=\"--max-old-space-size=5000\" gatsby develop --inspect=9230",
"lint": "node ./i18n/schema-validation.js",
"serve": "gatsby serve -p 8000",
"serve-ci": "serve -l 8000 -c ../serve.json public",
"prestand-alone": "npm run prebuild",
"stand-alone": "gatsby develop",
"validate-keys": "tsc -p ../tools/ && node ../tools/scripts/lint/validate-keys.js"
"validate-keys": "ts-node --project ../tsconfig.json ../tools/scripts/lint/validate-keys"
},
"dependencies": {
"@babel/plugin-proposal-export-default-from": "7.16.7",
Expand Down Expand Up @@ -145,6 +145,7 @@
"redux-mock-store": "1.5.4",
"redux-saga-test-plan": "4.0.4",
"serve": "13.0.2",
"ts-node": "^10.4.0",
"webpack": "5.67.0",
"webpack-cli": "4.9.2"
}
Expand Down
8 changes: 8 additions & 0 deletions config/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"include": ["**/*.ts"],
"extends": "../tsconfig-base.json",
"compilerOptions": {
"noEmit": false,
"module": "CommonJS"
}
}
27 changes: 0 additions & 27 deletions curriculum/gulpfile.js

This file was deleted.

8 changes: 8 additions & 0 deletions curriculum/lint-localized.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
var glob = require('glob');
const lint = require('../tools/scripts/lint');
const { testedLang } = require('./utils');

glob(`challenges/${testedLang()}/**/*.md`, (err, files) => {
if (!files.length) throw Error('No files found');
files.forEach(file => lint({ path: file }));
});
15 changes: 7 additions & 8 deletions curriculum/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,13 @@
"homepage": "https://github.com/freeCodeCamp/freeCodeCamp#readme",
"author": "freeCodeCamp <[email protected]>",
"scripts": {
"build": "node ../tools/scripts/build/build-curriculum.js",
"create-empty-steps": "cross-env CALLING_DIR=$INIT_CWD node ../tools/challenge-helper-scripts/create-empty-steps",
"create-next-step": "cross-env CALLING_DIR=$INIT_CWD node ../tools/challenge-helper-scripts/create-next-step",
"create-step-between": "cross-env CALLING_DIR=$INIT_CWD node ../tools/challenge-helper-scripts/create-step-between",
"delete-step": "cross-env CALLING_DIR=$INIT_CWD node ../tools/challenge-helper-scripts/delete-step",
"lint": "gulp lint",
"reorder-steps": "cross-env CALLING_DIR=$INIT_CWD node ../tools/challenge-helper-scripts/reorder-steps",
"build": "ts-node --project ../tsconfig.json ../tools/scripts/build/build-curriculum",
"create-empty-steps": "cross-env CALLING_DIR=$INIT_CWD ts-node --project ../tsconfig.json ../tools/challenge-helper-scripts/create-empty-steps",
"create-next-step": "cross-env CALLING_DIR=$INIT_CWD ts-node --project ../tsconfig.json ../tools/challenge-helper-scripts/create-next-step",
"create-step-between": "cross-env CALLING_DIR=$INIT_CWD ts-node --project ../tsconfig.json ../tools/challenge-helper-scripts/create-step-between",
"delete-step": "cross-env CALLING_DIR=$INIT_CWD ts-node --project ../tsconfig.json ../tools/challenge-helper-scripts/delete-step",
"lint": "ts-node --project ../tsconfig.json lint-localized",
"reorder-steps": "cross-env CALLING_DIR=$INIT_CWD ts-node --project ../tsconfig.json ../tools/challenge-helper-scripts/reorder-steps",
"test": "mocha --delay --exit --reporter progress --bail",
"test:full-output": "cross-env FULL_OUTPUT=true mocha --delay --reporter progress"
},
Expand All @@ -45,7 +45,6 @@
"chai": "4.3.4",
"cross-env": "7.0.3",
"css": "3.0.0",
"gulp": "4.0.2",
"invariant": "2.2.4",
"joi": "17.5.0",
"joi-objectid": "3.0.1",
Expand Down
4 changes: 2 additions & 2 deletions docs/devops.md
Original file line number Diff line number Diff line change
Expand Up @@ -482,7 +482,7 @@ Provisioning VMs with the Code
7. Build the server

```console
npm run ensure-env && npm run build:curriculum && npm run build:server
npm run create:config && npm run build:curriculum && npm run build:server
```

8. Start Instances
Expand Down Expand Up @@ -528,7 +528,7 @@ npm ci
3. Build the server

```console
npm run ensure-env && npm run build:curriculum && npm run build:server
npm run create:config && npm run build:curriculum && npm run build:server
```

4. Start Instances
Expand Down
4 changes: 2 additions & 2 deletions docs/how-to-work-on-localized-client-webapp.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ Most of files for translating the platform are located in the [`client/i18n`](ht

```console
config/i18n
└── all-langs.js
└── all-langs.ts
...
client/i18n
├── configForTests.js
Expand Down Expand Up @@ -57,7 +57,7 @@ Most of files for translating the platform are located in the [`client/i18n`](ht
│   └── trending.json
├── locales.test.js
├── schema-validation.js
└── validate-keys.js
└── validate-keys.ts
```

Some of these files are translated on our translation platform (Crowdin), some are not.
Expand Down
Loading

0 comments on commit 7216ca5

Please sign in to comment.