diff --git a/docs/how-to-setup-freecodecamp-locally.md b/docs/how-to-setup-freecodecamp-locally.md index df9fe013350..bd02de131f4 100644 --- a/docs/how-to-setup-freecodecamp-locally.md +++ b/docs/how-to-setup-freecodecamp-locally.md @@ -261,7 +261,6 @@ By default, you will be signed in as a new user without any completed certificat ```bash pnpm run seed:certified-user -pnpm run seed:exams ``` > [!WARNING] @@ -295,8 +294,9 @@ A quick reference to the commands that you will need when working locally. | command | description | | ----------------- | ----------------------------------------------------------------------------- | | `pnpm install` | Installs / re-installs all dependencies and bootstraps the different services. | -| `pnpm run seed` | Creates authorized test users and inserts them into MongoDB. | +| `pnpm run seed` | Creates authorized test users and inserts them into MongoDB. Also runs `seed:exams` and `seed:surveys` below. | | `pnpm run seed:certified-user` | Creates authorized test users with certifications fully completed, and inserts them into MongoDB. | | `pnpm run seed:exams` | Creates exams and inserts them into MongoDB. | +| `pnpm run seed:surveys` | Creates surveys for defaults users and inserts them into MongoDB. | | `pnpm run develop` | Starts the freeCodeCamp API Server and Client Applications. | | `pnpm run clean` | Uninstalls all dependencies and cleans up caches. | diff --git a/package.json b/package.json index 69723709f92..1a3fa7e0338 100644 --- a/package.json +++ b/package.json @@ -69,9 +69,9 @@ "preseed": "npm-run-all create:shared", "playwright:install-build-tools": "cd ./e2e && npm i && npx playwright install && npx playwright install-deps", "playwright:install-build-tools-linux": "sh ./playwright-install.sh", - "seed": "cross-env DEBUG=fcc:* node ./tools/scripts/seed/seed-demo-user && pnpm seed:surveys", - "seed:certified-user": "cross-env DEBUG=fcc:* node ./tools/scripts/seed/seed-demo-user certified-user && pnpm seed:surveys", - "seed:exams": "cd tools/scripts/seed-exams && cross-env node ./create-exams.js", + "seed": "cross-env DEBUG=fcc:* node ./tools/scripts/seed/seed-demo-user && pnpm seed:surveys && pnpm seed:exams", + "seed:certified-user": "cross-env DEBUG=fcc:* node ./tools/scripts/seed/seed-demo-user certified-user && pnpm seed:surveys && pnpm seed:exams", + "seed:exams": "cross-env DEBUG=fcc:* node tools/scripts/seed-exams/create-exams", "seed:surveys": "cross-env DEBUG=fcc:* node ./tools/scripts/seed/seed-surveys", "serve:client": "cd ./client && pnpm run serve", "serve:client-ci": "cd ./client && pnpm run serve-ci", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fb1776b6a5b..58f0c0f9ecb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1401,6 +1401,9 @@ importers: tools/scripts/seed-exams: devDependencies: + debug: + specifier: 4.3.4 + version: 4.3.4(supports-color@8.1.1) dotenv: specifier: 16.3.1 version: 16.3.1 @@ -15740,6 +15743,7 @@ packages: dependencies: ms: 2.1.3 supports-color: 8.1.1 + dev: true /debug@4.3.1: resolution: {integrity: sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==} @@ -16075,7 +16079,7 @@ packages: '@types/tmp': 0.0.33 application-config-path: 0.1.1 command-exists: 1.2.9 - debug: 3.2.7(supports-color@8.1.1) + debug: 3.2.7(supports-color@5.5.0) eol: 0.9.1 get-port: 3.2.0 glob: 7.2.3 @@ -16935,7 +16939,7 @@ packages: /eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} dependencies: - debug: 3.2.7(supports-color@8.1.1) + debug: 3.2.7(supports-color@5.5.0) is-core-module: 2.13.1 resolve: 1.22.6 transitivePeerDependencies: @@ -16986,7 +16990,7 @@ packages: optional: true dependencies: '@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@5.2.2) - debug: 3.2.7(supports-color@8.1.1) + debug: 3.2.7(supports-color@5.5.0) eslint: 7.32.0 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@6.10.0)(eslint-plugin-import@2.29.0)(eslint@8.53.0) @@ -17015,7 +17019,7 @@ packages: optional: true dependencies: '@typescript-eslint/parser': 6.10.0(eslint@8.53.0)(typescript@5.2.2) - debug: 3.2.7(supports-color@8.1.1) + debug: 3.2.7(supports-color@5.5.0) eslint: 8.53.0 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@6.10.0)(eslint-plugin-import@2.29.0)(eslint@8.53.0) @@ -17075,7 +17079,7 @@ packages: array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 - debug: 3.2.7(supports-color@8.1.1) + debug: 3.2.7(supports-color@5.5.0) doctrine: 2.1.0 eslint: 7.32.0 eslint-import-resolver-node: 0.3.9 @@ -17109,7 +17113,7 @@ packages: array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 - debug: 3.2.7(supports-color@8.1.1) + debug: 3.2.7(supports-color@5.5.0) doctrine: 2.1.0 eslint: 8.53.0 eslint-import-resolver-node: 0.3.9 @@ -18353,7 +18357,7 @@ packages: debug: optional: true dependencies: - debug: 3.2.7(supports-color@8.1.1) + debug: 3.2.7(supports-color@5.5.0) /follow-redirects@1.15.3(debug@4.3.4): resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==} @@ -19201,7 +19205,7 @@ packages: css-minimizer-webpack-plugin: 2.0.0(webpack@5.89.0) css.escape: 1.5.1 date-fns: 2.30.0 - debug: 3.2.7(supports-color@8.1.1) + debug: 3.2.7(supports-color@5.5.0) deepmerge: 4.3.1 del: 5.1.0 detect-port: 1.5.1 @@ -22858,7 +22862,7 @@ packages: dependencies: async: 0.9.2 commondir: 1.0.1 - debug: 3.2.7(supports-color@8.1.1) + debug: 3.2.7(supports-color@5.5.0) lodash: 4.17.21 semver: 5.7.2 strong-globalize: 4.1.3 @@ -22871,7 +22875,7 @@ packages: resolution: {integrity: sha512-vDRR4gqkvGOEXh5yL383xGuGxUW9xtF+NCY6/lJu1VAgupKltZxEx3Vw+L3nsGvQrlkJTSmiK3jk72qxkoBtbw==} engines: {node: '>=6'} dependencies: - debug: 3.2.7(supports-color@8.1.1) + debug: 3.2.7(supports-color@5.5.0) lodash: 4.17.21 loopback-swagger: 5.9.0 strong-globalize: 4.1.3 @@ -22886,7 +22890,7 @@ packages: dependencies: async: 2.6.4 bson: 1.1.6 - debug: 3.2.7(supports-color@8.1.1) + debug: 3.2.7(supports-color@5.5.0) loopback-connector: 4.11.1 mongodb: 3.6.9 strong-globalize: 4.1.3 @@ -22930,7 +22934,7 @@ packages: dependencies: async: 2.6.4 bluebird: 3.7.2 - debug: 3.2.7(supports-color@8.1.1) + debug: 3.2.7(supports-color@5.5.0) depd: 1.1.2 inflection: 1.13.4 lodash: 4.17.21 @@ -22954,7 +22958,7 @@ packages: resolution: {integrity: sha512-p0qSzuuX7eATe5Bxy+RqCj3vSfSFfdCtqyf3yuC+DpchMvgal33XlhEi2UmywyK/Ym28oVnZxxWmfrwFMzSwLQ==} engines: {node: '>=4.0.0'} dependencies: - debug: 3.2.7(supports-color@8.1.1) + debug: 3.2.7(supports-color@5.5.0) transitivePeerDependencies: - supports-color dev: false @@ -22964,7 +22968,7 @@ packages: engines: {node: '>=8.9'} dependencies: async: 2.6.4 - debug: 3.2.7(supports-color@8.1.1) + debug: 3.2.7(supports-color@5.5.0) strong-globalize: 4.1.3 transitivePeerDependencies: - supports-color @@ -22975,7 +22979,7 @@ packages: engines: {node: '>=8'} dependencies: async: 2.6.4 - debug: 3.2.7(supports-color@8.1.1) + debug: 3.2.7(supports-color@5.5.0) ejs: 2.7.4 lodash: 4.17.21 strong-globalize: 4.1.3 @@ -31874,7 +31878,7 @@ packages: /webpack-virtual-modules@0.2.2: resolution: {integrity: sha512-kDUmfm3BZrei0y+1NTHJInejzxfhtU8eDj2M7OKb2IWrPFAeO1SOH2KuQ68MSZu9IGEHcxbkKKR1v18FrUSOmA==} dependencies: - debug: 3.2.7(supports-color@8.1.1) + debug: 3.2.7(supports-color@5.5.0) transitivePeerDependencies: - supports-color dev: true @@ -31882,7 +31886,7 @@ packages: /webpack-virtual-modules@0.3.2: resolution: {integrity: sha512-RXQXioY6MhzM4CNQwmBwKXYgBs6ulaiQ8bkNQEl2J6Z+V+s7lgl/wGvaI/I0dLnYKB8cKsxQc17QOAVIphPLDw==} dependencies: - debug: 3.2.7(supports-color@8.1.1) + debug: 3.2.7(supports-color@5.5.0) transitivePeerDependencies: - supports-color diff --git a/tools/scripts/seed-exams/create-exams.js b/tools/scripts/seed-exams/create-exams.js index 65bb30e10a4..4dcd79366f6 100755 --- a/tools/scripts/seed-exams/create-exams.js +++ b/tools/scripts/seed-exams/create-exams.js @@ -1,6 +1,7 @@ import { readFileSync } from 'fs'; import path, { join } from 'path'; import { fileURLToPath } from 'url'; +import debug from 'debug'; import dotenv from 'dotenv'; import yaml from 'js-yaml'; import { MongoClient, ObjectId } from 'mongodb'; @@ -10,6 +11,8 @@ import { validateExamSchema } from './exam-schema.js'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); +const log = debug('fcc:tools:seedExams'); + dotenv.config({ path: path.resolve(__dirname, '../../../.env') }); const { MONGOHQ_URL } = process.env; @@ -21,6 +24,8 @@ const examFilenames = [ const client = new MongoClient(MONGOHQ_URL, { useUnifiedTopology: true }); +log('Connected successfully to mongo'); + const db = client.db('freecodecamp'); const exams = db.collection('Exam'); @@ -62,13 +67,13 @@ const seed = async () => { { upsert: true } ); - console.log(`'${examJson.title}' added to exams database.`); + log(`'${examJson.title}' added to exams database.`); } catch (err) { handleError(err, client); } } - console.log('Finished seeding exams.'); + log('Finished seeding exams.'); }; seed() diff --git a/tools/scripts/seed-exams/package.json b/tools/scripts/seed-exams/package.json index 95c01aed0b3..8a5e722f3b2 100644 --- a/tools/scripts/seed-exams/package.json +++ b/tools/scripts/seed-exams/package.json @@ -19,6 +19,7 @@ "author": "freeCodeCamp ", "main": "none", "devDependencies": { + "debug": "4.3.4", "dotenv": "16.3.1", "joi": "17.11.0", "joi-objectid": "3.0.1",