mirror of
https://github.com/freeCodeCamp/freeCodeCamp.git
synced 2025-12-19 18:18:27 -05:00
feat: add daily challenge seed script (#60506)
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
This commit is contained in:
@@ -7,7 +7,9 @@ dashedName: python-challenge-20
|
|||||||
|
|
||||||
# --description--
|
# --description--
|
||||||
|
|
||||||
Given an array of integers, return an array of integers that appear more than once in the initial array, in the same order that they appear in the initial array. If no values appear more than once, return an empty array.
|
Given an array of integers, return an array of integers that appear more than once in the initial array, sorted in ascending order. If no values appear more than once, return an empty array.
|
||||||
|
|
||||||
|
- Only include one instance of each value in the returned array.
|
||||||
|
|
||||||
# --hints--
|
# --hints--
|
||||||
|
|
||||||
|
|||||||
124
pnpm-lock.yaml
generated
124
pnpm-lock.yaml
generated
@@ -384,34 +384,34 @@ importers:
|
|||||||
version: 4.20.10
|
version: 4.20.10
|
||||||
gatsby:
|
gatsby:
|
||||||
specifier: 3.15.0
|
specifier: 3.15.0
|
||||||
version: 3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)
|
version: 3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)
|
||||||
gatsby-cli:
|
gatsby-cli:
|
||||||
specifier: 3.15.0
|
specifier: 3.15.0
|
||||||
version: 3.15.0
|
version: 3.15.0
|
||||||
gatsby-plugin-create-client-paths:
|
gatsby-plugin-create-client-paths:
|
||||||
specifier: 3.15.0
|
specifier: 3.15.0
|
||||||
version: 3.15.0(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))
|
version: 3.15.0(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))
|
||||||
gatsby-plugin-manifest:
|
gatsby-plugin-manifest:
|
||||||
specifier: 3.15.0
|
specifier: 3.15.0
|
||||||
version: 3.15.0(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))(graphql@15.8.0)
|
version: 3.15.0(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))(graphql@15.8.0)
|
||||||
gatsby-plugin-pnpm:
|
gatsby-plugin-pnpm:
|
||||||
specifier: ^1.2.10
|
specifier: ^1.2.10
|
||||||
version: 1.2.10(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))
|
version: 1.2.10(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))
|
||||||
gatsby-plugin-postcss:
|
gatsby-plugin-postcss:
|
||||||
specifier: 4.15.0
|
specifier: 4.15.0
|
||||||
version: 4.15.0(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))(postcss@8.4.35)(webpack@5.90.3)
|
version: 4.15.0(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))(postcss@8.4.35)(webpack@5.90.3)
|
||||||
gatsby-plugin-react-helmet:
|
gatsby-plugin-react-helmet:
|
||||||
specifier: 4.15.0
|
specifier: 4.15.0
|
||||||
version: 4.15.0(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))(react-helmet@6.1.0(react@17.0.2))
|
version: 4.15.0(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))(react-helmet@6.1.0(react@17.0.2))
|
||||||
gatsby-plugin-remove-serviceworker:
|
gatsby-plugin-remove-serviceworker:
|
||||||
specifier: 1.0.0
|
specifier: 1.0.0
|
||||||
version: 1.0.0
|
version: 1.0.0
|
||||||
gatsby-source-filesystem:
|
gatsby-source-filesystem:
|
||||||
specifier: 3.15.0
|
specifier: 3.15.0
|
||||||
version: 3.15.0(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))
|
version: 3.15.0(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))
|
||||||
gatsby-transformer-remark:
|
gatsby-transformer-remark:
|
||||||
specifier: 5.25.1
|
specifier: 5.25.1
|
||||||
version: 5.25.1(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))
|
version: 5.25.1(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))
|
||||||
i18next:
|
i18next:
|
||||||
specifier: 25.2.1
|
specifier: 25.2.1
|
||||||
version: 25.2.1(typescript@5.2.2)
|
version: 25.2.1(typescript@5.2.2)
|
||||||
@@ -652,7 +652,7 @@ importers:
|
|||||||
version: 16.4.5
|
version: 16.4.5
|
||||||
gatsby-plugin-webpack-bundle-analyser-v2:
|
gatsby-plugin-webpack-bundle-analyser-v2:
|
||||||
specifier: 1.1.32
|
specifier: 1.1.32
|
||||||
version: 1.1.32(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))
|
version: 1.1.32(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))
|
||||||
i18next-fs-backend:
|
i18next-fs-backend:
|
||||||
specifier: 2.6.0
|
specifier: 2.6.0
|
||||||
version: 2.6.0
|
version: 2.6.0
|
||||||
@@ -1014,6 +1014,21 @@ importers:
|
|||||||
specifier: 3.6.0
|
specifier: 3.6.0
|
||||||
version: 3.6.0
|
version: 3.6.0
|
||||||
|
|
||||||
|
tools/daily-challenges:
|
||||||
|
devDependencies:
|
||||||
|
dotenv:
|
||||||
|
specifier: 16.4.5
|
||||||
|
version: 16.4.5
|
||||||
|
mongodb:
|
||||||
|
specifier: 6.10.0
|
||||||
|
version: 6.10.0(@aws-sdk/credential-providers@3.521.0)(socks@2.8.3)
|
||||||
|
tsx:
|
||||||
|
specifier: 4.19.1
|
||||||
|
version: 4.19.1
|
||||||
|
typescript:
|
||||||
|
specifier: 5.8.2
|
||||||
|
version: 5.8.2
|
||||||
|
|
||||||
tools/screenshot-service:
|
tools/screenshot-service:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@aws-sdk/client-s3':
|
'@aws-sdk/client-s3':
|
||||||
@@ -8319,9 +8334,6 @@ packages:
|
|||||||
get-tsconfig@4.10.1:
|
get-tsconfig@4.10.1:
|
||||||
resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==}
|
resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==}
|
||||||
|
|
||||||
get-tsconfig@4.8.1:
|
|
||||||
resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==}
|
|
||||||
|
|
||||||
get-uri@6.0.3:
|
get-uri@6.0.3:
|
||||||
resolution: {integrity: sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==}
|
resolution: {integrity: sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==}
|
||||||
engines: {node: '>= 14'}
|
engines: {node: '>= 14'}
|
||||||
@@ -21645,20 +21657,20 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
prismjs: 1.30.0
|
prismjs: 1.30.0
|
||||||
|
|
||||||
babel-plugin-remove-graphql-queries@3.15.0(@babel/core@7.23.0)(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)):
|
babel-plugin-remove-graphql-queries@3.15.0(@babel/core@7.23.0)(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/core': 7.23.0
|
'@babel/core': 7.23.0
|
||||||
'@babel/runtime': 7.23.9
|
'@babel/runtime': 7.23.9
|
||||||
'@babel/types': 7.23.9
|
'@babel/types': 7.23.9
|
||||||
gatsby: 3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)
|
gatsby: 3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)
|
||||||
gatsby-core-utils: 2.15.0
|
gatsby-core-utils: 2.15.0
|
||||||
|
|
||||||
babel-plugin-remove-graphql-queries@3.15.0(@babel/core@7.23.7)(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)):
|
babel-plugin-remove-graphql-queries@3.15.0(@babel/core@7.23.7)(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/core': 7.23.7
|
'@babel/core': 7.23.7
|
||||||
'@babel/runtime': 7.23.9
|
'@babel/runtime': 7.23.9
|
||||||
'@babel/types': 7.23.9
|
'@babel/types': 7.23.9
|
||||||
gatsby: 3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)
|
gatsby: 3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)
|
||||||
gatsby-core-utils: 2.15.0
|
gatsby-core-utils: 2.15.0
|
||||||
|
|
||||||
babel-plugin-transform-react-remove-prop-types@0.4.24: {}
|
babel-plugin-transform-react-remove-prop-types@0.4.24: {}
|
||||||
@@ -23699,7 +23711,7 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
eslint: 9.19.0
|
eslint: 9.19.0
|
||||||
|
|
||||||
eslint-config-react-app@6.0.0(@typescript-eslint/eslint-plugin@4.33.0(@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.2.2))(eslint@7.32.0)(typescript@5.2.2))(@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.2.2))(babel-eslint@10.1.0(eslint@7.32.0))(eslint-plugin-flowtype@5.10.0(eslint@7.32.0))(eslint-plugin-import@2.28.1(@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.2.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint@7.32.0))(eslint-plugin-jsx-a11y@6.7.1(eslint@7.32.0))(eslint-plugin-react-hooks@4.6.0(eslint@7.32.0))(eslint-plugin-react@7.33.2(eslint@7.32.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(eslint@7.32.0)(typescript@5.2.2):
|
eslint-config-react-app@6.0.0(@typescript-eslint/eslint-plugin@4.33.0(@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.2.2))(eslint@7.32.0)(typescript@5.2.2))(@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.2.2))(babel-eslint@10.1.0(eslint@7.32.0))(eslint-plugin-flowtype@5.10.0(eslint@7.32.0))(eslint-plugin-import@2.28.1(@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.2.2))(eslint-import-resolver-typescript@3.10.1)(eslint@7.32.0))(eslint-plugin-jsx-a11y@6.7.1(eslint@7.32.0))(eslint-plugin-react-hooks@4.6.0(eslint@7.32.0))(eslint-plugin-react@7.33.2(eslint@7.32.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(eslint@7.32.0)(typescript@5.2.2):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/eslint-plugin': 4.33.0(@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.2.2))(eslint@7.32.0)(typescript@5.2.2)
|
'@typescript-eslint/eslint-plugin': 4.33.0(@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.2.2))(eslint@7.32.0)(typescript@5.2.2)
|
||||||
'@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@5.2.2)
|
'@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@5.2.2)
|
||||||
@@ -23707,7 +23719,7 @@ snapshots:
|
|||||||
confusing-browser-globals: 1.0.11
|
confusing-browser-globals: 1.0.11
|
||||||
eslint: 7.32.0
|
eslint: 7.32.0
|
||||||
eslint-plugin-flowtype: 5.10.0(eslint@7.32.0)
|
eslint-plugin-flowtype: 5.10.0(eslint@7.32.0)
|
||||||
eslint-plugin-import: 2.28.1(@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.2.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint@7.32.0)
|
eslint-plugin-import: 2.28.1(@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.2.2))(eslint-import-resolver-typescript@3.10.1)(eslint@7.32.0)
|
||||||
eslint-plugin-jsx-a11y: 6.7.1(eslint@7.32.0)
|
eslint-plugin-jsx-a11y: 6.7.1(eslint@7.32.0)
|
||||||
eslint-plugin-react: 7.33.2(eslint@7.32.0)
|
eslint-plugin-react: 7.33.2(eslint@7.32.0)
|
||||||
eslint-plugin-react-hooks: 4.6.0(eslint@7.32.0)
|
eslint-plugin-react-hooks: 4.6.0(eslint@7.32.0)
|
||||||
@@ -23749,7 +23761,7 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
eslint-module-utils@2.8.0(@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.2.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint@7.32.0):
|
eslint-module-utils@2.8.0(@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.2.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@7.32.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
debug: 3.2.7
|
debug: 3.2.7
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
@@ -23785,7 +23797,7 @@ snapshots:
|
|||||||
- typescript
|
- typescript
|
||||||
- utf-8-validate
|
- utf-8-validate
|
||||||
|
|
||||||
eslint-plugin-import@2.28.1(@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.2.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint@7.32.0):
|
eslint-plugin-import@2.28.1(@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.2.2))(eslint-import-resolver-typescript@3.10.1)(eslint@7.32.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
array-includes: 3.1.7
|
array-includes: 3.1.7
|
||||||
array.prototype.findlastindex: 1.2.3
|
array.prototype.findlastindex: 1.2.3
|
||||||
@@ -23795,7 +23807,7 @@ snapshots:
|
|||||||
doctrine: 2.1.0
|
doctrine: 2.1.0
|
||||||
eslint: 7.32.0
|
eslint: 7.32.0
|
||||||
eslint-import-resolver-node: 0.3.9
|
eslint-import-resolver-node: 0.3.9
|
||||||
eslint-module-utils: 2.8.0(@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.2.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint@7.32.0)
|
eslint-module-utils: 2.8.0(@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.2.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@7.32.0)
|
||||||
has: 1.0.3
|
has: 1.0.3
|
||||||
is-core-module: 2.13.1
|
is-core-module: 2.13.1
|
||||||
is-glob: 4.0.3
|
is-glob: 4.0.3
|
||||||
@@ -24874,23 +24886,23 @@ snapshots:
|
|||||||
lodash: 4.17.21
|
lodash: 4.17.21
|
||||||
micromatch: 4.0.8
|
micromatch: 4.0.8
|
||||||
|
|
||||||
gatsby-plugin-create-client-paths@3.15.0(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)):
|
gatsby-plugin-create-client-paths@3.15.0(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/runtime': 7.23.9
|
'@babel/runtime': 7.23.9
|
||||||
gatsby: 3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)
|
gatsby: 3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)
|
||||||
|
|
||||||
gatsby-plugin-manifest@3.15.0(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))(graphql@15.8.0):
|
gatsby-plugin-manifest@3.15.0(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))(graphql@15.8.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/runtime': 7.23.9
|
'@babel/runtime': 7.23.9
|
||||||
gatsby: 3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)
|
gatsby: 3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)
|
||||||
gatsby-core-utils: 2.15.0
|
gatsby-core-utils: 2.15.0
|
||||||
gatsby-plugin-utils: 1.15.0(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))(graphql@15.8.0)
|
gatsby-plugin-utils: 1.15.0(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))(graphql@15.8.0)
|
||||||
semver: 7.5.4
|
semver: 7.5.4
|
||||||
sharp: 0.29.3
|
sharp: 0.29.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- graphql
|
- graphql
|
||||||
|
|
||||||
gatsby-plugin-page-creator@3.15.0(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))(graphql@15.8.0):
|
gatsby-plugin-page-creator@3.15.0(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))(graphql@15.8.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/runtime': 7.23.9
|
'@babel/runtime': 7.23.9
|
||||||
'@babel/traverse': 7.23.7
|
'@babel/traverse': 7.23.7
|
||||||
@@ -24898,10 +24910,10 @@ snapshots:
|
|||||||
chokidar: 3.6.0
|
chokidar: 3.6.0
|
||||||
fs-exists-cached: 1.0.0
|
fs-exists-cached: 1.0.0
|
||||||
fs-extra: 10.1.0
|
fs-extra: 10.1.0
|
||||||
gatsby: 3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)
|
gatsby: 3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)
|
||||||
gatsby-core-utils: 2.15.0
|
gatsby-core-utils: 2.15.0
|
||||||
gatsby-page-utils: 1.15.0
|
gatsby-page-utils: 1.15.0
|
||||||
gatsby-plugin-utils: 1.15.0(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))(graphql@15.8.0)
|
gatsby-plugin-utils: 1.15.0(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))(graphql@15.8.0)
|
||||||
gatsby-telemetry: 2.15.0
|
gatsby-telemetry: 2.15.0
|
||||||
globby: 11.1.0
|
globby: 11.1.0
|
||||||
lodash: 4.17.21
|
lodash: 4.17.21
|
||||||
@@ -24910,30 +24922,30 @@ snapshots:
|
|||||||
- graphql
|
- graphql
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
gatsby-plugin-pnpm@1.2.10(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)):
|
gatsby-plugin-pnpm@1.2.10(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)):
|
||||||
dependencies:
|
dependencies:
|
||||||
gatsby: 3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)
|
gatsby: 3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)
|
||||||
lodash.get: 4.4.2
|
lodash.get: 4.4.2
|
||||||
lodash.uniq: 4.5.0
|
lodash.uniq: 4.5.0
|
||||||
|
|
||||||
gatsby-plugin-postcss@4.15.0(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))(postcss@8.4.35)(webpack@5.90.3):
|
gatsby-plugin-postcss@4.15.0(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))(postcss@8.4.35)(webpack@5.90.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/runtime': 7.23.9
|
'@babel/runtime': 7.23.9
|
||||||
gatsby: 3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)
|
gatsby: 3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)
|
||||||
postcss: 8.4.35
|
postcss: 8.4.35
|
||||||
postcss-loader: 4.3.0(postcss@8.4.35)(webpack@5.90.3)
|
postcss-loader: 4.3.0(postcss@8.4.35)(webpack@5.90.3)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- webpack
|
- webpack
|
||||||
|
|
||||||
gatsby-plugin-react-helmet@4.15.0(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))(react-helmet@6.1.0(react@17.0.2)):
|
gatsby-plugin-react-helmet@4.15.0(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))(react-helmet@6.1.0(react@17.0.2)):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/runtime': 7.23.9
|
'@babel/runtime': 7.23.9
|
||||||
gatsby: 3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)
|
gatsby: 3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)
|
||||||
react-helmet: 6.1.0(react@17.0.2)
|
react-helmet: 6.1.0(react@17.0.2)
|
||||||
|
|
||||||
gatsby-plugin-remove-serviceworker@1.0.0: {}
|
gatsby-plugin-remove-serviceworker@1.0.0: {}
|
||||||
|
|
||||||
gatsby-plugin-typescript@3.15.0(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)):
|
gatsby-plugin-typescript@3.15.0(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/core': 7.23.7
|
'@babel/core': 7.23.7
|
||||||
'@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.23.7)
|
'@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.23.7)
|
||||||
@@ -24941,23 +24953,23 @@ snapshots:
|
|||||||
'@babel/plugin-proposal-optional-chaining': 7.17.12(@babel/core@7.23.7)
|
'@babel/plugin-proposal-optional-chaining': 7.17.12(@babel/core@7.23.7)
|
||||||
'@babel/preset-typescript': 7.23.3(@babel/core@7.23.7)
|
'@babel/preset-typescript': 7.23.3(@babel/core@7.23.7)
|
||||||
'@babel/runtime': 7.23.9
|
'@babel/runtime': 7.23.9
|
||||||
babel-plugin-remove-graphql-queries: 3.15.0(@babel/core@7.23.7)(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))
|
babel-plugin-remove-graphql-queries: 3.15.0(@babel/core@7.23.7)(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))
|
||||||
gatsby: 3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)
|
gatsby: 3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
gatsby-plugin-utils@1.15.0(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))(graphql@15.8.0):
|
gatsby-plugin-utils@1.15.0(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))(graphql@15.8.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/runtime': 7.23.9
|
'@babel/runtime': 7.23.9
|
||||||
fastq: 1.17.1
|
fastq: 1.17.1
|
||||||
gatsby: 3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)
|
gatsby: 3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)
|
||||||
graphql: 15.8.0
|
graphql: 15.8.0
|
||||||
joi: 17.12.2
|
joi: 17.12.2
|
||||||
|
|
||||||
gatsby-plugin-webpack-bundle-analyser-v2@1.1.32(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)):
|
gatsby-plugin-webpack-bundle-analyser-v2@1.1.32(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/runtime': 7.23.9
|
'@babel/runtime': 7.23.9
|
||||||
gatsby: 3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)
|
gatsby: 3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)
|
||||||
webpack-bundle-analyzer: 4.10.1
|
webpack-bundle-analyzer: 4.10.1
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- bufferutil
|
- bufferutil
|
||||||
@@ -25038,14 +25050,14 @@ snapshots:
|
|||||||
- supports-color
|
- supports-color
|
||||||
- utf-8-validate
|
- utf-8-validate
|
||||||
|
|
||||||
gatsby-source-filesystem@3.15.0(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)):
|
gatsby-source-filesystem@3.15.0(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/runtime': 7.23.9
|
'@babel/runtime': 7.23.9
|
||||||
chokidar: 3.6.0
|
chokidar: 3.6.0
|
||||||
fastq: 1.15.0
|
fastq: 1.15.0
|
||||||
file-type: 16.5.4
|
file-type: 16.5.4
|
||||||
fs-extra: 10.1.0
|
fs-extra: 10.1.0
|
||||||
gatsby: 3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)
|
gatsby: 3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)
|
||||||
gatsby-core-utils: 2.15.0
|
gatsby-core-utils: 2.15.0
|
||||||
got: 9.6.0
|
got: 9.6.0
|
||||||
md5-file: 5.0.0
|
md5-file: 5.0.0
|
||||||
@@ -25074,10 +25086,10 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- encoding
|
- encoding
|
||||||
|
|
||||||
gatsby-transformer-remark@5.25.1(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)):
|
gatsby-transformer-remark@5.25.1(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/runtime': 7.23.9
|
'@babel/runtime': 7.23.9
|
||||||
gatsby: 3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)
|
gatsby: 3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)
|
||||||
gatsby-core-utils: 3.25.0
|
gatsby-core-utils: 3.25.0
|
||||||
gray-matter: 4.0.3
|
gray-matter: 4.0.3
|
||||||
hast-util-raw: 6.1.0
|
hast-util-raw: 6.1.0
|
||||||
@@ -25109,7 +25121,7 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2):
|
gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/code-frame': 7.22.13
|
'@babel/code-frame': 7.22.13
|
||||||
'@babel/core': 7.23.0
|
'@babel/core': 7.23.0
|
||||||
@@ -25135,7 +25147,7 @@ snapshots:
|
|||||||
babel-plugin-add-module-exports: 1.0.4
|
babel-plugin-add-module-exports: 1.0.4
|
||||||
babel-plugin-dynamic-import-node: 2.3.3
|
babel-plugin-dynamic-import-node: 2.3.3
|
||||||
babel-plugin-lodash: 3.3.4
|
babel-plugin-lodash: 3.3.4
|
||||||
babel-plugin-remove-graphql-queries: 3.15.0(@babel/core@7.23.0)(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))
|
babel-plugin-remove-graphql-queries: 3.15.0(@babel/core@7.23.0)(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))
|
||||||
babel-preset-gatsby: 1.15.0(@babel/core@7.23.0)(core-js@3.33.0)
|
babel-preset-gatsby: 1.15.0(@babel/core@7.23.0)(core-js@3.33.0)
|
||||||
better-opn: 2.1.1
|
better-opn: 2.1.1
|
||||||
bluebird: 3.7.2
|
bluebird: 3.7.2
|
||||||
@@ -25160,10 +25172,10 @@ snapshots:
|
|||||||
devcert: 1.2.2
|
devcert: 1.2.2
|
||||||
dotenv: 8.6.0
|
dotenv: 8.6.0
|
||||||
eslint: 7.32.0
|
eslint: 7.32.0
|
||||||
eslint-config-react-app: 6.0.0(@typescript-eslint/eslint-plugin@4.33.0(@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.2.2))(eslint@7.32.0)(typescript@5.2.2))(@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.2.2))(babel-eslint@10.1.0(eslint@7.32.0))(eslint-plugin-flowtype@5.10.0(eslint@7.32.0))(eslint-plugin-import@2.28.1(@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.2.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint@7.32.0))(eslint-plugin-jsx-a11y@6.7.1(eslint@7.32.0))(eslint-plugin-react-hooks@4.6.0(eslint@7.32.0))(eslint-plugin-react@7.33.2(eslint@7.32.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(eslint@7.32.0)(typescript@5.2.2)
|
eslint-config-react-app: 6.0.0(@typescript-eslint/eslint-plugin@4.33.0(@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.2.2))(eslint@7.32.0)(typescript@5.2.2))(@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.2.2))(babel-eslint@10.1.0(eslint@7.32.0))(eslint-plugin-flowtype@5.10.0(eslint@7.32.0))(eslint-plugin-import@2.28.1(@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.2.2))(eslint-import-resolver-typescript@3.10.1)(eslint@7.32.0))(eslint-plugin-jsx-a11y@6.7.1(eslint@7.32.0))(eslint-plugin-react-hooks@4.6.0(eslint@7.32.0))(eslint-plugin-react@7.33.2(eslint@7.32.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(eslint@7.32.0)(typescript@5.2.2)
|
||||||
eslint-plugin-flowtype: 5.10.0(eslint@7.32.0)
|
eslint-plugin-flowtype: 5.10.0(eslint@7.32.0)
|
||||||
eslint-plugin-graphql: 4.0.0(@types/node@20.12.8)(graphql@15.8.0)(typescript@5.2.2)
|
eslint-plugin-graphql: 4.0.0(@types/node@20.12.8)(graphql@15.8.0)(typescript@5.2.2)
|
||||||
eslint-plugin-import: 2.28.1(@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.2.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint@7.32.0)
|
eslint-plugin-import: 2.28.1(@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.2.2))(eslint-import-resolver-typescript@3.10.1)(eslint@7.32.0)
|
||||||
eslint-plugin-jsx-a11y: 6.7.1(eslint@7.32.0)
|
eslint-plugin-jsx-a11y: 6.7.1(eslint@7.32.0)
|
||||||
eslint-plugin-react: 7.33.2(eslint@7.32.0)
|
eslint-plugin-react: 7.33.2(eslint@7.32.0)
|
||||||
eslint-plugin-react-hooks: 4.6.0(eslint@7.32.0)
|
eslint-plugin-react-hooks: 4.6.0(eslint@7.32.0)
|
||||||
@@ -25183,9 +25195,9 @@ snapshots:
|
|||||||
gatsby-graphiql-explorer: 1.15.0
|
gatsby-graphiql-explorer: 1.15.0
|
||||||
gatsby-legacy-polyfills: 1.15.0
|
gatsby-legacy-polyfills: 1.15.0
|
||||||
gatsby-link: 3.15.0(@gatsbyjs/reach-router@1.3.9(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)
|
gatsby-link: 3.15.0(@gatsbyjs/reach-router@1.3.9(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)
|
||||||
gatsby-plugin-page-creator: 3.15.0(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))(graphql@15.8.0)
|
gatsby-plugin-page-creator: 3.15.0(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))(graphql@15.8.0)
|
||||||
gatsby-plugin-typescript: 3.15.0(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))
|
gatsby-plugin-typescript: 3.15.0(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))
|
||||||
gatsby-plugin-utils: 1.15.0(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.19.0))(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))(graphql@15.8.0)
|
gatsby-plugin-utils: 1.15.0(gatsby@3.15.0(@types/node@20.12.8)(babel-eslint@10.1.0(eslint@7.32.0))(eslint-import-resolver-typescript@3.10.1)(eslint-plugin-testing-library@3.9.0(eslint@7.32.0)(typescript@5.2.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2))(graphql@15.8.0)
|
||||||
gatsby-react-router-scroll: 4.15.0(@gatsbyjs/reach-router@1.3.9(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)
|
gatsby-react-router-scroll: 4.15.0(@gatsbyjs/reach-router@1.3.9(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)
|
||||||
gatsby-telemetry: 2.15.0
|
gatsby-telemetry: 2.15.0
|
||||||
gatsby-worker: 0.6.0
|
gatsby-worker: 0.6.0
|
||||||
@@ -25355,10 +25367,6 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
resolve-pkg-maps: 1.0.0
|
resolve-pkg-maps: 1.0.0
|
||||||
|
|
||||||
get-tsconfig@4.8.1:
|
|
||||||
dependencies:
|
|
||||||
resolve-pkg-maps: 1.0.0
|
|
||||||
|
|
||||||
get-uri@6.0.3:
|
get-uri@6.0.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
basic-ftp: 5.0.5
|
basic-ftp: 5.0.5
|
||||||
@@ -31859,7 +31867,7 @@ snapshots:
|
|||||||
tsx@4.19.1:
|
tsx@4.19.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
esbuild: 0.23.1
|
esbuild: 0.23.1
|
||||||
get-tsconfig: 4.8.1
|
get-tsconfig: 4.10.1
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
fsevents: 2.3.3
|
fsevents: 2.3.3
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ packages:
|
|||||||
- 'tools/challenge-parser'
|
- 'tools/challenge-parser'
|
||||||
- 'tools/client-plugins/*'
|
- 'tools/client-plugins/*'
|
||||||
- 'tools/crowdin'
|
- 'tools/crowdin'
|
||||||
|
- 'tools/daily-challenges'
|
||||||
- 'tools/screenshot-service'
|
- 'tools/screenshot-service'
|
||||||
- 'tools/scripts/build'
|
- 'tools/scripts/build'
|
||||||
- 'tools/scripts/seed'
|
- 'tools/scripts/seed'
|
||||||
|
|||||||
9
tools/daily-challenges/README.md
Normal file
9
tools/daily-challenges/README.md
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
Script to seed the daily challenges. Used to seed challenges for local or production databases.
|
||||||
|
|
||||||
|
To run:
|
||||||
|
|
||||||
|
Copy the `sample.env` to `.env`,
|
||||||
|
Make sure dependencies are installed,
|
||||||
|
Run the main client with upcoming changes shown - this is so the script can get the challenges from GraphQL,
|
||||||
|
`cd tools/daily-challenges` to go into the `daily-challenges` folder,
|
||||||
|
Run `pnpm seed-daily-challenges` to seed the challenges from the "Dev Playground" superblock to a `DailyCodingChallenges` collection in the `freecodecamp` database.
|
||||||
162
tools/daily-challenges/helpers.ts
Normal file
162
tools/daily-challenges/helpers.ts
Normal file
@@ -0,0 +1,162 @@
|
|||||||
|
import { MongoClient, ObjectId } from 'mongodb';
|
||||||
|
import { Challenge, QueryResult } from './types';
|
||||||
|
|
||||||
|
const GRAPHQL_ENDPOINT = 'http://localhost:8000/___graphql';
|
||||||
|
|
||||||
|
// Query graphQL - note that the main client needs to be running to query the challenges
|
||||||
|
export async function queryGraphQL(query: string) {
|
||||||
|
const response = await fetch(GRAPHQL_ENDPOINT, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
},
|
||||||
|
body: JSON.stringify({ query })
|
||||||
|
});
|
||||||
|
|
||||||
|
const json = (await response.json()) as QueryResult;
|
||||||
|
|
||||||
|
if (!json?.data?.allChallengeNode?.edges?.length) {
|
||||||
|
throw new Error(
|
||||||
|
'Failed to find any challenges with GraphQL query. The client needs to be running'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return json;
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function fetchChallenges(language: 'javascript' | 'python') {
|
||||||
|
const query = `
|
||||||
|
query {
|
||||||
|
allChallengeNode(
|
||||||
|
filter: {challenge: {superBlock: {eq: "dev-playground"}, block: {eq: "daily-coding-challenges-${language}"}}}
|
||||||
|
sort: {order: ASC, fields: challenge___challengeOrder}
|
||||||
|
) {
|
||||||
|
edges {
|
||||||
|
node {
|
||||||
|
challenge {
|
||||||
|
id
|
||||||
|
title
|
||||||
|
description
|
||||||
|
instructions
|
||||||
|
fields {
|
||||||
|
tests {
|
||||||
|
testString
|
||||||
|
text
|
||||||
|
}
|
||||||
|
}
|
||||||
|
challengeFiles {
|
||||||
|
contents
|
||||||
|
fileKey
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
|
const queryRes = await queryGraphQL(query);
|
||||||
|
|
||||||
|
const challenges = queryRes.data.allChallengeNode.edges.map(
|
||||||
|
({ node }) => node.challenge
|
||||||
|
);
|
||||||
|
|
||||||
|
return challenges;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function combineChallenges({
|
||||||
|
jsChallenge,
|
||||||
|
pyChallenge,
|
||||||
|
challengeNumber,
|
||||||
|
date
|
||||||
|
}: {
|
||||||
|
jsChallenge: Challenge;
|
||||||
|
pyChallenge: Challenge;
|
||||||
|
challengeNumber: number;
|
||||||
|
date: Date;
|
||||||
|
}) {
|
||||||
|
const {
|
||||||
|
id: jsId,
|
||||||
|
title: jsTitle,
|
||||||
|
description: jsDescription,
|
||||||
|
instructions: jsInstructions,
|
||||||
|
fields: { tests: jsTests },
|
||||||
|
challengeFiles: jsChallengeFiles
|
||||||
|
} = jsChallenge;
|
||||||
|
|
||||||
|
const {
|
||||||
|
title: pyTitle,
|
||||||
|
description: pyDescription,
|
||||||
|
instructions: pyInstructions,
|
||||||
|
fields: { tests: pyTests },
|
||||||
|
challengeFiles: pyChallengeFiles
|
||||||
|
} = pyChallenge;
|
||||||
|
|
||||||
|
if (jsTitle.replace('JavaScript ', '') !== pyTitle.replace('Python ', '')) {
|
||||||
|
throw new Error(
|
||||||
|
`JavaScript and Python titles do not match for challenge ${challengeNumber}: "${jsTitle}" vs "${pyTitle}"`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (jsDescription !== pyDescription) {
|
||||||
|
throw new Error(
|
||||||
|
`JavaScript and Python descriptions do not match for challenge ${challengeNumber}`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (jsInstructions !== pyInstructions) {
|
||||||
|
throw new Error(
|
||||||
|
`JavaScript and Python instructions do not match for challenge ${challengeNumber}`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (jsTests.length !== pyTests.length) {
|
||||||
|
throw new Error(
|
||||||
|
`JavaScript and Python do not have the same number of tests for challenge ${challengeNumber}: ${jsTests.length} JavaScript vs ${pyTests.length} Python tests`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Use the JS challenge info for the new challenge meta - e.g. id, title, description, etc
|
||||||
|
const challengeData = {
|
||||||
|
// **DO NOT CHANEGE THE ID** it's used as the challenge ID - and what gets added to completedDailyCodingChallenges[]
|
||||||
|
_id: new ObjectId(`${jsId}`),
|
||||||
|
challengeNumber,
|
||||||
|
title: jsTitle.replace(`JavaScript Challenge ${challengeNumber}: `, ''),
|
||||||
|
date,
|
||||||
|
description: removeSection(jsDescription),
|
||||||
|
...(jsInstructions && {
|
||||||
|
instructions: removeSection(jsInstructions)
|
||||||
|
}),
|
||||||
|
javascript: {
|
||||||
|
tests: jsTests,
|
||||||
|
challengeFiles: jsChallengeFiles
|
||||||
|
},
|
||||||
|
python: {
|
||||||
|
tests: pyTests,
|
||||||
|
challengeFiles: pyChallengeFiles
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return challengeData;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function handleError(err: Error, client: MongoClient) {
|
||||||
|
if (err) {
|
||||||
|
console.error('Oh noes!! Error seeding Daily Challenges.');
|
||||||
|
console.error(err);
|
||||||
|
try {
|
||||||
|
client.close();
|
||||||
|
} catch {
|
||||||
|
// no-op
|
||||||
|
} finally {
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove the <section id="description/instructions"> that our parser adds.
|
||||||
|
export function removeSection(str: string) {
|
||||||
|
return str
|
||||||
|
.replace(/^<section id="(description|instructions)">\n?/, '')
|
||||||
|
.replace(/\n?<\/section>$/, '');
|
||||||
|
}
|
||||||
18
tools/daily-challenges/package.json
Normal file
18
tools/daily-challenges/package.json
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "daily-challenges",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"main": "seed-daily-challenges.js",
|
||||||
|
"scripts": {
|
||||||
|
"seed-daily-challenges": "tsx seed-daily-challenges.ts"
|
||||||
|
},
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC",
|
||||||
|
"description": "",
|
||||||
|
"devDependencies": {
|
||||||
|
"dotenv": "16.4.5",
|
||||||
|
"mongodb": "6.10.0",
|
||||||
|
"tsx": "4.19.1",
|
||||||
|
"typescript": "5.8.2"
|
||||||
|
},
|
||||||
|
"type": "module"
|
||||||
|
}
|
||||||
1
tools/daily-challenges/sample.env
Normal file
1
tools/daily-challenges/sample.env
Normal file
@@ -0,0 +1 @@
|
|||||||
|
MONGOHQ_URL=mongodb://127.0.0.1:27017/freecodecamp?directConnection=true
|
||||||
110
tools/daily-challenges/seed-daily-challenges.ts
Normal file
110
tools/daily-challenges/seed-daily-challenges.ts
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
/*
|
||||||
|
Script to seed daily challenges to freeCodeCamp database, DailyCodingChallenges collection.
|
||||||
|
It gets the daily challenge data from the dev-playground superblock using GraphQL.
|
||||||
|
The main client needs to be running with upcoming changes shown to get the info from GraphQL.
|
||||||
|
Run the curriculum tests on the dev-playground superblock before seeding to make sure they pass.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import 'dotenv/config';
|
||||||
|
import { MongoClient } from 'mongodb';
|
||||||
|
import { combineChallenges, fetchChallenges, handleError } from './helpers';
|
||||||
|
|
||||||
|
const { MONGOHQ_URL } = process.env;
|
||||||
|
|
||||||
|
// Number challenges in the dev-playground blocks
|
||||||
|
// Update this if the number of challenges changes
|
||||||
|
const EXPECTED_CHALLENGE_COUNT = 24;
|
||||||
|
|
||||||
|
// Date to set for the first challenge, second challenge will be one day later, etc...
|
||||||
|
// **DO NOT CHANGE THIS AFTER RELEASE**
|
||||||
|
const year = 2025;
|
||||||
|
const monthIndex = 5; // 0-indexed -> 5 = June
|
||||||
|
const day = 10;
|
||||||
|
const START_DATE = new Date(Date.UTC(year, monthIndex, day));
|
||||||
|
const ONE_DAY_IN_MS = 24 * 60 * 60 * 1000;
|
||||||
|
|
||||||
|
// Sanity check to make sure the start date hasn't unintentionally changed
|
||||||
|
// **IT SHOULD NOT CHANGE AFTER RELEASE**
|
||||||
|
const startDateString = '2025-06-10T00:00:00.000Z';
|
||||||
|
if (START_DATE.toISOString() !== startDateString) {
|
||||||
|
throw new Error(
|
||||||
|
`It appears the start date has changed from "${startDateString}".
|
||||||
|
Are you sure you want to change that? If you are seeding production,
|
||||||
|
you should not change the start date after the daily challenges have been release.
|
||||||
|
`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const client = new MongoClient(
|
||||||
|
MONGOHQ_URL || 'mongodb://127.0.0.1:27017/freecodecamp?directConnection=true'
|
||||||
|
);
|
||||||
|
|
||||||
|
const seed = async () => {
|
||||||
|
await client.db('admin').command({ ping: 1 });
|
||||||
|
console.log('Successfully connected to mongo');
|
||||||
|
|
||||||
|
const db = client.db('freecodecamp');
|
||||||
|
const dailyCodingChallenges = db.collection('DailyCodingChallenges');
|
||||||
|
|
||||||
|
console.log('Fetching challenges...');
|
||||||
|
const jsChallenges = await fetchChallenges('javascript');
|
||||||
|
const pyChallenges = await fetchChallenges('python');
|
||||||
|
|
||||||
|
if (jsChallenges.length !== pyChallenges.length) {
|
||||||
|
throw new Error(
|
||||||
|
`Number of challenges do not match: ${jsChallenges.length} JavaScript vs ${pyChallenges.length} Python challenges found`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (jsChallenges.length !== EXPECTED_CHALLENGE_COUNT) {
|
||||||
|
throw new Error(
|
||||||
|
`Expected ${EXPECTED_CHALLENGE_COUNT} challenges, but found ${jsChallenges.length} challenges`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(`${jsChallenges.length} challenges found for each language`);
|
||||||
|
console.log('Creating new challenges...');
|
||||||
|
const newChallenges = [];
|
||||||
|
|
||||||
|
for (let i = 0; i < jsChallenges.length; i++) {
|
||||||
|
const jsChallenge = jsChallenges[i];
|
||||||
|
const pyChallenge = pyChallenges[i];
|
||||||
|
|
||||||
|
const newChallenge = combineChallenges({
|
||||||
|
jsChallenge,
|
||||||
|
pyChallenge,
|
||||||
|
challengeNumber: i + 1,
|
||||||
|
date: new Date(START_DATE.getTime() + i * ONE_DAY_IN_MS)
|
||||||
|
});
|
||||||
|
|
||||||
|
newChallenges.push(newChallenge);
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('Finished creating new challenges');
|
||||||
|
console.log(`Writing ${newChallenges.length} challenges to database...`);
|
||||||
|
|
||||||
|
// Replace if the object exists, create new one if it doesn't
|
||||||
|
const bulkOps = newChallenges.map(challenge => ({
|
||||||
|
replaceOne: {
|
||||||
|
filter: { _id: challenge._id },
|
||||||
|
replacement: challenge,
|
||||||
|
upsert: true
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
|
||||||
|
await dailyCodingChallenges.bulkWrite(bulkOps);
|
||||||
|
|
||||||
|
console.log(`Finished writing challenges to database`);
|
||||||
|
|
||||||
|
const count = await dailyCodingChallenges.countDocuments();
|
||||||
|
|
||||||
|
if (count !== EXPECTED_CHALLENGE_COUNT) {
|
||||||
|
throw new Error(
|
||||||
|
`Expected ${EXPECTED_CHALLENGE_COUNT} challenges in the database, but found ${count} documents`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
seed()
|
||||||
|
.then(() => client.close())
|
||||||
|
.catch(err => handleError(err, client));
|
||||||
29
tools/daily-challenges/types.ts
Normal file
29
tools/daily-challenges/types.ts
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
export type QueryResult = {
|
||||||
|
data: {
|
||||||
|
allChallengeNode: {
|
||||||
|
edges: {
|
||||||
|
node: {
|
||||||
|
challenge: Challenge;
|
||||||
|
};
|
||||||
|
}[];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
export type Challenge = {
|
||||||
|
id: string;
|
||||||
|
title: string;
|
||||||
|
date: Date;
|
||||||
|
description: string;
|
||||||
|
instructions?: string;
|
||||||
|
fields: {
|
||||||
|
tests: {
|
||||||
|
testString: string;
|
||||||
|
text: string;
|
||||||
|
}[];
|
||||||
|
};
|
||||||
|
challengeFiles: {
|
||||||
|
contents: string;
|
||||||
|
filekey: string;
|
||||||
|
}[];
|
||||||
|
};
|
||||||
@@ -5,7 +5,8 @@
|
|||||||
"tools/challenge-auditor/index.ts",
|
"tools/challenge-auditor/index.ts",
|
||||||
"tools/challenge-editor/**/*",
|
"tools/challenge-editor/**/*",
|
||||||
"tools/challenge-helper-scripts/**/*.ts",
|
"tools/challenge-helper-scripts/**/*.ts",
|
||||||
"tools/scripts/**/*.ts"
|
"tools/scripts/**/*.ts",
|
||||||
|
"tools/daily-challenges/**/*.ts"
|
||||||
],
|
],
|
||||||
"extends": "./tsconfig-base.json"
|
"extends": "./tsconfig-base.json"
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user