diff --git a/.cspell.json b/.cspell.json index 92f8bf1dfb6c..ba31d09cfd5d 100644 --- a/.cspell.json +++ b/.cspell.json @@ -21,12 +21,11 @@ ], "ignorePaths": [ "CHANGELOG.md", - "examples", "packages/docusaurus-theme-translations/locales", - "__tests__", "package.json", "yarn.lock", "project-words.txt", + "__snapshots__", "website/src/data/users.tsx", "website/src/data/tweets.tsx", "*.xyz", diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 80716af9c10f..1d41847172f3 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,10 +1,33 @@ { - "name": "Docusaurus Dev Container", - "image": "mcr.microsoft.com/vscode/devcontainers/typescript-node:14-buster", + "image": "mcr.microsoft.com/vscode/devcontainers/base:ubuntu-20.04", "settings": { - "terminal.integrated.shell.linux": "/bin/bash" + "[typescript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.formatOnSave": true + }, + "[json]": { + "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.formatOnSave": true + }, + "[jsonc]": { + "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.formatOnSave": true + } }, - "extensions": ["dbaeumer.vscode-eslint", "orta.vscode-jest"], + "extensions": [ + "dbaeumer.vscode-eslint", + "orta.vscode-jest", + "esbenp.prettier-vscode", + "streetsidesoftware.code-spell-checker" + ], "forwardPorts": [3000], - "postCreateCommand": "yarn install" + "containerUser": "vscode", + "postCreateCommand": "yarn install", + "waitFor": "postCreateCommand", // otherwise automated jest tests fail + "features": { + "node": { + "version": "14" + }, + "github-cli": "latest" + } } diff --git a/.eslintignore b/.eslintignore index d870ab973046..d7a04f48d5f3 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,4 +1,5 @@ __fixtures__ +__mocks__ dist node_modules .yarn @@ -11,11 +12,10 @@ examples/ packages/lqip-loader/lib/ packages/docusaurus/lib/ packages/docusaurus-*/lib/* -packages/docusaurus-*/lib-next/ +packages/eslint-plugin/lib/ packages/stylelint-copyright/lib/ -copyUntypedFiles.mjs packages/create-docusaurus/lib/* -packages/create-docusaurus/templates/facebook/.eslintrc.js +packages/create-docusaurus/templates/facebook website/_dogfooding/_swizzle_theme_tests diff --git a/.eslintrc.js b/.eslintrc.js index 5fd41c1f8a8f..03a67afe1e1e 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -19,7 +19,8 @@ module.exports = { }, parser: '@typescript-eslint/parser', parserOptions: { - allowImportExportEverywhere: true, + // tsconfigRootDir: __dirname, + // project: ['./tsconfig.json', './website/tsconfig.json'], }, globals: { JSX: true, @@ -30,7 +31,11 @@ module.exports = { 'plugin:jest/recommended', 'airbnb', 'plugin:@typescript-eslint/recommended', + // 'plugin:@typescript-eslint/recommended-requiring-type-checking', + // 'plugin:@typescript-eslint/strict', + 'plugin:regexp/recommended', 'prettier', + 'plugin:@docusaurus/all', ], settings: { 'import/resolver': { @@ -40,7 +45,14 @@ module.exports = { }, }, reportUnusedDisableDirectives: true, - plugins: ['react-hooks', 'header', 'jest', '@typescript-eslint'], + plugins: [ + 'react-hooks', + 'header', + 'jest', + '@typescript-eslint', + 'regexp', + '@docusaurus', + ], rules: { 'array-callback-return': WARNING, camelcase: WARNING, @@ -48,6 +60,7 @@ module.exports = { curly: [WARNING, 'all'], 'global-require': WARNING, 'lines-between-class-members': OFF, + 'max-classes-per-file': OFF, 'max-len': [ WARNING, { @@ -61,6 +74,8 @@ module.exports = { 'no-await-in-loop': OFF, 'no-case-declarations': WARNING, 'no-console': OFF, + 'no-constant-binary-expression': ERROR, + 'no-continue': OFF, 'no-control-regex': WARNING, 'no-else-return': [WARNING, {allowElseIf: true}], 'no-empty': [WARNING, {allowEmptyCatch: true}], @@ -71,7 +86,7 @@ module.exports = { 'no-restricted-exports': OFF, 'no-restricted-properties': [ ERROR, - ...[ + .../** @type {[string, string][]} */ ([ // TODO: TS doesn't make Boolean a narrowing function yet, // so filter(Boolean) is problematic type-wise // ['compact', 'Array#filter(Boolean)'], @@ -102,7 +117,7 @@ module.exports = { ['take', 'Array#slice(0, n)'], ['takeRight', 'Array#slice(-n)'], ['tail', 'Array#slice(1)'], - ].map(([property, alternative]) => ({ + ]).map(([property, alternative]) => ({ object: '_', property, message: `Use ${alternative} instead.`, @@ -166,11 +181,17 @@ module.exports = { // selector: // @ 'ExportDefaultDeclaration > Identifier, ExportNamedDeclaration[source=null] > ExportSpecifier', // message: 'Export in one statement' - // } + // }, + ...['path', 'fs-extra', 'webpack', 'lodash'].map((m) => ({ + selector: `ImportDeclaration[importKind=value]:has(Literal[value=${m}]) > ImportSpecifier[importKind=value]`, + message: + 'Default-import this, both for readability and interoperability with ESM', + })), ], 'no-template-curly-in-string': WARNING, 'no-unused-expressions': [WARNING, {allowTaggedTemplates: true}], 'no-useless-escape': WARNING, + 'no-void': [ERROR, {allowAsStatement: true}], 'prefer-destructuring': WARNING, 'prefer-named-capture-group': WARNING, 'prefer-template': WARNING, @@ -194,15 +215,70 @@ module.exports = { 'import/no-unresolved': [ ERROR, { - ignore: ['^@theme', '^@docusaurus', '^@generated', '^@site'], + ignore: [ + '^@theme', + '^@docusaurus', + '^@generated', + '^@site', + '^@testing-utils', + ], + }, + ], + 'import/order': [ + WARNING, + { + groups: [ + 'builtin', + 'external', + 'internal', + ['parent', 'sibling', 'index'], + 'type', + ], + pathGroups: [ + {pattern: '@jest/globals', group: 'builtin', position: 'before'}, + {pattern: 'react', group: 'builtin', position: 'before'}, + {pattern: 'fs-extra', group: 'builtin'}, + {pattern: 'lodash', group: 'external', position: 'before'}, + {pattern: 'clsx', group: 'external', position: 'before'}, + // 'Bit weird to not use the `import/internal-regex` option, but this + // way, we can make `import type { Props } from "@theme/*"` appear + // before `import styles from "styles.module.css"`, which is what we + // always did. This should be removable once we stop using ambient + // module declarations for theme aliases. + {pattern: '@theme/**', group: 'internal'}, + {pattern: '@site/**', group: 'internal'}, + {pattern: '@theme-init/**', group: 'internal'}, + {pattern: '@theme-original/**', group: 'internal'}, + ], + pathGroupsExcludedImportTypes: [], }, ], - 'import/order': OFF, 'import/prefer-default-export': OFF, - 'jest/prefer-expect-resolves': WARNING, + 'jest/consistent-test-it': WARNING, 'jest/expect-expect': OFF, - 'jest/valid-title': OFF, + 'jest/no-large-snapshots': [ + WARNING, + {maxSize: Infinity, inlineMaxSize: 10}, + ], + 'jest/no-test-return-statement': ERROR, + 'jest/prefer-expect-resolves': WARNING, + 'jest/prefer-lowercase-title': [WARNING, {ignore: ['describe']}], + 'jest/prefer-spy-on': WARNING, + 'jest/prefer-to-be': WARNING, + 'jest/prefer-to-have-length': WARNING, + 'jest/require-top-level-describe': ERROR, + 'jest/valid-title': [ + ERROR, + { + mustNotMatch: { + it: [ + '^should|\\.$', + 'Titles should not begin with "should" or end with a full-stop', + ], + }, + }, + ], 'jsx-a11y/click-events-have-key-events': WARNING, 'jsx-a11y/no-noninteractive-element-interactions': WARNING, @@ -230,10 +306,17 @@ module.exports = { 'react/prop-types': OFF, 'react/require-default-props': [ERROR, {ignoreFunctionalComponents: true}], + '@typescript-eslint/consistent-type-definitions': OFF, + '@typescript-eslint/require-await': OFF, + '@typescript-eslint/ban-ts-comment': [ ERROR, {'ts-expect-error': 'allow-with-description'}, ], + '@typescript-eslint/consistent-indexed-object-style': [ + WARNING, + 'index-signature', + ], '@typescript-eslint/consistent-type-imports': [ WARNING, {disallowTypeAnnotations: false}, @@ -248,6 +331,7 @@ module.exports = { }, ], '@typescript-eslint/no-inferrable-types': OFF, + '@typescript-eslint/no-namespace': [WARNING, {allowDeclarations: true}], 'no-use-before-define': OFF, '@typescript-eslint/no-use-before-define': [ ERROR, @@ -259,36 +343,71 @@ module.exports = { 'no-shadow': OFF, '@typescript-eslint/no-shadow': ERROR, 'no-unused-vars': OFF, - '@typescript-eslint/no-unused-vars': [ - ERROR, + // We don't provide any escape hatches for this rule. Rest siblings and + // function placeholder params are always ignored, and any other unused + // locals must be justified with a disable comment. + '@typescript-eslint/no-unused-vars': [ERROR, {ignoreRestSiblings: true}], + '@typescript-eslint/prefer-optional-chain': ERROR, + '@docusaurus/no-untranslated-text': [ + WARNING, { - argsIgnorePattern: '^_', - varsIgnorePattern: '^_', - ignoreRestSiblings: true, + ignoredStrings: [ + '·', + '-', + '—', + '×', + '​', // zwj: ​ + '@', + 'WebContainers', + 'Twitter', + 'GitHub', + 'Dev.to', + '1.x', + ], }, ], }, overrides: [ { files: [ - 'packages/docusaurus-*/src/theme/**/*.js', - 'packages/docusaurus-*/src/theme/**/*.ts', - 'packages/docusaurus-*/src/theme/**/*.tsx', + 'packages/docusaurus-*/src/theme/**/*.{js,ts,tsx}', + 'packages/docusaurus/src/client/**/*.{js,ts,tsx}', ], rules: { - 'import/no-named-export': ERROR, + 'no-restricted-imports': [ + 'error', + { + patterns: [ + // Prevent importing lodash in client bundle for bundle size + 'lodash', + 'lodash.**', + 'lodash/**', + // Prevent importing server code in client bundle + '**/../babel/**', + '**/../server/**', + '**/../commands/**', + '**/../webpack/**', + ], + }, + ], }, }, { files: [ - 'packages/create-docusaurus/templates/**/*.js', - 'packages/create-docusaurus/templates/**/*.ts', - 'packages/create-docusaurus/templates/**/*.tsx', + 'packages/docusaurus-*/src/theme/**/*.{js,ts,tsx}', + 'packages/docusaurus/src/client/theme-fallback/**/*.{js,ts,tsx}', ], + rules: { + 'import/no-named-export': ERROR, + }, + }, + { + files: ['packages/create-docusaurus/templates/**/*.{js,ts,tsx}'], rules: { 'header/header': OFF, 'global-require': OFF, '@typescript-eslint/no-var-requires': OFF, + '@docusaurus/no-untranslated-text': OFF, }, }, { @@ -298,19 +417,48 @@ module.exports = { }, }, { - files: ['*.ts', '*.tsx'], + files: ['*.{ts,tsx}'], rules: { 'no-undef': OFF, 'import/no-import-module-exports': OFF, }, }, { - files: ['*.js', '*.mjs', '.cjs'], + files: ['*.{js,mjs,cjs}'], rules: { // Make JS code directly runnable in Node. '@typescript-eslint/no-var-requires': OFF, '@typescript-eslint/explicit-module-boundary-types': OFF, }, }, + { + files: [ + '**/__tests__/**', + 'packages/docusaurus-plugin-debug/**', + 'website/_dogfooding/**', + ], + rules: { + '@docusaurus/no-untranslated-text': OFF, + }, + }, + { + // Internal files where extraneous deps don't matter much at long as + // they run + files: [ + '*.test.{js,ts,tsx}', + 'admin/**', + 'jest/**', + 'website/**', + 'packages/docusaurus-theme-translations/update.mjs', + 'packages/docusaurus-theme-translations/src/utils.ts', + ], + rules: { + 'import/no-extraneous-dependencies': OFF, + }, + }, + { + files: ['packages/eslint-plugin/**/*.{js,ts}'], + extends: ['plugin:eslint-plugin/recommended'], + }, ], }; diff --git a/.gitattributes b/.gitattributes index 4bbe761c210d..8f814b940eb4 100644 --- a/.gitattributes +++ b/.gitattributes @@ -31,8 +31,14 @@ # Make GitHub not index certain files in the languages overview # See https://github.com/github/linguist/blob/master/docs/overrides.md # generated files' diff will be minimized -**/__fixtures__/** linguist-generated -.husky/** linguist-vendored -jest/** linguist-vendored -admin/** linguist-documentation -website/** linguist-documentation +**/__fixtures__/** linguist-generated +**/__mocks__/** linguist-generated +examples/** linguist-generated +.husky/** linguist-vendored +jest/** linguist-vendored +admin/** linguist-documentation +website/** linguist-documentation +packages/create-docusaurus/templates/** linguist-vendored +.eslintrc.* linguist-vendored +jest.config.* linguist-vendored +.stylelintrc.* linguist-vendored diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index fa69d62f365f..575fcbf8eb57 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,28 +1,44 @@ -If this PR adds or changes functionality, please take some time to update the docs. +## Pre-flight checklist -Happy contributing! +- [ ] I have read the [Contributing Guidelines on pull requests](https://github.com/facebook/docusaurus/blob/main/CONTRIBUTING.md#pull-requests). +- [ ] **If this is a code change**: I have written unit tests and/or added dogfooding pages to fully verify the new behavior. +- [ ] **If this is a new API or substantial change**: the PR has an accompanying issue (closes #0000) and the maintainers have approved on my working plan. + ## Motivation - - -### Have you read the [Contributing Guidelines on pull requests](https://github.com/facebook/docusaurus/blob/main/CONTRIBUTING.md#pull-requests)? - - + ## Test Plan -## Related PRs +### Test links + + + +Deploy preview: https://deploy-preview-_____--docusaurus-2.netlify.app/ + +## Related issues/PRs - + diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 7f3c305eabf8..0635bad2a579 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -5,8 +5,5 @@ updates: schedule: interval: weekly open-pull-requests-limit: 99 - - package-ecosystem: npm - directory: '/' - schedule: - interval: monthly - open-pull-requests-limit: 99 + labels: + - 'pr: dependencies' diff --git a/.github/workflows/build-blog-only.yml b/.github/workflows/build-blog-only.yml index c5e83a3df520..2726d079cc25 100644 --- a/.github/workflows/build-blog-only.yml +++ b/.github/workflows/build-blog-only.yml @@ -5,7 +5,14 @@ on: branches: - main paths: - - packages/docusaurus/** + - packages/** + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +permissions: + contents: read jobs: build: @@ -13,8 +20,10 @@ jobs: timeout-minutes: 30 runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 + - name: Checkout + uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3 + - name: Set up Node + uses: actions/setup-node@eeb10cff27034e7acf239c5d29f62154018672fd # v3 with: node-version: '16' cache: yarn diff --git a/.github/workflows/build-perf.yml b/.github/workflows/build-perf.yml index ad7b3c5c247b..1f95d812cd3d 100644 --- a/.github/workflows/build-perf.yml +++ b/.github/workflows/build-perf.yml @@ -9,21 +9,40 @@ on: pull_request: branches: - main - paths-ignore: - - website/docs/** + paths: + - package.json + - yarn.lock + - packages/** + - website/** + - '!website/docs/**' + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +permissions: + contents: read jobs: build-size: + permissions: + checks: write # for preactjs/compressed-size-action to create and update the checks + contents: read # for actions/checkout to fetch code + issues: write # for preactjs/compressed-size-action to create comments + pull-requests: write # for preactjs/compressed-size-action to write a PR review name: Build Size Report timeout-minutes: 30 runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 + - name: Checkout + uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3 + - name: Set up Node + uses: actions/setup-node@eeb10cff27034e7acf239c5d29f62154018672fd # v3 with: node-version: '16' cache: yarn - - uses: preactjs/compressed-size-action@v2 + - name: Track build size changes + uses: preactjs/compressed-size-action@8119d3d31b6e57b167e09c81dfa877eada3bcb35 # v2 with: repo-token: ${{ secrets.GITHUB_TOKEN }} build-script: build:website:en @@ -37,8 +56,8 @@ jobs: timeout-minutes: 30 runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 + - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3 + - uses: actions/setup-node@eeb10cff27034e7acf239c5d29f62154018672fd # v3 with: cache: yarn - name: Installation @@ -53,4 +72,4 @@ jobs: - name: Build (warm cache) run: yarn workspace website build --locale en timeout-minutes: 2 - # TODO post a Github comment with build with perf warnings? + # TODO post a GitHub comment with build with perf warnings? diff --git a/.github/workflows/canary-release.yml b/.github/workflows/canary-release.yml index e7557b4d79f6..0e01eeb93d81 100644 --- a/.github/workflows/canary-release.yml +++ b/.github/workflows/canary-release.yml @@ -7,16 +7,20 @@ on: paths: - packages/** +permissions: + contents: read + jobs: publish-canary: name: Publish Canary runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - name: Checkout + uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3 with: fetch-depth: 0 # Needed to get the commit number with "git rev-list --count HEAD" - name: Set up Node - uses: actions/setup-node@v3 + uses: actions/setup-node@eeb10cff27034e7acf239c5d29f62154018672fd # v3 with: node-version: '16' cache: yarn diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 69cb617ef87f..4d486c9022bb 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -10,6 +10,10 @@ on: schedule: - cron: 25 22 * * 3 +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + jobs: analyze: name: Analyze @@ -26,13 +30,13 @@ jobs: - javascript steps: - - name: Checkout repository - uses: actions/checkout@v3 + - name: Checkout + uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3 - name: Initialize CodeQL - uses: github/codeql-action/init@v1 + uses: github/codeql-action/init@27ea8f8fe5977c00f5b37e076ab846c5bd783b96 # v2 with: languages: ${{ matrix.language }} - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 + uses: github/codeql-action/analyze@27ea8f8fe5977c00f5b37e076ab846c5bd783b96 # v2 diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml new file mode 100644 index 000000000000..786484e2847d --- /dev/null +++ b/.github/workflows/dependency-review.yml @@ -0,0 +1,18 @@ +name: Dependency Review +on: [pull_request] + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +permissions: + contents: read + +jobs: + dependency-review: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b #v3 + - name: Dependency Review + uses: actions/dependency-review-action@a9c83d3af6b9031e20feba03b904645bb23d1dab # v1 diff --git a/.github/workflows/lighthouse-report.yml b/.github/workflows/lighthouse-report.yml index 5e7fc7d70fe0..bbd6692d1e4a 100644 --- a/.github/workflows/lighthouse-report.yml +++ b/.github/workflows/lighthouse-report.yml @@ -5,24 +5,30 @@ on: branches: - main +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + jobs: lighthouse-report: name: Lighthouse Report runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - name: Checkout + uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3 - name: Wait for the Netlify Preview - uses: jakepartusch/wait-for-netlify-action@v1 + uses: jakepartusch/wait-for-netlify-action@7ccf91c9ba3d64aa4389c0d3adcba0a6e77e5421 # v1 id: netlify with: site_name: docusaurus-2 max_timeout: 600 - name: Audit URLs using Lighthouse id: lighthouse_audit - uses: treosh/lighthouse-ci-action@9.3.0 + uses: treosh/lighthouse-ci-action@b4dfae3eb959c5226e2c5c6afd563d493188bfaf # 9.3.0 with: urls: | https://deploy-preview-$PR_NUMBER--docusaurus-2.netlify.app/ + https://deploy-preview-$PR_NUMBER--docusaurus-2.netlify.app/docs/installation configPath: ./.github/workflows/lighthouserc.json uploadArtifacts: true temporaryPublicStorage: true @@ -30,32 +36,19 @@ jobs: PR_NUMBER: ${{ github.event.pull_request.number}} - name: Format lighthouse score id: format_lighthouse_score - uses: actions/github-script@v6 + uses: actions/github-script@7a5c598405937d486b0331594b5da2b14db670da # v6 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | - const result = ${{ steps.lighthouse_audit.outputs.manifest }}[0].summary + const results = ${{ steps.lighthouse_audit.outputs.manifest }} const links = ${{ steps.lighthouse_audit.outputs.links }} - const formatResult = (res) => Math.round((res * 100)) - Object.keys(result).forEach(key => result[key] = formatResult(result[key])) - const score = res => res >= 90 ? '🟢' : res >= 50 ? '🟠' : '🔴' - const comment = [ - `⚡️ [Lighthouse report](${Object.values(links)[0]}) for the changes in this PR:`, - '| Category | Score |', - '| --- | --- |', - `| ${score(result.performance)} Performance | ${result.performance} |`, - `| ${score(result.accessibility)} Accessibility | ${result.accessibility} |`, - `| ${score(result['best-practices'])} Best practices | ${result['best-practices']} |`, - `| ${score(result.seo)} SEO | ${result.seo} |`, - `| ${score(result.pwa)} PWA | ${result.pwa} |`, - ' ', - `*Lighthouse ran on [${Object.keys(links)[0]}](${Object.keys(links)[0]})*` - ].join('\n') - core.setOutput("comment", comment); + const createLighthouseReport = (await import(`${process.env.GITHUB_WORKSPACE}/admin/scripts/formatLighthouseReport.js`)).default; + const comment = createLighthouseReport({ results, links }); + core.setOutput("comment", comment); - name: Add Lighthouse stats as comment id: comment_to_pr - uses: marocchino/sticky-pull-request-comment@v2.2.0 + uses: marocchino/sticky-pull-request-comment@39c5b5dc7717447d0cba270cd115037d32d28443 # v2.2.0 with: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} number: ${{ github.event.pull_request.number }} diff --git a/.github/workflows/lighthouserc.json b/.github/workflows/lighthouserc.json index 68d1186a7c0d..266bc66b4938 100644 --- a/.github/workflows/lighthouserc.json +++ b/.github/workflows/lighthouserc.json @@ -1,10 +1,5 @@ { "ci": { - "assert": { - "assertions": { - "categories:accessibility": ["error", {"minScore": 1}] - } - }, "collect": { "settings": { "skipAudits": [ diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 7a69a1362274..b6a1e10cbab2 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -5,20 +5,29 @@ on: branches: - main +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +permissions: + contents: read + jobs: lint: name: Lint timeout-minutes: 30 runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 + - name: Checkout + uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3 + - name: Set up Node + uses: actions/setup-node@eeb10cff27034e7acf239c5d29f62154018672fd # v3 with: node-version: '16' cache: yarn - name: Installation run: yarn - # run: yarn install --immutable # Fails if yarn.lock is modified (unfortunately only works for Yarn 2, and --frozen-lockfile is not the same!) + # run: yarn install --immutable # Fails if yarn.lock is modified (unfortunately only works for Yarn 2, and --frozen-lockfile is not the same!) - name: Check immutable yarn.lock run: git diff --exit-code - name: Lint diff --git a/.github/workflows/showcase-test.yml b/.github/workflows/showcase-test.yml index 83ad82c4cd5c..a78dfcb543d6 100644 --- a/.github/workflows/showcase-test.yml +++ b/.github/workflows/showcase-test.yml @@ -7,15 +7,23 @@ on: paths: - website/src/data/** +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +permissions: + contents: read + jobs: validate-config: name: Validate Showcase Config timeout-minutes: 30 runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - name: Checkout + uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3 - name: Set up Node - uses: actions/setup-node@v3 + uses: actions/setup-node@eeb10cff27034e7acf239c5d29f62154018672fd # v3 with: node-version: '16' cache: yarn diff --git a/.github/workflows/tests-e2e.yml b/.github/workflows/tests-e2e.yml index 7bb9f842ffc6..bbb68c9a1f74 100644 --- a/.github/workflows/tests-e2e.yml +++ b/.github/workflows/tests-e2e.yml @@ -4,13 +4,29 @@ on: push: branches: - main - paths-ignore: - - website/** + paths: + - package.json + - yarn.lock + - jest.config.mjs + - packages/** + - tsconfig.json pull_request: branches: - main - paths-ignore: - - website/** + paths: + - package.json + - yarn.lock + - jest.config.mjs + - packages/** + - tsconfig.json + - .github/workflows/tests-e2e.yml + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +permissions: + contents: read jobs: yarn-v1: @@ -19,11 +35,12 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node: ['14', '16', '17'] + node: ['16.14', '16', '18'] steps: - - uses: actions/checkout@v3 + - name: Checkout + uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3 - name: Use Node.js ${{ matrix.node }} - uses: actions/setup-node@v3 + uses: actions/setup-node@eeb10cff27034e7acf239c5d29f62154018672fd # v3 with: node-version: ${{ matrix.node }} cache: yarn @@ -53,15 +70,11 @@ jobs: matrix: nodeLinker: [pnp, node-modules] variant: [-s, -st] - exclude: - # Running tsc on PnP requires additional installations, which is not - # worthwhile for a simple E2E test - - variant: -st - nodeLinker: pnp steps: - - uses: actions/checkout@v3 + - name: Checkout + uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3 - name: Use Node.js 16 - uses: actions/setup-node@v3 + uses: actions/setup-node@eeb10cff27034e7acf239c5d29f62154018672fd # v3 with: node-version: '16' cache: yarn @@ -86,13 +99,21 @@ jobs: working-directory: ../test-website env: YARN_ENABLE_IMMUTABLE_INSTALLS: false # Yarn berry should create the lockfile, despite CI env + - name: Install missing dependencies + if: matrix.variant == '-st' && matrix.nodeLinker == 'pnp' + run: | + # These dependencies are referenced in the init project, not by our packages + yarn add @docusaurus/theme-classic @docusaurus/types @types/node + yarn config set packageExtensions --json '{ "unified@^9.2.2": { "dependencies": { "@types/unist": "^2.0.6" } } }' + working-directory: ../test-website - name: Start test-website project run: yarn start --no-open working-directory: ../test-website env: E2E_TEST: true - name: Type check - if: matrix.variant == '-st' + # TODO: there're some lingering issues with PnP + tsc. Enable tsc in PnP later. + if: matrix.variant == '-st' && matrix.nodeLinker != 'pnp' run: yarn typecheck working-directory: ../test-website - name: Build test-website project @@ -100,13 +121,14 @@ jobs: working-directory: ../test-website npm: - name: E2E — NPM + name: E2E — npm timeout-minutes: 30 runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - name: Checkout + uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3 - name: Use Node.js 16 - uses: actions/setup-node@v3 + uses: actions/setup-node@eeb10cff27034e7acf239c5d29f62154018672fd # v3 with: node-version: '16' cache: yarn @@ -114,7 +136,7 @@ jobs: run: yarn - name: Generate test-website project against main branch run: yarn test:build:website -s - - name: Install test-website project with NPM + - name: Install test-website project with npm run: npm install working-directory: ../test-website env: @@ -129,13 +151,14 @@ jobs: working-directory: ../test-website pnpm: - name: E2E — PNPM + name: E2E — pnpm timeout-minutes: 30 runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - name: Checkout + uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3 - name: Use Node.js 16 - uses: actions/setup-node@v3 + uses: actions/setup-node@eeb10cff27034e7acf239c5d29f62154018672fd # v3 with: node-version: '16' cache: yarn @@ -143,15 +166,16 @@ jobs: run: yarn - name: Generate test-website project against main branch run: yarn test:build:website -s - - name: Install test-website project with PNPM + - name: Install test-website project with pnpm run: | - curl -f https://get.pnpm.io/v6.16.js | node - add --global pnpm - pnpm install + npm install -g pnpm + # Fix some peer dependencies errors + pnpm add @algolia/client-search @types/react@17 typescript working-directory: ../test-website env: npm_config_registry: http://localhost:4873 - name: Start test-website project - run: pnpm run start -- --no-open + run: pnpm start --no-open working-directory: ../test-website env: E2E_TEST: true diff --git a/.github/workflows/tests-swizzle.yml b/.github/workflows/tests-swizzle.yml index 611b92c8834a..bacc02928909 100644 --- a/.github/workflows/tests-swizzle.yml +++ b/.github/workflows/tests-swizzle.yml @@ -7,6 +7,13 @@ on: paths: - packages/** +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +permissions: + contents: read + jobs: test: name: Swizzle @@ -17,11 +24,12 @@ jobs: action: ['eject', 'wrap'] variant: ['js', 'ts'] steps: - - uses: actions/checkout@v3 - - name: Use Node.js - uses: actions/setup-node@v3 + - name: Checkout + uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3 + - name: Set up Node + uses: actions/setup-node@eeb10cff27034e7acf239c5d29f62154018672fd # v3 with: - node-version: 14 + node-version: '16' cache: yarn - name: Installation run: yarn diff --git a/.github/workflows/tests-windows.yml b/.github/workflows/tests-windows.yml index 213ef8a3e0f6..8baeff8294cb 100644 --- a/.github/workflows/tests-windows.yml +++ b/.github/workflows/tests-windows.yml @@ -4,8 +4,19 @@ on: pull_request: branches: - main - paths-ignore: - - website/** + paths: + - package.json + - yarn.lock + - jest.config.mjs + - packages/** + - tsconfig.json + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +permissions: + contents: read jobs: windows-test: @@ -14,13 +25,14 @@ jobs: runs-on: windows-latest strategy: matrix: - node: ['14', '16', '17'] + node: ['16.14', '16', '18'] steps: - name: Support longpaths run: git config --system core.longpaths true - - uses: actions/checkout@v3 + - name: Checkout + uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3 - name: Use Node.js ${{ matrix.node }} - uses: actions/setup-node@v3 + uses: actions/setup-node@eeb10cff27034e7acf239c5d29f62154018672fd # v3 with: node-version: ${{ matrix.node }} - name: Installation diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 33992216fe48..f60d708e46a3 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -4,8 +4,19 @@ on: pull_request: branches: - main - paths-ignore: - - website/** + paths: + - package.json + - yarn.lock + - jest.config.mjs + - packages/** + - tsconfig.json + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +permissions: + contents: read jobs: test: @@ -14,11 +25,12 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node: ['14', '16', '17'] + node: ['16.14', '16', '18'] steps: - - uses: actions/checkout@v3 + - name: Checkout + uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3 - name: Use Node.js ${{ matrix.node }} - uses: actions/setup-node@v3 + uses: actions/setup-node@eeb10cff27034e7acf239c5d29f62154018672fd # v3 with: node-version: ${{ matrix.node }} cache: yarn diff --git a/.gitignore b/.gitignore index 29b717df7f86..1e612853226b 100644 --- a/.gitignore +++ b/.gitignore @@ -23,8 +23,8 @@ packages/create-docusaurus/lib/ packages/lqip-loader/lib/ packages/docusaurus/lib/ packages/docusaurus-*/lib/* +packages/eslint-plugin/lib/ packages/stylelint-copyright/lib/ -packages/docusaurus-*/lib-next/ website/netlifyDeployPreview/* website/changelog diff --git a/.husky/pre-commit b/.husky/pre-commit index 12ac3025e490..ff675761f226 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,4 +1,7 @@ #!/bin/sh . "$(dirname "$0")/_/husky.sh" -yarn lint-staged --allow-empty +# Workaround of a mysterious bug in either lint-staged or husky. +# https://github.com/typicode/husky/issues/1134 +# https://github.com/okonet/lint-staged/issues/693#issuecomment-1079759224 +FORCE_COLOR=1 yarn lint-staged --allow-empty diff --git a/.nvmrc b/.nvmrc index 832d38506443..3c032078a4a2 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -16.14.0 +18 diff --git a/.prettierignore b/.prettierignore index 98de3b0f4a0f..5bfdf4925c04 100644 --- a/.prettierignore +++ b/.prettierignore @@ -7,9 +7,9 @@ coverage packages/lqip-loader/lib/ packages/docusaurus/lib/ packages/docusaurus-*/lib/* -packages/docusaurus-*/lib-next/ packages/create-docusaurus/lib/* packages/create-docusaurus/templates/*/docusaurus.config.js +packages/eslint-plugin/lib/ packages/stylelint-copyright/lib/ __fixtures__ diff --git a/.stylelintignore b/.stylelintignore index 951af3a16ea9..15db7860ba7a 100644 --- a/.stylelintignore +++ b/.stylelintignore @@ -10,7 +10,6 @@ examples/ packages/lqip-loader/lib/ packages/docusaurus/lib/ packages/docusaurus-*/lib/* -packages/docusaurus-*/lib-next/ packages/create-docusaurus/lib/* packages/create-docusaurus/templates/ website/static/katex/katex.min.css diff --git a/CHANGELOG.md b/CHANGELOG.md index 9992b28ec895..22ab4e6fa124 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,649 @@ # Docusaurus 2 Changelog +## 2.0.0-beta.21 (2022-05-27) + +#### :boom: Breaking Change + +- `docusaurus-plugin-pwa` + - [#7422](https://github.com/facebook/docusaurus/pull/7422) refactor(pwa): remove reloadPopup option in favor of swizzling ([@Josh-Cena](https://github.com/Josh-Cena)) +- `create-docusaurus`, `docusaurus-cssnano-preset`, `docusaurus-logger`, `docusaurus-mdx-loader`, `docusaurus-migrate`, `docusaurus-plugin-client-redirects`, `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-plugin-content-pages`, `docusaurus-plugin-debug`, `docusaurus-plugin-google-analytics`, `docusaurus-plugin-google-gtag`, `docusaurus-plugin-ideal-image`, `docusaurus-plugin-pwa`, `docusaurus-plugin-sitemap`, `docusaurus-preset-classic`, `docusaurus-remark-plugin-npm2yarn`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-theme-live-codeblock`, `docusaurus-theme-search-algolia`, `docusaurus-theme-translations`, `docusaurus-utils-common`, `docusaurus-utils-validation`, `docusaurus-utils`, `docusaurus`, `eslint-plugin`, `lqip-loader` + - [#7501](https://github.com/facebook/docusaurus/pull/7501) chore: require Node 16.14 ([@Josh-Cena](https://github.com/Josh-Cena)) + +#### :rocket: New Feature + +- `docusaurus-plugin-sitemap` + - [#7469](https://github.com/facebook/docusaurus/pull/7469) feat(sitemap): allow customizing the output name ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-utils`, `docusaurus` + - [#7371](https://github.com/facebook/docusaurus/pull/7371) feat(core): support docusaurus.config.cjs as default file name ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus` + - [#7500](https://github.com/facebook/docusaurus/pull/7500) feat: make docusaurus serve automatically open in browser ([@Zamiell](https://github.com/Zamiell)) + - [#7452](https://github.com/facebook/docusaurus/pull/7452) feat: add --no-minify flag to docusaurus start ([@lanegoolsby](https://github.com/lanegoolsby)) +- `docusaurus-theme-classic` + - [#7357](https://github.com/facebook/docusaurus/pull/7357) feat(theme-classic): allow className as option for type: "search" ([@JPeer264](https://github.com/JPeer264)) + +#### :bug: Bug Fix + +- `docusaurus` + - [#7362](https://github.com/facebook/docusaurus/pull/7362) fix: always emit SEO title + og:title meta ([@charleskorn](https://github.com/charleskorn)) + - [#7453](https://github.com/facebook/docusaurus/pull/7453) fix(core): avoid using logger and fs.readJSON in SSR ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7369](https://github.com/facebook/docusaurus/pull/7369) fix(cli): output correct path when swizzling bare-file component in subfolder ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7360](https://github.com/facebook/docusaurus/pull/7360) fix(core): allow githubPort in config validation ([@mhughes2k](https://github.com/mhughes2k)) +- `docusaurus-plugin-google-gtag` + - [#7424](https://github.com/facebook/docusaurus/pull/7424) fix(gtag): send the newly rendered page's title instead of the old one's ([@ori-shalom](https://github.com/ori-shalom)) +- `create-docusaurus`, `docusaurus-utils` + - [#7507](https://github.com/facebook/docusaurus/pull/7507) fix(create-docusaurus): potential security issue with command injection ([@slorber](https://github.com/slorber)) +- `docusaurus-module-type-aliases`, `docusaurus-theme-classic`, `docusaurus` + - [#7492](https://github.com/facebook/docusaurus/pull/7492) fix(core): always treat error boundary fallback as a callback ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-theme-classic` + - [#7438](https://github.com/facebook/docusaurus/pull/7438) fix(theme-classic): allow nested task lists to preserve the indent ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7430](https://github.com/facebook/docusaurus/pull/7430) fix(theme-classic): consistently apply the right active class name for all navbar items ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7411](https://github.com/facebook/docusaurus/pull/7411) fix(theme-classic): autocollapse sidebar categories when navigating with paginator ([@pranabdas](https://github.com/pranabdas)) + - [#7363](https://github.com/facebook/docusaurus/pull/7363) fix(theme-classic): resolve customCss from site dir ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-utils` + - [#7464](https://github.com/facebook/docusaurus/pull/7464) fix(utils): fix Markdown link replacement when link text is same as href ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7458](https://github.com/facebook/docusaurus/pull/7458) fix(utils): avoid replacing Markdown links missing the directly next link ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-mdx-loader` + - [#7392](https://github.com/facebook/docusaurus/pull/7392) fix(mdx-loader): use React.Fragment as fragment factory ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-plugin-content-docs` + - [#7385](https://github.com/facebook/docusaurus/pull/7385) fix(content-docs): restore functionality when a category only has index page ([@Josh-Cena](https://github.com/Josh-Cena)) + +#### :nail_care: Polish + +- `docusaurus-theme-translations` + - [#7493](https://github.com/facebook/docusaurus/pull/7493) chore(theme-translations): complete French translations ([@forresst](https://github.com/forresst)) + - [#7474](https://github.com/facebook/docusaurus/pull/7474) chore(theme-translations): complete zh translations ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7400](https://github.com/facebook/docusaurus/pull/7400) chore(theme-translations): complete Farsi translations ([@massoudmaboudi](https://github.com/massoudmaboudi)) +- `docusaurus` + - [#7499](https://github.com/facebook/docusaurus/pull/7499) fix: avoid printing period after localhost URL ([@Zamiell](https://github.com/Zamiell)) +- `create-docusaurus` + - [#7374](https://github.com/facebook/docusaurus/pull/7374) refactor(create): clean up logic when prompting for unspecified arguments ([@Josh-Cena](https://github.com/Josh-Cena)) + +#### :memo: Documentation + +- [#7503](https://github.com/facebook/docusaurus/pull/7503) docs: document MDXComponents scope ([@Josh-Cena](https://github.com/Josh-Cena)) +- [#7497](https://github.com/facebook/docusaurus/pull/7497) docs: link every reference of types in API table to the type definition ([@Zamiell](https://github.com/Zamiell)) +- [#7407](https://github.com/facebook/docusaurus/pull/7407) docs: add Azure SWA as deployment option ([@nitya](https://github.com/nitya)) +- [#7390](https://github.com/facebook/docusaurus/pull/7390) fix(website): use react-lite-youtube-embed for lazy YouTube video ([@matkoch](https://github.com/matkoch)) + +#### :wrench: Maintenance + +- `create-docusaurus`, `docusaurus-logger`, `docusaurus-mdx-loader`, `docusaurus-migrate`, `docusaurus-module-type-aliases`, `docusaurus-plugin-client-redirects`, `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-plugin-content-pages`, `docusaurus-plugin-debug`, `docusaurus-plugin-google-gtag`, `docusaurus-plugin-ideal-image`, `docusaurus-plugin-pwa`, `docusaurus-plugin-sitemap`, `docusaurus-remark-plugin-npm2yarn`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-theme-live-codeblock`, `docusaurus-theme-search-algolia`, `docusaurus-theme-translations`, `docusaurus-utils-validation`, `docusaurus-utils`, `docusaurus`, `lqip-loader`, `stylelint-copyright` + - [#7477](https://github.com/facebook/docusaurus/pull/7477) refactor: fix a lot of errors in type-aware linting ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-theme-classic`, `docusaurus-theme-translations` + - [#7447](https://github.com/facebook/docusaurus/pull/7447) refactor(theme-classic): migrate to tsc for build ([@Josh-Cena](https://github.com/Josh-Cena)) +- `stylelint-copyright` + - [#7441](https://github.com/facebook/docusaurus/pull/7441) refactor(stylelint-copyright): migrate to TS ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-cssnano-preset` + - [#7440](https://github.com/facebook/docusaurus/pull/7440) refactor(cssnano-preset): migrate to TS ([@Josh-Cena](https://github.com/Josh-Cena)) +- `create-docusaurus`, `docusaurus-logger`, `docusaurus-mdx-loader`, `docusaurus-migrate`, `docusaurus-plugin-client-redirects`, `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-plugin-content-pages`, `docusaurus-plugin-debug`, `docusaurus-plugin-google-analytics`, `docusaurus-plugin-google-gtag`, `docusaurus-plugin-ideal-image`, `docusaurus-plugin-pwa`, `docusaurus-plugin-sitemap`, `docusaurus-preset-classic`, `docusaurus-remark-plugin-npm2yarn`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-theme-live-codeblock`, `docusaurus-theme-search-algolia`, `docusaurus-theme-translations`, `docusaurus-utils-common`, `docusaurus-utils-validation`, `docusaurus-utils`, `docusaurus`, `eslint-plugin`, `lqip-loader` + - [#7437](https://github.com/facebook/docusaurus/pull/7437) refactor: use TS project references instead of running tsc multiple times ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-plugin-pwa` + - [#7421](https://github.com/facebook/docusaurus/pull/7421) refactor(pwa): migrate client modules to TS ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-theme-classic` + - [#7415](https://github.com/facebook/docusaurus/pull/7415) refactor(theme-classic): always collocate stylesheets with components in one folder ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus` + - [#7405](https://github.com/facebook/docusaurus/pull/7405) refactor(core): properly code-split NotFound page ([@Josh-Cena](https://github.com/Josh-Cena)) + +#### Committers: 23 + +- Akara ([@Messiahhh](https://github.com/Messiahhh)) +- Benjamin Diolez ([@BenDz](https://github.com/BenDz)) +- Charles Korn ([@charleskorn](https://github.com/charleskorn)) +- Designatory ([@Designatory](https://github.com/Designatory)) +- Forresst ([@forresst](https://github.com/forresst)) +- Ggicci ([@ggicci](https://github.com/ggicci)) +- James ([@Zamiell](https://github.com/Zamiell)) +- Jan Peer Stöcklmair ([@JPeer264](https://github.com/JPeer264)) +- Jeremy ([@jrmyw92](https://github.com/jrmyw92)) +- Joshua Chen ([@Josh-Cena](https://github.com/Josh-Cena)) +- Junjie ([@junjieweb](https://github.com/junjieweb)) +- Lane Goolsby ([@lanegoolsby](https://github.com/lanegoolsby)) +- Massoud Maboudi ([@massoudmaboudi](https://github.com/massoudmaboudi)) +- Matthias Koch ([@matkoch](https://github.com/matkoch)) +- Michael Hughes ([@mhughes2k](https://github.com/mhughes2k)) +- Ngô Quốc Đạt ([@datlechin](https://github.com/datlechin)) +- Nitya Narasimhan ([@nitya](https://github.com/nitya)) +- Oluwatobi Sofela ([@oluwatobiss](https://github.com/oluwatobiss)) +- Ori Shalom ([@ori-shalom](https://github.com/ori-shalom)) +- Pranab Das ([@pranabdas](https://github.com/pranabdas)) +- Rui Peres ([@RuiAAPeres](https://github.com/RuiAAPeres)) +- Sébastien Lorber ([@slorber](https://github.com/slorber)) +- 凱恩 Kane ([@Gary50613](https://github.com/Gary50613)) + +## 2.0.0-beta.20 (2022-05-05) + +#### :bug: Bug Fix + +- `docusaurus` + - [#7342](https://github.com/facebook/docusaurus/pull/7342) fix: avoid flash of page scrolling to top on refresh ([@slorber](https://github.com/slorber)) + - [#7329](https://github.com/facebook/docusaurus/pull/7329) fix(core): inject docusaurus version into SSR as local ([@RDIL](https://github.com/RDIL)) +- `docusaurus-theme-classic` + - [#7341](https://github.com/facebook/docusaurus/pull/7341) fix(theme-classic): properly highlight code block line numbers ([@Josh-Cena](https://github.com/Josh-Cena)) + +#### :memo: Documentation + +- [#7334](https://github.com/facebook/docusaurus/pull/7334) feat(website): make canary release page display actual canary version name ([@Josh-Cena](https://github.com/Josh-Cena)) +- [#7343](https://github.com/facebook/docusaurus/pull/7343) docs: add page for create-docusaurus API documentation ([@Josh-Cena](https://github.com/Josh-Cena)) +- [#7340](https://github.com/facebook/docusaurus/pull/7340) docs: add Yandex Metrika plugin to community plugins ([@sgromkov](https://github.com/sgromkov)) +- [#7336](https://github.com/facebook/docusaurus/pull/7336) fix(website): fix multiple accessibility issues around color contrast ([@Josh-Cena](https://github.com/Josh-Cena)) +- [#7327](https://github.com/facebook/docusaurus/pull/7327) docs: add clarity to versioning behavior ([@pepopowitz](https://github.com/pepopowitz)) + +#### Committers: 6 + +- Alexey Pyltsyn ([@lex111](https://github.com/lex111)) +- Joshua Chen ([@Josh-Cena](https://github.com/Josh-Cena)) +- Reece Dunham ([@RDIL](https://github.com/RDIL)) +- Sergey Gromkov ([@sgromkov](https://github.com/sgromkov)) +- Steven Hicks ([@pepopowitz](https://github.com/pepopowitz)) +- Sébastien Lorber ([@slorber](https://github.com/slorber)) + +## 2.0.0-beta.19 (2022-05-04) + +#### :rocket: New Feature + +- `docusaurus-theme-classic`, `docusaurus-theme-common` + - [#7178](https://github.com/facebook/docusaurus/pull/7178) feat(theme-classic): extensible code block magic comment system ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7007](https://github.com/facebook/docusaurus/pull/7007) feat(theme-classic): code block showLineNumbers ([@lex111](https://github.com/lex111)) + - [#7012](https://github.com/facebook/docusaurus/pull/7012) feat(theme-classic): show blog sidebar on mobile ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-theme-classic`, `docusaurus-theme-live-codeblock`, `docusaurus`, `eslint-plugin` + - [#7206](https://github.com/facebook/docusaurus/pull/7206) feat: Docusaurus ESLint plugin to enforce best Docusaurus practices ([@elias-pap](https://github.com/elias-pap)) +- `docusaurus-plugin-google-analytics`, `docusaurus-plugin-google-gtag`, `docusaurus-theme-classic`, `docusaurus-types`, `docusaurus` + - [#6732](https://github.com/facebook/docusaurus/pull/6732) feat(core): rework client modules lifecycles, officially make API public ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-theme-classic` + - [#7231](https://github.com/facebook/docusaurus/pull/7231) feat: allow custom navbarItem types to pass through validation ([@slorber](https://github.com/slorber)) + - [#7058](https://github.com/facebook/docusaurus/pull/7058) feat(theme-classic): new 'html' type navbar item ([@lex111](https://github.com/lex111)) + - [#7079](https://github.com/facebook/docusaurus/pull/7079) feat: allow using pure HTML as label in navbar links ([@lex111](https://github.com/lex111)) +- `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-theme-translations` + - [#7036](https://github.com/facebook/docusaurus/pull/7036) feat(theme-classic): toggle code wrap button ([@lex111](https://github.com/lex111)) +- `docusaurus-plugin-content-docs`, `docusaurus-theme-classic`, `docusaurus-theme-common` + - [#6457](https://github.com/facebook/docusaurus/pull/6457) feat(content-docs): draft docs excluded from build & sidebars ([@jodyheavener](https://github.com/jodyheavener)) +- `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-types`, `docusaurus` + - [#6430](https://github.com/facebook/docusaurus/pull/6430) feat: allow setting calendar for i18n date formatting ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-module-type-aliases`, `docusaurus-plugin-content-docs`, `docusaurus-types`, `docusaurus` + - [#7083](https://github.com/facebook/docusaurus/pull/7083) feat(core): fail-safe global data fetching ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-plugin-content-docs` + - [#7106](https://github.com/facebook/docusaurus/pull/7106) feat(content-docs): make docs:version command work on localized docs ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-types`, `docusaurus` + - [#7082](https://github.com/facebook/docusaurus/pull/7082) feat(core): allow plugins to declare custom route context ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7124](https://github.com/facebook/docusaurus/pull/7124) feat(core): allow plugin/preset config to contain false/null ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-plugin-sitemap`, `docusaurus-utils` + - [#6979](https://github.com/facebook/docusaurus/pull/6979) feat(sitemap): add ignorePatterns option ([@ApsarasX](https://github.com/ApsarasX)) + +#### :boom: Breaking Change + +- `docusaurus-types`, `docusaurus` + - [#7257](https://github.com/facebook/docusaurus/pull/7257) refactor: remove long-deprecated routesLoaded lifecycle ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-theme-classic`, `docusaurus-theme-common` + - [#7277](https://github.com/facebook/docusaurus/pull/7277) refactor(theme-classic): move all sidebar-related config under themeConfig.docs.sidebar ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-plugin-google-analytics`, `docusaurus-plugin-google-gtag`, `docusaurus-theme-classic`, `docusaurus-types`, `docusaurus` + - [#6732](https://github.com/facebook/docusaurus/pull/6732) feat(core): rework client modules lifecycles, officially make API public ([@Josh-Cena](https://github.com/Josh-Cena)) +- `create-docusaurus`, `docusaurus-theme-classic` + - [#7176](https://github.com/facebook/docusaurus/pull/7176) refactor: customize code block line highlight color via CSS var ([@lex111](https://github.com/lex111)) +- `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-types`, `docusaurus-utils-validation`, `docusaurus-utils` + - [#7117](https://github.com/facebook/docusaurus/pull/7117) refactor(content-{blog,docs}): unify handling of tags ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-mdx-loader`, `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-plugin-content-pages`, `docusaurus-theme-classic`, `docusaurus-theme-live-codeblock` + - [#7027](https://github.com/facebook/docusaurus/pull/7027) refactor(content-docs): deduplicate types, JSDoc for some APIs ([@Josh-Cena](https://github.com/Josh-Cena)) + +#### :bug: Bug Fix + +- `docusaurus-theme-classic` + - [#7304](https://github.com/facebook/docusaurus/pull/7304) fix(theme-classic): remove breadcrumb items without href from microdata ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7179](https://github.com/facebook/docusaurus/pull/7179) fix(theme-classic): do not add microdata item prop to trailing breadcrumb ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7173](https://github.com/facebook/docusaurus/pull/7173) fix(theme-classic): admonition title: disable text-transform on inline code blocks ([@chelproc](https://github.com/chelproc)) + - [#7048](https://github.com/facebook/docusaurus/pull/7048) fix(theme-classic): add caret for dropdown on mobile ([@lex111](https://github.com/lex111)) + - [#7025](https://github.com/facebook/docusaurus/pull/7025) fix: make docs page wrapper take full height ([@lex111](https://github.com/lex111)) + - [#7013](https://github.com/facebook/docusaurus/pull/7013) fix(theme-classic): adjust shadow on code block ([@chernodub](https://github.com/chernodub)) + - [#7015](https://github.com/facebook/docusaurus/pull/7015) fix(theme-classic): do not add caret for non-collapsible categories ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-plugin-client-redirects`, `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-plugin-content-pages`, `docusaurus-plugin-debug`, `docusaurus-plugin-google-analytics`, `docusaurus-plugin-google-gtag`, `docusaurus-plugin-sitemap`, `docusaurus-preset-classic`, `docusaurus-theme-classic` + - [#7294](https://github.com/facebook/docusaurus/pull/7294) fix(\*): make TypeScript realize that each plugin package has a default export ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus` + - [#7285](https://github.com/facebook/docusaurus/pull/7285) fix(core): allow empty static directories ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7180](https://github.com/facebook/docusaurus/pull/7180) fix: pass pollOptions to webpack ([@JohnnyMcWeed](https://github.com/JohnnyMcWeed)) + - [#7184](https://github.com/facebook/docusaurus/pull/7184) fix(core): prevent 404 when accessing /page.html ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7225](https://github.com/facebook/docusaurus/pull/7225) fix: allow swizzling a component's parent folder ([@slorber](https://github.com/slorber)) + - [#7066](https://github.com/facebook/docusaurus/pull/7066) fix(core): all plugin lifecycles should receive translated content ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-plugin-content-docs` + - [#7233](https://github.com/facebook/docusaurus/pull/7233) fix(content-docs): make category index text translatable ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-theme-common` + - [#7200](https://github.com/facebook/docusaurus/pull/7200) fix(theme-common): do not persist color mode for OS-triggered changes ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7057](https://github.com/facebook/docusaurus/pull/7057) fix(theme-common): use native scrolling when smooth behavior set in CSS ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7033](https://github.com/facebook/docusaurus/pull/7033) fix(theme): only parse HTML- and JSX-style comments in MD code ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-plugin-content-blog` + - [#7212](https://github.com/facebook/docusaurus/pull/7212) fix(content-blog): make footnote reference DOM ID unique on post listing page ([@AkiraVoid](https://github.com/AkiraVoid)) +- `docusaurus-utils`, `docusaurus` + - [#7187](https://github.com/facebook/docusaurus/pull/7187) fix(core): handle case where package.json is not available at CWD ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-theme-translations` + - [#7222](https://github.com/facebook/docusaurus/pull/7222) fix(theme-translations): fix invalid pluralization in cs ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7166](https://github.com/facebook/docusaurus/pull/7166) fix(theme-translations): always try all possible locale resolutions ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-theme-classic`, `docusaurus-theme-search-algolia` + - [#7164](https://github.com/facebook/docusaurus/pull/7164) fix: adjust spacing for custom search properly ([@lex111](https://github.com/lex111)) +- `docusaurus-plugin-debug`, `docusaurus-plugin-sitemap`, `docusaurus-preset-classic`, `docusaurus-types`, `docusaurus` + - [#7143](https://github.com/facebook/docusaurus/pull/7143) fix(sitemap): exclude pages with robots noindex from sitemap ([@Josh-Cena](https://github.com/Josh-Cena)) +- `create-docusaurus`, `docusaurus-types` + - [#7078](https://github.com/facebook/docusaurus/pull/7078) fix(create): install types for JS template as well ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-utils` + - [#7043](https://github.com/facebook/docusaurus/pull/7043) fix(utils): parse Markdown headings with CRLF line break ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-utils`, `docusaurus` + - [#7023](https://github.com/facebook/docusaurus/pull/7023) refactor: fix a few places of path handling ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-types` + - [#7014](https://github.com/facebook/docusaurus/pull/7014) fix(types): declare history and react-loadable as dependencies ([@sulu5890](https://github.com/sulu5890)) + +#### :nail_care: Polish + +- `docusaurus-theme-classic`, `docusaurus-theme-translations` + - [#7299](https://github.com/facebook/docusaurus/pull/7299) refactor: minor improvements for breadcrumbs ([@lex111](https://github.com/lex111)) +- `create-docusaurus` + - [#7290](https://github.com/facebook/docusaurus/pull/7290) refactor(create): add i18n config in init template ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7286](https://github.com/facebook/docusaurus/pull/7286) refactor(create): update screenshots in quick start tutorial ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7223](https://github.com/facebook/docusaurus/pull/7223) refactor: use generated-index in init templates ([@slorber](https://github.com/slorber)) + - [#7118](https://github.com/facebook/docusaurus/pull/7118) refactor(create): mention that the edit links can be removed ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-plugin-debug`, `docusaurus-theme-classic` + - [#7306](https://github.com/facebook/docusaurus/pull/7306) chore: upgrade Infima to alpha.39 ([@lex111](https://github.com/lex111)) +- `docusaurus-plugin-debug`, `docusaurus-types`, `docusaurus` + - [#7291](https://github.com/facebook/docusaurus/pull/7291) feat(types): JSDoc for docusaurus config fields ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-theme-classic`, `docusaurus-theme-common` + - [#7267](https://github.com/facebook/docusaurus/pull/7267) fix(theme-common): allow details to not provide a summary ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7172](https://github.com/facebook/docusaurus/pull/7172) refactor: control base styling of code blocks via CSS vars ([@lex111](https://github.com/lex111)) + - [#7129](https://github.com/facebook/docusaurus/pull/7129) refactor(theme-classic): fix a few margin inconsistencies ([@lex111](https://github.com/lex111)) +- `docusaurus-plugin-content-docs`, `docusaurus-utils` + - [#7248](https://github.com/facebook/docusaurus/pull/7248) refactor: normalize Markdown linkification behavior, elaborate in documentation ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-theme-classic` + - [#7244](https://github.com/facebook/docusaurus/pull/7244) refactor: semantic markup improvement, fix validation warnings ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7183](https://github.com/facebook/docusaurus/pull/7183) refactor: use SVG icon for home breadcrumb ([@Dr-Electron](https://github.com/Dr-Electron)) + - [#7139](https://github.com/facebook/docusaurus/pull/7139) fix: proper spacing between generated card items on mobiles ([@lex111](https://github.com/lex111)) + - [#7134](https://github.com/facebook/docusaurus/pull/7134) fix(theme-classic): fix docs sidebar layout shifts when expanding categories ([@slorber](https://github.com/slorber)) + - [#7068](https://github.com/facebook/docusaurus/pull/7068) refactor(theme-classic): blog mobile secondary menu use consistent styles ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7004](https://github.com/facebook/docusaurus/pull/7004) fix(theme-classic): shrink title size on mobile ([@Pierre-Gilles](https://github.com/Pierre-Gilles)) +- `docusaurus-theme-translations` + - [#7214](https://github.com/facebook/docusaurus/pull/7214) chore(theme-translations): complete Polish translations ([@rev4324](https://github.com/rev4324)) + - [#7031](https://github.com/facebook/docusaurus/pull/7031) chore(theme-translations): complete German translations ([@deployn](https://github.com/deployn)) +- `create-docusaurus`, `docusaurus-theme-classic` + - [#7176](https://github.com/facebook/docusaurus/pull/7176) refactor: customize code block line highlight color via CSS var ([@lex111](https://github.com/lex111)) +- `docusaurus` + - [#7218](https://github.com/facebook/docusaurus/pull/7218) fix(cli): always show error stack to unhandled rejection ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7142](https://github.com/facebook/docusaurus/pull/7142) refactor(core): lower timeout before rendering progress bar to 200ms ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7103](https://github.com/facebook/docusaurus/pull/7103) fix(core): preserve Interpolate children semantics ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7029](https://github.com/facebook/docusaurus/pull/7029) refactor: console output improvements ([@lex111](https://github.com/lex111)) + - [#7017](https://github.com/facebook/docusaurus/pull/7017) refactor: remove copyright comment from swizzled components ([@lex111](https://github.com/lex111)) +- `docusaurus-plugin-content-docs`, `docusaurus-preset-classic`, `docusaurus-theme-classic` + - [#7148](https://github.com/facebook/docusaurus/pull/7148) feat(preset-classic, content-docs/client): JSDoc ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-plugin-debug`, `docusaurus-preset-classic` + - [#7122](https://github.com/facebook/docusaurus/pull/7122) feat(preset-classic): exclude debug plugin routes from sitemap ([@lex111](https://github.com/lex111)) +- `docusaurus-theme-common`, `docusaurus-utils`, `docusaurus` + - [#7113](https://github.com/facebook/docusaurus/pull/7113) test: improve test coverage ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-mdx-loader`, `docusaurus-migrate`, `docusaurus-module-type-aliases`, `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-plugin-ideal-image`, `docusaurus-remark-plugin-npm2yarn`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-theme-live-codeblock`, `docusaurus-types`, `docusaurus-utils-validation`, `docusaurus` + - [#7080](https://github.com/facebook/docusaurus/pull/7080) refactor: replace non-prop interface with type; allow plugin lifecycles to have sync type ([@Josh-Cena](https://github.com/Josh-Cena)) +- `create-docusaurus`, `docusaurus-logger`, `docusaurus-plugin-content-docs`, `docusaurus` + - [#7019](https://github.com/facebook/docusaurus/pull/7019) feat(logger): new "url" format, add double quotes around paths ([@lex111](https://github.com/lex111)) +- `docusaurus-plugin-content-docs`, `docusaurus-theme-classic`, `docusaurus-theme-common` + - [#7006](https://github.com/facebook/docusaurus/pull/7006) refactor: split and cleanup theme/DocPage ([@slorber](https://github.com/slorber)) +- `docusaurus-plugin-content-docs`, `docusaurus-theme-classic` + - [#7005](https://github.com/facebook/docusaurus/pull/7005) refactor: split DocSidebarItem by item type ([@slorber](https://github.com/slorber)) + +#### :memo: Documentation + +- `docusaurus-logger` + - [#7305](https://github.com/facebook/docusaurus/pull/7305) docs: update docs for logger, add API docs to website ([@Josh-Cena](https://github.com/Josh-Cena)) +- Other + - [#7284](https://github.com/facebook/docusaurus/pull/7284) docs: add a paragraph about SSR as an optimization technique ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7278](https://github.com/facebook/docusaurus/pull/7278) docs: enhance docs about Markdown TOC and metadata ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7271](https://github.com/facebook/docusaurus/pull/7271) docs: specify Node version requirement to a minor ([@DanRoscigno](https://github.com/DanRoscigno)) + - [#7252](https://github.com/facebook/docusaurus/pull/7252) docs: update gtag docs to reflect what a GA4 tag looks like ([@johnnyreilly](https://github.com/johnnyreilly)) + - [#7240](https://github.com/facebook/docusaurus/pull/7240) docs: add PCC Archive site to showcase ([@CuratorCat](https://github.com/CuratorCat)) + - [#7239](https://github.com/facebook/docusaurus/pull/7239) docs: add Chaos mesh site to showcase ([@cwen0](https://github.com/cwen0)) + - [#7235](https://github.com/facebook/docusaurus/pull/7235) docs: add TiDB community books to showcase ([@shczhen](https://github.com/shczhen)) + - [#7236](https://github.com/facebook/docusaurus/pull/7236) docs: add documentation about pluralization ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7230](https://github.com/facebook/docusaurus/pull/7230) docs: add OSS Insight to showcase ([@sykp241095](https://github.com/sykp241095)) + - [#7208](https://github.com/facebook/docusaurus/pull/7208) docs: remove mention of "template" from README installation guide ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7159](https://github.com/facebook/docusaurus/pull/7159) docs: explain more clearly the purpose of a ref sidebar type ([@andrewnicols](https://github.com/andrewnicols)) + - [#7126](https://github.com/facebook/docusaurus/pull/7126) docs: multiple documentation improvements ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7123](https://github.com/facebook/docusaurus/pull/7123) refactor(showcase): enforce descriptions with maximum length of 120 characters ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7026](https://github.com/facebook/docusaurus/pull/7026) docs: correct plugin example filename ([@mxhdx](https://github.com/mxhdx)) + - [#7110](https://github.com/facebook/docusaurus/pull/7110) docs: add a note about additional languages needing to be Prism component names ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#6746](https://github.com/facebook/docusaurus/pull/6746) fix(website): lazy-load YT iframe ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7061](https://github.com/facebook/docusaurus/pull/7061) docs: add docusaurus-plugin-typedoc to resources ([@nartc](https://github.com/nartc)) + - [#7059](https://github.com/facebook/docusaurus/pull/7059) docs: add firelordjs to showcase ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7050](https://github.com/facebook/docusaurus/pull/7050) docs: add import React statement in JSX file example ([@kaycebasques](https://github.com/kaycebasques)) + - [#7022](https://github.com/facebook/docusaurus/pull/7022) docs: add Easypanel to showcase ([@deiucanta](https://github.com/deiucanta)) + - [#7016](https://github.com/facebook/docusaurus/pull/7016) docs: consistently use sidebars.js filename ([@leedom92](https://github.com/leedom92)) + - [#7020](https://github.com/facebook/docusaurus/pull/7020) docs: add Divine WSF and Ghostly to showcase ([@LeviticusMB](https://github.com/LeviticusMB)) + - [#7000](https://github.com/facebook/docusaurus/pull/7000) docs: remove unnecessary semicolon ([@imsingh](https://github.com/imsingh)) +- `docusaurus-plugin-content-docs`, `docusaurus-utils` + - [#7248](https://github.com/facebook/docusaurus/pull/7248) refactor: normalize Markdown linkification behavior, elaborate in documentation ([@Josh-Cena](https://github.com/Josh-Cena)) +- `create-docusaurus`, `docusaurus-plugin-content-docs`, `docusaurus-theme-classic`, `docusaurus-utils` + - [#7081](https://github.com/facebook/docusaurus/pull/7081) docs: fix some casing inconsistencies ([@Josh-Cena](https://github.com/Josh-Cena)) + +#### :wrench: Maintenance + +- Other + - [#7309](https://github.com/facebook/docusaurus/pull/7309) chore: use "Maintenance" instead of "Internal" in changelog ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7300](https://github.com/facebook/docusaurus/pull/7300) misc: check doc page by Lighthouse CI ([@lex111](https://github.com/lex111)) + - [#7266](https://github.com/facebook/docusaurus/pull/7266) misc: add links section to PR template ([@slorber](https://github.com/slorber)) + - [#7224](https://github.com/facebook/docusaurus/pull/7224) chore: GitHub Actions cancel-in-progress ([@slorber](https://github.com/slorber)) + - [#7216](https://github.com/facebook/docusaurus/pull/7216) chore: remove netlify-cli from devDependencies ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7211](https://github.com/facebook/docusaurus/pull/7211) chore: replace node 17 with 18 in CI matrix ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7168](https://github.com/facebook/docusaurus/pull/7168) misc: add CI actions/dependency-review-action for security ([@slorber](https://github.com/slorber)) + - [#6984](https://github.com/facebook/docusaurus/pull/6984) misc: pin actions to a full-length commit SHA ([@naveensrinivasan](https://github.com/naveensrinivasan)) + - [#7002](https://github.com/facebook/docusaurus/pull/7002) chore: regen examples for 2.0 beta.18 ([@slorber](https://github.com/slorber)) +- `docusaurus-logger`, `docusaurus-remark-plugin-npm2yarn` + - [#7295](https://github.com/facebook/docusaurus/pull/7295) refactor: use export = syntax for Node utility packages ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-mdx-loader`, `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-types`, `docusaurus-utils-validation`, `docusaurus-utils`, `docusaurus` + - [#7293](https://github.com/facebook/docusaurus/pull/7293) refactor(types): move non-core, non-public types out of the types package ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-types`, `docusaurus` + - [#7292](https://github.com/facebook/docusaurus/pull/7292) refactor(core): collocate CLI commands and their option types ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7084](https://github.com/facebook/docusaurus/pull/7084) refactor(core): code cleanup ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-module-type-aliases`, `docusaurus` + - [#7282](https://github.com/facebook/docusaurus/pull/7282) refactor(core): prefetch/preload refactor ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-theme-classic`, `docusaurus-theme-common` + - [#7273](https://github.com/facebook/docusaurus/pull/7273) refactor(theme-classic): multiple re-arrangements ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7268](https://github.com/facebook/docusaurus/pull/7268) refactor(theme-classic): DocPage theme refactors polish ([@slorber](https://github.com/slorber)) + - [#7269](https://github.com/facebook/docusaurus/pull/7269) refactor: extract useSkipToContent() ([@slorber](https://github.com/slorber)) + - [#7175](https://github.com/facebook/docusaurus/pull/7175) refactor(theme-classic): split CodeBlock ([@slorber](https://github.com/slorber)) + - [#7067](https://github.com/facebook/docusaurus/pull/7067) refactor(theme-classic): extract doc-related navbar items' logic to theme-common ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7021](https://github.com/facebook/docusaurus/pull/7021) refactor(theme): extract plumbing code of BTT button into theme-common ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-theme-classic` + - [#7270](https://github.com/facebook/docusaurus/pull/7270) refactor(theme-classic): refactor TOC-related theme components ([@slorber](https://github.com/slorber)) +- `docusaurus` + - [#7220](https://github.com/facebook/docusaurus/pull/7220) refactor(cli): normalize the application of default option values ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7141](https://github.com/facebook/docusaurus/pull/7141) refactor(core): minor PendingNavigation refactor ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-plugin-content-docs` + - [#7243](https://github.com/facebook/docusaurus/pull/7243) chore: upgrade Jest to 28; add GitHub-actions reporter ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#7140](https://github.com/facebook/docusaurus/pull/7140) refactor(content-docs): split version handling into several files ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-mdx-loader`, `docusaurus-plugin-content-blog`, `docusaurus-plugin-ideal-image`, `docusaurus-plugin-pwa`, `docusaurus-theme-live-codeblock`, `docusaurus` + - [#7194](https://github.com/facebook/docusaurus/pull/7194) fix: fix a few internal declaration semantic errors ([@Josh-Cena](https://github.com/Josh-Cena)) +- `create-docusaurus`, `docusaurus-migrate`, `docusaurus-theme-translations`, `docusaurus` + - [#7186](https://github.com/facebook/docusaurus/pull/7186) refactor: prefer fs.readJSON over readFile.then(JSON.parse) ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-mdx-loader`, `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-plugin-content-pages` + - [#7145](https://github.com/facebook/docusaurus/pull/7145) refactor: unify how MDX content types are represented ([@Josh-Cena](https://github.com/Josh-Cena)) +- `create-docusaurus`, `docusaurus-mdx-loader`, `docusaurus-migrate`, `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-plugin-content-pages`, `docusaurus-plugin-ideal-image`, `docusaurus-plugin-pwa`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-theme-search-algolia`, `docusaurus-types`, `docusaurus-utils`, `docusaurus`, `lqip-loader` + - [#7138](https://github.com/facebook/docusaurus/pull/7138) chore: upgrade dependencies + upgrade React types ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-logger`, `docusaurus-mdx-loader`, `docusaurus-migrate`, `docusaurus-plugin-client-redirects`, `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-plugin-content-pages`, `docusaurus-plugin-sitemap`, `docusaurus-remark-plugin-npm2yarn`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-theme-live-codeblock`, `docusaurus-theme-search-algolia`, `docusaurus-theme-translations`, `docusaurus-utils-validation`, `docusaurus-utils`, `docusaurus` + - [#7131](https://github.com/facebook/docusaurus/pull/7131) chore: disable string escaping in snapshots ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-module-type-aliases`, `docusaurus-plugin-content-blog`, `docusaurus-theme-common`, `docusaurus-types`, `docusaurus-utils`, `docusaurus` + - [#7054](https://github.com/facebook/docusaurus/pull/7054) refactor(core): refactor routes generation logic ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-module-type-aliases`, `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-plugin-content-pages`, `docusaurus-types`, `docusaurus` + - [#7042](https://github.com/facebook/docusaurus/pull/7042) refactor(core): reorganize files ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-plugin-content-docs`, `docusaurus-utils`, `docusaurus` + - [#7037](https://github.com/facebook/docusaurus/pull/7037) refactor(core): reorganize functions ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-mdx-loader`, `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-plugin-content-pages`, `docusaurus-theme-classic`, `docusaurus-theme-live-codeblock` + - [#7027](https://github.com/facebook/docusaurus/pull/7027) refactor(content-docs): deduplicate types, JSDoc for some APIs ([@Josh-Cena](https://github.com/Josh-Cena)) + +#### :running_woman: Performance + +- `docusaurus-plugin-content-docs`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-theme-live-codeblock`, `docusaurus-theme-search-algolia`, `docusaurus-utils-common` + - [#7085](https://github.com/facebook/docusaurus/pull/7085) refactor: mark a few client-side packages as side-effect-free ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-mdx-loader`, `docusaurus-remark-plugin-npm2yarn` + - [#4997](https://github.com/facebook/docusaurus/pull/4997) perf(mdx-loader): cache mdx/remark compiler instances ([@phryneas](https://github.com/phryneas)) + +#### Committers: 47 + +- Aaron Nwabuoku ([@aerovulpe](https://github.com/aerovulpe)) +- AkiraVoid ([@AkiraVoid](https://github.com/AkiraVoid)) +- Alexey Pyltsyn ([@lex111](https://github.com/lex111)) +- Andrei Canta ([@deiucanta](https://github.com/deiucanta)) +- Andrew Lyons ([@andrewnicols](https://github.com/andrewnicols)) +- ApsarasX ([@ApsarasX](https://github.com/ApsarasX)) +- Chau Tran ([@nartc](https://github.com/nartc)) +- Chinazaekpere Ngubo ([@dr-ngubo](https://github.com/dr-ngubo)) +- Cwen Yin ([@cwen0](https://github.com/cwen0)) +- Dan Roscigno ([@DanRoscigno](https://github.com/DanRoscigno)) +- Elias Papavasileiou ([@elias-pap](https://github.com/elias-pap)) +- Evan ([@sulu5890](https://github.com/sulu5890)) +- Fusang❀ ([@cxOrz](https://github.com/cxOrz)) +- Indermohan Singh ([@imsingh](https://github.com/imsingh)) +- JMW ([@JohnnyMcWeed](https://github.com/JohnnyMcWeed)) +- Jeffrey Aven ([@jeffreyaven](https://github.com/jeffreyaven)) +- Jody Heavener ([@jodyheavener](https://github.com/jodyheavener)) +- John Reilly ([@johnnyreilly](https://github.com/johnnyreilly)) +- Joshua Chen ([@Josh-Cena](https://github.com/Josh-Cena)) +- Karl Ward ([@mjau-mjau](https://github.com/mjau-mjau)) +- Kayce Basques ([@kaycebasques](https://github.com/kaycebasques)) +- Leedom ([@leedom92](https://github.com/leedom92)) +- Lenz Weber-Tronic ([@phryneas](https://github.com/phryneas)) +- Lukas Bach ([@lukasbach](https://github.com/lukasbach)) +- Martin Blom ([@LeviticusMB](https://github.com/LeviticusMB)) +- Naveen ([@naveensrinivasan](https://github.com/naveensrinivasan)) +- Pablo Cordon ([@pcordon](https://github.com/pcordon)) +- Pierre-Gilles Leymarie ([@Pierre-Gilles](https://github.com/Pierre-Gilles)) +- Qi Zhang ([@zzzhangqi](https://github.com/zzzhangqi)) +- Sébastien Lorber ([@slorber](https://github.com/slorber)) +- Viktor Chernodub ([@chernodub](https://github.com/chernodub)) +- Zac A ([@sandypockets](https://github.com/sandypockets)) +- [@Dr-Electron](https://github.com/Dr-Electron) +- [@chelproc](https://github.com/chelproc) +- [@deployn](https://github.com/deployn) +- [@duanwilliam](https://github.com/duanwilliam) +- [@kgolubic](https://github.com/kgolubic) +- [@redhat123456](https://github.com/redhat123456) +- [@surendran82](https://github.com/surendran82) +- [@svix-ken](https://github.com/svix-ken) +- apq ([@AntonPalmqvist](https://github.com/AntonPalmqvist)) +- curatorcat.pcc.eth ([@CuratorCat](https://github.com/CuratorCat)) +- czhen ([@shczhen](https://github.com/shczhen)) +- loic ([@layerzzzio](https://github.com/layerzzzio)) +- mehdim ([@mxhdx](https://github.com/mxhdx)) +- rev ([@rev4324](https://github.com/rev4324)) +- sykp241095 ([@sykp241095](https://github.com/sykp241095)) + +## 2.0.0-beta.18 (2022-03-25) + +#### :rocket: New Feature + +- `docusaurus-mdx-loader`, `docusaurus-theme-classic` + - [#6990](https://github.com/facebook/docusaurus/pull/6990) feat: lazy-load external images + ability to customize image display ([@slorber](https://github.com/slorber)) +- `docusaurus-module-type-aliases`, `docusaurus-plugin-content-docs`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-types`, `docusaurus` + - [#6933](https://github.com/facebook/docusaurus/pull/6933) feat(core,theme): useRouteContext + HtmlClassNameProvider ([@slorber](https://github.com/slorber)) +- `docusaurus-plugin-debug`, `docusaurus-plugin-google-analytics`, `docusaurus-plugin-google-gtag`, `docusaurus-plugin-ideal-image`, `docusaurus-plugin-pwa`, `docusaurus-theme-classic`, `docusaurus-theme-live-codeblock`, `docusaurus-theme-search-algolia`, `docusaurus-types`, `docusaurus` + - [#6921](https://github.com/facebook/docusaurus/pull/6921) feat(core): allow plugin lifecycles to return relative paths ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-theme-classic` + - [#6697](https://github.com/facebook/docusaurus/pull/6697) feat: add SEO microdata for doc breadcrumbs ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#6842](https://github.com/facebook/docusaurus/pull/6842) feat(theme-classic): MDXContent wrapper component ([@slorber](https://github.com/slorber)) +- `docusaurus-plugin-content-docs` + - [#6780](https://github.com/facebook/docusaurus/pull/6780) feat(content-docs): allow custom props through _category_.json ([@taejs](https://github.com/taejs)) + +#### :boom: Breaking Change + +- `docusaurus-plugin-content-docs` + - [#6859](https://github.com/facebook/docusaurus/pull/6859) feat(content-docs): autogenerate category with linked doc metadata as fallback ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-theme-classic` + - [#6989](https://github.com/facebook/docusaurus/pull/6989) refactor: extract MDX components ([@slorber](https://github.com/slorber)) +- `docusaurus-module-type-aliases`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-theme-search-algolia`, `docusaurus` + - [#6925](https://github.com/facebook/docusaurus/pull/6925) refactor(theme-{classic,common}): refactor site/page/search metadata + apply className on html element ([@slorber](https://github.com/slorber)) +- `docusaurus-theme-classic`, `docusaurus-theme-common` + - [#6895](https://github.com/facebook/docusaurus/pull/6895) refactor(theme-{classic,common}): split navbar into smaller components + cleanup + swizzle config ([@slorber](https://github.com/slorber)) + - [#6930](https://github.com/facebook/docusaurus/pull/6930) refactor(theme-{classic,common}): refactor ColorModeToggle + useColorMode() hook ([@lex111](https://github.com/lex111)) + +#### :bug: Bug Fix + +- `docusaurus` + - [#6993](https://github.com/facebook/docusaurus/pull/6993) fix(core): prevent useBaseUrl returning /base/base when on /base ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#6936](https://github.com/facebook/docusaurus/pull/6936) fix: remove semicolon from HTML output ([@lex111](https://github.com/lex111)) + - [#6849](https://github.com/facebook/docusaurus/pull/6849) fix(cli): write-heading-id should not generate colliding slugs when not overwriting ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-theme-classic` + - [#6983](https://github.com/facebook/docusaurus/pull/6983) fix(search): bump Infima, fix search issue due to broken CSS selector ([@slorber](https://github.com/slorber)) +- `docusaurus-utils-validation` + - [#6977](https://github.com/facebook/docusaurus/pull/6977) fix(validation): allow non-object params to remark/rehype plugins ([@aloisklink](https://github.com/aloisklink)) +- `docusaurus-plugin-content-docs`, `docusaurus-utils` + - [#6973](https://github.com/facebook/docusaurus/pull/6973) fix(content-docs): suppress git error on multiple occurrences ([@felipecrs](https://github.com/felipecrs)) +- `docusaurus-plugin-content-blog` + - [#6947](https://github.com/facebook/docusaurus/pull/6947) fix(content-blog): only create archive route if there are blog posts ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#6918](https://github.com/facebook/docusaurus/pull/6918) fix(content-blog): remove double leading slash in blog-only paginated view ([@heowc](https://github.com/heowc)) +- `docusaurus-theme-search-algolia` + - [#6888](https://github.com/facebook/docusaurus/pull/6888) fix(theme-algolia): declare content-docs as dependency ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-theme-translations` + - [#6847](https://github.com/facebook/docusaurus/pull/6847) fix: minor Chinese translation fixes ([@rccttwd](https://github.com/rccttwd)) + +#### :nail_care: Polish + +- `docusaurus-plugin-content-docs` + - [#6859](https://github.com/facebook/docusaurus/pull/6859) feat(content-docs): autogenerate category with linked doc metadata as fallback ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#6887](https://github.com/facebook/docusaurus/pull/6887) fix(content-docs): give context about sidebar loading failure ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-plugin-content-docs`, `docusaurus-utils-validation`, `docusaurus` + - [#6997](https://github.com/facebook/docusaurus/pull/6997) fix(validation): improve error messages for a few schemas ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-theme-classic` + - [#6971](https://github.com/facebook/docusaurus/pull/6971) refactor: improve a11y of dropdown menu ([@lex111](https://github.com/lex111)) + - [#6987](https://github.com/facebook/docusaurus/pull/6987) refactor(theme-classic): cleanup of code blocks ([@lex111](https://github.com/lex111)) + - [#6950](https://github.com/facebook/docusaurus/pull/6950) refactor(theme-classic): clean up CSS of doc cards ([@lex111](https://github.com/lex111)) + - [#6994](https://github.com/facebook/docusaurus/pull/6994) refactor: better external link icon positioning ([@lex111](https://github.com/lex111)) + - [#6989](https://github.com/facebook/docusaurus/pull/6989) refactor: extract MDX components ([@slorber](https://github.com/slorber)) + - [#6985](https://github.com/facebook/docusaurus/pull/6985) refactor(theme-classic): remove span wrappers from layout links ([@lex111](https://github.com/lex111)) + - [#6986](https://github.com/facebook/docusaurus/pull/6986) fix(theme-classic): minor code copy button improvements ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#6964](https://github.com/facebook/docusaurus/pull/6964) refactor: replace text-based copy code button with icons ([@lex111](https://github.com/lex111)) + - [#6932](https://github.com/facebook/docusaurus/pull/6932) refactor(theme-classic): little breadcrumbs improvements ([@lex111](https://github.com/lex111)) + - [#6914](https://github.com/facebook/docusaurus/pull/6914) feat(theme-classic): set aria-expanded on expandable sidebar categories ([@pkowaluk](https://github.com/pkowaluk)) + - [#6844](https://github.com/facebook/docusaurus/pull/6844) refactor(theme-classic): split sidebar into smaller parts ([@slorber](https://github.com/slorber)) + - [#6846](https://github.com/facebook/docusaurus/pull/6846) refactor(theme-classic): consistently add span wrapper for layout links ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-theme-classic`, `docusaurus-utils-validation`, `docusaurus-utils`, `docusaurus` + - [#6980](https://github.com/facebook/docusaurus/pull/6980) feat(utils): JSDoc for all APIs ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-theme-common` + - [#6974](https://github.com/facebook/docusaurus/pull/6974) feat(theme-common): JSDoc for all APIs ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus` + - [#6784](https://github.com/facebook/docusaurus/pull/6784) feat(core): allow configureWebpack to return undefined ([@yorkie](https://github.com/yorkie)) + - [#6941](https://github.com/facebook/docusaurus/pull/6941) refactor(core): improve error message when a page has no default-export ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#6878](https://github.com/facebook/docusaurus/pull/6878) fix(core): ensure stable webpack theme aliases sorting ([@jrvidal](https://github.com/jrvidal)) + - [#6854](https://github.com/facebook/docusaurus/pull/6854) fix(core): fix swizzle legend typo ([@DigiPie](https://github.com/DigiPie)) + - [#6850](https://github.com/facebook/docusaurus/pull/6850) fix(core): make plugin lifecycles consistently bound to the plugin instance ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-utils` + - [#6937](https://github.com/facebook/docusaurus/pull/6937) fix(content-docs): warn when files are not tracked ([@felipecrs](https://github.com/felipecrs)) +- `docusaurus-module-type-aliases`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-theme-search-algolia`, `docusaurus` + - [#6925](https://github.com/facebook/docusaurus/pull/6925) refactor(theme-{classic,common}): refactor site/page/search metadata + apply className on html element ([@slorber](https://github.com/slorber)) +- `docusaurus-theme-classic`, `docusaurus-theme-common` + - [#6895](https://github.com/facebook/docusaurus/pull/6895) refactor(theme-{classic,common}): split navbar into smaller components + cleanup + swizzle config ([@slorber](https://github.com/slorber)) + - [#6930](https://github.com/facebook/docusaurus/pull/6930) refactor(theme-{classic,common}): refactor ColorModeToggle + useColorMode() hook ([@lex111](https://github.com/lex111)) + - [#6894](https://github.com/facebook/docusaurus/pull/6894) refactor(theme-classic): split theme footer into smaller components + swizzle config ([@slorber](https://github.com/slorber)) +- `docusaurus-types`, `docusaurus` + - [#6929](https://github.com/facebook/docusaurus/pull/6929) refactor(core): minor routes type improvement ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-plugin-client-redirects`, `docusaurus-plugin-ideal-image`, `docusaurus-plugin-pwa`, `docusaurus-plugin-sitemap` + - [#6928](https://github.com/facebook/docusaurus/pull/6928) chore(pwa, sitemap, client-redirects, ideal-image): JSDoc for types ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-plugin-content-blog`, `docusaurus-theme-classic`, `docusaurus-utils` + - [#6922](https://github.com/facebook/docusaurus/pull/6922) refactor(content-blog): clean up type definitions; in-code documentation ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-theme-translations` + - [#6781](https://github.com/facebook/docusaurus/pull/6781) feat(theme-translations): complete Russian translations ([@dragomano](https://github.com/dragomano)) + - [#6877](https://github.com/facebook/docusaurus/pull/6877) chore(theme-translations): complete Vietnamese translations ([@datlechin](https://github.com/datlechin)) +- `docusaurus-plugin-content-blog` + - [#6909](https://github.com/facebook/docusaurus/pull/6909) refactor(content-blog): improve error message of authors map validation ([@Josh-Cena](https://github.com/Josh-Cena)) +- `create-docusaurus` + - [#6860](https://github.com/facebook/docusaurus/pull/6860) fix(create): load entry file after node version checking ([@taejs](https://github.com/taejs)) + +#### :memo: Documentation + +- Other + - [#6988](https://github.com/facebook/docusaurus/pull/6988) docs: fix example admonition syntax ([@kaycebasques](https://github.com/kaycebasques)) + - [#6978](https://github.com/facebook/docusaurus/pull/6978) docs: npm run tsc -> npx tsc ([@jadonn](https://github.com/jadonn)) + - [#6952](https://github.com/facebook/docusaurus/pull/6952) docs: add K3ai to showcase ([@alefesta](https://github.com/alefesta)) + - [#6948](https://github.com/facebook/docusaurus/pull/6948) docs: add pdfme docs to showcase ([@hand-dot](https://github.com/hand-dot)) + - [#6943](https://github.com/facebook/docusaurus/pull/6943) docs: add SeaORM docs to showcase ([@billy1624](https://github.com/billy1624)) + - [#6926](https://github.com/facebook/docusaurus/pull/6926) docs: clarify the usage of slug ([@kaycebasques](https://github.com/kaycebasques)) + - [#6911](https://github.com/facebook/docusaurus/pull/6911) docs: add Reactive Button site to showcase ([@arifszn](https://github.com/arifszn)) + - [#6904](https://github.com/facebook/docusaurus/pull/6904) docs: update image for digital support services ([@PatelN123](https://github.com/PatelN123)) + - [#6892](https://github.com/facebook/docusaurus/pull/6892) docs: add EduLinks site to showcase ([@odarpi](https://github.com/odarpi)) + - [#6889](https://github.com/facebook/docusaurus/pull/6889) docs: editorial fixes ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#6883](https://github.com/facebook/docusaurus/pull/6883) docs(cli): add info about development on github codespaces ([@vedantmgoyal2009](https://github.com/vedantmgoyal2009)) + - [#6856](https://github.com/facebook/docusaurus/pull/6856) docs: add Reddit Image Fetcher site to showcase ([@arifszn](https://github.com/arifszn)) + - [#6875](https://github.com/facebook/docusaurus/pull/6875) docs: update TRPG Engine showcase ([@moonrailgun](https://github.com/moonrailgun)) + - [#6871](https://github.com/facebook/docusaurus/pull/6871) docs: mark clutch and gulp as open-source ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#6862](https://github.com/facebook/docusaurus/pull/6862) docs: update showcase data ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#6837](https://github.com/facebook/docusaurus/pull/6837) docs: add PcapPlusPlus to showcase ([@seladb](https://github.com/seladb)) + - [#6832](https://github.com/facebook/docusaurus/pull/6832) docs: add Spicetify site to showcase ([@afonsojramos](https://github.com/afonsojramos)) + - [#6830](https://github.com/facebook/docusaurus/pull/6830) docs: simplify imported code blocks syntax ([@nathan-contino-mongo](https://github.com/nathan-contino-mongo)) +- `docusaurus-types` + - [#6881](https://github.com/facebook/docusaurus/pull/6881) docs: mention configureWebpack devServer return value ([@Josh-Cena](https://github.com/Josh-Cena)) +- `create-docusaurus` + - [#6833](https://github.com/facebook/docusaurus/pull/6833) docs: make tutorial code block directly copyable ([@samgutentag](https://github.com/samgutentag)) + +#### :house: Internal + +- `create-docusaurus`, `docusaurus-mdx-loader`, `docusaurus-migrate`, `docusaurus-module-type-aliases`, `docusaurus-plugin-client-redirects`, `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-plugin-content-pages`, `docusaurus-plugin-debug`, `docusaurus-plugin-google-gtag`, `docusaurus-plugin-ideal-image`, `docusaurus-remark-plugin-npm2yarn`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-theme-search-algolia`, `docusaurus-theme-translations`, `docusaurus-types`, `docusaurus-utils-validation`, `docusaurus-utils`, `docusaurus`, `lqip-loader` + - [#6995](https://github.com/facebook/docusaurus/pull/6995) refactor: ensure all types are using index signature instead of Record ([@Josh-Cena](https://github.com/Josh-Cena)) +- `create-docusaurus`, `docusaurus-cssnano-preset`, `docusaurus-plugin-pwa`, `docusaurus-theme-search-algolia`, `docusaurus-utils`, `docusaurus`, `lqip-loader` + - [#6991](https://github.com/facebook/docusaurus/pull/6991) chore: upgrade dependencies ([@Josh-Cena](https://github.com/Josh-Cena)) +- `lqip-loader` + - [#6992](https://github.com/facebook/docusaurus/pull/6992) refactor(lqip-loader): remove unused palette option ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus` + - [#6975](https://github.com/facebook/docusaurus/pull/6975) chore: update static-site-generator-webpack-plugin ([@slorber](https://github.com/slorber)) +- `stylelint-copyright` + - [#6967](https://github.com/facebook/docusaurus/pull/6967) chore: publish stylelint-copyright again ([@slorber](https://github.com/slorber)) +- `docusaurus-plugin-client-redirects`, `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-plugin-content-pages`, `docusaurus-plugin-google-analytics`, `docusaurus-plugin-google-gtag`, `docusaurus-plugin-ideal-image`, `docusaurus-plugin-pwa`, `docusaurus-plugin-sitemap`, `docusaurus-theme-classic`, `docusaurus-theme-live-codeblock`, `docusaurus-theme-search-algolia`, `docusaurus-types`, `docusaurus-utils-validation`, `docusaurus` + - [#6961](https://github.com/facebook/docusaurus/pull/6961) refactor: unify how validateOptions is handled ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-types` + - [#6957](https://github.com/facebook/docusaurus/pull/6957) chore(types): remove querystring from dependencies ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-theme-common`, `docusaurus` + - [#6956](https://github.com/facebook/docusaurus/pull/6956) test: improve test coverage; reorder theme-common files ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#6955](https://github.com/facebook/docusaurus/pull/6955) refactor(core): move browserContext and docusaurusContext out of client exports ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#6944](https://github.com/facebook/docusaurus/pull/6944) chore: migrate Jest and website to SWC ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-utils` + - [#6951](https://github.com/facebook/docusaurus/pull/6951) test: fix Windows test for gitUtils ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-mdx-loader`, `docusaurus-migrate`, `docusaurus-plugin-client-redirects`, `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-plugin-content-pages`, `docusaurus-plugin-debug`, `docusaurus-plugin-pwa`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-theme-translations`, `docusaurus-utils`, `docusaurus`, `stylelint-copyright` + - [#6931](https://github.com/facebook/docusaurus/pull/6931) chore: tighten ESLint config ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-module-type-aliases`, `docusaurus-plugin-client-redirects` + - [#6924](https://github.com/facebook/docusaurus/pull/6924) refactor(client-redirects): migrate validation to validateOptions lifecycle ([@Josh-Cena](https://github.com/Josh-Cena)) +- `create-docusaurus`, `docusaurus-cssnano-preset`, `docusaurus-mdx-loader`, `docusaurus-migrate`, `docusaurus-plugin-ideal-image`, `docusaurus-plugin-pwa`, `docusaurus-theme-classic`, `docusaurus-theme-search-algolia`, `docusaurus-utils`, `docusaurus`, `lqip-loader` + - [#6916](https://github.com/facebook/docusaurus/pull/6916) chore: upgrade dependencies ([@Josh-Cena](https://github.com/Josh-Cena)) +- `create-docusaurus`, `docusaurus-plugin-content-docs`, `docusaurus-theme-translations`, `docusaurus-types`, `docusaurus-utils-validation`, `docusaurus-utils`, `docusaurus`, `stylelint-copyright` + - [#6912](https://github.com/facebook/docusaurus/pull/6912) test: improve test coverage; multiple internal refactors ([@Josh-Cena](https://github.com/Josh-Cena)) +- Other + - [#6910](https://github.com/facebook/docusaurus/pull/6910) refactor: convert Jest infrastructure to TS ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#6838](https://github.com/facebook/docusaurus/pull/6838) fix(website): changelog plugin leads to CI bugs on release ([@slorber](https://github.com/slorber)) +- `docusaurus-logger`, `docusaurus-mdx-loader`, `docusaurus-migrate`, `docusaurus-plugin-client-redirects`, `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-plugin-content-pages`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-utils`, `docusaurus` + - [#6908](https://github.com/facebook/docusaurus/pull/6908) chore: do not print prototype in jest snapshot ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-migrate`, `docusaurus-plugin-content-docs`, `docusaurus-theme-common`, `docusaurus-utils-validation`, `docusaurus-utils`, `docusaurus` + - [#6906](https://github.com/facebook/docusaurus/pull/6906) refactor: install eslint-plugin-regexp ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-mdx-loader`, `docusaurus-plugin-client-redirects`, `docusaurus-plugin-content-docs`, `docusaurus-theme-common`, `docusaurus-theme-search-algolia`, `docusaurus-utils`, `docusaurus` + - [#6905](https://github.com/facebook/docusaurus/pull/6905) test: improve test coverage; properly test core client APIs ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-logger`, `docusaurus-mdx-loader`, `docusaurus-migrate`, `docusaurus-plugin-client-redirects`, `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-plugin-sitemap`, `docusaurus-remark-plugin-npm2yarn`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-theme-live-codeblock`, `docusaurus-theme-translations`, `docusaurus-utils`, `docusaurus` + - [#6903](https://github.com/facebook/docusaurus/pull/6903) chore: spell-check test files ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-migrate`, `docusaurus-module-type-aliases`, `docusaurus-plugin-client-redirects`, `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-theme-common`, `docusaurus-types`, `docusaurus-utils-common`, `docusaurus-utils`, `docusaurus`, `lqip-loader` + - [#6902](https://github.com/facebook/docusaurus/pull/6902) test(theme-common): improve test coverage ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-cssnano-preset`, `docusaurus-logger`, `docusaurus-mdx-loader`, `docusaurus-migrate`, `docusaurus-plugin-client-redirects`, `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-plugin-content-pages`, `docusaurus-plugin-sitemap`, `docusaurus-remark-plugin-npm2yarn`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-theme-live-codeblock`, `docusaurus-theme-search-algolia`, `docusaurus-theme-translations`, `docusaurus-utils-common`, `docusaurus-utils-validation`, `docusaurus-utils`, `docusaurus`, `lqip-loader`, `stylelint-copyright` + - [#6900](https://github.com/facebook/docusaurus/pull/6900) test: enable a few jest eslint rules ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-logger`, `docusaurus-mdx-loader`, `docusaurus-migrate`, `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-theme-translations`, `docusaurus-utils-validation`, `docusaurus-utils`, `docusaurus`, `lqip-loader` + - [#6898](https://github.com/facebook/docusaurus/pull/6898) refactor: import jest as global; unify import style of some modules ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-theme-classic`, `docusaurus-theme-common` + - [#6891](https://github.com/facebook/docusaurus/pull/6891) refactor(theme-classic): avoid using clsx class dict with CSS modules ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-migrate`, `docusaurus-plugin-client-redirects`, `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-theme-translations`, `docusaurus-utils`, `docusaurus` + - [#6880](https://github.com/facebook/docusaurus/pull/6880) refactor: prefer fs.outputFile to ensureDir + writeFile ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-plugin-pwa`, `docusaurus-types`, `docusaurus` + - [#6866](https://github.com/facebook/docusaurus/pull/6866) refactor: improve types ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-mdx-loader`, `docusaurus-plugin-client-redirects`, `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-plugin-content-pages`, `docusaurus-plugin-pwa`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-types`, `docusaurus`, `lqip-loader` + - [#6864](https://github.com/facebook/docusaurus/pull/6864) refactor: remove unnecessary default values normalized during validation ([@Josh-Cena](https://github.com/Josh-Cena)) +- `create-docusaurus`, `docusaurus-migrate`, `docusaurus` + - [#6861](https://github.com/facebook/docusaurus/pull/6861) refactor: make JS executables included in the tsconfig for editor hints ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-types`, `docusaurus` + - [#6857](https://github.com/facebook/docusaurus/pull/6857) test: improve test coverage ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-logger`, `docusaurus-mdx-loader`, `docusaurus-migrate`, `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-remark-plugin-npm2yarn`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-theme-search-algolia`, `docusaurus-utils-common`, `docusaurus-utils`, `docusaurus`, `lqip-loader` + - [#6852](https://github.com/facebook/docusaurus/pull/6852) refactor: enable a few TS flags ([@Josh-Cena](https://github.com/Josh-Cena)) + +#### Committers: 28 + +- Afonso Jorge Ramos ([@afonsojramos](https://github.com/afonsojramos)) +- Alessandro Festa ([@alefesta](https://github.com/alefesta)) +- Alexey Pyltsyn ([@lex111](https://github.com/lex111)) +- Alois Klink ([@aloisklink](https://github.com/aloisklink)) +- Ariful Alam ([@arifszn](https://github.com/arifszn)) +- Begula ([@vedantmgoyal2009](https://github.com/vedantmgoyal2009)) +- Billy Chan ([@billy1624](https://github.com/billy1624)) +- Bugo ([@dragomano](https://github.com/dragomano)) +- Evan ([@DigiPie](https://github.com/DigiPie)) +- Felipe Santos ([@felipecrs](https://github.com/felipecrs)) +- Jadon N ([@jadonn](https://github.com/jadonn)) +- Joshua Chen ([@Josh-Cena](https://github.com/Josh-Cena)) +- Kayce Basques ([@kaycebasques](https://github.com/kaycebasques)) +- Kyohei Fukuda ([@hand-dot](https://github.com/hand-dot)) +- Nayan Patel ([@PatelN123](https://github.com/PatelN123)) +- Ngô Quốc Đạt ([@datlechin](https://github.com/datlechin)) +- Odarpi ([@odarpi](https://github.com/odarpi)) +- Pawel Kowaluk ([@pkowaluk](https://github.com/pkowaluk)) +- Roberto Vidal ([@jrvidal](https://github.com/jrvidal)) +- Sam Gutentag ([@samgutentag](https://github.com/samgutentag)) +- Sébastien Lorber ([@slorber](https://github.com/slorber)) +- Tsz W. TAM ([@rccttwd](https://github.com/rccttwd)) +- WonChul Heo ([@heowc](https://github.com/heowc)) +- Yorkie Liu ([@yorkie](https://github.com/yorkie)) +- [@seladb](https://github.com/seladb) +- moonrailgun ([@moonrailgun](https://github.com/moonrailgun)) +- nate contino ([@nathan-contino-mongo](https://github.com/nathan-contino-mongo)) +- tae ([@taejs](https://github.com/taejs)) + ## 2.0.0-beta.17 (2022-03-03) #### :rocket: New Feature @@ -215,7 +859,7 @@ - [#6633](https://github.com/facebook/docusaurus/pull/6633) docs: improve wording of using Markdown file paths ([@BigDataWriter](https://github.com/BigDataWriter)) - [#6624](https://github.com/facebook/docusaurus/pull/6624) docs: add Resoto & Some Engineering Inc. to showcase ([@TheCatLady](https://github.com/TheCatLady)) - [#6611](https://github.com/facebook/docusaurus/pull/6611) docs: fix bad anchor link syntax ([@Josh-Cena](https://github.com/Josh-Cena)) - - [#6591](https://github.com/facebook/docusaurus/pull/6591) docs: improve Github Actions example jobs ([@ebarojas](https://github.com/ebarojas)) + - [#6591](https://github.com/facebook/docusaurus/pull/6591) docs: improve GitHub Actions example jobs ([@ebarojas](https://github.com/ebarojas)) - [#6426](https://github.com/facebook/docusaurus/pull/6426) feat(website): add Tweets section ([@yangshun](https://github.com/yangshun)) - [#6532](https://github.com/facebook/docusaurus/pull/6532) docs: add SAP Cloud SDK to showcase ([@artemkovalyov](https://github.com/artemkovalyov)) - [#6513](https://github.com/facebook/docusaurus/pull/6513) docs: clean up CONTRIBUTING ([@Josh-Cena](https://github.com/Josh-Cena)) @@ -713,7 +1357,7 @@ - [#6123](https://github.com/facebook/docusaurus/pull/6123) test: use snapshots for sidebar tests ([@Josh-Cena](https://github.com/Josh-Cena)) - Other - [#6122](https://github.com/facebook/docusaurus/pull/6122) fix(website): fix yarn build:website:fast ([@slorber](https://github.com/slorber)) - - [#6080](https://github.com/facebook/docusaurus/pull/6080) chore: add NPM and PNPM to E2E tests ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#6080](https://github.com/facebook/docusaurus/pull/6080) chore: add npm and pnpm to E2E tests ([@Josh-Cena](https://github.com/Josh-Cena)) - `create-docusaurus`, `docusaurus-cssnano-preset`, `docusaurus-mdx-loader`, `docusaurus-migrate`, `docusaurus-plugin-client-redirects`, `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-plugin-content-pages`, `docusaurus-plugin-debug`, `docusaurus-plugin-google-analytics`, `docusaurus-plugin-google-gtag`, `docusaurus-plugin-ideal-image`, `docusaurus-plugin-pwa`, `docusaurus-plugin-sitemap`, `docusaurus-preset-classic`, `docusaurus-remark-plugin-npm2yarn`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-theme-live-codeblock`, `docusaurus-theme-search-algolia`, `docusaurus-theme-translations`, `docusaurus-types`, `docusaurus-utils-common`, `docusaurus-utils-validation`, `docusaurus-utils`, `docusaurus`, `lqip-loader` - [#6092](https://github.com/facebook/docusaurus/pull/6092) misc: ignore some files during npm publish ([@Josh-Cena](https://github.com/Josh-Cena)) @@ -882,7 +1526,7 @@ Bad npm publish, use beta.13 instead - [#5903](https://github.com/facebook/docusaurus/pull/5903) docs: refer to deployed branch as deployment rather than target ([@Josh-Cena](https://github.com/Josh-Cena)) - [#5902](https://github.com/facebook/docusaurus/pull/5902) fix(website): fix i18n routes for Canny board ([@Josh-Cena](https://github.com/Josh-Cena)) - [#5900](https://github.com/facebook/docusaurus/pull/5900) docs: document global variables in MDX scope ([@Josh-Cena](https://github.com/Josh-Cena)) - - [#4409](https://github.com/facebook/docusaurus/pull/4409) docs: add example for Github Pages deployment; rewrite deployment section ([@polarathene](https://github.com/polarathene)) + - [#4409](https://github.com/facebook/docusaurus/pull/4409) docs: add example for GitHub Pages deployment; rewrite deployment section ([@polarathene](https://github.com/polarathene)) - [#5888](https://github.com/facebook/docusaurus/pull/5888) docs: update GitHub deployment instructions ([@rootwork](https://github.com/rootwork)) - [#5895](https://github.com/facebook/docusaurus/pull/5895) docs: Add juffalow.com to Docusaurus showcase ([@juffalow](https://github.com/juffalow)) - [#5881](https://github.com/facebook/docusaurus/pull/5881) docs: fix wrong code sample in docusaurus-core ([@matthijsgroen](https://github.com/matthijsgroen)) @@ -909,7 +1553,7 @@ Bad npm publish, use beta.13 instead - [#5919](https://github.com/facebook/docusaurus/pull/5919) misc(workflow): E2E tests should not be run with website changes ([@Josh-Cena](https://github.com/Josh-Cena)) - [#5907](https://github.com/facebook/docusaurus/pull/5907) chore(workflow): merge jobs into one workflow & give each job a name ([@Josh-Cena](https://github.com/Josh-Cena)) - [#5889](https://github.com/facebook/docusaurus/pull/5889) chore(website): enable eslint in website ([@Josh-Cena](https://github.com/Josh-Cena)) - - [#5870](https://github.com/facebook/docusaurus/pull/5870) chore(README): fix broken Github Actions Workflow Status icon ([@HemantSachdeva](https://github.com/HemantSachdeva)) + - [#5870](https://github.com/facebook/docusaurus/pull/5870) chore(README): fix broken GitHub Actions Workflow Status icon ([@HemantSachdeva](https://github.com/HemantSachdeva)) - `docusaurus-module-type-aliases`, `docusaurus-types`, `docusaurus` - [#6064](https://github.com/facebook/docusaurus/pull/6064) refactor(core): fix types for client code ([@Josh-Cena](https://github.com/Josh-Cena)) - `create-docusaurus`, `docusaurus-mdx-loader`, `docusaurus-migrate`, `docusaurus-plugin-client-redirects`, `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-plugin-ideal-image`, `docusaurus-plugin-pwa`, `docusaurus-plugin-sitemap`, `docusaurus-theme-translations`, `docusaurus-utils`, `docusaurus` @@ -2785,7 +3429,7 @@ Starting with this release for a proper work of i18n functionality, you need to - [#3976](https://github.com/facebook/docusaurus/pull/3976) docs(v2): Add AI-Speaker site to showcase page ([@asystentka-jolka](https://github.com/asystentka-jolka)) - [#3974](https://github.com/facebook/docusaurus/pull/3974) docs(v2): doc typo on sidebar admonition ([@slorber](https://github.com/slorber)) - [#3962](https://github.com/facebook/docusaurus/pull/3962) docs(v2): Add migration info doc regarding docs folder location ([@slorber](https://github.com/slorber)) - - [#3950](https://github.com/facebook/docusaurus/pull/3950) docs(v2): update Github entreprise deployment doc ([@samhrncir](https://github.com/samhrncir)) + - [#3950](https://github.com/facebook/docusaurus/pull/3950) docs(v2): update GitHub entreprise deployment doc ([@samhrncir](https://github.com/samhrncir)) - [#3945](https://github.com/facebook/docusaurus/pull/3945) docs(v2): Added information about setting `/` in routeBasePath ([@Siemienik](https://github.com/Siemienik)) - `docusaurus-theme-classic` - [#4356](https://github.com/facebook/docusaurus/pull/4356) polish(v2): [theme-classic] add Chinese translations (zh-Hant & zh-Hans) ([@MisterFISHUP](https://github.com/MisterFISHUP)) @@ -3213,7 +3857,7 @@ Starting with this release for a proper work of i18n functionality, you need to - Other - [#3769](https://github.com/facebook/docusaurus/pull/3769) docs(v2): fix statements background, update footer background ([@Simek](https://github.com/Simek)) - - [#3744](https://github.com/facebook/docusaurus/pull/3744) chore(v2): add build size bot workflow Github CI workflow ([@jcs98](https://github.com/jcs98)) + - [#3744](https://github.com/facebook/docusaurus/pull/3744) chore(v2): add build size bot workflow GitHub CI workflow ([@jcs98](https://github.com/jcs98)) - [#3741](https://github.com/facebook/docusaurus/pull/3741) chore: update yarn lock again ([@slorber](https://github.com/slorber)) - [#3740](https://github.com/facebook/docusaurus/pull/3740) chore: update yarn lock ([@slorber](https://github.com/slorber)) - [#3738](https://github.com/facebook/docusaurus/pull/3738) chore(internal): add yarn deduplicate script, cleanup lock ([@Simek](https://github.com/Simek)) @@ -3331,7 +3975,7 @@ Failed release - Other - [#3576](https://github.com/facebook/docusaurus/pull/3576) docs(v2): removed obsolete "you" identifier ([@christian-bromann](https://github.com/christian-bromann)) - [#3589](https://github.com/facebook/docusaurus/pull/3589) docs(v2): add taro to users ([@honlyHuang](https://github.com/honlyHuang)) - - [#3565](https://github.com/facebook/docusaurus/pull/3565) docs(v2): deployment, add required Github token scope infos ([@russtaylor](https://github.com/russtaylor)) + - [#3565](https://github.com/facebook/docusaurus/pull/3565) docs(v2): deployment, add required GitHub token scope infos ([@russtaylor](https://github.com/russtaylor)) - [#3574](https://github.com/facebook/docusaurus/pull/3574) docs(v2): adding vue-nodegui to users ([@shubhamzanwar](https://github.com/shubhamzanwar)) - [#3556](https://github.com/facebook/docusaurus/pull/3556) Added Axioms to users ([@abhishektiwari](https://github.com/abhishektiwari)) - [#3558](https://github.com/facebook/docusaurus/pull/3558) docs(v2): embedding real source code in MDX as a code block ([@slorber](https://github.com/slorber)) @@ -4270,7 +4914,7 @@ Bad release, check ## 2.0.0-alpha.58 - `docusaurus-theme-search-algolia` - [#2762](https://github.com/facebook/docusaurus/pull/2762) fix(v2): avoid duplication search input in navbar ([@lex111](https://github.com/lex111)) - `lqip-loader` - - [#2693](https://github.com/facebook/docusaurus/pull/2693) fix(v2): add support esModule to lqip-loader ([@ykzts](https://github.com/ykzts)) + - [#2693](https://github.com/facebook/docusaurus/pull/2693) fix(v2): add support ES Module to lqip-loader ([@ykzts](https://github.com/ykzts)) - `docusaurus-init` - [#2751](https://github.com/facebook/docusaurus/pull/2751) fix(v2): fix index page features.length when 0 ([@jdeniau](https://github.com/jdeniau)) @@ -4779,7 +5423,7 @@ Bad release, check ## 2.0.0-alpha.58 - [#2253](https://github.com/facebook/docusaurus/pull/2253) feat(v2): allow specify custom link for logo ([@lex111](https://github.com/lex111)) - [#2255](https://github.com/facebook/docusaurus/pull/2255) feat(v2): add site title to meta title ([@lex111](https://github.com/lex111)) - `docusaurus-plugin-content-pages`, `docusaurus-utils`, `docusaurus` - - [#2221](https://github.com/facebook/docusaurus/pull/2221) feat(v2): allow for Typescript pages and components ([@jonathanrdelgado](https://github.com/jonathanrdelgado)) + - [#2221](https://github.com/facebook/docusaurus/pull/2221) feat(v2): allow for TypeScript pages and components ([@jonathanrdelgado](https://github.com/jonathanrdelgado)) #### :boom: Breaking Change @@ -5404,7 +6048,7 @@ If you are still encountering the error. Please check whether you use `module.ex ## 2.0.0-alpha.24 (2019-07-24) - Remove unused metadata for pages. This minimize number of http request & smaller bundle size. -- Upgrade dependencies of css-loader from 2.x to 3.x. Css modules localIdentName hash now only use the last 4 characters instead of 8. +- Upgrade dependencies of css-loader from 2.x to 3.x. CSS modules localIdentName hash now only use the last 4 characters instead of 8. - Fix broken markdown linking replacement for mdx files - Fix potential security vulnerability because we're exposing the directory structure of the host machine. Instead of absolute path, we use relative path from site directory. Resulting in shorter webpack chunk naming and smaller bundle size. - Use contenthash instead of chunkhash for better long term caching diff --git a/README.md b/README.md index c2fe1a76ae37..3aa39767c89f 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ npm version - Github Actions status + GitHub Actions status PRs Welcome Discord Chat code style: prettier @@ -47,17 +47,13 @@ Short on time? Check out our [5-minute tutorial ⏱️](https://tutorial.docusau ## Installation -Use the initialization cli to create your site: +Use the initialization CLI to create your site: ```bash -npm init docusaurus@latest [name] [template] +npm init docusaurus@latest ``` -Example: - -```bash -npm init docusaurus@latest my-website classic -``` +[Read the docs](https://docusaurus.io/docs/installation) for any further information. ## Contributing diff --git a/__tests__/validate-package-json.test.ts b/__tests__/validate-package-json.test.ts index 2f9031833aca..b8dd9b78771e 100644 --- a/__tests__/validate-package-json.test.ts +++ b/__tests__/validate-package-json.test.ts @@ -4,35 +4,45 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ -/* eslint-disable import/no-extraneous-dependencies */ -import {Globby} from '@docusaurus/utils'; import fs from 'fs-extra'; +import {Globby} from '@docusaurus/utils'; type PackageJsonFile = { file: string; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - content: any; + content: { + name?: string; + private?: boolean; + version?: string; + repository?: { + type?: string; + url?: string; + directory?: string; + }; + publishConfig?: { + access?: string; + }; + }; }; async function getPackagesJsonFiles(): Promise { const files = await Globby('packages/*/package.json'); - return Promise.all( - files.map(async (file) => ({ - file, - content: JSON.parse(await fs.readFile(file, 'utf8')), - })), + files.map((file) => + fs + .readJSON(file) + .then((content: PackageJsonFile['content']) => ({file, content})), + ), ); } describe('packages', () => { - test('should be found', async () => { + it('are found', async () => { const packageJsonFiles = await getPackagesJsonFiles(); expect(packageJsonFiles.length).toBeGreaterThan(0); }); - test('should contain repository and directory for every package', async () => { + it('contain repository and directory', async () => { const packageJsonFiles = await getPackagesJsonFiles(); packageJsonFiles @@ -48,27 +58,27 @@ describe('packages', () => { /* If a package starts with @, if won't be published to public npm registry - without an additional publishConfig.acces: "public" config + without an additional publishConfig.access: "public" config This will make you publish an incomplete list of Docusaurus packages when trying to release with lerna-publish */ - test('should have publishConfig.access: "public" when name starts with @', async () => { + it('have publishConfig.access: "public" when name starts with @', async () => { const packageJsonFiles = await getPackagesJsonFiles(); packageJsonFiles - .filter((packageJsonFile) => packageJsonFile.content.name.startsWith('@')) + .filter((packageJsonFile) => + packageJsonFile.content.name?.startsWith('@'), + ) .forEach((packageJsonFile) => { - if (packageJsonFile) { - // Unfortunately jest custom message do not exist in loops, - // so using an exception instead to show failing package file - // (see https://github.com/facebook/jest/issues/3293) - // expect(packageJsonFile.content.publishConfig?.access) - // .toEqual('public'); - if (packageJsonFile.content.publishConfig?.access !== 'public') { - throw new Error( - `Package ${packageJsonFile.file} does not have publishConfig.access: 'public'`, - ); - } + // Unfortunately jest custom message do not exist in loops, + // so using an exception instead to show failing package file + // (see https://github.com/facebook/jest/issues/3293) + // expect(packageJsonFile.content.publishConfig?.access) + // .toEqual('public'); + if (packageJsonFile.content.publishConfig?.access !== 'public') { + throw new Error( + `Package ${packageJsonFile.file} does not have publishConfig.access: 'public'`, + ); } }); }); diff --git a/__tests__/validate-tsconfig.test.ts b/__tests__/validate-tsconfig.test.ts new file mode 100644 index 000000000000..e69d170502ba --- /dev/null +++ b/__tests__/validate-tsconfig.test.ts @@ -0,0 +1,70 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import fs from 'fs-extra'; +import {Globby} from '@docusaurus/utils'; +import {Joi} from '@docusaurus/utils-validation'; + +type TsconfigFile = { + file: string; + content: { + extends?: string; + compilerOptions: { + [key: string]: unknown; + }; + }; +}; + +async function getTsconfigFiles(): Promise { + const files = await Globby('packages/*/tsconfig.*'); + return Promise.all( + files.map((file) => + fs + .readJSON(file) + .then((content: TsconfigFile['content']) => ({file, content})), + ), + ); +} + +const tsconfigSchema = Joi.object({ + extends: '../../tsconfig.json', + compilerOptions: Joi.alternatives().conditional( + Joi.object({noEmit: true}).unknown(), + { + then: Joi.object({ + noEmit: Joi.valid(true).required(), + incremental: Joi.forbidden(), + tsBuildInfoFile: Joi.forbidden(), + outDir: Joi.forbidden(), + module: Joi.valid('commonjs', 'es2020', 'esnext').required(), + }).unknown(), + otherwise: Joi.object({ + noEmit: Joi.valid(false).required(), + incremental: Joi.valid(true).required(), + rootDir: Joi.valid('src').required(), + outDir: Joi.valid('lib').required(), + module: Joi.valid('commonjs', 'es2020', 'esnext').required(), + }).unknown(), + }, + ), +}).unknown(); + +describe('tsconfig files', () => { + it('contain all required fields', async () => { + const tsconfigFiles = await getTsconfigFiles(); + tsconfigFiles.forEach((file) => { + try { + Joi.attempt(file.content, tsconfigSchema); + } catch (e) { + ( + e as Error + ).message += `\n${file.file} does not match the required schema.`; + throw e; + } + }); + }); +}); diff --git a/admin/new.docusaurus.io/functionUtils/playgroundUtils.ts b/admin/new.docusaurus.io/functionUtils/playgroundUtils.ts index b8a7f84ca996..c5fdbdf2d7c0 100644 --- a/admin/new.docusaurus.io/functionUtils/playgroundUtils.ts +++ b/admin/new.docusaurus.io/functionUtils/playgroundUtils.ts @@ -16,9 +16,12 @@ const PlaygroundConfigs = { codesandbox: 'https://codesandbox.io/s/github/facebook/docusaurus/tree/main/examples/classic', - // stackblitz: 'https://stackblitz.com/fork/docusaurus', // not updated - // stackblitz: 'https://stackblitz.com/github/facebook/docusaurus/tree/main/examples/classic', // slow to load - stackblitz: 'https://stackblitz.com/github/facebook/docusaurus/tree/starter', // dedicated branch: faster load + // Not updated + // stackblitz: 'https://stackblitz.com/fork/docusaurus', + // Slow to load + // stackblitz: 'https://stackblitz.com/github/facebook/docusaurus/tree/main/examples/classic', + // Dedicated branch: faster load + stackblitz: 'https://stackblitz.com/github/facebook/docusaurus/tree/starter', }; const PlaygroundDocumentationUrl = 'https://docusaurus.io/docs/playground'; @@ -26,9 +29,11 @@ const PlaygroundDocumentationUrl = 'https://docusaurus.io/docs/playground'; export type PlaygroundName = keyof typeof PlaygroundConfigs; function isValidPlaygroundName( - playgroundName: string, + playgroundName: string | undefined, ): playgroundName is PlaygroundName { - return Object.keys(PlaygroundConfigs).includes(playgroundName); + return ( + !!playgroundName && Object.keys(PlaygroundConfigs).includes(playgroundName) + ); } export function createPlaygroundDocumentationResponse(): HandlerResponse { @@ -54,10 +59,10 @@ export function createPlaygroundResponse( } // Inspired by https://stackoverflow.com/a/3409200/82609 -function parseCookieString(cookieString: string): Record { - const result: Record = {}; +function parseCookieString(cookieString: string): {[key: string]: string} { + const result: {[key: string]: string} = {}; cookieString.split(';').forEach((cookie) => { - const [name, value] = cookie.split('='); + const [name, value] = cookie.split('=') as [string, string]; result[name.trim()] = decodeURI(value); }); return result; @@ -66,7 +71,7 @@ function parseCookieString(cookieString: string): Record { export function readPlaygroundName( event: HandlerEvent, ): PlaygroundName | undefined { - const parsedCookie: Record = event.headers.cookie + const parsedCookie: {[key: string]: string} = event.headers.cookie ? parseCookieString(event.headers.cookie) : {}; const playgroundName: string | undefined = parsedCookie[CookieName]; diff --git a/admin/new.docusaurus.io/functions/codesandbox.ts b/admin/new.docusaurus.io/functions/codesandbox.ts index 9cb6c9b41e57..6f7b8327decf 100644 --- a/admin/new.docusaurus.io/functions/codesandbox.ts +++ b/admin/new.docusaurus.io/functions/codesandbox.ts @@ -5,10 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import type {Handler} from '@netlify/functions'; - import {createPlaygroundResponse} from '../functionUtils/playgroundUtils'; +import type {Handler} from '@netlify/functions'; -export const handler: Handler = async function handler(_event, _context) { - return createPlaygroundResponse('codesandbox'); -}; +export const handler: Handler = () => + Promise.resolve(createPlaygroundResponse('codesandbox')); diff --git a/admin/new.docusaurus.io/functions/index.ts b/admin/new.docusaurus.io/functions/index.ts index d9bca91c359e..14a9df8c0632 100644 --- a/admin/new.docusaurus.io/functions/index.ts +++ b/admin/new.docusaurus.io/functions/index.ts @@ -5,15 +5,14 @@ * LICENSE file in the root directory of this source tree. */ -import type {Handler} from '@netlify/functions'; - import { readPlaygroundName, createPlaygroundResponse, createPlaygroundDocumentationResponse, } from '../functionUtils/playgroundUtils'; +import type {Handler} from '@netlify/functions'; -export const handler: Handler = async (event, _context) => { +export const handler: Handler = async (event) => { const playgroundName = readPlaygroundName(event); return playgroundName ? createPlaygroundResponse(playgroundName) diff --git a/admin/new.docusaurus.io/functions/stackblitz.ts b/admin/new.docusaurus.io/functions/stackblitz.ts index 28bf7bb11fa0..6e69c2ade829 100644 --- a/admin/new.docusaurus.io/functions/stackblitz.ts +++ b/admin/new.docusaurus.io/functions/stackblitz.ts @@ -5,10 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import type {Handler} from '@netlify/functions'; - import {createPlaygroundResponse} from '../functionUtils/playgroundUtils'; +import type {Handler} from '@netlify/functions'; -export const handler: Handler = async function handler(_event, _context) { - return createPlaygroundResponse('stackblitz'); -}; +export const handler: Handler = () => + Promise.resolve(createPlaygroundResponse('stackblitz')); diff --git a/admin/new.docusaurus.io/package.json b/admin/new.docusaurus.io/package.json index 677299f656d6..fe86a0cbfacd 100644 --- a/admin/new.docusaurus.io/package.json +++ b/admin/new.docusaurus.io/package.json @@ -1,14 +1,11 @@ { "name": "new.docusaurus.io", - "version": "2.0.0-beta.17", + "version": "2.0.0-beta.21", "private": true, "scripts": { - "start": "netlify dev" + "start": "npx --package netlify-cli netlify dev" }, "dependencies": { "@netlify/functions": "^1.0.0" - }, - "devDependencies": { - "netlify-cli": "^9.13.0" } } diff --git a/admin/publish.md b/admin/publish.md index fef93b58796c..def8c7fc6eda 100644 --- a/admin/publish.md +++ b/admin/publish.md @@ -10,7 +10,7 @@ Get access from the Docusaurus npm admins (@yangshun/@JoelMarcey). You need publish access to **the main Docusaurus repository** (not a fork). -## NPM +## npm Publishing will only work if you are logged into npm with an account with publishing rights to the package. @@ -70,15 +70,26 @@ This local test step is optional because it will be run by the CI on your releas ### 3. Update the v2 changelog -The changelog uses GitHub labels to classify each pull request. Use the GitHub interface to assign each newly merged pull request to a GitHub label starting with `tag:`, otherwise the PR won't appear in the changelog. +The changelog uses GitHub labels to classify each pull request. Use the GitHub interface to assign each newly merged pull request to a GitHub label starting with `pr:`, otherwise the PR won't appear in the changelog. -[Check tags of all recently merged Pull-Requests](https://github.com/facebook/docusaurus/pulls?q=is%3Apr+sort%3Aupdated-desc+is%3Amerged+) +Not all labels will appear in the changelog—some are designed not to. However, you should **always** label each PR, so that before release, we can do a quick scan and confirm no PR is accidentally left out. Here's a search query (pity that GH doesn't have wildcard queries yet): -The `tag:` label prefix is for PRs only. Other labels are not used by the changelog tool, and it's not necessary to assign such labels to issues, only PRs. +``` +is:pr is:merged sort:updated-desc -label:"pr: breaking change","pr: new feature","pr: bug fix","pr: performance","pr: polish","pr: documentation","pr: maintenance","pr: internal","pr: dependencies","pr: showcase" +``` + +[Check tags of all recently merged Pull-Requests](https://github.com/facebook/docusaurus/pulls?q=is%3Apr+is%3Amerged+sort%3Aupdated-desc+-label%3A%22pr%3A+breaking+change%22%2C%22pr%3A+new+feature%22%2C%22pr%3A+bug+fix%22%2C%22pr%3A+performance%22%2C%22pr%3A+polish%22%2C%22pr%3A+documentation%22%2C%22pr%3A+maintenance%22%2C%22pr%3A+internal%22%2C%22pr%3A+dependencies%22%2C%22pr%3A+showcase%22) + +Some general principles about the labeling process: + +- "Will an average user be interested in this entry?" Items like "improve test coverage", "upgrade dependencies" can probably be left out (we have `pr: internal` and `pr: dependencies` for this). However, "pin GitHub actions to an SHA", "add visual testing infrastructure", etc., albeit internal, could be interesting to the user, and can be included in the "maintenance" section. +- "Will this change have tangible impact on the user?" A common case is when a PR implements a feature X, then there are immediately follow-up PRs that fix bugs or polish feature X. These follow-up PRs don't necessarily have to be in the changelog, and even if they alter the API, they are not breaking changes, because to an average user bumping their version, they will only see the new feature X as a whole. Make the entries atomic. + +The `pr:` label prefix is for PRs only. Other labels are not used by the changelog tool, and it's not necessary to assign such labels to issues, only PRs. Generate a GitHub auth token by going to https://github.com/settings/tokens (the only permission needed is `public_repo`). Save the token somewhere for future reference. -Fetch the tags from Github (lerna-changelog looks for commits since last tag by default): +Fetch the tags from GitHub (lerna-changelog looks for commits since last tag by default): ```sh git fetch --tags @@ -163,7 +174,7 @@ npm access ls-packages -It can happen that some accesses are not granted, as an admin might add you to the @docusaurus NPM organization, but you don't have access to the packages that are not in that organization. +It can happen that some accesses are not granted, as an admin might add you to the @docusaurus npm organization, but you don't have access to the packages that are not in that organization. Please **double-check your permissions on these packages**, otherwise you'll publish a half-release and will have to release a new version. diff --git a/admin/scripts/copyUntypedFiles.js b/admin/scripts/copyUntypedFiles.js new file mode 100644 index 000000000000..59178146452a --- /dev/null +++ b/admin/scripts/copyUntypedFiles.js @@ -0,0 +1,36 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import fs from 'fs-extra'; +import path from 'path'; +import chokidar from 'chokidar'; + +const srcDir = path.join(process.cwd(), 'src'); +const libDir = path.join(process.cwd(), 'lib'); + +const ignoredPattern = /(?:__tests__|\.tsx?$)/; + +async function copy() { + await fs.copy(srcDir, libDir, { + filter(testedPath) { + return !ignoredPattern.test(testedPath); + }, + }); +} + +if (process.argv.includes('--watch')) { + const watcher = chokidar.watch(srcDir, { + ignored: ignoredPattern, + ignoreInitial: true, + persistent: true, + }); + ['add', 'change', 'unlink', 'addDir', 'unlinkDir'].forEach((event) => + watcher.on(event, copy), + ); +} else { + await copy(); +} diff --git a/admin/scripts/formatLighthouseReport.js b/admin/scripts/formatLighthouseReport.js new file mode 100644 index 000000000000..99355deaf301 --- /dev/null +++ b/admin/scripts/formatLighthouseReport.js @@ -0,0 +1,80 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +// @ts-check + +/** @typedef {Record<'performance' | 'accessibility' | 'best-practices' | 'seo' | 'pwa', number>} LighthouseSummary */ + +/** @type {Record} */ +const summaryKeys = { + performance: 'Performance', + accessibility: 'Accessibility', + 'best-practices': 'Best Practices', + seo: 'SEO', + pwa: 'PWA', +}; + +/** @param {number} rawScore */ +const scoreEntry = (rawScore) => { + const score = Math.round(rawScore * 100); + // eslint-disable-next-line no-nested-ternary + const scoreIcon = score >= 90 ? '🟢' : score >= 50 ? '🟠' : '🔴'; + return `${scoreIcon} ${score}`; +}; + +/** + * @param {Object} param0 + * @param {string} param0.url + * @param {LighthouseSummary} param0.summary + * @param {string} param0.reportUrl + */ +const createMarkdownTableRow = ({url, summary, reportUrl}) => + [ + `| [${new URL(url).pathname}](${url})`, + .../** @type {(keyof LighthouseSummary)[]} */ ( + Object.keys(summaryKeys) + ).map((k) => scoreEntry(summary[k])), + `[Report](${reportUrl}) |`, + ].join(' | '); + +const createMarkdownTableHeader = () => [ + ['| URL', ...Object.values(summaryKeys), 'Report |'].join(' | '), + ['|---', ...Array(Object.keys(summaryKeys).length).fill('---'), '---|'].join( + '|', + ), +]; + +/** + * @param {Object} param0 + * @param {Record} param0.links + * @param {{url: string, summary: LighthouseSummary}[]} param0.results + */ +const createLighthouseReport = ({results, links}) => { + const tableHeader = createMarkdownTableHeader(); + const tableBody = results.map((result) => { + const testUrl = /** @type {string} */ ( + Object.keys(links).find((key) => key === result.url) + ); + const reportPublicUrl = /** @type {string} */ (links[testUrl]); + + return createMarkdownTableRow({ + url: testUrl, + summary: result.summary, + reportUrl: reportPublicUrl, + }); + }); + const comment = [ + '### ⚡️ Lighthouse report for the deploy preview of this PR', + '', + ...tableHeader, + ...tableBody, + '', + ]; + return comment.join('\n'); +}; + +export default createLighthouseReport; diff --git a/admin/scripts/generateExamples.mjs b/admin/scripts/generateExamples.js similarity index 80% rename from admin/scripts/generateExamples.mjs rename to admin/scripts/generateExamples.js index ae1bd3e9dfb8..59020d821d09 100644 --- a/admin/scripts/generateExamples.mjs +++ b/admin/scripts/generateExamples.js @@ -5,48 +5,54 @@ * LICENSE file in the root directory of this source tree. */ -/* eslint-disable import/no-extraneous-dependencies */ +// @ts-check import fs from 'fs-extra'; import shell from 'shelljs'; -const NODE_MAJOR_VERSION = parseInt(process.versions.node.split('.')[0], 10); +const NODE_MAJOR_VERSION = parseInt( + /** @type {string} */ (process.versions.node.split('.')[0]), + 10, +); if (NODE_MAJOR_VERSION < 16) { throw new Error( 'This generateExamples Docusaurus script requires at least Node.js 16 and npm 7. See why here: https://github.com/facebook/docusaurus/pull/5722#issuecomment-948847891', ); } -// Generate one example per init template -// We use those generated examples as CodeSandbox projects -// See https://github.com/facebook/docusaurus/issues/1699 +/** + * Generate one example per init template + * We use those generated examples as CodeSandbox projects + * See https://github.com/facebook/docusaurus/issues/1699 + * @param {string} template + */ async function generateTemplateExample(template) { try { console.log( `generating ${template} template for codesandbox in the examples folder...`, ); - // run the docusaurus script to create the template in the examples folder + // Run the docusaurus script to create the template in the examples folder const command = template.endsWith('-typescript') ? template.replace('-typescript', ' -- --typescript') : template; shell.exec( - // /!\ we use the published init script on purpose, - // because using the local init script is too early and could generate - // upcoming/unavailable config options. Remember CodeSandbox templates - // will use the published version, not the repo version + // We use the published init script on purpose, because the local init is + // too new and could generate upcoming/unavailable config options. + // Remember CodeSandbox templates will use the published version, + // not the repo version. `npm init docusaurus@latest examples/${template} ${command}`, ); - // read the content of the package.json - const templatePackageJson = JSON.parse( - await fs.readFile(`examples/${template}/package.json`, 'utf8'), - ); + const templatePackageJson = + await /** @type {Promise} */ ( + fs.readJSON(`examples/${template}/package.json`) + ); - // attach the dev script which would be used in code sandbox by default + // Attach the dev script which would be used in code sandbox by default templatePackageJson.scripts.dev = 'docusaurus start'; - // these example projects are not meant to be published to npm + // These example projects are not meant to be published to npm templatePackageJson.private = true; // Make sure package.json name is not "examples-classic". The package.json @@ -60,13 +66,12 @@ async function generateTemplateExample(template) { ? 'Docusaurus example project' : `Docusaurus example project (${template} template)`; - // rewrite the package.json file with the new edit await fs.writeFile( `./examples/${template}/package.json`, `${JSON.stringify(templatePackageJson, null, 2)}\n`, ); - // create sandbox.config.json file at the root of template + // Create sandbox/stackblitz config file at the root of template const codeSandboxConfig = { infiniteLoopProtection: true, hardReloadOnChange: true, @@ -107,6 +112,12 @@ async function generateTemplateExample(template) { * Button visible here: https://jamstack.org/generators/ */ function updateStarters() { + /** + * @param {Object} param0 + * @param {string} param0.subfolder + * @param {string} param0.remote + * @param {string} param0.remoteBranch + */ function forcePushGitSubtree({subfolder, remote, remoteBranch}) { console.log(''); // See https://stackoverflow.com/questions/33172857/how-do-i-force-a-subtree-push-to-overwrite-remote-changes @@ -164,7 +175,7 @@ console.log(` # Generate examples start! `); -// delete the examples directories if they exists +// Delete the examples directories if they exist console.log(`------- ## Removing example folders... `); @@ -172,7 +183,7 @@ await fs.rm('./examples/classic', {recursive: true, force: true}); await fs.rm('./examples/classic-typescript', {recursive: true, force: true}); await fs.rm('./examples/facebook', {recursive: true, force: true}); -// get the list of all available templates +// Get the list of all available templates console.log(` ------- ## Generate example folders... @@ -189,7 +200,7 @@ console.log('Committing changes'); shell.exec('git add examples'); shell.exec("git commit -am 'update examples' --allow-empty"); -// update starters +// Update starters console.log(` ------- # Updating starter repos and branches ... diff --git a/admin/scripts/package.json b/admin/scripts/package.json new file mode 100644 index 000000000000..03df6476e25f --- /dev/null +++ b/admin/scripts/package.json @@ -0,0 +1,7 @@ +{ + "name": "docu-scripts", + "description": "These are the scripts used in various places of Docusaurus maintenance", + "private": true, + "license": "MIT", + "type": "module" +} diff --git a/admin/scripts/image-resize.mjs b/admin/scripts/resizeImage.js similarity index 94% rename from admin/scripts/image-resize.mjs rename to admin/scripts/resizeImage.js index 294289e74dae..ce3d11f97680 100644 --- a/admin/scripts/image-resize.mjs +++ b/admin/scripts/resizeImage.js @@ -5,14 +5,12 @@ * LICENSE file in the root directory of this source tree. */ -/* eslint-disable import/no-extraneous-dependencies */ - -import sharp from 'sharp'; import fs from 'fs-extra'; import path from 'path'; -import imageSize from 'image-size'; import {fileURLToPath} from 'url'; import logger from '@docusaurus/logger'; +import sharp from 'sharp'; +import imageSize from 'image-size'; const allImages = ( await fs.readdir(new URL('../../website/src/data/showcase', import.meta.url)) @@ -27,7 +25,7 @@ await Promise.all( new URL(`../../website/src/data/showcase/${img}`, import.meta.url), ); const {width, height} = imageSize(imgPath); - if (width === 640 && height === 320) { + if (width === 640 && height === 320 && imgPath.endsWith('.png')) { // Do not emit if not resized. Important because we can't guarantee // idempotency during resize -> optimization return; diff --git a/admin/testing-changes-on-Docusaurus-itself.md b/admin/testing-changes-on-Docusaurus-itself.md index 36db02d9a75d..fe9da4c63ae6 100644 --- a/admin/testing-changes-on-Docusaurus-itself.md +++ b/admin/testing-changes-on-Docusaurus-itself.md @@ -17,7 +17,7 @@ yarn start ### VS Code -Use the following code in VSCode to enable breakpoints. Please ensure you have a later version of node for non-legacy debugging. +Use the following code in VS Code to enable breakpoints. Please ensure you have a later version of node for non-legacy debugging. ```json { diff --git a/babel.config.js b/babel.config.js deleted file mode 100644 index 67cf053df30d..000000000000 --- a/babel.config.js +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -module.exports = { - presets: [ - [ - '@babel/env', - { - targets: { - node: 'current', - }, - }, - ], - '@babel/react', - '@babel/preset-typescript', - ], -}; diff --git a/examples/classic-typescript/docs/tutorial-basics/_category_.json b/examples/classic-typescript/docs/tutorial-basics/_category_.json index 135e4a6858be..2e6db55b1eb6 100644 --- a/examples/classic-typescript/docs/tutorial-basics/_category_.json +++ b/examples/classic-typescript/docs/tutorial-basics/_category_.json @@ -1,4 +1,8 @@ { "label": "Tutorial - Basics", - "position": 2 + "position": 2, + "link": { + "type": "generated-index", + "description": "5 minutes to learn the most important Docusaurus concepts." + } } diff --git a/examples/classic-typescript/docs/tutorial-basics/create-a-document.md b/examples/classic-typescript/docs/tutorial-basics/create-a-document.md index feaced79d0a3..a9bb9a4140b1 100644 --- a/examples/classic-typescript/docs/tutorial-basics/create-a-document.md +++ b/examples/classic-typescript/docs/tutorial-basics/create-a-document.md @@ -41,14 +41,14 @@ This is my **first Docusaurus document**! It is also possible to create your sidebar explicitly in `sidebars.js`: -```diff title="sidebars.js" +```js title="sidebars.js" module.exports = { tutorialSidebar: [ { type: 'category', label: 'Tutorial', -- items: [...], -+ items: ['hello'], + // highlight-next-line + items: ['hello'], }, ], }; diff --git a/examples/classic-typescript/docs/tutorial-basics/markdown-features.mdx b/examples/classic-typescript/docs/tutorial-basics/markdown-features.mdx index 8855626051f1..6b3aaaaaaf85 100644 --- a/examples/classic-typescript/docs/tutorial-basics/markdown-features.mdx +++ b/examples/classic-typescript/docs/tutorial-basics/markdown-features.mdx @@ -43,7 +43,7 @@ Let's see how to [Create a page](./create-a-page.md). Regular Markdown images are supported. -Add an image at `static/img/docusaurus.png` and display it in Markdown: +You can use absolute paths to reference images in the static directory (`static/img/docusaurus.png`): ```md ![Docusaurus logo](/img/docusaurus.png) @@ -51,6 +51,8 @@ Add an image at `static/img/docusaurus.png` and display it in Markdown: ![Docusaurus logo](/img/docusaurus.png) +You can reference images relative to the current file as well, as shown in [the extra guides](../tutorial-extras/manage-docs-versions.md). + ## Code Blocks Markdown code blocks are supported with Syntax highlighting. diff --git a/examples/classic-typescript/docs/tutorial-extras/_category_.json b/examples/classic-typescript/docs/tutorial-extras/_category_.json index ca3f8e06408b..a8ffcc19300e 100644 --- a/examples/classic-typescript/docs/tutorial-extras/_category_.json +++ b/examples/classic-typescript/docs/tutorial-extras/_category_.json @@ -1,4 +1,7 @@ { "label": "Tutorial - Extras", - "position": 3 + "position": 3, + "link": { + "type": "generated-index" + } } diff --git a/examples/classic-typescript/docs/tutorial-extras/img/docsVersionDropdown.png b/examples/classic-typescript/docs/tutorial-extras/img/docsVersionDropdown.png new file mode 100644 index 000000000000..97e4164618b5 Binary files /dev/null and b/examples/classic-typescript/docs/tutorial-extras/img/docsVersionDropdown.png differ diff --git a/examples/classic-typescript/docs/tutorial-extras/img/localeDropdown.png b/examples/classic-typescript/docs/tutorial-extras/img/localeDropdown.png new file mode 100644 index 000000000000..e257edc1f932 Binary files /dev/null and b/examples/classic-typescript/docs/tutorial-extras/img/localeDropdown.png differ diff --git a/examples/classic-typescript/docs/tutorial-extras/manage-docs-versions.md b/examples/classic-typescript/docs/tutorial-extras/manage-docs-versions.md index 6335b0ac94b8..e12c3f3444fa 100644 --- a/examples/classic-typescript/docs/tutorial-extras/manage-docs-versions.md +++ b/examples/classic-typescript/docs/tutorial-extras/manage-docs-versions.md @@ -45,7 +45,7 @@ module.exports = { The docs version dropdown appears in your navbar: -![Docs Version Dropdown](/img/tutorial/docsVersionDropdown.png) +![Docs Version Dropdown](./img/docsVersionDropdown.png) ## Update an existing version diff --git a/examples/classic-typescript/docs/tutorial-extras/translate-your-site.md b/examples/classic-typescript/docs/tutorial-extras/translate-your-site.md index a25c089ed794..da2b8a365f48 100644 --- a/examples/classic-typescript/docs/tutorial-extras/translate-your-site.md +++ b/examples/classic-typescript/docs/tutorial-extras/translate-your-site.md @@ -71,7 +71,7 @@ module.exports = { The locale dropdown now appears in your navbar: -![Locale Dropdown](/img/tutorial/localeDropdown.png) +![Locale Dropdown](./img/localeDropdown.png) ## Build your localized site diff --git a/examples/classic-typescript/docusaurus.config.js b/examples/classic-typescript/docusaurus.config.js index 437d1fba1a63..cbea7b1b4b1b 100644 --- a/examples/classic-typescript/docusaurus.config.js +++ b/examples/classic-typescript/docusaurus.config.js @@ -13,9 +13,20 @@ const config = { onBrokenLinks: 'throw', onBrokenMarkdownLinks: 'warn', favicon: 'img/favicon.ico', + + // GitHub pages deployment config. + // If you aren't using GitHub pages, you don't need these. organizationName: 'facebook', // Usually your GitHub org/user name. projectName: 'docusaurus', // Usually your repo name. + // Even if you don't use internalization, you can use this field to set useful + // metadata like html lang. For example, if your site is Chinese, you may want + // to replace "en" with "zh-Hans". + i18n: { + defaultLocale: 'en', + locales: ['en'], + }, + presets: [ [ 'classic', @@ -24,11 +35,14 @@ const config = { docs: { sidebarPath: require.resolve('./sidebars.js'), // Please change this to your repo. - editUrl: 'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/', + // Remove this to remove the "edit this page" links. + editUrl: + 'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/', }, blog: { showReadingTime: true, // Please change this to your repo. + // Remove this to remove the "edit this page" links. editUrl: 'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/', }, diff --git a/examples/classic-typescript/package.json b/examples/classic-typescript/package.json index d29bf77dca08..4996c5003e89 100644 --- a/examples/classic-typescript/package.json +++ b/examples/classic-typescript/package.json @@ -16,18 +16,18 @@ "dev": "docusaurus start" }, "dependencies": { - "@docusaurus/core": "2.0.0-beta.17", - "@docusaurus/preset-classic": "2.0.0-beta.17", + "@docusaurus/core": "2.0.0-beta.20", + "@docusaurus/preset-classic": "2.0.0-beta.20", "@mdx-js/react": "^1.6.22", "clsx": "^1.1.1", - "prism-react-renderer": "^1.2.1", - "react": "^17.0.1", - "react-dom": "^17.0.1" + "prism-react-renderer": "^1.3.1", + "react": "^17.0.2", + "react-dom": "^17.0.2" }, "devDependencies": { - "@docusaurus/module-type-aliases": "2.0.0-beta.17", - "@tsconfig/docusaurus": "^1.0.4", - "typescript": "^4.6.2" + "@docusaurus/module-type-aliases": "2.0.0-beta.20", + "@tsconfig/docusaurus": "^1.0.5", + "typescript": "^4.6.4" }, "browserslist": { "production": [ diff --git a/examples/classic-typescript/src/css/custom.css b/examples/classic-typescript/src/css/custom.css index 311dc090d973..2bc6a4cfdef4 100644 --- a/examples/classic-typescript/src/css/custom.css +++ b/examples/classic-typescript/src/css/custom.css @@ -14,6 +14,7 @@ --ifm-color-primary-lighter: #359962; --ifm-color-primary-lightest: #3cad6e; --ifm-code-font-size: 95%; + --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1); } /* For readability concerns, you should choose a lighter palette in dark mode. */ @@ -25,15 +26,5 @@ --ifm-color-primary-light: #29d5b0; --ifm-color-primary-lighter: #32d8b4; --ifm-color-primary-lightest: #4fddbf; -} - -.docusaurus-highlight-code-line { - background-color: rgba(0, 0, 0, 0.1); - display: block; - margin: 0 calc(-1 * var(--ifm-pre-padding)); - padding: 0 var(--ifm-pre-padding); -} - -[data-theme='dark'] .docusaurus-highlight-code-line { - background-color: rgba(0, 0, 0, 0.3); + --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3); } diff --git a/examples/classic-typescript/static/img/tutorial/docsVersionDropdown.png b/examples/classic-typescript/static/img/tutorial/docsVersionDropdown.png deleted file mode 100644 index ff1cbe68893d..000000000000 Binary files a/examples/classic-typescript/static/img/tutorial/docsVersionDropdown.png and /dev/null differ diff --git a/examples/classic-typescript/static/img/tutorial/localeDropdown.png b/examples/classic-typescript/static/img/tutorial/localeDropdown.png deleted file mode 100644 index d7163f967524..000000000000 Binary files a/examples/classic-typescript/static/img/tutorial/localeDropdown.png and /dev/null differ diff --git a/examples/classic-typescript/yarn.lock b/examples/classic-typescript/yarn.lock index 8881b73f98c4..a3193249d2f4 100644 --- a/examples/classic-typescript/yarn.lock +++ b/examples/classic-typescript/yarn.lock @@ -21,121 +21,122 @@ resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.5.2.tgz#e157f9ad624ab8fd940ff28bd2094cdf199cdd79" integrity sha512-ylQAYv5H0YKMfHgVWX0j0NmL8XBcAeeeVQUmppnnMtzDbDnca6CzhKj3Q8eF9cHCgcdTDdb5K+3aKyGWA0obug== -"@algolia/cache-browser-local-storage@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.12.2.tgz#62935ddb81b50d539111b2146fa340495ec1cd53" - integrity sha512-z8LjFsQc0B6h6LEE3pkUGM4ErVktn6bkFbhnYbTccjmFVQ+wXFJd/D63e0WtaC+hwRB1xq8uKhkz9oojEKEsGA== - dependencies: - "@algolia/cache-common" "4.12.2" - -"@algolia/cache-common@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.12.2.tgz#8512f311524f4d0aae8611e9879214a5e2a577ae" - integrity sha512-r//r7MF0Na0HxD2BHnjWsDKuI72Z5UEf/Rb/8MC08XKBsjCwBihGxWxycjRcNGjNEIxJBsvRMIEOipcd9qD54g== - -"@algolia/cache-in-memory@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.12.2.tgz#cacd13c02a7826bfad1c391d012ce00bc5db3859" - integrity sha512-opWpbBUloP1fcTG3wBDnAfcoyNXW5GFDgGtLXrSANdfnelPKkr3O8j01ZTkRlPIuBDR0izGZG8MVWMDlTf71Bw== - dependencies: - "@algolia/cache-common" "4.12.2" - -"@algolia/client-account@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.12.2.tgz#adc4833b78576d1558ba45b7d44be22747debdc9" - integrity sha512-HZqEyeVVjzOlfoSUyc+7+ueEJmRgqSuC+hqQOGECYa5JVno4d8eRVuDAMOb87I2LOdg/WoFMcAtaaRq2gpfV/w== - dependencies: - "@algolia/client-common" "4.12.2" - "@algolia/client-search" "4.12.2" - "@algolia/transporter" "4.12.2" - -"@algolia/client-analytics@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.12.2.tgz#741115db1af7db9526acdd702890480480dc09ce" - integrity sha512-7ktimzesu+vk3l+eG9w/nQh6/9AoIieCKmoiRIguKh6okGsaSBrcTHvUwIQEIiliqPuAFBk2M8eXYFqOZzwCZw== - dependencies: - "@algolia/client-common" "4.12.2" - "@algolia/client-search" "4.12.2" - "@algolia/requester-common" "4.12.2" - "@algolia/transporter" "4.12.2" - -"@algolia/client-common@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.12.2.tgz#88ffd3ddececdc5f343a4a9cb1f6c4058fe780c1" - integrity sha512-+dTicT1lklwOpeoiDspUoRSQYHhrr2IzllrX89/WuTPEBm2eww1xurqrSTQYC0MuVeX1s9/i4k34Q0ZnspypWg== - dependencies: - "@algolia/requester-common" "4.12.2" - "@algolia/transporter" "4.12.2" - -"@algolia/client-personalization@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.12.2.tgz#5aa1d2a4bbc64559a98bb6d029dda59dbc86e490" - integrity sha512-JBW3vYFGIm5sAAy3cLUdmUCpmSAdreo5S1fERg7xgF6KyxGrwyy5BViTNWrOKG+av2yusk1wKydOYJ1Fbpbaxw== - dependencies: - "@algolia/client-common" "4.12.2" - "@algolia/requester-common" "4.12.2" - "@algolia/transporter" "4.12.2" - -"@algolia/client-search@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.12.2.tgz#940dd07ae4fa7aa86e382ecaf0a82445010b1b4c" - integrity sha512-JIqi14TgfEqAooNbSPBC1ZCk3Pnviqlaz9KofAqWBxSRTpPUFnU/XQCU5ihR0PC68SFVDnU/Y9cak/XotXPUeg== - dependencies: - "@algolia/client-common" "4.12.2" - "@algolia/requester-common" "4.12.2" - "@algolia/transporter" "4.12.2" +"@algolia/cache-browser-local-storage@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.13.0.tgz#f8aa4fe31104b19d616ea392f9ed5c2ea847d964" + integrity sha512-nj1vHRZauTqP/bluwkRIgEADEimqojJgoTRCel5f6q8WCa9Y8QeI4bpDQP28FoeKnDRYa3J5CauDlN466jqRhg== + dependencies: + "@algolia/cache-common" "4.13.0" + +"@algolia/cache-common@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.13.0.tgz#27b83fd3939d08d72261b36a07eeafc4cb4d2113" + integrity sha512-f9mdZjskCui/dA/fA/5a+6hZ7xnHaaZI5tM/Rw9X8rRB39SUlF/+o3P47onZ33n/AwkpSbi5QOyhs16wHd55kA== + +"@algolia/cache-in-memory@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.13.0.tgz#10801a74550cbabb64b59ff08c56bce9c278ff2d" + integrity sha512-hHdc+ahPiMM92CQMljmObE75laYzNFYLrNOu0Q3/eyvubZZRtY2SUsEEgyUEyzXruNdzrkcDxFYa7YpWBJYHAg== + dependencies: + "@algolia/cache-common" "4.13.0" + +"@algolia/client-account@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.13.0.tgz#f8646dd40d1e9e3353e10abbd5d6c293ea92a8e2" + integrity sha512-FzFqFt9b0g/LKszBDoEsW+dVBuUe1K3scp2Yf7q6pgHWM1WqyqUlARwVpLxqyc+LoyJkTxQftOKjyFUqddnPKA== + dependencies: + "@algolia/client-common" "4.13.0" + "@algolia/client-search" "4.13.0" + "@algolia/transporter" "4.13.0" + +"@algolia/client-analytics@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.13.0.tgz#a00bd02df45d71becb9dd4c5c993d805f2e1786d" + integrity sha512-klmnoq2FIiiMHImkzOm+cGxqRLLu9CMHqFhbgSy9wtXZrqb8BBUIUE2VyBe7azzv1wKcxZV2RUyNOMpFqmnRZA== + dependencies: + "@algolia/client-common" "4.13.0" + "@algolia/client-search" "4.13.0" + "@algolia/requester-common" "4.13.0" + "@algolia/transporter" "4.13.0" + +"@algolia/client-common@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.13.0.tgz#8bc373d164dbdcce38b4586912bbe162492bcb86" + integrity sha512-GoXfTp0kVcbgfSXOjfrxx+slSipMqGO9WnNWgeMmru5Ra09MDjrcdunsiiuzF0wua6INbIpBQFTC2Mi5lUNqGA== + dependencies: + "@algolia/requester-common" "4.13.0" + "@algolia/transporter" "4.13.0" + +"@algolia/client-personalization@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.13.0.tgz#10fb7af356422551f11a67222b39c52306f1512c" + integrity sha512-KneLz2WaehJmNfdr5yt2HQETpLaCYagRdWwIwkTqRVFCv4DxRQ2ChPVW9jeTj4YfAAhfzE6F8hn7wkQ/Jfj6ZA== + dependencies: + "@algolia/client-common" "4.13.0" + "@algolia/requester-common" "4.13.0" + "@algolia/transporter" "4.13.0" + +"@algolia/client-search@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.13.0.tgz#2d8ff8e755c4a37ec89968f3f9b358eed005c7f0" + integrity sha512-blgCKYbZh1NgJWzeGf+caKE32mo3j54NprOf0LZVCubQb3Kx37tk1Hc8SDs9bCAE8hUvf3cazMPIg7wscSxspA== + dependencies: + "@algolia/client-common" "4.13.0" + "@algolia/requester-common" "4.13.0" + "@algolia/transporter" "4.13.0" "@algolia/events@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@algolia/events/-/events-4.0.1.tgz#fd39e7477e7bc703d7f893b556f676c032af3950" integrity sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ== -"@algolia/logger-common@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.12.2.tgz#cdc9a685d7cf356a4d9e5915f741f1ee1a6baade" - integrity sha512-iOiJAymLjq137G7+8EQuUEkrgta0cZGMg6scp8s4hJ+X6k+6By4nyptdkCWYwKLsW/Xy927QcIhGlkWV78vQIQ== +"@algolia/logger-common@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.13.0.tgz#be2606e71aae618a1ff1ea9a1b5f5a74284b35a8" + integrity sha512-8yqXk7rMtmQJ9wZiHOt/6d4/JDEg5VCk83gJ39I+X/pwUPzIsbKy9QiK4uJ3aJELKyoIiDT1hpYVt+5ia+94IA== -"@algolia/logger-console@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.12.2.tgz#d7348e41378fbab5413cb5f97d8ae2ff378cfdb8" - integrity sha512-veuQZyTSqHoHJtr9mLMnYeal9Mee6hCie4eqY+645VbeOrgT9p/kCMbKg5GLJGoLPlXGu7C0XpHyUj5k7/NQyw== +"@algolia/logger-console@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.13.0.tgz#f28028a760e3d9191e28a10b12925e48f6c9afde" + integrity sha512-YepRg7w2/87L0vSXRfMND6VJ5d6699sFJBRWzZPOlek2p5fLxxK7O0VncYuc/IbVHEgeApvgXx0WgCEa38GVuQ== dependencies: - "@algolia/logger-common" "4.12.2" + "@algolia/logger-common" "4.13.0" -"@algolia/requester-browser-xhr@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.12.2.tgz#abfcb1901602ccdf51879b10d914208b776aa418" - integrity sha512-FpFdHNd81tS3zj6Glqd+lt+RV0ljPExKtx+QB+gani6HWZ9YlSCM+Zl82T4ibxN+hmkrMeAyT+TMzS0jiGhGyQ== +"@algolia/requester-browser-xhr@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.13.0.tgz#e2483f4e8d7f09e27cd0daf6c77711d15c5a919f" + integrity sha512-Dj+bnoWR5MotrnjblzGKZ2kCdQi2cK/VzPURPnE616NU/il7Ypy6U6DLGZ/ZYz+tnwPa0yypNf21uqt84fOgrg== dependencies: - "@algolia/requester-common" "4.12.2" + "@algolia/requester-common" "4.13.0" -"@algolia/requester-common@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.12.2.tgz#6d6181fb961205695bf535e108d2e5be8f8c9047" - integrity sha512-4szj/lvDQf/u8EyyRBBRZD1ZkKDyLBbckLj7meQDlnbfwnW1UpLwpB2l3XJ9wDmDSftGxUCeTl5oMFe4z9OEvQ== +"@algolia/requester-common@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.13.0.tgz#47fb3464cfb26b55ba43676d13f295d812830596" + integrity sha512-BRTDj53ecK+gn7ugukDWOOcBRul59C4NblCHqj4Zm5msd5UnHFjd/sGX+RLOEoFMhetILAnmg6wMrRrQVac9vw== -"@algolia/requester-node-http@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.12.2.tgz#f91e749ee6854c944cc741f13c539dff23363f67" - integrity sha512-UXfJNZt2KMwjBjiOa3cJ/PyoXWZa/F1vy6rdyG4xQeZDcLbqKP3O2b+bOJcGPmFbmdwBhtAyMVLt+hvAvAVfOw== +"@algolia/requester-node-http@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.13.0.tgz#7d981bbd31492f51dd11820a665f9d8906793c37" + integrity sha512-9b+3O4QFU4azLhGMrZAr/uZPydvzOR4aEZfSL8ZrpLZ7fbbqTO0S/5EVko+QIgglRAtVwxvf8UJ1wzTD2jvKxQ== dependencies: - "@algolia/requester-common" "4.12.2" + "@algolia/requester-common" "4.13.0" -"@algolia/transporter@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.12.2.tgz#60189b626b170f3386deb1d7a0a1e70ed8156864" - integrity sha512-PUq79if4CukXsm27ymTQ3eD3juSvMcyJmt6mxCkSFE0zQRL4ert61HBlNH6S9y/quUVe3g7oggfHq3d5pdpqZA== +"@algolia/transporter@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.13.0.tgz#f6379e5329efa2127da68c914d1141f5f21dbd07" + integrity sha512-8tSQYE+ykQENAdeZdofvtkOr5uJ9VcQSWgRhQ9h01AehtBIPAczk/b2CLrMsw5yQZziLs5cZ3pJ3478yI+urhA== dependencies: - "@algolia/cache-common" "4.12.2" - "@algolia/logger-common" "4.12.2" - "@algolia/requester-common" "4.12.2" + "@algolia/cache-common" "4.13.0" + "@algolia/logger-common" "4.13.0" + "@algolia/requester-common" "4.13.0" "@ampproject/remapping@^2.1.0": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34" - integrity sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg== + version "2.2.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" + integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== dependencies: - "@jridgewell/trace-mapping" "^0.3.0" + "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/trace-mapping" "^0.3.9" "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.8.3": version "7.16.7" @@ -144,10 +145,10 @@ dependencies: "@babel/highlight" "^7.16.7" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.4", "@babel/compat-data@^7.16.8", "@babel/compat-data@^7.17.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.0.tgz#86850b8597ea6962089770952075dcaabb8dba34" - integrity sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng== +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.17.0", "@babel/compat-data@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.10.tgz#711dc726a492dfc8be8220028b1b92482362baab" + integrity sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw== "@babel/core@7.12.9": version "7.12.9" @@ -171,35 +172,35 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.15.5", "@babel/core@^7.17.5": - version "7.17.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.5.tgz#6cd2e836058c28f06a4ca8ee7ed955bbf37c8225" - integrity sha512-/BBMw4EvjmyquN5O+t5eh0+YqB3XXJkYD2cjKpYtWOfFy4lQ4UozNSmxAcWT8r2XtZs0ewG+zrfsqeR15i1ajA== +"@babel/core@^7.15.5", "@babel/core@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.10.tgz#74ef0fbf56b7dfc3f198fc2d927f4f03e12f4b05" + integrity sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.3" - "@babel/helper-compilation-targets" "^7.16.7" - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helpers" "^7.17.2" - "@babel/parser" "^7.17.3" + "@babel/generator" "^7.17.10" + "@babel/helper-compilation-targets" "^7.17.10" + "@babel/helper-module-transforms" "^7.17.7" + "@babel/helpers" "^7.17.9" + "@babel/parser" "^7.17.10" "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.3" - "@babel/types" "^7.17.0" + "@babel/traverse" "^7.17.10" + "@babel/types" "^7.17.10" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" - json5 "^2.1.2" + json5 "^2.2.1" semver "^6.3.0" -"@babel/generator@^7.12.5", "@babel/generator@^7.17.3": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.3.tgz#a2c30b0c4f89858cb87050c3ffdfd36bdf443200" - integrity sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg== +"@babel/generator@^7.12.5", "@babel/generator@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.10.tgz#c281fa35b0c349bbe9d02916f4ae08fc85ed7189" + integrity sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg== dependencies: - "@babel/types" "^7.17.0" + "@babel/types" "^7.17.10" + "@jridgewell/gen-mapping" "^0.1.0" jsesc "^2.5.1" - source-map "^0.5.0" "@babel/helper-annotate-as-pure@^7.16.7": version "7.16.7" @@ -216,30 +217,30 @@ "@babel/helper-explode-assignable-expression" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz#06e66c5f299601e6c7da350049315e83209d551b" - integrity sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA== +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz#09c63106d47af93cf31803db6bc49fef354e2ebe" + integrity sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ== dependencies: - "@babel/compat-data" "^7.16.4" + "@babel/compat-data" "^7.17.10" "@babel/helper-validator-option" "^7.16.7" - browserslist "^4.17.5" + browserslist "^4.20.2" semver "^6.3.0" "@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.6": - version "7.17.6" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz#3778c1ed09a7f3e65e6d6e0f6fbfcc53809d92c9" - integrity sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg== + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz#71835d7fb9f38bd9f1378e40a4c0902fdc2ea49d" + integrity sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-member-expression-to-functions" "^7.17.7" "@babel/helper-optimise-call-expression" "^7.16.7" "@babel/helper-replace-supers" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" -"@babel/helper-create-regexp-features-plugin@^7.16.7": +"@babel/helper-create-regexp-features-plugin@^7.16.7", "@babel/helper-create-regexp-features-plugin@^7.17.0": version "7.17.0" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz#1dcc7d40ba0c6b6b25618997c5dbfd310f186fe1" integrity sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA== @@ -275,21 +276,13 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-function-name@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" - integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA== +"@babel/helper-function-name@^7.16.7", "@babel/helper-function-name@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12" + integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg== dependencies: - "@babel/helper-get-function-arity" "^7.16.7" "@babel/template" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/helper-get-function-arity@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" - integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw== - dependencies: - "@babel/types" "^7.16.7" + "@babel/types" "^7.17.0" "@babel/helper-hoist-variables@^7.16.7": version "7.16.7" @@ -298,12 +291,12 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-member-expression-to-functions@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz#42b9ca4b2b200123c3b7e726b0ae5153924905b0" - integrity sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q== +"@babel/helper-member-expression-to-functions@^7.16.7", "@babel/helper-member-expression-to-functions@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4" + integrity sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw== dependencies: - "@babel/types" "^7.16.7" + "@babel/types" "^7.17.0" "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7": version "7.16.7" @@ -312,14 +305,14 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.16.7": - version "7.17.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.6.tgz#3c3b03cc6617e33d68ef5a27a67419ac5199ccd0" - integrity sha512-2ULmRdqoOMpdvkbT8jONrZML/XALfzxlb052bldftkicAUy8AxSCkD5trDPQcwHNmolcl7wP6ehNqMlyUw6AaA== +"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.16.7", "@babel/helper-module-transforms@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz#3943c7f777139e7954a5355c815263741a9c1cbd" + integrity sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw== dependencies: "@babel/helper-environment-visitor" "^7.16.7" "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-simple-access" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" "@babel/helper-split-export-declaration" "^7.16.7" "@babel/helper-validator-identifier" "^7.16.7" "@babel/template" "^7.16.7" @@ -363,12 +356,12 @@ "@babel/traverse" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/helper-simple-access@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz#d656654b9ea08dbb9659b69d61063ccd343ff0f7" - integrity sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g== +"@babel/helper-simple-access@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz#aaa473de92b7987c6dfa7ce9a7d9674724823367" + integrity sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA== dependencies: - "@babel/types" "^7.16.7" + "@babel/types" "^7.17.0" "@babel/helper-skip-transparent-expression-wrappers@^7.16.0": version "7.16.0" @@ -404,28 +397,28 @@ "@babel/traverse" "^7.16.8" "@babel/types" "^7.16.8" -"@babel/helpers@^7.12.5", "@babel/helpers@^7.17.2": - version "7.17.2" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.2.tgz#23f0a0746c8e287773ccd27c14be428891f63417" - integrity sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ== +"@babel/helpers@^7.12.5", "@babel/helpers@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.9.tgz#b2af120821bfbe44f9907b1826e168e819375a1a" + integrity sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q== dependencies: "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.0" + "@babel/traverse" "^7.17.9" "@babel/types" "^7.17.0" "@babel/highlight@^7.16.7": - version "7.16.10" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" - integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw== + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.9.tgz#61b2ee7f32ea0454612def4fccdae0de232b73e3" + integrity sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg== dependencies: "@babel/helper-validator-identifier" "^7.16.7" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.12.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.3": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.3.tgz#b07702b982990bf6fdc1da5049a23fece4c5c3d0" - integrity sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA== +"@babel/parser@^7.12.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.10.tgz#873b16db82a8909e0fbd7f115772f4b739f6ce78" + integrity sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": version "7.16.7" @@ -460,7 +453,7 @@ "@babel/helper-create-class-features-plugin" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-proposal-class-static-block@^7.16.7": +"@babel/plugin-proposal-class-static-block@^7.17.6": version "7.17.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz#164e8fd25f0d80fa48c5a4d1438a6629325ad83c" integrity sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA== @@ -526,7 +519,7 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-transform-parameters" "^7.12.1" -"@babel/plugin-proposal-object-rest-spread@^7.16.7": +"@babel/plugin-proposal-object-rest-spread@^7.17.3": version "7.17.3" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz#d9eb649a54628a51701aef7e0ea3d17e2b9dd390" integrity sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw== @@ -693,9 +686,9 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-typescript@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz#39c9b55ee153151990fb038651d58d3fd03f98f8" - integrity sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A== + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.10.tgz#80031e6042cad6a95ed753f672ebd23c30933195" + integrity sha512-xJefea1DWXW09pW4Tm9bjwVlPDyYA2it3fWlmEjpYz6alPvTUjL0EOzNzI/FEOyI3r4/J7uVH5UqKgl1TQ5hqQ== dependencies: "@babel/helper-plugin-utils" "^7.16.7" @@ -750,10 +743,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-destructuring@^7.16.7": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.3.tgz#c445f75819641788a27a0a3a759d9df911df6abc" - integrity sha512-dDFzegDYKlPqa72xIlbmSkly5MluLoaC1JswABGktyt6NTXSBcUuse/kWE/wvKFWJHPETpi158qJZFS3JmykJg== +"@babel/plugin-transform-destructuring@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz#49dc2675a7afa9a5e4c6bdee636061136c3408d1" + integrity sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ== dependencies: "@babel/helper-plugin-utils" "^7.16.7" @@ -819,23 +812,23 @@ "@babel/helper-plugin-utils" "^7.16.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz#cdee19aae887b16b9d331009aa9a219af7c86afe" - integrity sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA== +"@babel/plugin-transform-modules-commonjs@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz#274be1a2087beec0254d4abd4d86e52442e1e5b6" + integrity sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw== dependencies: - "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-module-transforms" "^7.17.7" "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-simple-access" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz#887cefaef88e684d29558c2b13ee0563e287c2d7" - integrity sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw== +"@babel/plugin-transform-modules-systemjs@^7.17.8": + version "7.17.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz#81fd834024fae14ea78fbe34168b042f38703859" + integrity sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw== dependencies: "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-module-transforms" "^7.17.7" "@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-validator-identifier" "^7.16.7" babel-plugin-dynamic-import-node "^2.3.3" @@ -848,12 +841,12 @@ "@babel/helper-module-transforms" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-named-capturing-groups-regex@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz#7f860e0e40d844a02c9dcf9d84965e7dfd666252" - integrity sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw== +"@babel/plugin-transform-named-capturing-groups-regex@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.10.tgz#715dbcfafdb54ce8bccd3d12e8917296a4ba66a4" + integrity sha512-v54O6yLaJySCs6mGzaVOUw9T967GnH38T6CQSAtnzdNPwu84l2qAjssKzo/WSO8Yi7NF+7ekm5cVbF/5qiIgNA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-create-regexp-features-plugin" "^7.17.0" "@babel/plugin-transform-new-target@^7.16.7": version "7.16.7" @@ -924,12 +917,12 @@ "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-regenerator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz#9e7576dc476cb89ccc5096fff7af659243b4adeb" - integrity sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q== +"@babel/plugin-transform-regenerator@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz#0a33c3a61cf47f45ed3232903683a0afd2d3460c" + integrity sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ== dependencies: - regenerator-transform "^0.14.2" + regenerator-transform "^0.15.0" "@babel/plugin-transform-reserved-words@^7.16.7": version "7.16.7" @@ -938,10 +931,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-runtime@^7.17.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz#0a2e08b5e2b2d95c4b1d3b3371a2180617455b70" - integrity sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A== +"@babel/plugin-transform-runtime@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.10.tgz#b89d821c55d61b5e3d3c3d1d636d8d5a81040ae1" + integrity sha512-6jrMilUAJhktTr56kACL8LnWC5hx3Lf27BS0R0DSyW/OoJfb/iTHeE96V3b1dgKG3FSFdd/0culnYWMkjcKCig== dependencies: "@babel/helper-module-imports" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" @@ -1010,27 +1003,27 @@ "@babel/helper-create-regexp-features-plugin" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/preset-env@^7.15.6", "@babel/preset-env@^7.16.11": - version "7.16.11" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.11.tgz#5dd88fd885fae36f88fd7c8342475c9f0abe2982" - integrity sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g== +"@babel/preset-env@^7.15.6", "@babel/preset-env@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.17.10.tgz#a81b093669e3eb6541bb81a23173c5963c5de69c" + integrity sha512-YNgyBHZQpeoBSRBg0xixsZzfT58Ze1iZrajvv0lJc70qDDGuGfonEnMGfWeSY0mQ3JTuCWFbMkzFRVafOyJx4g== dependencies: - "@babel/compat-data" "^7.16.8" - "@babel/helper-compilation-targets" "^7.16.7" + "@babel/compat-data" "^7.17.10" + "@babel/helper-compilation-targets" "^7.17.10" "@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-validator-option" "^7.16.7" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.7" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.7" "@babel/plugin-proposal-async-generator-functions" "^7.16.8" "@babel/plugin-proposal-class-properties" "^7.16.7" - "@babel/plugin-proposal-class-static-block" "^7.16.7" + "@babel/plugin-proposal-class-static-block" "^7.17.6" "@babel/plugin-proposal-dynamic-import" "^7.16.7" "@babel/plugin-proposal-export-namespace-from" "^7.16.7" "@babel/plugin-proposal-json-strings" "^7.16.7" "@babel/plugin-proposal-logical-assignment-operators" "^7.16.7" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.7" "@babel/plugin-proposal-numeric-separator" "^7.16.7" - "@babel/plugin-proposal-object-rest-spread" "^7.16.7" + "@babel/plugin-proposal-object-rest-spread" "^7.17.3" "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" "@babel/plugin-proposal-optional-chaining" "^7.16.7" "@babel/plugin-proposal-private-methods" "^7.16.11" @@ -1056,7 +1049,7 @@ "@babel/plugin-transform-block-scoping" "^7.16.7" "@babel/plugin-transform-classes" "^7.16.7" "@babel/plugin-transform-computed-properties" "^7.16.7" - "@babel/plugin-transform-destructuring" "^7.16.7" + "@babel/plugin-transform-destructuring" "^7.17.7" "@babel/plugin-transform-dotall-regex" "^7.16.7" "@babel/plugin-transform-duplicate-keys" "^7.16.7" "@babel/plugin-transform-exponentiation-operator" "^7.16.7" @@ -1065,15 +1058,15 @@ "@babel/plugin-transform-literals" "^7.16.7" "@babel/plugin-transform-member-expression-literals" "^7.16.7" "@babel/plugin-transform-modules-amd" "^7.16.7" - "@babel/plugin-transform-modules-commonjs" "^7.16.8" - "@babel/plugin-transform-modules-systemjs" "^7.16.7" + "@babel/plugin-transform-modules-commonjs" "^7.17.9" + "@babel/plugin-transform-modules-systemjs" "^7.17.8" "@babel/plugin-transform-modules-umd" "^7.16.7" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.8" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.17.10" "@babel/plugin-transform-new-target" "^7.16.7" "@babel/plugin-transform-object-super" "^7.16.7" "@babel/plugin-transform-parameters" "^7.16.7" "@babel/plugin-transform-property-literals" "^7.16.7" - "@babel/plugin-transform-regenerator" "^7.16.7" + "@babel/plugin-transform-regenerator" "^7.17.9" "@babel/plugin-transform-reserved-words" "^7.16.7" "@babel/plugin-transform-shorthand-properties" "^7.16.7" "@babel/plugin-transform-spread" "^7.16.7" @@ -1083,11 +1076,11 @@ "@babel/plugin-transform-unicode-escapes" "^7.16.7" "@babel/plugin-transform-unicode-regex" "^7.16.7" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.16.8" + "@babel/types" "^7.17.10" babel-plugin-polyfill-corejs2 "^0.3.0" babel-plugin-polyfill-corejs3 "^0.5.0" babel-plugin-polyfill-regenerator "^0.3.0" - core-js-compat "^3.20.2" + core-js-compat "^3.22.1" semver "^6.3.0" "@babel/preset-modules@^0.1.5": @@ -1122,18 +1115,18 @@ "@babel/helper-validator-option" "^7.16.7" "@babel/plugin-transform-typescript" "^7.16.7" -"@babel/runtime-corejs3@^7.17.2": - version "7.17.2" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.17.2.tgz#fdca2cd05fba63388babe85d349b6801b008fd13" - integrity sha512-NcKtr2epxfIrNM4VOmPKO46TvDMCBhgi2CrSHaEarrz+Plk2K5r9QemmOFTGpZaoKnWoGH5MO+CzeRsih/Fcgg== +"@babel/runtime-corejs3@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.17.9.tgz#3d02d0161f0fbf3ada8e88159375af97690f4055" + integrity sha512-WxYHHUWF2uZ7Hp1K+D1xQgbgkGUfA+5UPOegEXGt2Y5SMog/rYCVaifLZDbw8UkNXozEqqrZTy6bglL7xTaCOw== dependencies: core-js-pure "^3.20.2" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.17.2", "@babel/runtime@^7.8.4": - version "7.17.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.2.tgz#66f68591605e59da47523c631416b18508779941" - integrity sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw== +"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.17.9", "@babel/runtime@^7.8.4": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72" + integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg== dependencies: regenerator-runtime "^0.13.4" @@ -1146,30 +1139,35 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.0", "@babel/traverse@^7.17.3": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57" - integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw== +"@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.10", "@babel/traverse@^7.17.3", "@babel/traverse@^7.17.9": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.10.tgz#1ee1a5ac39f4eac844e6cf855b35520e5eb6f8b5" + integrity sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw== dependencies: "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.3" + "@babel/generator" "^7.17.10" "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" + "@babel/helper-function-name" "^7.17.9" "@babel/helper-hoist-variables" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.17.3" - "@babel/types" "^7.17.0" + "@babel/parser" "^7.17.10" + "@babel/types" "^7.17.10" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.12.7", "@babel/types@^7.15.6", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.4.4": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" - integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== +"@babel/types@^7.12.7", "@babel/types@^7.15.6", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.10", "@babel/types@^7.4.4": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.10.tgz#d35d7b4467e439fcf06d195f8100e0fea7fc82c4" + integrity sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A== dependencies: "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + "@docsearch/css@3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.0.0.tgz#fe57b474802ffd706d3246eab25d52fac8aa3698" @@ -1185,64 +1183,62 @@ "@docsearch/css" "3.0.0" algoliasearch "^4.0.0" -"@docusaurus/core@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.0.0-beta.17.tgz#f631aae04405de42a428a31928998242cd1d7b77" - integrity sha512-iNdW7CsmHNOgc4PxD9BFxa+MD8+i7ln7erOBkF3FSMMPnsKUeVqsR3rr31aLmLZRlTXMITSPLxlXwtBZa3KPCw== +"@docusaurus/core@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.0.0-beta.20.tgz#cf4aeeccecacb547a6fb42340c83bed0cccb57c0" + integrity sha512-a3UgZ4lIcIOoZd4j9INqVkWSXEDxR7EicJXt8eq2whg4N5hKGqLHoDSnWfrVSPQn4NoG5T7jhPypphSoysImfQ== dependencies: - "@babel/core" "^7.17.5" - "@babel/generator" "^7.17.3" + "@babel/core" "^7.17.10" + "@babel/generator" "^7.17.10" "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-transform-runtime" "^7.17.0" - "@babel/preset-env" "^7.16.11" + "@babel/plugin-transform-runtime" "^7.17.10" + "@babel/preset-env" "^7.17.10" "@babel/preset-react" "^7.16.7" "@babel/preset-typescript" "^7.16.7" - "@babel/runtime" "^7.17.2" - "@babel/runtime-corejs3" "^7.17.2" - "@babel/traverse" "^7.17.3" - "@docusaurus/cssnano-preset" "2.0.0-beta.17" - "@docusaurus/logger" "2.0.0-beta.17" - "@docusaurus/mdx-loader" "2.0.0-beta.17" + "@babel/runtime" "^7.17.9" + "@babel/runtime-corejs3" "^7.17.9" + "@babel/traverse" "^7.17.10" + "@docusaurus/cssnano-preset" "2.0.0-beta.20" + "@docusaurus/logger" "2.0.0-beta.20" + "@docusaurus/mdx-loader" "2.0.0-beta.20" "@docusaurus/react-loadable" "5.5.2" - "@docusaurus/utils" "2.0.0-beta.17" - "@docusaurus/utils-common" "2.0.0-beta.17" - "@docusaurus/utils-validation" "2.0.0-beta.17" - "@slorber/static-site-generator-webpack-plugin" "^4.0.1" + "@docusaurus/utils" "2.0.0-beta.20" + "@docusaurus/utils-common" "2.0.0-beta.20" + "@docusaurus/utils-validation" "2.0.0-beta.20" + "@slorber/static-site-generator-webpack-plugin" "^4.0.4" "@svgr/webpack" "^6.2.1" - autoprefixer "^10.4.2" - babel-loader "^8.2.3" + autoprefixer "^10.4.5" + babel-loader "^8.2.5" babel-plugin-dynamic-import-node "2.3.0" boxen "^6.2.1" chokidar "^3.5.3" - clean-css "^5.2.4" - cli-table3 "^0.6.1" + clean-css "^5.3.0" + cli-table3 "^0.6.2" combine-promises "^1.1.0" commander "^5.1.0" copy-webpack-plugin "^10.2.4" - core-js "^3.21.1" - css-loader "^6.6.0" + core-js "^3.22.3" + css-loader "^6.7.1" css-minimizer-webpack-plugin "^3.4.1" - cssnano "^5.0.17" + cssnano "^5.1.7" del "^6.0.0" detect-port "^1.3.0" escape-html "^1.0.3" eta "^1.12.3" file-loader "^6.2.0" - fs-extra "^10.0.1" + fs-extra "^10.1.0" html-minifier-terser "^6.1.0" - html-tags "^3.1.0" + html-tags "^3.2.0" html-webpack-plugin "^5.5.0" import-fresh "^3.3.0" - is-root "^2.1.0" leven "^3.1.0" lodash "^4.17.21" - mini-css-extract-plugin "^2.5.3" - nprogress "^0.2.0" - postcss "^8.4.7" + mini-css-extract-plugin "^2.6.0" + postcss "^8.4.13" postcss-loader "^6.2.1" prompts "^2.4.2" - react-dev-utils "^12.0.0" - react-helmet-async "^1.2.3" + react-dev-utils "^12.0.1" + react-helmet-async "^1.3.0" react-loadable "npm:@docusaurus/react-loadable@5.5.2" react-loadable-ssr-addon-v5-slorber "^1.0.1" react-router "^5.2.0" @@ -1250,183 +1246,184 @@ react-router-dom "^5.2.0" remark-admonitions "^1.2.1" rtl-detect "^1.0.4" - semver "^7.3.4" + semver "^7.3.7" serve-handler "^6.1.3" shelljs "^0.8.5" terser-webpack-plugin "^5.3.1" - tslib "^2.3.1" + tslib "^2.4.0" update-notifier "^5.1.0" url-loader "^4.1.1" wait-on "^6.0.1" - webpack "^5.69.1" + webpack "^5.72.0" webpack-bundle-analyzer "^4.5.0" - webpack-dev-server "^4.7.4" + webpack-dev-server "^4.8.1" webpack-merge "^5.8.0" webpackbar "^5.0.2" -"@docusaurus/cssnano-preset@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.0-beta.17.tgz#f687bc6e5c8cb2139a7830dec757cfcb92dbb681" - integrity sha512-DoBwtLjJ9IY9/lNMHIEdo90L4NDayvU28nLgtjR2Sc6aBIMEB/3a5Ndjehnp+jZAkwcDdNASA86EkZVUyz1O1A== +"@docusaurus/cssnano-preset@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.0-beta.20.tgz#c47722e347fd044f2372e924199eabf61733232f" + integrity sha512-7pfrYuahHl3YYS+gYhbb1YHsq5s5+hk+1KIU7QqNNn4YjrIqAHlOznCQ9XfQfspe9boZmaNFGMZQ1tawNOVLqQ== dependencies: - cssnano-preset-advanced "^5.1.12" - postcss "^8.4.7" + cssnano-preset-advanced "^5.3.3" + postcss "^8.4.13" postcss-sort-media-queries "^4.2.1" -"@docusaurus/logger@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-2.0.0-beta.17.tgz#89c5ace3b4efd5274adb0d8919328892c4466d02" - integrity sha512-F9JDl06/VLg+ylsvnq9NpILSUeWtl0j4H2LtlLzX5gufEL4dGiCMlnUzYdHl7FSHSzYJ0A/R7vu0SYofsexC4w== +"@docusaurus/logger@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-2.0.0-beta.20.tgz#bb49e8516e48082ab96bca11569a18541476d5a6" + integrity sha512-7Rt7c8m3ZM81o5jsm6ENgdbjq/hUICv8Om2i7grynI4GT2aQyFoHcusaNbRji4FZt0DaKT2CQxiAWP8BbD4xzQ== dependencies: chalk "^4.1.2" - tslib "^2.3.1" + tslib "^2.4.0" -"@docusaurus/mdx-loader@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-beta.17.tgz#838f87f4cbf12701c4d8eb11e4f9698fb7155bf8" - integrity sha512-AhJ3GWRmjQYCyINHE595pff5tn3Rt83oGpdev5UT9uvG9lPYPC8nEmh1LI6c0ogfw7YkNznzxWSW4hyyVbYQ3A== +"@docusaurus/mdx-loader@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-beta.20.tgz#7016e8ce7e4a11c9ea458e2236d3c93af71f393f" + integrity sha512-BBuf77sji3JxbCEW7Qsv3CXlgpm+iSLTQn6JUK7x8vJ1JYZ3KJbNgpo9TmxIIltpcvNQ/QOy6dvqrpSStaWmKQ== dependencies: - "@babel/parser" "^7.17.3" - "@babel/traverse" "^7.17.3" - "@docusaurus/logger" "2.0.0-beta.17" - "@docusaurus/utils" "2.0.0-beta.17" + "@babel/parser" "^7.17.10" + "@babel/traverse" "^7.17.10" + "@docusaurus/logger" "2.0.0-beta.20" + "@docusaurus/utils" "2.0.0-beta.20" "@mdx-js/mdx" "^1.6.22" escape-html "^1.0.3" file-loader "^6.2.0" - fs-extra "^10.0.1" + fs-extra "^10.1.0" image-size "^1.0.1" mdast-util-to-string "^2.0.0" - remark-emoji "^2.1.0" + remark-emoji "^2.2.0" stringify-object "^3.3.0" - tslib "^2.3.1" - unist-util-visit "^2.0.2" + tslib "^2.4.0" + unist-util-visit "^2.0.3" url-loader "^4.1.1" - webpack "^5.69.1" + webpack "^5.72.0" -"@docusaurus/module-type-aliases@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.0.0-beta.17.tgz#73f6d34be202ac093e78769ff72613d353087cd7" - integrity sha512-Tu+8geC/wyygBudbSwvWIHEvt5RwyA7dEoE1JmPbgQtmqUxOZ9bgnfemwXpJW5mKuDiJASbN4of1DhbLqf4sPg== +"@docusaurus/module-type-aliases@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.0.0-beta.20.tgz#669605a64b04226c391e0284c44743e137eb2595" + integrity sha512-lUIXLwQEOyYwcb3iCNibPUL6O9ijvYF5xQwehGeVraTEBts/Ch8ZwELFk+XbaGHKh52PiVxuWL2CP4Gdjy5QKw== dependencies: - "@docusaurus/types" "2.0.0-beta.17" + "@docusaurus/types" "2.0.0-beta.20" "@types/react" "*" "@types/react-router-config" "*" "@types/react-router-dom" "*" react-helmet-async "*" -"@docusaurus/plugin-content-blog@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-beta.17.tgz#1d1063bfda78a80d517694567b965d5c3a70479f" - integrity sha512-gcX4UR+WKT4bhF8FICBQHy+ESS9iRMeaglSboTZbA/YHGax/3EuZtcPU3dU4E/HFJeZ866wgUdbLKpIpsZOidg== - dependencies: - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/logger" "2.0.0-beta.17" - "@docusaurus/mdx-loader" "2.0.0-beta.17" - "@docusaurus/utils" "2.0.0-beta.17" - "@docusaurus/utils-common" "2.0.0-beta.17" - "@docusaurus/utils-validation" "2.0.0-beta.17" +"@docusaurus/plugin-content-blog@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-beta.20.tgz#7c0d413ac8df9a422a0b3ddd90b77ec491bbda15" + integrity sha512-6aby36Gmny5h2oo/eEZ2iwVsIlBWbRnNNeqT0BYnJO5aj53iCU/ctFPpJVYcw0l2l8+8ITS70FyePIWEsaZ0jA== + dependencies: + "@docusaurus/core" "2.0.0-beta.20" + "@docusaurus/logger" "2.0.0-beta.20" + "@docusaurus/mdx-loader" "2.0.0-beta.20" + "@docusaurus/utils" "2.0.0-beta.20" + "@docusaurus/utils-common" "2.0.0-beta.20" + "@docusaurus/utils-validation" "2.0.0-beta.20" cheerio "^1.0.0-rc.10" feed "^4.2.2" - fs-extra "^10.0.1" + fs-extra "^10.1.0" lodash "^4.17.21" reading-time "^1.5.0" remark-admonitions "^1.2.1" - tslib "^2.3.1" + tslib "^2.4.0" + unist-util-visit "^2.0.3" utility-types "^3.10.0" - webpack "^5.69.1" - -"@docusaurus/plugin-content-docs@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-beta.17.tgz#97f13bb458e165224db6867836e8e9637ea15921" - integrity sha512-YYrBpuRfTfE6NtENrpSHTJ7K7PZifn6j6hcuvdC0QKE+WD8pS+O2/Ws30yoyvHwLnAnfhvaderh1v9Kaa0/ANg== - dependencies: - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/logger" "2.0.0-beta.17" - "@docusaurus/mdx-loader" "2.0.0-beta.17" - "@docusaurus/utils" "2.0.0-beta.17" - "@docusaurus/utils-validation" "2.0.0-beta.17" + webpack "^5.72.0" + +"@docusaurus/plugin-content-docs@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-beta.20.tgz#2a53b9fc355f45bf7c6917f19be7bfa0698b8b9e" + integrity sha512-XOgwUqXtr/DStpB3azdN6wgkKtQkOXOx1XetORzhHnjihrSMn6daxg+spmcJh1ki/mpT3n7yBbKJxVNo+VB38Q== + dependencies: + "@docusaurus/core" "2.0.0-beta.20" + "@docusaurus/logger" "2.0.0-beta.20" + "@docusaurus/mdx-loader" "2.0.0-beta.20" + "@docusaurus/utils" "2.0.0-beta.20" + "@docusaurus/utils-validation" "2.0.0-beta.20" combine-promises "^1.1.0" - fs-extra "^10.0.1" + fs-extra "^10.1.0" import-fresh "^3.3.0" js-yaml "^4.1.0" lodash "^4.17.21" remark-admonitions "^1.2.1" - tslib "^2.3.1" + tslib "^2.4.0" utility-types "^3.10.0" - webpack "^5.69.1" - -"@docusaurus/plugin-content-pages@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-beta.17.tgz#d5955d3cc23722518a6032f830cf8c7b7aeb3d5a" - integrity sha512-d5x0mXTMJ44ojRQccmLyshYoamFOep2AnBe69osCDnwWMbD3Or3pnc2KMK9N7mVpQFnNFKbHNCLrX3Rv0uwEHA== - dependencies: - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/mdx-loader" "2.0.0-beta.17" - "@docusaurus/utils" "2.0.0-beta.17" - "@docusaurus/utils-validation" "2.0.0-beta.17" - fs-extra "^10.0.1" + webpack "^5.72.0" + +"@docusaurus/plugin-content-pages@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-beta.20.tgz#6a76c7fa049983d2d94d8c4d738802acf01611fe" + integrity sha512-ubY6DG4F0skFKjfNGCbfO34Qf+MZy6C05OtpIYsoA2YU8ADx0nRH7qPgdEkwR3ma860DbY612rleRT13ogSlhg== + dependencies: + "@docusaurus/core" "2.0.0-beta.20" + "@docusaurus/mdx-loader" "2.0.0-beta.20" + "@docusaurus/utils" "2.0.0-beta.20" + "@docusaurus/utils-validation" "2.0.0-beta.20" + fs-extra "^10.1.0" remark-admonitions "^1.2.1" - tslib "^2.3.1" - webpack "^5.69.1" + tslib "^2.4.0" + webpack "^5.72.0" -"@docusaurus/plugin-debug@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.0.0-beta.17.tgz#0185dfd5575aa940443d2cb9fab4bed3308ed3a1" - integrity sha512-p26fjYFRSC0esEmKo/kRrLVwXoFnzPCFDumwrImhPyqfVxbj+IKFaiXkayb2qHnyEGE/1KSDIgRF4CHt/pyhiw== +"@docusaurus/plugin-debug@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.0.0-beta.20.tgz#7c026e81c45fd4f00801a785c928b9e8727a99de" + integrity sha512-acGZmpncPA1XDczpV1ji1ajBCRBY/H2lXN8alSjOB1vh0c/2Qz+KKD05p17lsUbhIyvsnZBa/BaOwtek91Lu7Q== dependencies: - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/utils" "2.0.0-beta.17" - fs-extra "^10.0.1" + "@docusaurus/core" "2.0.0-beta.20" + "@docusaurus/utils" "2.0.0-beta.20" + fs-extra "^10.1.0" react-json-view "^1.21.3" - tslib "^2.3.1" - -"@docusaurus/plugin-google-analytics@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.0-beta.17.tgz#31ca1ef88f0f7874c6e12c642d64abe694494720" - integrity sha512-jvgYIhggYD1W2jymqQVAAyjPJUV1xMCn70bAzaCMxriureMWzhQ/kQMVQpop0ijTMvifOxaV9yTcL1VRXev++A== - dependencies: - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/utils-validation" "2.0.0-beta.17" - tslib "^2.3.1" - -"@docusaurus/plugin-google-gtag@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.0-beta.17.tgz#e6baf8f03cea756ed2259a5356fa689388bc303d" - integrity sha512-1pnWHtIk1Jfeqwvr8PlcPE5SODWT1gW4TI+ptmJbJ296FjjyvL/pG0AcGEJmYLY/OQc3oz0VQ0W2ognw9jmFIw== - dependencies: - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/utils-validation" "2.0.0-beta.17" - tslib "^2.3.1" - -"@docusaurus/plugin-sitemap@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-beta.17.tgz#e1aa67ff09d9145e8e5522c4541bbcdd6365560c" - integrity sha512-19/PaGCsap6cjUPZPGs87yV9e1hAIyd0CTSeVV6Caega8nmOKk20FTrQGFJjZPeX8jvD9QIXcdg6BJnPxcKkaQ== - dependencies: - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/utils" "2.0.0-beta.17" - "@docusaurus/utils-common" "2.0.0-beta.17" - "@docusaurus/utils-validation" "2.0.0-beta.17" - fs-extra "^10.0.1" + tslib "^2.4.0" + +"@docusaurus/plugin-google-analytics@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.0-beta.20.tgz#c1bdbc1239f987f9716fa30c2fd86962c190a765" + integrity sha512-4C5nY25j0R1lntFmpSEalhL7jYA7tWvk0VZObiIxGilLagT/f9gWPQtIjNBe4yzdQvkhiaXpa8xcMcJUAKRJyw== + dependencies: + "@docusaurus/core" "2.0.0-beta.20" + "@docusaurus/utils-validation" "2.0.0-beta.20" + tslib "^2.4.0" + +"@docusaurus/plugin-google-gtag@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.0-beta.20.tgz#7284bcfad9cb4e5d63605e95f6da73ca8ac8f053" + integrity sha512-EMZdiMTNg4NwE60xwjbetcqMDqAOazMTwQAQ4OuNAclv7oh8+VPCvqRF8s8AxCoI2Uqc7vh8yzNUuM307Ne9JA== + dependencies: + "@docusaurus/core" "2.0.0-beta.20" + "@docusaurus/utils-validation" "2.0.0-beta.20" + tslib "^2.4.0" + +"@docusaurus/plugin-sitemap@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-beta.20.tgz#08eada1260cafb273abea33c9c890ab667c7cbd3" + integrity sha512-Rf5a2vOBWjbe7PJJEBDeLZzDA7lsDi+16bqzKN8OKSXlcZLhxjmIpL5NrjANNbpGpL5vbl9z+iqvjbQmZ3QSmA== + dependencies: + "@docusaurus/core" "2.0.0-beta.20" + "@docusaurus/utils" "2.0.0-beta.20" + "@docusaurus/utils-common" "2.0.0-beta.20" + "@docusaurus/utils-validation" "2.0.0-beta.20" + fs-extra "^10.1.0" sitemap "^7.1.1" - tslib "^2.3.1" - -"@docusaurus/preset-classic@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-2.0.0-beta.17.tgz#a8fc3447aa6fe0e5f259d894cc8dd64c049c7605" - integrity sha512-7YUxPEgM09aZWr25/hpDEp1gPl+1KsCPV1ZTRW43sbQ9TinPm+9AKR3rHVDa8ea8MdiS7BpqCVyK+H/eiyQrUw== - dependencies: - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/plugin-content-blog" "2.0.0-beta.17" - "@docusaurus/plugin-content-docs" "2.0.0-beta.17" - "@docusaurus/plugin-content-pages" "2.0.0-beta.17" - "@docusaurus/plugin-debug" "2.0.0-beta.17" - "@docusaurus/plugin-google-analytics" "2.0.0-beta.17" - "@docusaurus/plugin-google-gtag" "2.0.0-beta.17" - "@docusaurus/plugin-sitemap" "2.0.0-beta.17" - "@docusaurus/theme-classic" "2.0.0-beta.17" - "@docusaurus/theme-common" "2.0.0-beta.17" - "@docusaurus/theme-search-algolia" "2.0.0-beta.17" + tslib "^2.4.0" + +"@docusaurus/preset-classic@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-2.0.0-beta.20.tgz#19566be713ce0297834cd999392ea3605bc6f574" + integrity sha512-artUDjiYFIlGd2fxk0iqqcJ5xSCrgormOAoind1c0pn8TRXY1WSCQWYI6p4X24jjhSCzLv0s6Z9PMDyxZdivhg== + dependencies: + "@docusaurus/core" "2.0.0-beta.20" + "@docusaurus/plugin-content-blog" "2.0.0-beta.20" + "@docusaurus/plugin-content-docs" "2.0.0-beta.20" + "@docusaurus/plugin-content-pages" "2.0.0-beta.20" + "@docusaurus/plugin-debug" "2.0.0-beta.20" + "@docusaurus/plugin-google-analytics" "2.0.0-beta.20" + "@docusaurus/plugin-google-gtag" "2.0.0-beta.20" + "@docusaurus/plugin-sitemap" "2.0.0-beta.20" + "@docusaurus/theme-classic" "2.0.0-beta.20" + "@docusaurus/theme-common" "2.0.0-beta.20" + "@docusaurus/theme-search-algolia" "2.0.0-beta.20" "@docusaurus/react-loadable@5.5.2", "react-loadable@npm:@docusaurus/react-loadable@5.5.2": version "5.5.2" @@ -1436,129 +1433,133 @@ "@types/react" "*" prop-types "^15.6.2" -"@docusaurus/theme-classic@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.0.0-beta.17.tgz#1f7a1dd714993819f266ce422d06dd4533d4ab3a" - integrity sha512-xfZ9kpgqo0lP9YO4rJj79wtiQJXU6ARo5wYy10IIwiWN+lg00scJHhkmNV431b05xIUjUr0cKeH9nqZmEsQRKg== - dependencies: - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/plugin-content-blog" "2.0.0-beta.17" - "@docusaurus/plugin-content-docs" "2.0.0-beta.17" - "@docusaurus/plugin-content-pages" "2.0.0-beta.17" - "@docusaurus/theme-common" "2.0.0-beta.17" - "@docusaurus/theme-translations" "2.0.0-beta.17" - "@docusaurus/utils" "2.0.0-beta.17" - "@docusaurus/utils-common" "2.0.0-beta.17" - "@docusaurus/utils-validation" "2.0.0-beta.17" +"@docusaurus/theme-classic@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.0.0-beta.20.tgz#c4c7712c2b35c5654433228729f92ec73e6c598e" + integrity sha512-rs4U68x8Xk6rPsZC/7eaPxCKqzXX1S45FICKmq/IZuaDaQyQIijCvv2ssxYnUyVZUNayZfJK7ZtNu+A0kzYgSQ== + dependencies: + "@docusaurus/core" "2.0.0-beta.20" + "@docusaurus/plugin-content-blog" "2.0.0-beta.20" + "@docusaurus/plugin-content-docs" "2.0.0-beta.20" + "@docusaurus/plugin-content-pages" "2.0.0-beta.20" + "@docusaurus/theme-common" "2.0.0-beta.20" + "@docusaurus/theme-translations" "2.0.0-beta.20" + "@docusaurus/utils" "2.0.0-beta.20" + "@docusaurus/utils-common" "2.0.0-beta.20" + "@docusaurus/utils-validation" "2.0.0-beta.20" "@mdx-js/react" "^1.6.22" clsx "^1.1.1" copy-text-to-clipboard "^3.0.1" - infima "0.2.0-alpha.37" + infima "0.2.0-alpha.39" lodash "^4.17.21" - postcss "^8.4.7" - prism-react-renderer "^1.2.1" - prismjs "^1.27.0" + nprogress "^0.2.0" + postcss "^8.4.13" + prism-react-renderer "^1.3.1" + prismjs "^1.28.0" react-router-dom "^5.2.0" - rtlcss "^3.3.0" + rtlcss "^3.5.0" -"@docusaurus/theme-common@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.0.0-beta.17.tgz#3b71bb8b0973a0cee969a1bb76794c81d597f290" - integrity sha512-LJBDhx+Qexn1JHBqZbE4k+7lBaV1LgpE33enXf43ShB7ebhC91d5HLHhBwgt0pih4+elZU4rG+BG/roAmsNM0g== +"@docusaurus/theme-common@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.0.0-beta.20.tgz#4ec7d77ecd2ade9dad33b8689e3cd51b07e594b0" + integrity sha512-lmdGB3/GQM5z0GH0iHGRXUco4Wfqc6sR5eRKuW4j0sx3+UFVvtbVTTIGt0Cie4Dh6omnFxjPbNDlPDgWr/agVQ== dependencies: - "@docusaurus/module-type-aliases" "2.0.0-beta.17" - "@docusaurus/plugin-content-blog" "2.0.0-beta.17" - "@docusaurus/plugin-content-docs" "2.0.0-beta.17" - "@docusaurus/plugin-content-pages" "2.0.0-beta.17" + "@docusaurus/module-type-aliases" "2.0.0-beta.20" + "@docusaurus/plugin-content-blog" "2.0.0-beta.20" + "@docusaurus/plugin-content-docs" "2.0.0-beta.20" + "@docusaurus/plugin-content-pages" "2.0.0-beta.20" clsx "^1.1.1" parse-numeric-range "^1.3.0" prism-react-renderer "^1.3.1" - tslib "^2.3.1" + tslib "^2.4.0" utility-types "^3.10.0" -"@docusaurus/theme-search-algolia@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-beta.17.tgz#880fb965b71e5aa7f01d456a1a2aa8eb6c244082" - integrity sha512-W12XKM7QC5Jmrec359bJ7aDp5U8DNkCxjVKsMNIs8rDunBoI/N+R35ERJ0N7Bg9ONAWO6o7VkUERQsfGqdvr9w== +"@docusaurus/theme-search-algolia@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-beta.20.tgz#14f2ea376a87d7cfa4840d8c917d1ec62d3a07f7" + integrity sha512-9XAyiXXHgyhDmKXg9RUtnC4WBkYAZUqKT9Ntuk0OaOb4mBwiYUGL74tyP0LLL6T+oa9uEdXiUMlIL1onU8xhvA== dependencies: "@docsearch/react" "^3.0.0" - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/logger" "2.0.0-beta.17" - "@docusaurus/theme-common" "2.0.0-beta.17" - "@docusaurus/theme-translations" "2.0.0-beta.17" - "@docusaurus/utils" "2.0.0-beta.17" - "@docusaurus/utils-validation" "2.0.0-beta.17" - algoliasearch "^4.12.1" - algoliasearch-helper "^3.7.0" + "@docusaurus/core" "2.0.0-beta.20" + "@docusaurus/logger" "2.0.0-beta.20" + "@docusaurus/plugin-content-docs" "2.0.0-beta.20" + "@docusaurus/theme-common" "2.0.0-beta.20" + "@docusaurus/theme-translations" "2.0.0-beta.20" + "@docusaurus/utils" "2.0.0-beta.20" + "@docusaurus/utils-validation" "2.0.0-beta.20" + algoliasearch "^4.13.0" + algoliasearch-helper "^3.8.2" clsx "^1.1.1" eta "^1.12.3" - fs-extra "^10.0.1" + fs-extra "^10.1.0" lodash "^4.17.21" - tslib "^2.3.1" + tslib "^2.4.0" utility-types "^3.10.0" -"@docusaurus/theme-translations@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-2.0.0-beta.17.tgz#a4b84fa63befc11847da471922387aa3eb4e5626" - integrity sha512-oxCX6khjZH3lgdRCL0DH06KkUM/kDr9+lzB35+vY8rpFeQruVgRdi8ekPqG3+Wr0U/N+LMhcYE5BmCb6D0Fv2A== +"@docusaurus/theme-translations@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-2.0.0-beta.20.tgz#dcc7efb43ff110c19736764c287f6c5128a5dbba" + integrity sha512-O7J/4dHcg7Yr+r3ylgtqmtMEz6d5ScpUxBg8nsNTWOCRoGEXNZVmXSd5l6v72KCyxPZpllPrgjmqkL+I19qWiw== dependencies: - fs-extra "^10.0.1" - tslib "^2.3.1" + fs-extra "^10.1.0" + tslib "^2.4.0" -"@docusaurus/types@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.0.0-beta.17.tgz#582e3d961ce4409ed17454669b3f6a7a9f696cdd" - integrity sha512-4o7TXu5sKlQpybfFFtsGUElBXwSpiXKsQyyWaRKj7DRBkvMtkDX6ITZNnZO9+EHfLbP/cfrokB8C/oO7mCQ5BQ== +"@docusaurus/types@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.0.0-beta.20.tgz#069d40cc225141d5c9a85605a1c61a460814bf5d" + integrity sha512-d4ZIpcrzGsUUcZJL3iz8/iSaewobPPiYfn2Lmmv7GTT5ZPtPkOAtR5mE6+LAf/KpjjgqrC7mpwDKADnOL/ic4Q== dependencies: commander "^5.1.0" + history "^4.9.0" joi "^17.6.0" - querystring "0.2.1" + react-helmet-async "^1.3.0" utility-types "^3.10.0" - webpack "^5.69.1" + webpack "^5.72.0" webpack-merge "^5.8.0" -"@docusaurus/utils-common@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.0.0-beta.17.tgz#cefd950a7722f5f702690b4de27ea19fd65f3364" - integrity sha512-90WCVdj6zYzs7neEIS594qfLO78cUL6EVK1CsRHJgVkkGjcYlCQ1NwkyO7bOb+nIAwdJrPJRc2FBSpuEGxPD3w== +"@docusaurus/utils-common@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.0.0-beta.20.tgz#adb914c331d711a3c0ef2ba3f64139acdf4cd781" + integrity sha512-HabHh23vOQn6ygs0PjuCSF/oZaNsYTFsxB2R6EwHNyw01nWgBC3QAcGVmyIWQhlb9p8V3byKgbzVS68hZX5t9A== dependencies: - tslib "^2.3.1" + tslib "^2.4.0" -"@docusaurus/utils-validation@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.0.0-beta.17.tgz#d7dbfc1a29768c37c0d8a6af85eb1bdfef7656df" - integrity sha512-5UjayUP16fDjgd52eSEhL7SlN9x60pIhyS+K7kt7RmpSLy42+4/bSr2pns2VlATmuaoNOO6iIFdB2jgSYJ6SGA== +"@docusaurus/utils-validation@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.0.0-beta.20.tgz#ebf475a4388066bd450877fe920f405c53ff5ad2" + integrity sha512-7MxMoaF4VNAt5vUwvITa6nbkw1tb4WE6hp1VlfIoLCY4D7Wk5cMf1ZFhppCP1UzmPwvFb9zw8fPuvDfB3Tb5nQ== dependencies: - "@docusaurus/logger" "2.0.0-beta.17" - "@docusaurus/utils" "2.0.0-beta.17" + "@docusaurus/logger" "2.0.0-beta.20" + "@docusaurus/utils" "2.0.0-beta.20" joi "^17.6.0" - tslib "^2.3.1" + js-yaml "^4.1.0" + tslib "^2.4.0" -"@docusaurus/utils@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.0.0-beta.17.tgz#6a696e2ec5e50b2271f2d26d31562e9f3e2bc559" - integrity sha512-yRKGdzSc5v6M/6GyQ4omkrAHCleevwKYiIrufCJgRbOtkhYE574d8mIjjirOuA/emcyLxjh+TLtqAA5TwhIryA== +"@docusaurus/utils@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.0.0-beta.20.tgz#d5a9816a328b2ca5e4e1a3fbf267e3674abacd48" + integrity sha512-eUQquakhrbnvhsmx8jRPLgoyjyzMuOhmQC99m7rotar7XOzROpgEpm7+xVaquG5Ha47WkybE3djHJhKNih7GZQ== dependencies: - "@docusaurus/logger" "2.0.0-beta.17" - "@svgr/webpack" "^6.0.0" + "@docusaurus/logger" "2.0.0-beta.20" + "@svgr/webpack" "^6.2.1" file-loader "^6.2.0" - fs-extra "^10.0.1" + fs-extra "^10.1.0" github-slugger "^1.4.0" - globby "^11.0.4" + globby "^11.1.0" gray-matter "^4.0.3" js-yaml "^4.1.0" lodash "^4.17.21" - micromatch "^4.0.4" + micromatch "^4.0.5" resolve-pathname "^3.0.0" shelljs "^0.8.5" - tslib "^2.3.1" + tslib "^2.4.0" url-loader "^4.1.1" - webpack "^5.69.1" + webpack "^5.72.0" "@hapi/hoek@^9.0.0": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.2.1.tgz#9551142a1980503752536b5050fd99f4a7f13b17" - integrity sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw== + version "9.3.0" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" + integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== "@hapi/topo@^5.0.0": version "5.1.0" @@ -1567,24 +1568,42 @@ dependencies: "@hapi/hoek" "^9.0.0" +"@jridgewell/gen-mapping@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" + integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/resolve-uri@^3.0.3": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c" - integrity sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew== + version "3.0.6" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.6.tgz#4ac237f4dabc8dd93330386907b97591801f7352" + integrity sha512-R7xHtBSNm+9SyvpJkdQl+qrM3Hm2fea3Ef197M3mUug+v+yR+Rhfbs7PBtcBUVnIWJ4JcAdjvij+c8hXS9p5aw== + +"@jridgewell/set-array@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.0.tgz#1179863356ac8fbea64a5a4bcde93a4871012c01" + integrity sha512-SfJxIxNVYLTsKwzB3MoOQ1yxf4w/E6MdkvTgrgAt1bfxjSrLUoHMKrDOykwN14q65waezZIdqDneUIPh4/sKxg== "@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.11" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec" - integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg== + version "1.4.12" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.12.tgz#7ed98f6fa525ffb7c56a2cbecb5f7bb91abd2baf" + integrity sha512-az/NhpIwP3K33ILr0T2bso+k2E/SLf8Yidd8mHl0n6sCQ4YdyC8qDhZA6kOPDNDBA56ZnIjngVl0U3jREA0BUA== -"@jridgewell/trace-mapping@^0.3.0": - version "0.3.4" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3" - integrity sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ== +"@jridgewell/trace-mapping@^0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== dependencies: "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" +"@leichtgewicht/ip-codec@^2.0.1": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.3.tgz#0300943770e04231041a51bd39f0439b5c7ab4f0" + integrity sha512-nkalE/f1RvRGChwBnEIoBfSEYOXnCRdleKuv6+lePbMDrMZXeDQnqak5XDOeBgrPPyPfAdcCu/B5z+v3VhplGg== + "@mdx-js/mdx@^1.6.22": version "1.6.22" resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-1.6.22.tgz#8a723157bf90e78f17dc0f27995398e6c731f1ba" @@ -1647,9 +1666,9 @@ integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g== "@sideway/address@^4.1.3": - version "4.1.3" - resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.3.tgz#d93cce5d45c5daec92ad76db492cc2ee3c64ab27" - integrity sha512-8ncEUtmnTsMmL7z1YPB47kPUq7LpKWJNFPsRzHiIajGC5uXlWGn+AmkYPcHNl8S4tcEGx+cnORnNYaw2wvL+LQ== + version "4.1.4" + resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" + integrity sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw== dependencies: "@hapi/hoek" "^9.0.0" @@ -1668,15 +1687,14 @@ resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== -"@slorber/static-site-generator-webpack-plugin@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@slorber/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.1.tgz#0c8852146441aaa683693deaa5aee2f991d94841" - integrity sha512-PSv4RIVO1Y3kvHxjvqeVisk3E9XFoO04uwYBDWe217MFqKspplYswTuKLiJu0aLORQWzuQjfVsSlLPojwfYsLw== +"@slorber/static-site-generator-webpack-plugin@^4.0.4": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@slorber/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.4.tgz#2bf4a2545e027830d2aa5eb950437c26a289b0f1" + integrity sha512-FvMavoWEIePps6/JwGCOLYKCRhuwIHhMtmbKpBFgzNkxwpa/569LfTkrbRk1m1I3n+ezJK4on9E1A6cjuZmD9g== dependencies: bluebird "^3.7.1" cheerio "^0.22.0" - eval "^0.1.4" - url "^0.11.0" + eval "^0.1.8" webpack-sources "^1.4.3" "@svgr/babel-plugin-add-jsx-attribute@^6.0.0": @@ -1769,7 +1787,7 @@ deepmerge "^4.2.2" svgo "^2.5.0" -"@svgr/webpack@^6.0.0", "@svgr/webpack@^6.2.1": +"@svgr/webpack@^6.2.1": version "6.2.1" resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-6.2.1.tgz#ef5d51c1b6be4e7537fb9f76b3f2b2e22b63c58d" integrity sha512-h09ngMNd13hnePwgXa+Y5CgOjzlCvfWLHg+MBnydEedAnuLRzUHUJmGS3o2OsrhxTOOqEsPOFt5v/f6C5Qulcw== @@ -1795,10 +1813,10 @@ resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== -"@tsconfig/docusaurus@^1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@tsconfig/docusaurus/-/docusaurus-1.0.4.tgz#fc40f87a672568678d83533dd4031a09d75877ca" - integrity sha512-I6sziQAzLrrqj9r6S26c7aOAjfGVXIE7gWdNONPwnpDcHiMRMQut1s1YCi/APem3dOy23tAb2rvHfNtGCaWuUQ== +"@tsconfig/docusaurus@^1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@tsconfig/docusaurus/-/docusaurus-1.0.5.tgz#5298c5b0333c6263f06c3149b38ebccc9f169a4e" + integrity sha512-KM/TuJa9fugo67dTGx+ktIqf3fVc077J6jwHu845Hex4EQf7LABlNonP/mohDKT0cmncdtlYVHHF74xR/YpThg== "@types/body-parser@*": version "1.19.2" @@ -1839,9 +1857,9 @@ "@types/estree" "*" "@types/eslint@*": - version "8.4.1" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.1.tgz#c48251553e8759db9e656de3efc846954ac32304" - integrity sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA== + version "8.4.2" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.2.tgz#48f2ac58ab9c631cb68845c3d956b28f79fad575" + integrity sha512-Z1nseZON+GEnFjJc04sv4NSALGjhFwy6K0HXt7qsn5ArfAKtb63dXNJHf+1YW6IpOIYRBGUbu3GwJdj8DGnCjA== dependencies: "@types/estree" "*" "@types/json-schema" "*" @@ -1888,16 +1906,16 @@ integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== "@types/http-proxy@^1.17.8": - version "1.17.8" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.8.tgz#968c66903e7e42b483608030ee85800f22d03f55" - integrity sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA== + version "1.17.9" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.9.tgz#7f0e7931343761efde1e2bf48c40f02f3f75705a" + integrity sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw== dependencies: "@types/node" "*" "@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" - integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== "@types/mdast@^3.0.0": version "3.0.10" @@ -1912,9 +1930,9 @@ integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== "@types/node@*", "@types/node@^17.0.5": - version "17.0.21" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.21.tgz#864b987c0c68d07b4345845c3e63b75edd143644" - integrity sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ== + version "17.0.31" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.31.tgz#a5bb84ecfa27eec5e1c802c6bbf8139bdb163a5d" + integrity sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q== "@types/parse-json@^4.0.0": version "4.0.0" @@ -1927,9 +1945,9 @@ integrity sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw== "@types/prop-types@*": - version "15.7.4" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" - integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== + version "15.7.5" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" + integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== "@types/qs@*": version "6.9.7" @@ -1968,18 +1986,18 @@ "@types/react" "*" "@types/react@*": - version "17.0.39" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.39.tgz#d0f4cde092502a6db00a1cded6e6bf2abb7633ce" - integrity sha512-UVavlfAxDd/AgAacMa60Azl7ygyQNRwC/DsHZmKgNvPmRR5p70AJ5Q9EAmL2NWOJmeV+vVUI4IAP7GZrN8h8Ug== + version "18.0.8" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.8.tgz#a051eb380a9fbcaa404550543c58e1cf5ce4ab87" + integrity sha512-+j2hk9BzCOrrOSJASi5XiOyBbERk9jG5O73Ya4M0env5Ixi6vUNli4qy994AINcEF+1IEHISYFfIT4zwr++LKw== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" csstype "^3.0.2" -"@types/retry@^0.12.0": - version "0.12.1" - resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.1.tgz#d8f1c0d0dc23afad6dc16a9e993a0865774b4065" - integrity sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g== +"@types/retry@0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" + integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== "@types/sax@^1.2.1": version "1.2.4" @@ -2020,10 +2038,10 @@ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== -"@types/ws@^8.2.2": - version "8.5.2" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.2.tgz#77e0c2e360e9579da930ffcfa53c5975ea3bdd26" - integrity sha512-VXI82ykONr5tacHEojnErTQk+KQSoYbW1NB6iz6wUwrNd+BqfkfggQNoNdCqhJSzbNumShPERbM+Pc5zpfhlbw== +"@types/ws@^8.5.1": + version "8.5.3" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.3.tgz#7d25a1ffbecd3c4f2d35068d0b283c037003274d" + integrity sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w== dependencies: "@types/node" "*" @@ -2177,14 +2195,14 @@ acorn-walk@^8.0.0: integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== acorn@^8.0.4, acorn@^8.4.1, acorn@^8.5.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" - integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== + version "8.7.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" + integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== address@^1.0.1, address@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" - integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== + version "1.2.0" + resolved "https://registry.yarnpkg.com/address/-/address-1.2.0.tgz#d352a62c92fee90f89a693eccd2a8b2139ab02d9" + integrity sha512-tNEZYz5G/zYunxFm7sfhAxkXEuLj3K6BKwv6ZURlsF6yiUQ65z0Q2wZW9L5cPUl9ocofGvXOdFYbFHp0+6MOig== aggregate-error@^3.0.0: version "3.1.0" @@ -2224,41 +2242,41 @@ ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: uri-js "^4.2.2" ajv@^8.0.0, ajv@^8.8.0: - version "8.10.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.10.0.tgz#e573f719bd3af069017e3b66538ab968d040e54d" - integrity sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw== + version "8.11.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" + integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" require-from-string "^2.0.2" uri-js "^4.2.2" -algoliasearch-helper@^3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.7.0.tgz#c0a0493df84d850360f664ad7a9d4fc78a94fd78" - integrity sha512-XJ3QfERBLfeVCyTVx80gon7r3/rgm/CE8Ha1H7cbablRe/X7SfYQ14g/eO+MhjVKIQp+gy9oC6G5ilmLwS1k6w== +algoliasearch-helper@^3.8.2: + version "3.8.2" + resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.8.2.tgz#35726dc6d211f49dbab0bf6d37b4658165539523" + integrity sha512-AXxiF0zT9oYwl8ZBgU/eRXvfYhz7cBA5YrLPlw9inZHdaYF0QEya/f1Zp1mPYMXc1v6VkHwBq4pk6/vayBLICg== dependencies: "@algolia/events" "^4.0.1" -algoliasearch@^4.0.0, algoliasearch@^4.12.1: - version "4.12.2" - resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.12.2.tgz#d7672a15b8fd1b261d9ae193535b68bcb189cfd2" - integrity sha512-bn1P9+V415zeDQJtXn+1SwuwedEAv9/LJAxt8XwR6ygH/sMwaHSm2hpkz8wIbCBt/tKQ43TL672Kyxzv5PwGgQ== - dependencies: - "@algolia/cache-browser-local-storage" "4.12.2" - "@algolia/cache-common" "4.12.2" - "@algolia/cache-in-memory" "4.12.2" - "@algolia/client-account" "4.12.2" - "@algolia/client-analytics" "4.12.2" - "@algolia/client-common" "4.12.2" - "@algolia/client-personalization" "4.12.2" - "@algolia/client-search" "4.12.2" - "@algolia/logger-common" "4.12.2" - "@algolia/logger-console" "4.12.2" - "@algolia/requester-browser-xhr" "4.12.2" - "@algolia/requester-common" "4.12.2" - "@algolia/requester-node-http" "4.12.2" - "@algolia/transporter" "4.12.2" +algoliasearch@^4.0.0, algoliasearch@^4.13.0: + version "4.13.0" + resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.13.0.tgz#e36611fda82b1fc548c156ae7929a7f486e4b663" + integrity sha512-oHv4faI1Vl2s+YC0YquwkK/TsaJs79g2JFg5FDm2rKN12VItPTAeQ7hyJMHarOPPYuCnNC5kixbtcqvb21wchw== + dependencies: + "@algolia/cache-browser-local-storage" "4.13.0" + "@algolia/cache-common" "4.13.0" + "@algolia/cache-in-memory" "4.13.0" + "@algolia/client-account" "4.13.0" + "@algolia/client-analytics" "4.13.0" + "@algolia/client-common" "4.13.0" + "@algolia/client-personalization" "4.13.0" + "@algolia/client-search" "4.13.0" + "@algolia/logger-common" "4.13.0" + "@algolia/logger-console" "4.13.0" + "@algolia/requester-browser-xhr" "4.13.0" + "@algolia/requester-common" "4.13.0" + "@algolia/requester-node-http" "4.13.0" + "@algolia/transporter" "4.13.0" ansi-align@^3.0.0, ansi-align@^3.0.1: version "3.0.1" @@ -2331,7 +2349,7 @@ array-flatten@1.1.1: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= -array-flatten@^2.1.0: +array-flatten@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== @@ -2351,26 +2369,19 @@ asap@~2.0.3: resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= -async@^2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== - dependencies: - lodash "^4.17.14" - at-least-node@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== -autoprefixer@^10.3.7, autoprefixer@^10.4.2: - version "10.4.2" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.2.tgz#25e1df09a31a9fba5c40b578936b90d35c9d4d3b" - integrity sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ== +autoprefixer@^10.3.7, autoprefixer@^10.4.5: + version "10.4.7" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.7.tgz#1db8d195f41a52ca5069b7593be167618edbbedf" + integrity sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA== dependencies: - browserslist "^4.19.1" - caniuse-lite "^1.0.30001297" - fraction.js "^4.1.2" + browserslist "^4.20.3" + caniuse-lite "^1.0.30001335" + fraction.js "^4.2.0" normalize-range "^0.1.2" picocolors "^1.0.0" postcss-value-parser "^4.2.0" @@ -2382,13 +2393,13 @@ axios@^0.25.0: dependencies: follow-redirects "^1.14.7" -babel-loader@^8.2.3: - version "8.2.3" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.3.tgz#8986b40f1a64cacfcb4b8429320085ef68b1342d" - integrity sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw== +babel-loader@^8.2.5: + version "8.2.5" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.5.tgz#d45f585e654d5a5d90f5350a779d7647c5ed512e" + integrity sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ== dependencies: find-cache-dir "^3.3.1" - loader-utils "^1.4.0" + loader-utils "^2.0.0" make-dir "^3.1.0" schema-utils "^2.6.5" @@ -2480,33 +2491,33 @@ bluebird@^3.7.1: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -body-parser@1.19.2: - version "1.19.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.2.tgz#4714ccd9c157d44797b8b5607d72c0b89952f26e" - integrity sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw== +body-parser@1.20.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5" + integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg== dependencies: bytes "3.1.2" content-type "~1.0.4" debug "2.6.9" - depd "~1.1.2" - http-errors "1.8.1" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.9.7" - raw-body "2.4.3" + on-finished "2.4.1" + qs "6.10.3" + raw-body "2.5.1" type-is "~1.6.18" + unpipe "1.0.0" -bonjour@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" - integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= +bonjour-service@^1.0.11: + version "1.0.12" + resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.0.12.tgz#28fbd4683f5f2e36feedb833e24ba661cac960c3" + integrity sha512-pMmguXYCu63Ug37DluMKEHdxc+aaIf/ay4YbF8Gxtba+9d3u+rmEWy61VK3Z3hp8Rskok3BunHYnG0dUHAsblw== dependencies: - array-flatten "^2.1.0" - deep-equal "^1.0.1" + array-flatten "^2.1.2" dns-equal "^1.0.0" - dns-txt "^2.0.2" - multicast-dns "^6.0.1" - multicast-dns-service-types "^1.1.0" + fast-deep-equal "^3.1.3" + multicast-dns "^7.2.4" boolbase@^1.0.0, boolbase@~1.0.0: version "1.0.0" @@ -2549,22 +2560,22 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^3.0.1, braces@~3.0.2: +braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" -browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.17.5, browserslist@^4.18.1, browserslist@^4.19.1: - version "4.19.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.3.tgz#29b7caad327ecf2859485f696f9604214bedd383" - integrity sha512-XK3X4xtKJ+Txj8G5c30B4gsm71s69lqXlkYui4s6EkKxuv49qjYlY6oVd+IFJ73d4YymtM3+djvvt/R/iJwwDg== +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.18.1, browserslist@^4.20.2, browserslist@^4.20.3: + version "4.20.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.3.tgz#eb7572f49ec430e054f56d52ff0ebe9be915f8bf" + integrity sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg== dependencies: - caniuse-lite "^1.0.30001312" - electron-to-chromium "^1.4.71" + caniuse-lite "^1.0.30001332" + electron-to-chromium "^1.4.118" escalade "^3.1.1" - node-releases "^2.0.2" + node-releases "^2.0.3" picocolors "^1.0.0" buffer-from@^1.0.0: @@ -2572,11 +2583,6 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -buffer-indexof@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" - integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== - bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -2600,7 +2606,7 @@ cacheable-request@^6.0.0: normalize-url "^4.1.0" responselike "^1.0.2" -call-bind@^1.0.0, call-bind@^1.0.2: +call-bind@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== @@ -2641,10 +2647,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001297, caniuse-lite@^1.0.30001312: - version "1.0.30001312" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz#e11eba4b87e24d22697dae05455d5aea28550d5f" - integrity sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001332, caniuse-lite@^1.0.30001335: + version "1.0.30001336" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001336.tgz#a9eb13edd2613f418ebc632c8d6c9ab9fde7ccc4" + integrity sha512-/YxSlBmL7iKXTbIJ48IQTnAOBk7XmWsxhBF1PZLOko5Dt9qc4Pl+84lfqG3Tc4EuavurRn1QLoVJGxY2iSycfw== ccount@^1.0.0, ccount@^1.0.3: version "1.1.0" @@ -2684,15 +2690,15 @@ character-reference-invalid@^1.0.0: integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== cheerio-select@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-1.5.0.tgz#faf3daeb31b17c5e1a9dabcee288aaf8aafa5823" - integrity sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg== + version "1.6.0" + resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-1.6.0.tgz#489f36604112c722afa147dedd0d4609c09e1696" + integrity sha512-eq0GdBvxVFbqWgmCm7M3XGs1I8oLy/nExUnh6oLqmBditPO9AqQJrkslDpMun/hZ0yyTs8L0m85OHp4ho6Qm9g== dependencies: - css-select "^4.1.3" - css-what "^5.0.1" + css-select "^4.3.0" + css-what "^6.0.1" domelementtype "^2.2.0" - domhandler "^4.2.0" - domutils "^2.7.0" + domhandler "^4.3.1" + domutils "^2.8.0" cheerio@^0.22.0: version "0.22.0" @@ -2754,10 +2760,10 @@ ci-info@^2.0.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== -clean-css@^5.2.2, clean-css@^5.2.4: - version "5.2.4" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.2.4.tgz#982b058f8581adb2ae062520808fb2429bd487a4" - integrity sha512-nKseG8wCzEuji/4yrgM/5cthL9oTDc5UOQyFMvW/Q53oP6gLH690o1NbuTh6Y18nujr7BxlsFuS7gXLnLzKJGg== +clean-css@^5.2.2, clean-css@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.0.tgz#ad3d8238d5f3549e83d5f87205189494bc7cbb59" + integrity sha512-YYuuxv4H/iNb1Z/5IbMRoxgrzjWGhOEFfd+groZ5dMCVkpENiMZmwspdrzBo9286JjM1gZJPAyL7ZIdzuvu2AQ== dependencies: source-map "~0.6.0" @@ -2776,14 +2782,14 @@ cli-boxes@^3.0.0: resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-3.0.0.tgz#71a10c716feeba005e4504f36329ef0b17cf3145" integrity sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g== -cli-table3@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.1.tgz#36ce9b7af4847f288d3cdd081fbd09bf7bd237b8" - integrity sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA== +cli-table3@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.2.tgz#aaf5df9d8b5bf12634dc8b3040806a0c07120d2a" + integrity sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw== dependencies: string-width "^4.2.0" optionalDependencies: - colors "1.4.0" + "@colors/colors" "1.5.0" clone-deep@^4.0.1: version "4.0.1" @@ -2845,11 +2851,6 @@ colorette@^2.0.10: resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== -colors@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" - integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== - combine-promises@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/combine-promises/-/combine-promises-1.1.0.tgz#72db90743c0ca7aab7d0d8d2052fd7b0f674de71" @@ -2961,10 +2962,10 @@ cookie-signature@1.0.6: resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= -cookie@0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" - integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== copy-text-to-clipboard@^3.0.1: version "3.0.1" @@ -2983,23 +2984,23 @@ copy-webpack-plugin@^10.2.4: schema-utils "^4.0.0" serialize-javascript "^6.0.0" -core-js-compat@^3.20.2, core-js-compat@^3.21.0: - version "3.21.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.21.1.tgz#cac369f67c8d134ff8f9bd1623e3bc2c42068c82" - integrity sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g== +core-js-compat@^3.21.0, core-js-compat@^3.22.1: + version "3.22.4" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.22.4.tgz#d700f451e50f1d7672dcad0ac85d910e6691e579" + integrity sha512-dIWcsszDezkFZrfm1cnB4f/J85gyhiCpxbgBdohWCDtSVuAaChTSpPV7ldOQf/Xds2U5xCIJZOK82G4ZPAIswA== dependencies: - browserslist "^4.19.1" + browserslist "^4.20.3" semver "7.0.0" core-js-pure@^3.20.2: - version "3.21.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.21.1.tgz#8c4d1e78839f5f46208de7230cebfb72bc3bdb51" - integrity sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ== + version "3.22.4" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.22.4.tgz#a992210f4cad8b32786b8654563776c56b0e0d0a" + integrity sha512-4iF+QZkpzIz0prAFuepmxwJ2h5t4agvE8WPYqs2mjLJMNNwJOnpch76w2Q7bUfCPEv/V7wpvOfog0w273M+ZSw== -core-js@^3.21.1: - version "3.21.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.21.1.tgz#f2e0ddc1fc43da6f904706e8e955bc19d06a0d94" - integrity sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig== +core-js@^3.22.3: + version "3.22.4" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.22.4.tgz#f4b3f108d45736935aa028444a69397e40d8c531" + integrity sha512-1uLykR+iOfYja+6Jn/57743gc9n73EWiOnSJJ4ba3B4fOEYDBv25MagmEZBxTp5cWq4b/KPx/l77zgsp28ju4w== core-util-is@~1.0.0: version "1.0.3" @@ -3049,20 +3050,18 @@ crypto-random-string@^2.0.0: resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== -css-declaration-sorter@^6.0.3: - version "6.1.4" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.1.4.tgz#b9bfb4ed9a41f8dcca9bf7184d849ea94a8294b4" - integrity sha512-lpfkqS0fctcmZotJGhnxkIyJWvBXgpyi2wsFd4J8VB7wzyrT6Ch/3Q+FMNJpjK4gu1+GN5khOnpU2ZVKrLbhCw== - dependencies: - timsort "^0.3.0" +css-declaration-sorter@^6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.2.2.tgz#bfd2f6f50002d6a3ae779a87d3a0c5d5b10e0f02" + integrity sha512-Ufadglr88ZLsrvS11gjeu/40Lw74D9Am/Jpr3LlYm5Q4ZP5KdlUhG+6u2EjyXeZcxmZ2h1ebCKngDjolpeLHpg== -css-loader@^6.6.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.6.0.tgz#c792ad5510bd1712618b49381bd0310574fafbd3" - integrity sha512-FK7H2lisOixPT406s5gZM1S3l8GrfhEBT3ZiL2UX1Ng1XWs0y2GPllz/OTyvbaHe12VgQrIXIzuEGVlbUhodqg== +css-loader@^6.7.1: + version "6.7.1" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.7.1.tgz#e98106f154f6e1baf3fc3bc455cb9981c1d5fd2e" + integrity sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw== dependencies: icss-utils "^5.1.0" - postcss "^8.4.5" + postcss "^8.4.7" postcss-modules-extract-imports "^3.0.0" postcss-modules-local-by-default "^4.0.0" postcss-modules-scope "^3.0.0" @@ -3082,14 +3081,14 @@ css-minimizer-webpack-plugin@^3.4.1: serialize-javascript "^6.0.0" source-map "^0.6.1" -css-select@^4.1.3: - version "4.2.1" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.2.1.tgz#9e665d6ae4c7f9d65dbe69d0316e3221fb274cdd" - integrity sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ== +css-select@^4.1.3, css-select@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== dependencies: boolbase "^1.0.0" - css-what "^5.1.0" - domhandler "^4.3.0" + css-what "^6.0.1" + domhandler "^4.3.1" domutils "^2.8.0" nth-check "^2.0.1" @@ -3116,47 +3115,47 @@ css-what@2.1: resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== -css-what@^5.0.1, css-what@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" - integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw== +css-what@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssnano-preset-advanced@^5.1.12: - version "5.2.0" - resolved "https://registry.yarnpkg.com/cssnano-preset-advanced/-/cssnano-preset-advanced-5.2.0.tgz#fc87b7c7327b61306e3e707e2f0fda3fa468f713" - integrity sha512-E7jJoKc2GjZsRLm8wQd2wZa+1a6tslA1elimwpcJTnH6dBQBkjQ8tAwNWUeyT72owYcCNGWTnar60bTnrnEWzw== +cssnano-preset-advanced@^5.3.3: + version "5.3.3" + resolved "https://registry.yarnpkg.com/cssnano-preset-advanced/-/cssnano-preset-advanced-5.3.3.tgz#848422118d7a62b5b29a53edc160f58c7f7f7539" + integrity sha512-AB9SmTSC2Gd8T7PpKUsXFJ3eNsg7dc4CTZ0+XAJ29MNxyJsrCEk7N1lw31bpHrsQH2PVJr21bbWgGAfA9j0dIA== dependencies: autoprefixer "^10.3.7" - cssnano-preset-default "^5.2.0" + cssnano-preset-default "^5.2.7" postcss-discard-unused "^5.1.0" - postcss-merge-idents "^5.1.0" - postcss-reduce-idents "^5.1.0" + postcss-merge-idents "^5.1.1" + postcss-reduce-idents "^5.2.0" postcss-zindex "^5.1.0" -cssnano-preset-default@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.0.tgz#2579d38b9217746f2cf9f938954a91e00418ded6" - integrity sha512-3N5Vcptj2pqVKpHVqH6ezOJvqikR2PdLTbTrsrhF61FbLRQuujAqZ2sKN5rvcMsb7hFjrNnjZT8CGEkxoN/Pwg== +cssnano-preset-default@^5.2.7: + version "5.2.7" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.7.tgz#791e3603fb8f1b46717ac53b47e3c418e950f5f3" + integrity sha512-JiKP38ymZQK+zVKevphPzNSGHSlTI+AOwlasoSRtSVMUU285O7/6uZyd5NbW92ZHp41m0sSHe6JoZosakj63uA== dependencies: - css-declaration-sorter "^6.0.3" + css-declaration-sorter "^6.2.2" cssnano-utils "^3.1.0" postcss-calc "^8.2.3" postcss-colormin "^5.3.0" postcss-convert-values "^5.1.0" - postcss-discard-comments "^5.1.0" + postcss-discard-comments "^5.1.1" postcss-discard-duplicates "^5.1.0" - postcss-discard-empty "^5.1.0" + postcss-discard-empty "^5.1.1" postcss-discard-overridden "^5.1.0" - postcss-merge-longhand "^5.1.0" - postcss-merge-rules "^5.1.0" + postcss-merge-longhand "^5.1.4" + postcss-merge-rules "^5.1.1" postcss-minify-font-values "^5.1.0" - postcss-minify-gradients "^5.1.0" - postcss-minify-params "^5.1.0" + postcss-minify-gradients "^5.1.1" + postcss-minify-params "^5.1.2" postcss-minify-selectors "^5.2.0" postcss-normalize-charset "^5.1.0" postcss-normalize-display-values "^5.1.0" @@ -3166,24 +3165,24 @@ cssnano-preset-default@^5.2.0: postcss-normalize-timing-functions "^5.1.0" postcss-normalize-unicode "^5.1.0" postcss-normalize-url "^5.1.0" - postcss-normalize-whitespace "^5.1.0" - postcss-ordered-values "^5.1.0" + postcss-normalize-whitespace "^5.1.1" + postcss-ordered-values "^5.1.1" postcss-reduce-initial "^5.1.0" postcss-reduce-transforms "^5.1.0" postcss-svgo "^5.1.0" - postcss-unique-selectors "^5.1.0" + postcss-unique-selectors "^5.1.1" cssnano-utils@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== -cssnano@^5.0.17, cssnano@^5.0.6: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.0.tgz#cf977d660a5824d0d5542639ed1d4045afd84cbe" - integrity sha512-wWxave1wMlThGg4ueK98jFKaNqXnQd1nVZpSkQ9XvR+YymlzP1ofWqES1JkHtI250LksP9z5JH+oDcrKDJezAg== +cssnano@^5.0.6, cssnano@^5.1.7: + version "5.1.7" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.7.tgz#99858bef6c76c9240f0cdc9239570bc7db8368be" + integrity sha512-pVsUV6LcTXif7lvKKW9ZrmX+rGRzxkEdJuVJcp5ftUjWITgwam5LMZOgaTvUrWPkcORBey6he7JKb4XAJvrpKg== dependencies: - cssnano-preset-default "^5.2.0" + cssnano-preset-default "^5.2.7" lilconfig "^2.0.3" yaml "^1.10.2" @@ -3206,17 +3205,10 @@ debug@2.6.9, debug@^2.6.0: dependencies: ms "2.0.0" -debug@^3.1.1: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - debug@^4.1.0, debug@^4.1.1: - version "4.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" - integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" @@ -3227,18 +3219,6 @@ decompress-response@^3.3.0: dependencies: mimic-response "^1.0.0" -deep-equal@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" - integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== - dependencies: - is-arguments "^1.0.4" - is-date-object "^1.0.1" - is-regex "^1.0.4" - object-is "^1.0.1" - object-keys "^1.1.1" - regexp.prototype.flags "^1.2.0" - deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" @@ -3267,11 +3247,12 @@ define-lazy-prop@^2.0.0: integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" + integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== dependencies: - object-keys "^1.0.12" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" del@^6.0.0: version "6.0.0" @@ -3287,15 +3268,20 @@ del@^6.0.0: rimraf "^3.0.2" slash "^3.0.0" +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== detab@2.0.4: version "2.0.4" @@ -3337,20 +3323,12 @@ dns-equal@^1.0.0: resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= -dns-packet@^1.3.1: - version "1.3.4" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f" - integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA== - dependencies: - ip "^1.1.0" - safe-buffer "^5.0.1" - -dns-txt@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" - integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= +dns-packet@^5.2.2: + version "5.3.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.3.1.tgz#eb94413789daec0f0ebe2fcc230bdc9d7c91b43d" + integrity sha512-spBwIj0TK0Ey3666GwIdWVfUpLyubpU53BTCu8iPn4r4oXd9O14Hjg3EHw3ts2oed77/SeckunUYCyRlSngqHw== dependencies: - buffer-indexof "^1.0.0" + "@leichtgewicht/ip-codec" "^2.0.1" dom-converter@^0.2.0: version "0.2.0" @@ -3368,9 +3346,9 @@ dom-serializer@0: entities "^2.0.0" dom-serializer@^1.0.1, dom-serializer@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" - integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== + version "1.4.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== dependencies: domelementtype "^2.0.1" domhandler "^4.2.0" @@ -3390,9 +3368,9 @@ domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== domelementtype@^2.0.1, domelementtype@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" - integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== domhandler@^2.3.0: version "2.4.2" @@ -3401,10 +3379,10 @@ domhandler@^2.3.0: dependencies: domelementtype "1" -domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.0.tgz#16c658c626cf966967e306f966b431f77d4a5626" - integrity sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g== +domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== dependencies: domelementtype "^2.2.0" @@ -3424,7 +3402,7 @@ domutils@^1.5.1: dom-serializer "0" domelementtype "1" -domutils@^2.5.2, domutils@^2.7.0, domutils@^2.8.0: +domutils@^2.5.2, domutils@^2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== @@ -3468,10 +3446,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.4.71: - version "1.4.75" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.75.tgz#d1ad9bb46f2f1bf432118c2be21d27ffeae82fdd" - integrity sha512-LxgUNeu3BVU7sXaKjUDD9xivocQLxFtq6wgERrutdY/yIOps3ODOZExK1jg8DTEg4U8TUCb5MLGeWFOYuxjF3Q== +electron-to-chromium@^1.4.118: + version "1.4.134" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.134.tgz#9baca7a018ca489d8e81a00c7cfe15161da38568" + integrity sha512-OdD7M2no4Mi8PopfvoOuNcwYDJ2mNFxaBfurA6okG3fLBaMcFah9S+si84FhX+FIWLKkdaiHfl4A+5ep/gOVrg== emoji-regex@^8.0.0: version "8.0.0" @@ -3506,9 +3484,9 @@ end-of-stream@^1.1.0: once "^1.4.0" enhanced-resolve@^5.9.2: - version "5.9.2" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz#0224dcd6a43389ebfb2d55efee517e5466772dd9" - integrity sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA== + version "5.9.3" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz#44a342c012cbc473254af5cc6ae20ebd0aae5d88" + integrity sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -3610,11 +3588,12 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= -eval@^0.1.4: - version "0.1.6" - resolved "https://registry.yarnpkg.com/eval/-/eval-0.1.6.tgz#9620d7d8c85515e97e6b47c5814f46ae381cb3cc" - integrity sha512-o0XUw+5OGkXw4pJZzQoXUk+H87DHuC+7ZE//oSrRGtatTmr12oTnLfg6QOq9DyTt0c/p4TwzgmkKrBzWTSizyQ== +eval@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/eval/-/eval-0.1.8.tgz#2b903473b8cc1d1989b83a1e7923f883eb357f85" + integrity sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw== dependencies: + "@types/node" "*" require-like ">= 0.1.1" eventemitter3@^4.0.0: @@ -3642,38 +3621,39 @@ execa@^5.0.0: signal-exit "^3.0.3" strip-final-newline "^2.0.0" -express@^4.17.1: - version "4.17.3" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.3.tgz#f6c7302194a4fb54271b73a1fe7a06478c8f85a1" - integrity sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg== +express@^4.17.3: + version "4.18.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf" + integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q== dependencies: accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.19.2" + body-parser "1.20.0" content-disposition "0.5.4" content-type "~1.0.4" - cookie "0.4.2" + cookie "0.5.0" cookie-signature "1.0.6" debug "2.6.9" - depd "~1.1.2" + depd "2.0.0" encodeurl "~1.0.2" escape-html "~1.0.3" etag "~1.8.1" - finalhandler "~1.1.2" + finalhandler "1.2.0" fresh "0.5.2" + http-errors "2.0.0" merge-descriptors "1.0.1" methods "~1.1.2" - on-finished "~2.3.0" + on-finished "2.4.1" parseurl "~1.3.3" path-to-regexp "0.1.7" proxy-addr "~2.0.7" - qs "6.9.7" + qs "6.10.3" range-parser "~1.2.1" safe-buffer "5.2.1" - send "0.17.2" - serve-static "1.14.2" + send "0.18.0" + serve-static "1.15.0" setprototypeof "1.2.0" - statuses "~1.5.0" + statuses "2.0.1" type-is "~1.6.18" utils-merge "1.0.1" vary "~1.1.2" @@ -3784,17 +3764,17 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -finalhandler@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== dependencies: debug "2.6.9" encodeurl "~1.0.2" escape-html "~1.0.3" - on-finished "~2.3.0" + on-finished "2.4.1" parseurl "~1.3.3" - statuses "~1.5.0" + statuses "2.0.1" unpipe "~1.0.0" find-cache-dir@^3.3.1: @@ -3838,14 +3818,14 @@ flux@^4.0.1: fbjs "^3.0.1" follow-redirects@^1.0.0, follow-redirects@^1.14.7: - version "1.14.9" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7" - integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w== + version "1.15.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.0.tgz#06441868281c86d0dda4ad8bdaead2d02dca89d4" + integrity sha512-aExlJShTV4qOUOL7yF1U5tvLCB0xQuudbf6toyYA0E/acBNw71mvjFTnLaRp50aQaYocMR0a/RMMBIHeZnGyjQ== fork-ts-checker-webpack-plugin@^6.5.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.0.tgz#0282b335fa495a97e167f69018f566ea7d2a2b5e" - integrity sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw== + version "6.5.2" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.2.tgz#4f67183f2f9eb8ba7df7177ce3cf3e75cdafb340" + integrity sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA== dependencies: "@babel/code-frame" "^7.8.3" "@types/json-schema" "^7.0.5" @@ -3866,20 +3846,20 @@ forwarded@0.2.0: resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== -fraction.js@^4.1.2: - version "4.1.3" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.1.3.tgz#be65b0f20762ef27e1e793860bc2dfb716e99e65" - integrity sha512-pUHWWt6vHzZZiQJcM6S/0PXfS+g6FM4BF5rj9wZyreivhQPdsh5PpE25VtSNxq80wHS5RfY51Ii+8Z0Zl/pmzg== +fraction.js@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" + integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== fresh@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= -fs-extra@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.1.tgz#27de43b4320e833f6867cc044bfce29fdf0ef3b8" - integrity sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag== +fs-extra@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== dependencies: graceful-fs "^4.2.0" jsonfile "^6.0.1" @@ -3920,7 +3900,7 @@ gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-intrinsic@^1.0.2: +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== @@ -4017,7 +3997,7 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globby@^11.0.1, globby@^11.0.4: +globby@^11.0.1, globby@^11.0.4, globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -4059,9 +4039,9 @@ got@^9.6.0: url-parse-lax "^3.0.0" graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: - version "4.2.9" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" - integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== gray-matter@^4.0.3: version "4.0.3" @@ -4095,18 +4075,18 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbols@^1.0.1, has-symbols@^1.0.2: +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-symbols@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - has-yarn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" @@ -4243,9 +4223,9 @@ hpack.js@^2.1.6: wbuf "^1.1.0" html-entities@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.2.tgz#760b404685cb1d794e4f4b744332e3b00dcfe488" - integrity sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ== + version "2.3.3" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.3.tgz#117d7626bece327fc8baace8868fa6f5ef856e46" + integrity sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA== html-minifier-terser@^6.0.2, html-minifier-terser@^6.1.0: version "6.1.0" @@ -4260,10 +4240,10 @@ html-minifier-terser@^6.0.2, html-minifier-terser@^6.1.0: relateurl "^0.2.7" terser "^5.10.0" -html-tags@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140" - integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg== +html-tags@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.2.0.tgz#dbb3518d20b726524e4dd43de397eb0a95726961" + integrity sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg== html-void-elements@^1.0.0: version "1.0.5" @@ -4313,15 +4293,15 @@ http-deceiver@^1.2.7: resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= -http-errors@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" - integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== dependencies: - depd "~1.1.2" + depd "2.0.0" inherits "2.0.4" setprototypeof "1.2.0" - statuses ">= 1.5.0 < 2" + statuses "2.0.1" toidentifier "1.0.1" http-errors@~1.6.2: @@ -4335,14 +4315,14 @@ http-errors@~1.6.2: statuses ">= 1.4.0 < 2" http-parser-js@>=0.5.1: - version "0.5.5" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.5.tgz#d7c30d5d3c90d865b4a2e870181f9d6f22ac7ac5" - integrity sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA== + version "0.5.6" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.6.tgz#2e02406ab2df8af8a7abfba62e0da01c62b95afd" + integrity sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA== -http-proxy-middleware@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.3.tgz#5df04f69a89f530c2284cd71eeaa51ba52243289" - integrity sha512-1bloEwnrHMnCoO/Gcwbz7eSVvW50KPES01PecpagI+YLNLci4AcuKJrujW4Mc3sBLpFxMSlsLNHS5Nl/lvrTPA== +http-proxy-middleware@^2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" + integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== dependencies: "@types/http-proxy" "^1.17.8" http-proxy "^1.18.1" @@ -4416,10 +4396,10 @@ indent-string@^4.0.0: resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== -infima@0.2.0-alpha.37: - version "0.2.0-alpha.37" - resolved "https://registry.yarnpkg.com/infima/-/infima-0.2.0-alpha.37.tgz#b87ff42d528d6d050098a560f0294fbdd12adb78" - integrity sha512-4GX7Baw+/lwS4PPW/UJNY89tWSvYG1DL6baKVdpK6mC593iRgMssxNtORMTFArLPJ/A/lzsGhRmx+z6MaMxj0Q== +infima@0.2.0-alpha.39: + version "0.2.0-alpha.39" + resolved "https://registry.yarnpkg.com/infima/-/infima-0.2.0-alpha.39.tgz#054b13ac44f3e9a42bc083988f1a1586add2f59c" + integrity sha512-UyYiwD3nwHakGhuOUfpe3baJ8gkiPpRVx4a4sE/Ag+932+Y6swtLsdPoRR8ezhwqGnduzxmFkjumV9roz6QoLw== inflight@^1.0.4: version "1.0.6" @@ -4466,11 +4446,6 @@ invariant@^2.2.4: dependencies: loose-envify "^1.0.0" -ip@^1.1.0: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= - ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" @@ -4494,14 +4469,6 @@ is-alphanumerical@^1.0.0: is-alphabetical "^1.0.0" is-decimal "^1.0.0" -is-arguments@^1.0.4: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" - integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -4527,19 +4494,12 @@ is-ci@^2.0.0: ci-info "^2.0.0" is-core-module@^2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" - integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== + version "2.9.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" + integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== dependencies: has "^1.0.3" -is-date-object@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - dependencies: - has-tostringtag "^1.0.0" - is-decimal@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" @@ -4632,14 +4592,6 @@ is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-regex@^1.0.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - is-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" @@ -4777,19 +4729,10 @@ json-schema-traverse@^1.0.0: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - -json5@^2.1.2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" - integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== - dependencies: - minimist "^1.2.5" +json5@^2.1.2, json5@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" + integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== jsonfile@^6.0.1: version "6.1.0" @@ -4835,9 +4778,9 @@ leven@^3.1.0: integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== lilconfig@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.4.tgz#f4507d043d7058b380b6a8f5cb7bcd4b34cee082" - integrity sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA== + version "2.0.5" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.5.tgz#19e57fd06ccc3848fd1891655b5a447092225b25" + integrity sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg== lines-and-columns@^1.1.6: version "1.2.4" @@ -4845,18 +4788,9 @@ lines-and-columns@^1.1.6: integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== loader-runner@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" - integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== - -loader-utils@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" + version "4.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== loader-utils@^2.0.0: version "2.0.2" @@ -4974,12 +4908,17 @@ lodash.some@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d" integrity sha1-G7nzFO9ri63tE7VJFpsqlF62jk0= +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + lodash.uniq@4.5.0, lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21: +lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -5102,20 +5041,15 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -micromatch@^4.0.2, micromatch@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== +micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: - braces "^3.0.1" - picomatch "^2.2.3" + braces "^3.0.2" + picomatch "^2.3.1" -mime-db@1.51.0: - version "1.51.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" - integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== - -"mime-db@>= 1.43.0 < 2": +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== @@ -5133,11 +5067,11 @@ mime-types@2.1.18: mime-db "~1.33.0" mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: - version "2.1.34" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" - integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: - mime-db "1.51.0" + mime-db "1.52.0" mime@1.6.0: version "1.6.0" @@ -5162,10 +5096,10 @@ mini-create-react-context@^0.4.0: "@babel/runtime" "^7.12.1" tiny-warning "^1.0.3" -mini-css-extract-plugin@^2.5.3: - version "2.5.3" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.5.3.tgz#c5c79f9b22ce9b4f164e9492267358dbe35376d9" - integrity sha512-YseMB8cs8U/KCaAGQoqYmfUuhhGW0a9p9XvWXrxVOkE3/IiISTLw4ALNt7JR5B2eYauFM+PQGSbXMDmVbR7Tfw== +mini-css-extract-plugin@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.0.tgz#578aebc7fc14d32c0ad304c2c34f08af44673f5e" + integrity sha512-ndG8nxCEnAemsg4FSgS+yNyHKgkTB4nPKqCOgh65j3/30qqC5RaSQQXMm++Y6sb6E1zRSxPkztj9fqxhS1Eo6w== dependencies: schema-utils "^4.0.0" @@ -5189,16 +5123,9 @@ minimatch@^3.0.4: brace-expansion "^1.1.7" minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -mkdirp@^0.5.5: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" + version "1.2.6" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== mrmime@^1.0.0: version "1.0.0" @@ -5215,28 +5142,23 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3, ms@^2.1.1: +ms@2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -multicast-dns-service-types@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" - integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= - -multicast-dns@^6.0.1: - version "6.2.3" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" - integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== +multicast-dns@^7.2.4: + version "7.2.4" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.4.tgz#cf0b115c31e922aeb20b64e6556cbeb34cf0dd19" + integrity sha512-XkCYOU+rr2Ft3LI6w4ye51M3VK31qJXFIxu0XLw169PtKG0Zx47OrXeVW/GCYOfpC9s1yyyf1S+L8/4LY0J9Zw== dependencies: - dns-packet "^1.3.1" + dns-packet "^5.2.2" thunky "^1.0.2" -nanoid@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" - integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== +nanoid@^3.3.3: + version "3.3.4" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== negotiator@0.6.3: version "0.6.3" @@ -5270,15 +5192,15 @@ node-fetch@2.6.7: dependencies: whatwg-url "^5.0.0" -node-forge@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.2.1.tgz#82794919071ef2eb5c509293325cec8afd0fd53c" - integrity sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w== +node-forge@^1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== -node-releases@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01" - integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg== +node-releases@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.4.tgz#f38252370c43854dc48aa431c766c6c398f40476" + integrity sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ== normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" @@ -5331,15 +5253,12 @@ object-assign@^4.1.0, object-assign@^4.1.1: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= -object-is@^1.0.1: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" - integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" +object-inspect@^1.9.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" + integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== -object-keys@^1.0.12, object-keys@^1.1.1: +object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== @@ -5359,10 +5278,10 @@ obuf@^1.0.0, obuf@^1.1.2: resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== dependencies: ee-first "1.1.1" @@ -5447,11 +5366,11 @@ p-map@^4.0.0: aggregate-error "^3.0.0" p-retry@^4.5.0: - version "4.6.1" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.1.tgz#8fcddd5cdf7a67a0911a9cf2ef0e5df7f602316c" - integrity sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA== + version "4.6.2" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" + integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== dependencies: - "@types/retry" "^0.12.0" + "@types/retry" "0.12.0" retry "^0.13.1" p-try@^2.0.0: @@ -5598,7 +5517,7 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -5617,15 +5536,6 @@ pkg-up@^3.1.0: dependencies: find-up "^3.0.0" -portfinder@^1.0.28: - version "1.0.28" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" - integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== - dependencies: - async "^2.6.2" - debug "^3.1.1" - mkdirp "^0.5.5" - postcss-calc@^8.2.3: version "8.2.4" resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" @@ -5651,20 +5561,20 @@ postcss-convert-values@^5.1.0: dependencies: postcss-value-parser "^4.2.0" -postcss-discard-comments@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.0.tgz#87be4e0953bf599935837b940c701f8d4eca7d0b" - integrity sha512-L0IKF4jAshRyn03SkEO6ar/Ipz2oLywVbg2THf2EqqdNkBwmVMxuTR/RoAltOw4piiaLt3gCAdrbAqmTBInmhg== +postcss-discard-comments@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.1.tgz#e90019e1a0e5b99de05f63516ce640bd0df3d369" + integrity sha512-5JscyFmvkUxz/5/+TB3QTTT9Gi9jHkcn8dcmmuN68JQcv3aQg4y88yEHHhwFB52l/NkaJ43O0dbksGMAo49nfQ== postcss-discard-duplicates@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== -postcss-discard-empty@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.0.tgz#7f51b16cd1b89f8180bbc7cee34d6cbabf2ef810" - integrity sha512-782T/buGgb3HOuHOJAHpdyKzAAKsv/BxWqsutnZ+QsiHEcDkY7v+6WWdturuBiSal6XMOO1p1aJvwXdqLD5vhA== +postcss-discard-empty@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" + integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== postcss-discard-overridden@^5.1.0: version "5.1.0" @@ -5687,26 +5597,26 @@ postcss-loader@^6.2.1: klona "^2.0.5" semver "^7.3.5" -postcss-merge-idents@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-5.1.0.tgz#948e1183cd659cfb5f99c7389f5fcec83c8f9a00" - integrity sha512-l+awq6+uUiCILsHahWK5KE25495I4oCKlUrIA+EdBvklnVdWlBEsbkzq5+ouPKb8OAe4WwRBgFvaSq7f77FY+w== +postcss-merge-idents@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-5.1.1.tgz#7753817c2e0b75d0853b56f78a89771e15ca04a1" + integrity sha512-pCijL1TREiCoog5nQp7wUe+TUonA2tC2sQ54UGeMmryK3UFGIYKqDyjnqd6RcuI4znFn9hWSLNN8xKE/vWcUQw== dependencies: cssnano-utils "^3.1.0" postcss-value-parser "^4.2.0" -postcss-merge-longhand@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.0.tgz#f716bffbf0bdfbde6ea78c36088e21559f8a0a95" - integrity sha512-Gr46srN2tsLD8fudKYoHO56RG0BLQ2nsBRnSZGY04eNBPwTeWa9KeHrbL3tOLAHyB2aliikycPH2TMJG1U+W6g== +postcss-merge-longhand@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.4.tgz#0f46f8753989a33260efc47de9a0cdc571f2ec5c" + integrity sha512-hbqRRqYfmXoGpzYKeW0/NCZhvNyQIlQeWVSao5iKWdyx7skLvCfQFGIUsP9NUs3dSbPac2IC4Go85/zG+7MlmA== dependencies: postcss-value-parser "^4.2.0" stylehacks "^5.1.0" -postcss-merge-rules@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.0.tgz#a2d5117eba09c8686a5471d97bd9afcf30d1b41f" - integrity sha512-NecukEJovQ0mG7h7xV8wbYAkXGTO3MPKnXvuiXzOKcxoOodfTTKYjeo8TMhAswlSkjcPIBlnKbSFcTuVSDaPyQ== +postcss-merge-rules@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.1.tgz#d327b221cd07540bcc8d9ff84446d8b404d00162" + integrity sha512-8wv8q2cXjEuCcgpIB1Xx1pIy8/rhMPIQqYKNzEdyx37m6gpq83mQQdCxgIkFgliyEnKvdwJf/C61vN4tQDq4Ww== dependencies: browserslist "^4.16.6" caniuse-api "^3.0.0" @@ -5720,19 +5630,19 @@ postcss-minify-font-values@^5.1.0: dependencies: postcss-value-parser "^4.2.0" -postcss-minify-gradients@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.0.tgz#de0260a67a13b7b321a8adc3150725f2c6612377" - integrity sha512-J/TMLklkONn3LuL8wCwfwU8zKC1hpS6VcxFkNUNjmVt53uKqrrykR3ov11mdUYyqVMEx67slMce0tE14cE4DTg== +postcss-minify-gradients@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" + integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== dependencies: colord "^2.9.1" cssnano-utils "^3.1.0" postcss-value-parser "^4.2.0" -postcss-minify-params@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.0.tgz#e0b1f4e05cfd396682f612856485907e4064f25e" - integrity sha512-q67dcts4Hct6x8+JmhBgctHkbvUsqGIg2IItenjE63iZXMbhjr7AlVZkNnKtIGt/1Wsv7p/7YzeSII6Q+KPXRg== +postcss-minify-params@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.2.tgz#77e250780c64198289c954884ebe3ee4481c3b1c" + integrity sha512-aEP+p71S/urY48HWaRHasyx4WHQJyOYaKpQ6eXl8k0kxg66Wt/30VR6/woh8THgcpRbonJD5IeD+CzNhPi1L8g== dependencies: browserslist "^4.16.6" cssnano-utils "^3.1.0" @@ -5829,25 +5739,25 @@ postcss-normalize-url@^5.1.0: normalize-url "^6.0.1" postcss-value-parser "^4.2.0" -postcss-normalize-whitespace@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.0.tgz#aed8b4580c9ad6e8eac034177291187ea16a059c" - integrity sha512-7O1FanKaJkpWFyCghFzIkLhehujV/frGkdofGLwhg5upbLyGsSfiTcZAdSzoPsSUgyPCkBkNMeWR8yVgPdQybg== +postcss-normalize-whitespace@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" + integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== dependencies: postcss-value-parser "^4.2.0" -postcss-ordered-values@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.0.tgz#04ef429e0991b0292bc918b135cd4c038f7b889f" - integrity sha512-wU4Z4D4uOIH+BUKkYid36gGDJNQtkVJT7Twv8qH6UyfttbbJWyw4/xIPuVEkkCtQLAJ0EdsNSh8dlvqkXb49TA== +postcss-ordered-values@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.1.tgz#0b41b610ba02906a3341e92cab01ff8ebc598adb" + integrity sha512-7lxgXF0NaoMIgyihL/2boNAEZKiW0+HkMhdKMTD93CjW8TdCy2hSdj8lsAo+uwm7EDG16Da2Jdmtqpedl0cMfw== dependencies: cssnano-utils "^3.1.0" postcss-value-parser "^4.2.0" -postcss-reduce-idents@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-5.1.0.tgz#386b65cf861a9045663bd349d572027ab138ca4a" - integrity sha512-2xDoPTzv98D/HFDrGTgVEBlcuS47wvua2oc4g2WoZdYPwzPWMWb2TCRruCyN7vbl+HAtVLGvEOMZIZb3wYgv7w== +postcss-reduce-idents@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-5.2.0.tgz#c89c11336c432ac4b28792f24778859a67dfba95" + integrity sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg== dependencies: postcss-value-parser "^4.2.0" @@ -5867,9 +5777,9 @@ postcss-reduce-transforms@^5.1.0: postcss-value-parser "^4.2.0" postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: - version "6.0.9" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz#ee71c3b9ff63d9cd130838876c13a2ec1a992b2f" - integrity sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ== + version "6.0.10" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" + integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" @@ -5889,10 +5799,10 @@ postcss-svgo@^5.1.0: postcss-value-parser "^4.2.0" svgo "^2.7.0" -postcss-unique-selectors@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.0.tgz#70a945da1b0599d00f617222a44ba1d82a676694" - integrity sha512-LmUhgGobtpeVJJHuogzjLRwJlN7VH+BL5c9GKMVJSS/ejoyePZkXvNsYUtk//F6vKOGK86gfRS0xH7fXQSDtvA== +postcss-unique-selectors@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" + integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== dependencies: postcss-selector-parser "^6.0.5" @@ -5906,12 +5816,12 @@ postcss-zindex@^5.1.0: resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-5.1.0.tgz#4a5c7e5ff1050bd4c01d95b1847dfdcc58a496ff" integrity sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A== -postcss@^8.3.11, postcss@^8.3.5, postcss@^8.4.5, postcss@^8.4.7: - version "8.4.7" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.7.tgz#f99862069ec4541de386bf57f5660a6c7a0875a8" - integrity sha512-L9Ye3r6hkkCeOETQX6iOaWZgjp3LL6Lpqm6EtgbKrgqGGteRMNb9vzBfRL96YOSu8o7x3MfIH9Mo5cPJFGrW6A== +postcss@^8.3.11, postcss@^8.3.5, postcss@^8.4.13, postcss@^8.4.7: + version "8.4.13" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.13.tgz#7c87bc268e79f7f86524235821dfdf9f73e5d575" + integrity sha512-jtL6eTBrza5MPzy8oJLFuUscHDXTV5KcLlqAWHl5q5WYRfnNRGSmOZmOZ1T6Gy7A99mOZfqungmZMpMmCVJ8ZA== dependencies: - nanoid "^3.3.1" + nanoid "^3.3.3" picocolors "^1.0.0" source-map-js "^1.0.2" @@ -5933,15 +5843,15 @@ pretty-time@^1.1.0: resolved "https://registry.yarnpkg.com/pretty-time/-/pretty-time-1.1.0.tgz#ffb7429afabb8535c346a34e41873adf3d74dd0e" integrity sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA== -prism-react-renderer@^1.2.1, prism-react-renderer@^1.3.1: +prism-react-renderer@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-1.3.1.tgz#88fc9d0df6bed06ca2b9097421349f8c2f24e30d" integrity sha512-xUeDMEz074d0zc5y6rxiMp/dlC7C+5IDDlaEUlcBOFE2wddz7hz5PNupb087mPwTt7T9BrFmewObfCBuf/LKwQ== -prismjs@^1.27.0: - version "1.27.0" - resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.27.0.tgz#bb6ee3138a0b438a3653dd4d6ce0cc6510a45057" - integrity sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA== +prismjs@^1.28.0: + version "1.28.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.28.0.tgz#0d8f561fa0f7cf6ebca901747828b149147044b6" + integrity sha512-8aaXdYvl1F7iC7Xm1spqSaY/OJBpYW3v+KJ+F17iYxvdc8sfjW194COK5wVhMZX45tGteiBQgdvD/nhxcRwylw== process-nextick-args@~2.0.0: version "2.0.1" @@ -5995,11 +5905,6 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - punycode@^1.3.2: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" @@ -6022,20 +5927,12 @@ pure-color@^1.2.0: resolved "https://registry.yarnpkg.com/pure-color/-/pure-color-1.3.0.tgz#1fe064fb0ac851f0de61320a8bf796836422f33e" integrity sha1-H+Bk+wrIUfDeYTIKi/eWg2Qi8z4= -qs@6.9.7: - version "6.9.7" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.7.tgz#4610846871485e1e048f44ae3b94033f0e675afe" - integrity sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw== - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - -querystring@0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd" - integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== +qs@6.10.3: + version "6.10.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" + integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== + dependencies: + side-channel "^1.0.4" queue-microtask@^1.2.2: version "1.2.3" @@ -6066,13 +5963,13 @@ range-parser@^1.2.1, range-parser@~1.2.1: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.4.3: - version "2.4.3" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.3.tgz#8f80305d11c2a0a545c2d9d89d7a0286fcead43c" - integrity sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g== +raw-body@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== dependencies: bytes "3.1.2" - http-errors "1.8.1" + http-errors "2.0.0" iconv-lite "0.4.24" unpipe "1.0.0" @@ -6096,10 +5993,10 @@ react-base16-styling@^0.6.0: lodash.flow "^3.3.0" pure-color "^1.2.0" -react-dev-utils@^12.0.0: - version "12.0.0" - resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.0.tgz#4eab12cdb95692a077616770b5988f0adf806526" - integrity sha512-xBQkitdxozPxt1YZ9O1097EJiVpwHr9FoAuEVURCKV0Av8NBERovJauzP7bo1ThvuhZ4shsQ1AJiu4vQpoT1AQ== +react-dev-utils@^12.0.1: + version "12.0.1" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.1.tgz#ba92edb4a1f379bd46ccd6bcd4e7bc398df33e73" + integrity sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ== dependencies: "@babel/code-frame" "^7.16.0" address "^1.1.2" @@ -6120,13 +6017,13 @@ react-dev-utils@^12.0.0: open "^8.4.0" pkg-up "^3.1.0" prompts "^2.4.2" - react-error-overlay "^6.0.10" + react-error-overlay "^6.0.11" recursive-readdir "^2.2.2" shell-quote "^1.7.3" strip-ansi "^6.0.1" text-table "^0.2.0" -react-dom@^17.0.1: +react-dom@^17.0.2: version "17.0.2" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== @@ -6135,20 +6032,20 @@ react-dom@^17.0.1: object-assign "^4.1.1" scheduler "^0.20.2" -react-error-overlay@^6.0.10: - version "6.0.10" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.10.tgz#0fe26db4fa85d9dbb8624729580e90e7159a59a6" - integrity sha512-mKR90fX7Pm5seCOfz8q9F+66VCc1PGsWSBxKbITjfKVQHMNF2zudxHnMdJiB1fRCb+XsbQV9sO9DCkgsMQgBIA== +react-error-overlay@^6.0.11: + version "6.0.11" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb" + integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== react-fast-compare@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== -react-helmet-async@*, react-helmet-async@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/react-helmet-async/-/react-helmet-async-1.2.3.tgz#57326a69304ea3293036eafb49475e9ba454cb37" - integrity sha512-mCk2silF53Tq/YaYdkl2sB+/tDoPnaxN7dFS/6ZLJb/rhUY2EWGI5Xj2b4jHppScMqY45MbgPSwTxDchKpZ5Kw== +react-helmet-async@*, react-helmet-async@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/react-helmet-async/-/react-helmet-async-1.3.0.tgz#7bd5bf8c5c69ea9f02f6083f14ce33ef545c222e" + integrity sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg== dependencies: "@babel/runtime" "^7.12.5" invariant "^2.2.4" @@ -6191,22 +6088,22 @@ react-router-config@^5.1.1: "@babel/runtime" "^7.1.2" react-router-dom@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.0.tgz#da1bfb535a0e89a712a93b97dd76f47ad1f32363" - integrity sha512-ObVBLjUZsphUUMVycibxgMdh5jJ1e3o+KpAZBVeHcNQZ4W+uUGGWsokurzlF4YOldQYRQL4y6yFRWM4m3svmuQ== + version "5.3.1" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.1.tgz#0151baf2365c5fcd8493f6ec9b9b31f34d0f8ae1" + integrity sha512-f0pj/gMAbv9e8gahTmCEY20oFhxhrmHwYeIwH5EO5xu0qme+wXtsdB8YfUOAZzUz4VaXmb58m3ceiLtjMhqYmQ== dependencies: "@babel/runtime" "^7.12.13" history "^4.9.0" loose-envify "^1.3.1" prop-types "^15.6.2" - react-router "5.2.1" + react-router "5.3.1" tiny-invariant "^1.0.2" tiny-warning "^1.0.0" -react-router@5.2.1, react-router@^5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.2.1.tgz#4d2e4e9d5ae9425091845b8dbc6d9d276239774d" - integrity sha512-lIboRiOtDLFdg1VTemMwud9vRVuOCZmUIT/7lUoZiSpPODiiH1UQlfXy+vPLC/7IWdFYnhRwAyNqA/+I7wnvKQ== +react-router@5.3.1, react-router@^5.2.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.3.1.tgz#b13e84a016c79b9e80dde123ca4112c4f117e3cf" + integrity sha512-v+zwjqb7bakqgF+wMVKlAPTca/cEmPOvQ9zt7gpSNyPXau1+0qvuYZ5BWzzNDP1y6s15zDwgb9rPN63+SIniRQ== dependencies: "@babel/runtime" "^7.12.13" history "^4.9.0" @@ -6228,7 +6125,7 @@ react-textarea-autosize@^8.3.2: use-composed-ref "^1.0.0" use-latest "^1.0.0" -react@^17.0.1: +react@^17.0.2: version "17.0.2" resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== @@ -6301,21 +6198,13 @@ regenerator-runtime@^0.13.4: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== -regenerator-transform@^0.14.2: - version "0.14.5" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" - integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== +regenerator-transform@^0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz#cbd9ead5d77fae1a48d957cf889ad0586adb6537" + integrity sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg== dependencies: "@babel/runtime" "^7.8.4" -regexp.prototype.flags@^1.2.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz#b3f4c0059af9e47eca9f3f660e51d81307e72307" - integrity sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - regexpu-core@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3" @@ -6377,7 +6266,7 @@ remark-admonitions@^1.2.1: unified "^8.4.2" unist-util-visit "^2.0.1" -remark-emoji@^2.1.0: +remark-emoji@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/remark-emoji/-/remark-emoji-2.2.0.tgz#1c702090a1525da5b80e15a8f963ef2c8236cac7" integrity sha512-P3cj9s5ggsUvWw5fS2uzCHJMGuXYRb0NnZqYlNecewXt8QBU9n5vW3DUUKOhepS8F9CwdMx9B8a3i7pqFWAI5w== @@ -6513,7 +6402,7 @@ rtl-detect@^1.0.4: resolved "https://registry.yarnpkg.com/rtl-detect/-/rtl-detect-1.0.4.tgz#40ae0ea7302a150b96bc75af7d749607392ecac6" integrity sha512-EBR4I2VDSSYr7PkBmFy04uhycIpDKp+21p/jARYXlCSjQksTBQcJ0HFUPOO79EPPH5JS6VAhiIQbycf0O3JAxQ== -rtlcss@^3.3.0: +rtlcss@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/rtlcss/-/rtlcss-3.5.0.tgz#c9eb91269827a102bac7ae3115dd5d049de636c3" integrity sha512-wzgMaMFHQTnyi9YOwsx9LjOxYXJPzS8sYnFaKm6R5ysvTkwzHiB0vxnbHwchHQT65PTdBjDG21/kQBWI7q9O7A== @@ -6531,9 +6420,9 @@ run-parallel@^1.1.9: queue-microtask "^1.2.2" rxjs@^7.5.4: - version "7.5.4" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.4.tgz#3d6bd407e6b7ce9a123e76b1e770dc5761aa368d" - integrity sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ== + version "7.5.5" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.5.tgz#2ebad89af0f560f460ad5cc4213219e1f7dd4e9f" + integrity sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw== dependencies: tslib "^2.1.0" @@ -6542,7 +6431,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -6615,12 +6504,12 @@ select-hose@^2.0.0: resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= -selfsigned@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.0.0.tgz#e927cd5377cbb0a1075302cff8df1042cc2bce5b" - integrity sha512-cUdFiCbKoa1mZ6osuJs2uDHrs0k0oprsKveFiiaBKCNq3SYyb5gs2HxhQyDNLCmL51ZZThqi4YNDpCK6GOP1iQ== +selfsigned@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.0.1.tgz#8b2df7fa56bf014d19b6007655fff209c0ef0a56" + integrity sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ== dependencies: - node-forge "^1.2.0" + node-forge "^1" semver-diff@^3.1.1: version "3.1.1" @@ -6644,31 +6533,31 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== +semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7: + version "7.3.7" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== dependencies: lru-cache "^6.0.0" -send@0.17.2: - version "0.17.2" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.2.tgz#926622f76601c41808012c8bf1688fe3906f7820" - integrity sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww== +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== dependencies: debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" + depd "2.0.0" + destroy "1.2.0" encodeurl "~1.0.2" escape-html "~1.0.3" etag "~1.8.1" fresh "0.5.2" - http-errors "1.8.1" + http-errors "2.0.0" mime "1.6.0" ms "2.1.3" - on-finished "~2.3.0" + on-finished "2.4.1" range-parser "~1.2.1" - statuses "~1.5.0" + statuses "2.0.1" serialize-javascript@^6.0.0: version "6.0.0" @@ -6704,15 +6593,15 @@ serve-index@^1.9.1: mime-types "~2.1.17" parseurl "~1.3.2" -serve-static@1.14.2: - version "1.14.2" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.2.tgz#722d6294b1d62626d41b43a013ece4598d292bfa" - integrity sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ== +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== dependencies: encodeurl "~1.0.2" escape-html "~1.0.3" parseurl "~1.3.3" - send "0.17.2" + send "0.18.0" setimmediate@^1.0.5: version "1.0.5" @@ -6767,6 +6656,15 @@ shelljs@^0.8.5: interpret "^1.0.0" rechoir "^0.6.2" +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + signal-exit@^3.0.2, signal-exit@^3.0.3: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" @@ -6848,10 +6746,12 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@~0.7.2: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== +source-map@~0.8.0-beta.0: + version "0.8.0-beta.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" + integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== + dependencies: + whatwg-url "^7.0.0" space-separated-tokens@^1.0.0: version "1.1.5" @@ -6896,15 +6796,20 @@ state-toggle@^1.0.0: resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ== -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +"statuses@>= 1.4.0 < 2": version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= std-env@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.0.1.tgz#bc4cbc0e438610197e34c2d79c3df30b491f5182" - integrity sha512-mC1Ps9l77/97qeOZc+HrOL7TIaOboHqMZ24dGVQrlxFcpPpfCHpH+qfUT7Dz+6mlG8+JPA1KfBQo19iC/+Ngcw== + version "3.1.1" + resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.1.1.tgz#1f19c4d3f6278c52efd08a94574a2a8d32b7d092" + integrity sha512-/c645XdExBypL01TpFKiG/3RAa/Qmu+zRi0MwAmrdEkwHNuN0ebo8ccAXBBDa5Z0QOJgBskUIbuCK91x0sCVEw== string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2: version "4.2.3" @@ -6954,7 +6859,7 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" -strip-ansi@^7.0.0, strip-ansi@^7.0.1: +strip-ansi@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== @@ -7062,13 +6967,13 @@ terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.3.1: terser "^5.7.2" terser@^5.10.0, terser@^5.7.2: - version "5.12.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.12.0.tgz#728c6bff05f7d1dcb687d8eace0644802a9dae8a" - integrity sha512-R3AUhNBGWiFc77HXag+1fXpAxTAFRQTJemlJKjAgD9r8xXTpjNKqIXwHM/o7Rh+O0kUJtS3WQVdBeMKFk5sw9A== + version "5.13.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.13.1.tgz#66332cdc5a01b04a224c9fad449fc1a18eaa1799" + integrity sha512-hn4WKOfwnwbYfe48NgrQjqNOH9jzLqRcIfbYytOXCOv46LBfWr9bDS17MQqOi+BWGD0sJK3Sj5NC/gJjiojaoA== dependencies: acorn "^8.5.0" commander "^2.20.0" - source-map "~0.7.2" + source-map "~0.8.0-beta.0" source-map-support "~0.5.20" text-table@^0.2.0: @@ -7081,11 +6986,6 @@ thunky@^1.0.2: resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== -timsort@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" - integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= - tiny-invariant@^1.0.2: version "1.2.0" resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.2.0.tgz#a1141f86b672a9148c72e978a19a73b9b94a15a9" @@ -7123,6 +7023,13 @@ totalist@^1.0.0: resolved "https://registry.yarnpkg.com/totalist/-/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df" integrity sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g== +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= + dependencies: + punycode "^2.1.0" + tr46@~0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" @@ -7143,10 +7050,10 @@ trough@^1.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== -tslib@^2.0.3, tslib@^2.1.0, tslib@^2.2.0, tslib@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" - integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== +tslib@^2.0.3, tslib@^2.1.0, tslib@^2.2.0, tslib@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== type-fest@^0.20.2: version "0.20.2" @@ -7154,9 +7061,9 @@ type-fest@^0.20.2: integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== type-fest@^2.5.0: - version "2.12.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.12.0.tgz#ce342f58cab9114912f54b493d60ab39c3fc82b6" - integrity sha512-Qe5GRT+n/4GoqCNGGVp5Snapg1Omq3V7irBJB3EaKsp7HWDo5Gv2d/67gfNyV+d5EXD+x/RF5l1h4yJ7qNkcGA== + version "2.12.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.12.2.tgz#80a53614e6b9b475eb9077472fb7498dc7aa51d0" + integrity sha512-qt6ylCGpLjZ7AaODxbpyBZSs9fCI9SkL3Z9q2oxMBQhs/uyY+VD8jHA8ULCGmWQJlBgqvO3EJeAngOHD8zQCrQ== type-is@~1.6.18: version "1.6.18" @@ -7173,10 +7080,10 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typescript@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.2.tgz#fe12d2727b708f4eef40f51598b3398baa9611d4" - integrity sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg== +typescript@^4.6.4: + version "4.6.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.4.tgz#caa78bbc3a59e6a5c510d35703f6a09877ce45e9" + integrity sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg== ua-parser-js@^0.7.30: version "0.7.31" @@ -7293,7 +7200,7 @@ unist-util-visit-parents@^3.0.0: "@types/unist" "^2.0.0" unist-util-is "^4.0.0" -unist-util-visit@2.0.3, unist-util-visit@^2.0.0, unist-util-visit@^2.0.1, unist-util-visit@^2.0.2, unist-util-visit@^2.0.3: +unist-util-visit@2.0.3, unist-util-visit@^2.0.0, unist-util-visit@^2.0.1, unist-util-visit@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c" integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q== @@ -7355,30 +7262,22 @@ url-parse-lax@^3.0.0: dependencies: prepend-http "^2.0.0" -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - use-composed-ref@^1.0.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.2.1.tgz#9bdcb5ccd894289105da2325e1210079f56bf849" - integrity sha512-6+X1FLlIcjvFMAeAD/hcxDT8tmyrWnbSPMU0EnxQuDLIxokuFzWliXBiYZuGIx+mrAMLBw0WFfCkaPw8ebzAhw== + version "1.3.0" + resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.3.0.tgz#3d8104db34b7b264030a9d916c5e94fbe280dbda" + integrity sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ== -use-isomorphic-layout-effect@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.1.tgz#7bb6589170cd2987a152042f9084f9effb75c225" - integrity sha512-L7Evj8FGcwo/wpbv/qvSfrkHFtOpCzvM5yl2KVyDJoylVuSvzphiiasmjgQPttIGBAy2WKiBNR98q8w7PiNgKQ== +use-isomorphic-layout-effect@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb" + integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== use-latest@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/use-latest/-/use-latest-1.2.0.tgz#a44f6572b8288e0972ec411bdd0840ada366f232" - integrity sha512-d2TEuG6nSLKQLAfW3By8mKr8HurOlTkul0sOpxbClIv4SQ4iOd7BYr7VIzdbktUCnv7dua/60xzd8igMU6jmyw== + version "1.2.1" + resolved "https://registry.yarnpkg.com/use-latest/-/use-latest-1.2.1.tgz#d13dfb4b08c28e3e33991546a2cee53e14038cf2" + integrity sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw== dependencies: - use-isomorphic-layout-effect "^1.0.0" + use-isomorphic-layout-effect "^1.1.1" util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" @@ -7474,6 +7373,11 @@ webidl-conversions@^3.0.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + webpack-bundle-analyzer@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz#1b0eea2947e73528754a6f9af3e91b2b6e0f79d5" @@ -7500,39 +7404,37 @@ webpack-dev-middleware@^5.3.1: range-parser "^1.2.1" schema-utils "^4.0.0" -webpack-dev-server@^4.7.4: - version "4.7.4" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.7.4.tgz#d0ef7da78224578384e795ac228d8efb63d5f945" - integrity sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A== +webpack-dev-server@^4.8.1: + version "4.9.0" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.9.0.tgz#737dbf44335bb8bde68f8f39127fc401c97a1557" + integrity sha512-+Nlb39iQSOSsFv0lWUuUTim3jDQO8nhK3E68f//J2r5rIcp4lULHXz2oZ0UVdEeWXEh5lSzYUlzarZhDAeAVQw== dependencies: "@types/bonjour" "^3.5.9" "@types/connect-history-api-fallback" "^1.3.5" "@types/express" "^4.17.13" "@types/serve-index" "^1.9.1" "@types/sockjs" "^0.3.33" - "@types/ws" "^8.2.2" + "@types/ws" "^8.5.1" ansi-html-community "^0.0.8" - bonjour "^3.5.0" + bonjour-service "^1.0.11" chokidar "^3.5.3" colorette "^2.0.10" compression "^1.7.4" connect-history-api-fallback "^1.6.0" default-gateway "^6.0.3" - del "^6.0.0" - express "^4.17.1" + express "^4.17.3" graceful-fs "^4.2.6" html-entities "^2.3.2" - http-proxy-middleware "^2.0.0" + http-proxy-middleware "^2.0.3" ipaddr.js "^2.0.1" open "^8.0.9" p-retry "^4.5.0" - portfinder "^1.0.28" + rimraf "^3.0.2" schema-utils "^4.0.0" - selfsigned "^2.0.0" + selfsigned "^2.0.1" serve-index "^1.9.1" sockjs "^0.3.21" spdy "^4.0.2" - strip-ansi "^7.0.0" webpack-dev-middleware "^5.3.1" ws "^8.4.2" @@ -7557,10 +7459,10 @@ webpack-sources@^3.2.3: resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -webpack@^5.69.1: - version "5.70.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.70.0.tgz#3461e6287a72b5e6e2f4872700bc8de0d7500e6d" - integrity sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw== +webpack@^5.72.0: + version "5.72.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.72.0.tgz#f8bc40d9c6bb489a4b7a8a685101d6022b8b6e28" + integrity sha512-qmSmbspI0Qo5ld49htys8GY9XhS9CGqFoHTsOVAnjBdg0Zn79y135R+k4IR4rKK6+eKaabMhJwiVB7xw0SJu5w== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^0.0.51" @@ -7619,6 +7521,15 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -7691,9 +7602,9 @@ ws@^7.3.1: integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A== ws@^8.4.2: - version "8.5.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" - integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== + version "8.6.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.6.0.tgz#e5e9f1d9e7ff88083d0c0dd8281ea662a42c9c23" + integrity sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw== xdg-basedir@^4.0.0: version "4.0.0" diff --git a/examples/classic/docs/tutorial-basics/_category_.json b/examples/classic/docs/tutorial-basics/_category_.json index 135e4a6858be..2e6db55b1eb6 100644 --- a/examples/classic/docs/tutorial-basics/_category_.json +++ b/examples/classic/docs/tutorial-basics/_category_.json @@ -1,4 +1,8 @@ { "label": "Tutorial - Basics", - "position": 2 + "position": 2, + "link": { + "type": "generated-index", + "description": "5 minutes to learn the most important Docusaurus concepts." + } } diff --git a/examples/classic/docs/tutorial-basics/create-a-document.md b/examples/classic/docs/tutorial-basics/create-a-document.md index feaced79d0a3..a9bb9a4140b1 100644 --- a/examples/classic/docs/tutorial-basics/create-a-document.md +++ b/examples/classic/docs/tutorial-basics/create-a-document.md @@ -41,14 +41,14 @@ This is my **first Docusaurus document**! It is also possible to create your sidebar explicitly in `sidebars.js`: -```diff title="sidebars.js" +```js title="sidebars.js" module.exports = { tutorialSidebar: [ { type: 'category', label: 'Tutorial', -- items: [...], -+ items: ['hello'], + // highlight-next-line + items: ['hello'], }, ], }; diff --git a/examples/classic/docs/tutorial-basics/markdown-features.mdx b/examples/classic/docs/tutorial-basics/markdown-features.mdx index 8855626051f1..6b3aaaaaaf85 100644 --- a/examples/classic/docs/tutorial-basics/markdown-features.mdx +++ b/examples/classic/docs/tutorial-basics/markdown-features.mdx @@ -43,7 +43,7 @@ Let's see how to [Create a page](./create-a-page.md). Regular Markdown images are supported. -Add an image at `static/img/docusaurus.png` and display it in Markdown: +You can use absolute paths to reference images in the static directory (`static/img/docusaurus.png`): ```md ![Docusaurus logo](/img/docusaurus.png) @@ -51,6 +51,8 @@ Add an image at `static/img/docusaurus.png` and display it in Markdown: ![Docusaurus logo](/img/docusaurus.png) +You can reference images relative to the current file as well, as shown in [the extra guides](../tutorial-extras/manage-docs-versions.md). + ## Code Blocks Markdown code blocks are supported with Syntax highlighting. diff --git a/examples/classic/docs/tutorial-extras/_category_.json b/examples/classic/docs/tutorial-extras/_category_.json index ca3f8e06408b..a8ffcc19300e 100644 --- a/examples/classic/docs/tutorial-extras/_category_.json +++ b/examples/classic/docs/tutorial-extras/_category_.json @@ -1,4 +1,7 @@ { "label": "Tutorial - Extras", - "position": 3 + "position": 3, + "link": { + "type": "generated-index" + } } diff --git a/examples/classic/docs/tutorial-extras/img/docsVersionDropdown.png b/examples/classic/docs/tutorial-extras/img/docsVersionDropdown.png new file mode 100644 index 000000000000..97e4164618b5 Binary files /dev/null and b/examples/classic/docs/tutorial-extras/img/docsVersionDropdown.png differ diff --git a/examples/classic/docs/tutorial-extras/img/localeDropdown.png b/examples/classic/docs/tutorial-extras/img/localeDropdown.png new file mode 100644 index 000000000000..e257edc1f932 Binary files /dev/null and b/examples/classic/docs/tutorial-extras/img/localeDropdown.png differ diff --git a/examples/classic/docs/tutorial-extras/manage-docs-versions.md b/examples/classic/docs/tutorial-extras/manage-docs-versions.md index 6335b0ac94b8..e12c3f3444fa 100644 --- a/examples/classic/docs/tutorial-extras/manage-docs-versions.md +++ b/examples/classic/docs/tutorial-extras/manage-docs-versions.md @@ -45,7 +45,7 @@ module.exports = { The docs version dropdown appears in your navbar: -![Docs Version Dropdown](/img/tutorial/docsVersionDropdown.png) +![Docs Version Dropdown](./img/docsVersionDropdown.png) ## Update an existing version diff --git a/examples/classic/docs/tutorial-extras/translate-your-site.md b/examples/classic/docs/tutorial-extras/translate-your-site.md index a25c089ed794..da2b8a365f48 100644 --- a/examples/classic/docs/tutorial-extras/translate-your-site.md +++ b/examples/classic/docs/tutorial-extras/translate-your-site.md @@ -71,7 +71,7 @@ module.exports = { The locale dropdown now appears in your navbar: -![Locale Dropdown](/img/tutorial/localeDropdown.png) +![Locale Dropdown](./img/localeDropdown.png) ## Build your localized site diff --git a/examples/classic/docusaurus.config.js b/examples/classic/docusaurus.config.js index 437d1fba1a63..cbea7b1b4b1b 100644 --- a/examples/classic/docusaurus.config.js +++ b/examples/classic/docusaurus.config.js @@ -13,9 +13,20 @@ const config = { onBrokenLinks: 'throw', onBrokenMarkdownLinks: 'warn', favicon: 'img/favicon.ico', + + // GitHub pages deployment config. + // If you aren't using GitHub pages, you don't need these. organizationName: 'facebook', // Usually your GitHub org/user name. projectName: 'docusaurus', // Usually your repo name. + // Even if you don't use internalization, you can use this field to set useful + // metadata like html lang. For example, if your site is Chinese, you may want + // to replace "en" with "zh-Hans". + i18n: { + defaultLocale: 'en', + locales: ['en'], + }, + presets: [ [ 'classic', @@ -24,11 +35,14 @@ const config = { docs: { sidebarPath: require.resolve('./sidebars.js'), // Please change this to your repo. - editUrl: 'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/', + // Remove this to remove the "edit this page" links. + editUrl: + 'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/', }, blog: { showReadingTime: true, // Please change this to your repo. + // Remove this to remove the "edit this page" links. editUrl: 'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/', }, diff --git a/examples/classic/package.json b/examples/classic/package.json index 2d9fb788d6de..7ee6af0042d2 100644 --- a/examples/classic/package.json +++ b/examples/classic/package.json @@ -15,13 +15,16 @@ "dev": "docusaurus start" }, "dependencies": { - "@docusaurus/core": "2.0.0-beta.17", - "@docusaurus/preset-classic": "2.0.0-beta.17", + "@docusaurus/core": "2.0.0-beta.20", + "@docusaurus/preset-classic": "2.0.0-beta.20", "@mdx-js/react": "^1.6.22", "clsx": "^1.1.1", - "prism-react-renderer": "^1.2.1", - "react": "^17.0.1", - "react-dom": "^17.0.1" + "prism-react-renderer": "^1.3.1", + "react": "^17.0.2", + "react-dom": "^17.0.2" + }, + "devDependencies": { + "@docusaurus/module-type-aliases": "2.0.0-beta.20" }, "browserslist": { "production": [ diff --git a/examples/classic/src/css/custom.css b/examples/classic/src/css/custom.css index 311dc090d973..2bc6a4cfdef4 100644 --- a/examples/classic/src/css/custom.css +++ b/examples/classic/src/css/custom.css @@ -14,6 +14,7 @@ --ifm-color-primary-lighter: #359962; --ifm-color-primary-lightest: #3cad6e; --ifm-code-font-size: 95%; + --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1); } /* For readability concerns, you should choose a lighter palette in dark mode. */ @@ -25,15 +26,5 @@ --ifm-color-primary-light: #29d5b0; --ifm-color-primary-lighter: #32d8b4; --ifm-color-primary-lightest: #4fddbf; -} - -.docusaurus-highlight-code-line { - background-color: rgba(0, 0, 0, 0.1); - display: block; - margin: 0 calc(-1 * var(--ifm-pre-padding)); - padding: 0 var(--ifm-pre-padding); -} - -[data-theme='dark'] .docusaurus-highlight-code-line { - background-color: rgba(0, 0, 0, 0.3); + --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3); } diff --git a/examples/classic/static/img/tutorial/docsVersionDropdown.png b/examples/classic/static/img/tutorial/docsVersionDropdown.png deleted file mode 100644 index ff1cbe68893d..000000000000 Binary files a/examples/classic/static/img/tutorial/docsVersionDropdown.png and /dev/null differ diff --git a/examples/classic/static/img/tutorial/localeDropdown.png b/examples/classic/static/img/tutorial/localeDropdown.png deleted file mode 100644 index d7163f967524..000000000000 Binary files a/examples/classic/static/img/tutorial/localeDropdown.png and /dev/null differ diff --git a/examples/classic/yarn.lock b/examples/classic/yarn.lock index 0d356623a0ae..bf6352f765e9 100644 --- a/examples/classic/yarn.lock +++ b/examples/classic/yarn.lock @@ -21,121 +21,122 @@ resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.5.2.tgz#e157f9ad624ab8fd940ff28bd2094cdf199cdd79" integrity sha512-ylQAYv5H0YKMfHgVWX0j0NmL8XBcAeeeVQUmppnnMtzDbDnca6CzhKj3Q8eF9cHCgcdTDdb5K+3aKyGWA0obug== -"@algolia/cache-browser-local-storage@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.12.2.tgz#62935ddb81b50d539111b2146fa340495ec1cd53" - integrity sha512-z8LjFsQc0B6h6LEE3pkUGM4ErVktn6bkFbhnYbTccjmFVQ+wXFJd/D63e0WtaC+hwRB1xq8uKhkz9oojEKEsGA== - dependencies: - "@algolia/cache-common" "4.12.2" - -"@algolia/cache-common@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.12.2.tgz#8512f311524f4d0aae8611e9879214a5e2a577ae" - integrity sha512-r//r7MF0Na0HxD2BHnjWsDKuI72Z5UEf/Rb/8MC08XKBsjCwBihGxWxycjRcNGjNEIxJBsvRMIEOipcd9qD54g== - -"@algolia/cache-in-memory@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.12.2.tgz#cacd13c02a7826bfad1c391d012ce00bc5db3859" - integrity sha512-opWpbBUloP1fcTG3wBDnAfcoyNXW5GFDgGtLXrSANdfnelPKkr3O8j01ZTkRlPIuBDR0izGZG8MVWMDlTf71Bw== - dependencies: - "@algolia/cache-common" "4.12.2" - -"@algolia/client-account@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.12.2.tgz#adc4833b78576d1558ba45b7d44be22747debdc9" - integrity sha512-HZqEyeVVjzOlfoSUyc+7+ueEJmRgqSuC+hqQOGECYa5JVno4d8eRVuDAMOb87I2LOdg/WoFMcAtaaRq2gpfV/w== - dependencies: - "@algolia/client-common" "4.12.2" - "@algolia/client-search" "4.12.2" - "@algolia/transporter" "4.12.2" - -"@algolia/client-analytics@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.12.2.tgz#741115db1af7db9526acdd702890480480dc09ce" - integrity sha512-7ktimzesu+vk3l+eG9w/nQh6/9AoIieCKmoiRIguKh6okGsaSBrcTHvUwIQEIiliqPuAFBk2M8eXYFqOZzwCZw== - dependencies: - "@algolia/client-common" "4.12.2" - "@algolia/client-search" "4.12.2" - "@algolia/requester-common" "4.12.2" - "@algolia/transporter" "4.12.2" - -"@algolia/client-common@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.12.2.tgz#88ffd3ddececdc5f343a4a9cb1f6c4058fe780c1" - integrity sha512-+dTicT1lklwOpeoiDspUoRSQYHhrr2IzllrX89/WuTPEBm2eww1xurqrSTQYC0MuVeX1s9/i4k34Q0ZnspypWg== - dependencies: - "@algolia/requester-common" "4.12.2" - "@algolia/transporter" "4.12.2" - -"@algolia/client-personalization@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.12.2.tgz#5aa1d2a4bbc64559a98bb6d029dda59dbc86e490" - integrity sha512-JBW3vYFGIm5sAAy3cLUdmUCpmSAdreo5S1fERg7xgF6KyxGrwyy5BViTNWrOKG+av2yusk1wKydOYJ1Fbpbaxw== - dependencies: - "@algolia/client-common" "4.12.2" - "@algolia/requester-common" "4.12.2" - "@algolia/transporter" "4.12.2" - -"@algolia/client-search@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.12.2.tgz#940dd07ae4fa7aa86e382ecaf0a82445010b1b4c" - integrity sha512-JIqi14TgfEqAooNbSPBC1ZCk3Pnviqlaz9KofAqWBxSRTpPUFnU/XQCU5ihR0PC68SFVDnU/Y9cak/XotXPUeg== - dependencies: - "@algolia/client-common" "4.12.2" - "@algolia/requester-common" "4.12.2" - "@algolia/transporter" "4.12.2" +"@algolia/cache-browser-local-storage@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.13.0.tgz#f8aa4fe31104b19d616ea392f9ed5c2ea847d964" + integrity sha512-nj1vHRZauTqP/bluwkRIgEADEimqojJgoTRCel5f6q8WCa9Y8QeI4bpDQP28FoeKnDRYa3J5CauDlN466jqRhg== + dependencies: + "@algolia/cache-common" "4.13.0" + +"@algolia/cache-common@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.13.0.tgz#27b83fd3939d08d72261b36a07eeafc4cb4d2113" + integrity sha512-f9mdZjskCui/dA/fA/5a+6hZ7xnHaaZI5tM/Rw9X8rRB39SUlF/+o3P47onZ33n/AwkpSbi5QOyhs16wHd55kA== + +"@algolia/cache-in-memory@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.13.0.tgz#10801a74550cbabb64b59ff08c56bce9c278ff2d" + integrity sha512-hHdc+ahPiMM92CQMljmObE75laYzNFYLrNOu0Q3/eyvubZZRtY2SUsEEgyUEyzXruNdzrkcDxFYa7YpWBJYHAg== + dependencies: + "@algolia/cache-common" "4.13.0" + +"@algolia/client-account@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.13.0.tgz#f8646dd40d1e9e3353e10abbd5d6c293ea92a8e2" + integrity sha512-FzFqFt9b0g/LKszBDoEsW+dVBuUe1K3scp2Yf7q6pgHWM1WqyqUlARwVpLxqyc+LoyJkTxQftOKjyFUqddnPKA== + dependencies: + "@algolia/client-common" "4.13.0" + "@algolia/client-search" "4.13.0" + "@algolia/transporter" "4.13.0" + +"@algolia/client-analytics@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.13.0.tgz#a00bd02df45d71becb9dd4c5c993d805f2e1786d" + integrity sha512-klmnoq2FIiiMHImkzOm+cGxqRLLu9CMHqFhbgSy9wtXZrqb8BBUIUE2VyBe7azzv1wKcxZV2RUyNOMpFqmnRZA== + dependencies: + "@algolia/client-common" "4.13.0" + "@algolia/client-search" "4.13.0" + "@algolia/requester-common" "4.13.0" + "@algolia/transporter" "4.13.0" + +"@algolia/client-common@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.13.0.tgz#8bc373d164dbdcce38b4586912bbe162492bcb86" + integrity sha512-GoXfTp0kVcbgfSXOjfrxx+slSipMqGO9WnNWgeMmru5Ra09MDjrcdunsiiuzF0wua6INbIpBQFTC2Mi5lUNqGA== + dependencies: + "@algolia/requester-common" "4.13.0" + "@algolia/transporter" "4.13.0" + +"@algolia/client-personalization@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.13.0.tgz#10fb7af356422551f11a67222b39c52306f1512c" + integrity sha512-KneLz2WaehJmNfdr5yt2HQETpLaCYagRdWwIwkTqRVFCv4DxRQ2ChPVW9jeTj4YfAAhfzE6F8hn7wkQ/Jfj6ZA== + dependencies: + "@algolia/client-common" "4.13.0" + "@algolia/requester-common" "4.13.0" + "@algolia/transporter" "4.13.0" + +"@algolia/client-search@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.13.0.tgz#2d8ff8e755c4a37ec89968f3f9b358eed005c7f0" + integrity sha512-blgCKYbZh1NgJWzeGf+caKE32mo3j54NprOf0LZVCubQb3Kx37tk1Hc8SDs9bCAE8hUvf3cazMPIg7wscSxspA== + dependencies: + "@algolia/client-common" "4.13.0" + "@algolia/requester-common" "4.13.0" + "@algolia/transporter" "4.13.0" "@algolia/events@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@algolia/events/-/events-4.0.1.tgz#fd39e7477e7bc703d7f893b556f676c032af3950" integrity sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ== -"@algolia/logger-common@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.12.2.tgz#cdc9a685d7cf356a4d9e5915f741f1ee1a6baade" - integrity sha512-iOiJAymLjq137G7+8EQuUEkrgta0cZGMg6scp8s4hJ+X6k+6By4nyptdkCWYwKLsW/Xy927QcIhGlkWV78vQIQ== +"@algolia/logger-common@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.13.0.tgz#be2606e71aae618a1ff1ea9a1b5f5a74284b35a8" + integrity sha512-8yqXk7rMtmQJ9wZiHOt/6d4/JDEg5VCk83gJ39I+X/pwUPzIsbKy9QiK4uJ3aJELKyoIiDT1hpYVt+5ia+94IA== -"@algolia/logger-console@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.12.2.tgz#d7348e41378fbab5413cb5f97d8ae2ff378cfdb8" - integrity sha512-veuQZyTSqHoHJtr9mLMnYeal9Mee6hCie4eqY+645VbeOrgT9p/kCMbKg5GLJGoLPlXGu7C0XpHyUj5k7/NQyw== +"@algolia/logger-console@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.13.0.tgz#f28028a760e3d9191e28a10b12925e48f6c9afde" + integrity sha512-YepRg7w2/87L0vSXRfMND6VJ5d6699sFJBRWzZPOlek2p5fLxxK7O0VncYuc/IbVHEgeApvgXx0WgCEa38GVuQ== dependencies: - "@algolia/logger-common" "4.12.2" + "@algolia/logger-common" "4.13.0" -"@algolia/requester-browser-xhr@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.12.2.tgz#abfcb1901602ccdf51879b10d914208b776aa418" - integrity sha512-FpFdHNd81tS3zj6Glqd+lt+RV0ljPExKtx+QB+gani6HWZ9YlSCM+Zl82T4ibxN+hmkrMeAyT+TMzS0jiGhGyQ== +"@algolia/requester-browser-xhr@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.13.0.tgz#e2483f4e8d7f09e27cd0daf6c77711d15c5a919f" + integrity sha512-Dj+bnoWR5MotrnjblzGKZ2kCdQi2cK/VzPURPnE616NU/il7Ypy6U6DLGZ/ZYz+tnwPa0yypNf21uqt84fOgrg== dependencies: - "@algolia/requester-common" "4.12.2" + "@algolia/requester-common" "4.13.0" -"@algolia/requester-common@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.12.2.tgz#6d6181fb961205695bf535e108d2e5be8f8c9047" - integrity sha512-4szj/lvDQf/u8EyyRBBRZD1ZkKDyLBbckLj7meQDlnbfwnW1UpLwpB2l3XJ9wDmDSftGxUCeTl5oMFe4z9OEvQ== +"@algolia/requester-common@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.13.0.tgz#47fb3464cfb26b55ba43676d13f295d812830596" + integrity sha512-BRTDj53ecK+gn7ugukDWOOcBRul59C4NblCHqj4Zm5msd5UnHFjd/sGX+RLOEoFMhetILAnmg6wMrRrQVac9vw== -"@algolia/requester-node-http@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.12.2.tgz#f91e749ee6854c944cc741f13c539dff23363f67" - integrity sha512-UXfJNZt2KMwjBjiOa3cJ/PyoXWZa/F1vy6rdyG4xQeZDcLbqKP3O2b+bOJcGPmFbmdwBhtAyMVLt+hvAvAVfOw== +"@algolia/requester-node-http@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.13.0.tgz#7d981bbd31492f51dd11820a665f9d8906793c37" + integrity sha512-9b+3O4QFU4azLhGMrZAr/uZPydvzOR4aEZfSL8ZrpLZ7fbbqTO0S/5EVko+QIgglRAtVwxvf8UJ1wzTD2jvKxQ== dependencies: - "@algolia/requester-common" "4.12.2" + "@algolia/requester-common" "4.13.0" -"@algolia/transporter@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.12.2.tgz#60189b626b170f3386deb1d7a0a1e70ed8156864" - integrity sha512-PUq79if4CukXsm27ymTQ3eD3juSvMcyJmt6mxCkSFE0zQRL4ert61HBlNH6S9y/quUVe3g7oggfHq3d5pdpqZA== +"@algolia/transporter@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.13.0.tgz#f6379e5329efa2127da68c914d1141f5f21dbd07" + integrity sha512-8tSQYE+ykQENAdeZdofvtkOr5uJ9VcQSWgRhQ9h01AehtBIPAczk/b2CLrMsw5yQZziLs5cZ3pJ3478yI+urhA== dependencies: - "@algolia/cache-common" "4.12.2" - "@algolia/logger-common" "4.12.2" - "@algolia/requester-common" "4.12.2" + "@algolia/cache-common" "4.13.0" + "@algolia/logger-common" "4.13.0" + "@algolia/requester-common" "4.13.0" "@ampproject/remapping@^2.1.0": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34" - integrity sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg== + version "2.2.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" + integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== dependencies: - "@jridgewell/trace-mapping" "^0.3.0" + "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/trace-mapping" "^0.3.9" "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.8.3": version "7.16.7" @@ -144,10 +145,10 @@ dependencies: "@babel/highlight" "^7.16.7" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.4", "@babel/compat-data@^7.16.8", "@babel/compat-data@^7.17.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.0.tgz#86850b8597ea6962089770952075dcaabb8dba34" - integrity sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng== +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.17.0", "@babel/compat-data@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.10.tgz#711dc726a492dfc8be8220028b1b92482362baab" + integrity sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw== "@babel/core@7.12.9": version "7.12.9" @@ -171,35 +172,35 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.15.5", "@babel/core@^7.17.5": - version "7.17.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.5.tgz#6cd2e836058c28f06a4ca8ee7ed955bbf37c8225" - integrity sha512-/BBMw4EvjmyquN5O+t5eh0+YqB3XXJkYD2cjKpYtWOfFy4lQ4UozNSmxAcWT8r2XtZs0ewG+zrfsqeR15i1ajA== +"@babel/core@^7.15.5", "@babel/core@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.10.tgz#74ef0fbf56b7dfc3f198fc2d927f4f03e12f4b05" + integrity sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.3" - "@babel/helper-compilation-targets" "^7.16.7" - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helpers" "^7.17.2" - "@babel/parser" "^7.17.3" + "@babel/generator" "^7.17.10" + "@babel/helper-compilation-targets" "^7.17.10" + "@babel/helper-module-transforms" "^7.17.7" + "@babel/helpers" "^7.17.9" + "@babel/parser" "^7.17.10" "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.3" - "@babel/types" "^7.17.0" + "@babel/traverse" "^7.17.10" + "@babel/types" "^7.17.10" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" - json5 "^2.1.2" + json5 "^2.2.1" semver "^6.3.0" -"@babel/generator@^7.12.5", "@babel/generator@^7.17.3": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.3.tgz#a2c30b0c4f89858cb87050c3ffdfd36bdf443200" - integrity sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg== +"@babel/generator@^7.12.5", "@babel/generator@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.10.tgz#c281fa35b0c349bbe9d02916f4ae08fc85ed7189" + integrity sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg== dependencies: - "@babel/types" "^7.17.0" + "@babel/types" "^7.17.10" + "@jridgewell/gen-mapping" "^0.1.0" jsesc "^2.5.1" - source-map "^0.5.0" "@babel/helper-annotate-as-pure@^7.16.7": version "7.16.7" @@ -216,30 +217,30 @@ "@babel/helper-explode-assignable-expression" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz#06e66c5f299601e6c7da350049315e83209d551b" - integrity sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA== +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz#09c63106d47af93cf31803db6bc49fef354e2ebe" + integrity sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ== dependencies: - "@babel/compat-data" "^7.16.4" + "@babel/compat-data" "^7.17.10" "@babel/helper-validator-option" "^7.16.7" - browserslist "^4.17.5" + browserslist "^4.20.2" semver "^6.3.0" "@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.6": - version "7.17.6" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz#3778c1ed09a7f3e65e6d6e0f6fbfcc53809d92c9" - integrity sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg== + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz#71835d7fb9f38bd9f1378e40a4c0902fdc2ea49d" + integrity sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-member-expression-to-functions" "^7.17.7" "@babel/helper-optimise-call-expression" "^7.16.7" "@babel/helper-replace-supers" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" -"@babel/helper-create-regexp-features-plugin@^7.16.7": +"@babel/helper-create-regexp-features-plugin@^7.16.7", "@babel/helper-create-regexp-features-plugin@^7.17.0": version "7.17.0" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz#1dcc7d40ba0c6b6b25618997c5dbfd310f186fe1" integrity sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA== @@ -275,21 +276,13 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-function-name@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" - integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA== +"@babel/helper-function-name@^7.16.7", "@babel/helper-function-name@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12" + integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg== dependencies: - "@babel/helper-get-function-arity" "^7.16.7" "@babel/template" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/helper-get-function-arity@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" - integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw== - dependencies: - "@babel/types" "^7.16.7" + "@babel/types" "^7.17.0" "@babel/helper-hoist-variables@^7.16.7": version "7.16.7" @@ -298,12 +291,12 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-member-expression-to-functions@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz#42b9ca4b2b200123c3b7e726b0ae5153924905b0" - integrity sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q== +"@babel/helper-member-expression-to-functions@^7.16.7", "@babel/helper-member-expression-to-functions@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4" + integrity sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw== dependencies: - "@babel/types" "^7.16.7" + "@babel/types" "^7.17.0" "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7": version "7.16.7" @@ -312,14 +305,14 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.16.7": - version "7.17.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.6.tgz#3c3b03cc6617e33d68ef5a27a67419ac5199ccd0" - integrity sha512-2ULmRdqoOMpdvkbT8jONrZML/XALfzxlb052bldftkicAUy8AxSCkD5trDPQcwHNmolcl7wP6ehNqMlyUw6AaA== +"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.16.7", "@babel/helper-module-transforms@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz#3943c7f777139e7954a5355c815263741a9c1cbd" + integrity sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw== dependencies: "@babel/helper-environment-visitor" "^7.16.7" "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-simple-access" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" "@babel/helper-split-export-declaration" "^7.16.7" "@babel/helper-validator-identifier" "^7.16.7" "@babel/template" "^7.16.7" @@ -363,12 +356,12 @@ "@babel/traverse" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/helper-simple-access@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz#d656654b9ea08dbb9659b69d61063ccd343ff0f7" - integrity sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g== +"@babel/helper-simple-access@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz#aaa473de92b7987c6dfa7ce9a7d9674724823367" + integrity sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA== dependencies: - "@babel/types" "^7.16.7" + "@babel/types" "^7.17.0" "@babel/helper-skip-transparent-expression-wrappers@^7.16.0": version "7.16.0" @@ -404,28 +397,28 @@ "@babel/traverse" "^7.16.8" "@babel/types" "^7.16.8" -"@babel/helpers@^7.12.5", "@babel/helpers@^7.17.2": - version "7.17.2" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.2.tgz#23f0a0746c8e287773ccd27c14be428891f63417" - integrity sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ== +"@babel/helpers@^7.12.5", "@babel/helpers@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.9.tgz#b2af120821bfbe44f9907b1826e168e819375a1a" + integrity sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q== dependencies: "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.0" + "@babel/traverse" "^7.17.9" "@babel/types" "^7.17.0" "@babel/highlight@^7.16.7": - version "7.16.10" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" - integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw== + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.9.tgz#61b2ee7f32ea0454612def4fccdae0de232b73e3" + integrity sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg== dependencies: "@babel/helper-validator-identifier" "^7.16.7" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.12.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.3": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.3.tgz#b07702b982990bf6fdc1da5049a23fece4c5c3d0" - integrity sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA== +"@babel/parser@^7.12.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.10.tgz#873b16db82a8909e0fbd7f115772f4b739f6ce78" + integrity sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": version "7.16.7" @@ -460,7 +453,7 @@ "@babel/helper-create-class-features-plugin" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-proposal-class-static-block@^7.16.7": +"@babel/plugin-proposal-class-static-block@^7.17.6": version "7.17.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz#164e8fd25f0d80fa48c5a4d1438a6629325ad83c" integrity sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA== @@ -526,7 +519,7 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-transform-parameters" "^7.12.1" -"@babel/plugin-proposal-object-rest-spread@^7.16.7": +"@babel/plugin-proposal-object-rest-spread@^7.17.3": version "7.17.3" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz#d9eb649a54628a51701aef7e0ea3d17e2b9dd390" integrity sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw== @@ -693,9 +686,9 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-typescript@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz#39c9b55ee153151990fb038651d58d3fd03f98f8" - integrity sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A== + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.10.tgz#80031e6042cad6a95ed753f672ebd23c30933195" + integrity sha512-xJefea1DWXW09pW4Tm9bjwVlPDyYA2it3fWlmEjpYz6alPvTUjL0EOzNzI/FEOyI3r4/J7uVH5UqKgl1TQ5hqQ== dependencies: "@babel/helper-plugin-utils" "^7.16.7" @@ -750,10 +743,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-destructuring@^7.16.7": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.3.tgz#c445f75819641788a27a0a3a759d9df911df6abc" - integrity sha512-dDFzegDYKlPqa72xIlbmSkly5MluLoaC1JswABGktyt6NTXSBcUuse/kWE/wvKFWJHPETpi158qJZFS3JmykJg== +"@babel/plugin-transform-destructuring@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz#49dc2675a7afa9a5e4c6bdee636061136c3408d1" + integrity sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ== dependencies: "@babel/helper-plugin-utils" "^7.16.7" @@ -819,23 +812,23 @@ "@babel/helper-plugin-utils" "^7.16.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz#cdee19aae887b16b9d331009aa9a219af7c86afe" - integrity sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA== +"@babel/plugin-transform-modules-commonjs@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz#274be1a2087beec0254d4abd4d86e52442e1e5b6" + integrity sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw== dependencies: - "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-module-transforms" "^7.17.7" "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-simple-access" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz#887cefaef88e684d29558c2b13ee0563e287c2d7" - integrity sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw== +"@babel/plugin-transform-modules-systemjs@^7.17.8": + version "7.17.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz#81fd834024fae14ea78fbe34168b042f38703859" + integrity sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw== dependencies: "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-module-transforms" "^7.17.7" "@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-validator-identifier" "^7.16.7" babel-plugin-dynamic-import-node "^2.3.3" @@ -848,12 +841,12 @@ "@babel/helper-module-transforms" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-named-capturing-groups-regex@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz#7f860e0e40d844a02c9dcf9d84965e7dfd666252" - integrity sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw== +"@babel/plugin-transform-named-capturing-groups-regex@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.10.tgz#715dbcfafdb54ce8bccd3d12e8917296a4ba66a4" + integrity sha512-v54O6yLaJySCs6mGzaVOUw9T967GnH38T6CQSAtnzdNPwu84l2qAjssKzo/WSO8Yi7NF+7ekm5cVbF/5qiIgNA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-create-regexp-features-plugin" "^7.17.0" "@babel/plugin-transform-new-target@^7.16.7": version "7.16.7" @@ -924,12 +917,12 @@ "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-regenerator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz#9e7576dc476cb89ccc5096fff7af659243b4adeb" - integrity sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q== +"@babel/plugin-transform-regenerator@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz#0a33c3a61cf47f45ed3232903683a0afd2d3460c" + integrity sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ== dependencies: - regenerator-transform "^0.14.2" + regenerator-transform "^0.15.0" "@babel/plugin-transform-reserved-words@^7.16.7": version "7.16.7" @@ -938,10 +931,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-runtime@^7.17.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz#0a2e08b5e2b2d95c4b1d3b3371a2180617455b70" - integrity sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A== +"@babel/plugin-transform-runtime@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.10.tgz#b89d821c55d61b5e3d3c3d1d636d8d5a81040ae1" + integrity sha512-6jrMilUAJhktTr56kACL8LnWC5hx3Lf27BS0R0DSyW/OoJfb/iTHeE96V3b1dgKG3FSFdd/0culnYWMkjcKCig== dependencies: "@babel/helper-module-imports" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" @@ -1010,27 +1003,27 @@ "@babel/helper-create-regexp-features-plugin" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/preset-env@^7.15.6", "@babel/preset-env@^7.16.11": - version "7.16.11" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.11.tgz#5dd88fd885fae36f88fd7c8342475c9f0abe2982" - integrity sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g== +"@babel/preset-env@^7.15.6", "@babel/preset-env@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.17.10.tgz#a81b093669e3eb6541bb81a23173c5963c5de69c" + integrity sha512-YNgyBHZQpeoBSRBg0xixsZzfT58Ze1iZrajvv0lJc70qDDGuGfonEnMGfWeSY0mQ3JTuCWFbMkzFRVafOyJx4g== dependencies: - "@babel/compat-data" "^7.16.8" - "@babel/helper-compilation-targets" "^7.16.7" + "@babel/compat-data" "^7.17.10" + "@babel/helper-compilation-targets" "^7.17.10" "@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-validator-option" "^7.16.7" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.7" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.7" "@babel/plugin-proposal-async-generator-functions" "^7.16.8" "@babel/plugin-proposal-class-properties" "^7.16.7" - "@babel/plugin-proposal-class-static-block" "^7.16.7" + "@babel/plugin-proposal-class-static-block" "^7.17.6" "@babel/plugin-proposal-dynamic-import" "^7.16.7" "@babel/plugin-proposal-export-namespace-from" "^7.16.7" "@babel/plugin-proposal-json-strings" "^7.16.7" "@babel/plugin-proposal-logical-assignment-operators" "^7.16.7" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.7" "@babel/plugin-proposal-numeric-separator" "^7.16.7" - "@babel/plugin-proposal-object-rest-spread" "^7.16.7" + "@babel/plugin-proposal-object-rest-spread" "^7.17.3" "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" "@babel/plugin-proposal-optional-chaining" "^7.16.7" "@babel/plugin-proposal-private-methods" "^7.16.11" @@ -1056,7 +1049,7 @@ "@babel/plugin-transform-block-scoping" "^7.16.7" "@babel/plugin-transform-classes" "^7.16.7" "@babel/plugin-transform-computed-properties" "^7.16.7" - "@babel/plugin-transform-destructuring" "^7.16.7" + "@babel/plugin-transform-destructuring" "^7.17.7" "@babel/plugin-transform-dotall-regex" "^7.16.7" "@babel/plugin-transform-duplicate-keys" "^7.16.7" "@babel/plugin-transform-exponentiation-operator" "^7.16.7" @@ -1065,15 +1058,15 @@ "@babel/plugin-transform-literals" "^7.16.7" "@babel/plugin-transform-member-expression-literals" "^7.16.7" "@babel/plugin-transform-modules-amd" "^7.16.7" - "@babel/plugin-transform-modules-commonjs" "^7.16.8" - "@babel/plugin-transform-modules-systemjs" "^7.16.7" + "@babel/plugin-transform-modules-commonjs" "^7.17.9" + "@babel/plugin-transform-modules-systemjs" "^7.17.8" "@babel/plugin-transform-modules-umd" "^7.16.7" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.8" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.17.10" "@babel/plugin-transform-new-target" "^7.16.7" "@babel/plugin-transform-object-super" "^7.16.7" "@babel/plugin-transform-parameters" "^7.16.7" "@babel/plugin-transform-property-literals" "^7.16.7" - "@babel/plugin-transform-regenerator" "^7.16.7" + "@babel/plugin-transform-regenerator" "^7.17.9" "@babel/plugin-transform-reserved-words" "^7.16.7" "@babel/plugin-transform-shorthand-properties" "^7.16.7" "@babel/plugin-transform-spread" "^7.16.7" @@ -1083,11 +1076,11 @@ "@babel/plugin-transform-unicode-escapes" "^7.16.7" "@babel/plugin-transform-unicode-regex" "^7.16.7" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.16.8" + "@babel/types" "^7.17.10" babel-plugin-polyfill-corejs2 "^0.3.0" babel-plugin-polyfill-corejs3 "^0.5.0" babel-plugin-polyfill-regenerator "^0.3.0" - core-js-compat "^3.20.2" + core-js-compat "^3.22.1" semver "^6.3.0" "@babel/preset-modules@^0.1.5": @@ -1122,18 +1115,18 @@ "@babel/helper-validator-option" "^7.16.7" "@babel/plugin-transform-typescript" "^7.16.7" -"@babel/runtime-corejs3@^7.17.2": - version "7.17.2" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.17.2.tgz#fdca2cd05fba63388babe85d349b6801b008fd13" - integrity sha512-NcKtr2epxfIrNM4VOmPKO46TvDMCBhgi2CrSHaEarrz+Plk2K5r9QemmOFTGpZaoKnWoGH5MO+CzeRsih/Fcgg== +"@babel/runtime-corejs3@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.17.9.tgz#3d02d0161f0fbf3ada8e88159375af97690f4055" + integrity sha512-WxYHHUWF2uZ7Hp1K+D1xQgbgkGUfA+5UPOegEXGt2Y5SMog/rYCVaifLZDbw8UkNXozEqqrZTy6bglL7xTaCOw== dependencies: core-js-pure "^3.20.2" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.17.2", "@babel/runtime@^7.8.4": - version "7.17.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.2.tgz#66f68591605e59da47523c631416b18508779941" - integrity sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw== +"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.17.9", "@babel/runtime@^7.8.4": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72" + integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg== dependencies: regenerator-runtime "^0.13.4" @@ -1146,30 +1139,35 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.0", "@babel/traverse@^7.17.3": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57" - integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw== +"@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.10", "@babel/traverse@^7.17.3", "@babel/traverse@^7.17.9": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.10.tgz#1ee1a5ac39f4eac844e6cf855b35520e5eb6f8b5" + integrity sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw== dependencies: "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.3" + "@babel/generator" "^7.17.10" "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" + "@babel/helper-function-name" "^7.17.9" "@babel/helper-hoist-variables" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.17.3" - "@babel/types" "^7.17.0" + "@babel/parser" "^7.17.10" + "@babel/types" "^7.17.10" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.12.7", "@babel/types@^7.15.6", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.4.4": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" - integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== +"@babel/types@^7.12.7", "@babel/types@^7.15.6", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.10", "@babel/types@^7.4.4": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.10.tgz#d35d7b4467e439fcf06d195f8100e0fea7fc82c4" + integrity sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A== dependencies: "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + "@docsearch/css@3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.0.0.tgz#fe57b474802ffd706d3246eab25d52fac8aa3698" @@ -1185,64 +1183,62 @@ "@docsearch/css" "3.0.0" algoliasearch "^4.0.0" -"@docusaurus/core@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.0.0-beta.17.tgz#f631aae04405de42a428a31928998242cd1d7b77" - integrity sha512-iNdW7CsmHNOgc4PxD9BFxa+MD8+i7ln7erOBkF3FSMMPnsKUeVqsR3rr31aLmLZRlTXMITSPLxlXwtBZa3KPCw== +"@docusaurus/core@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.0.0-beta.20.tgz#cf4aeeccecacb547a6fb42340c83bed0cccb57c0" + integrity sha512-a3UgZ4lIcIOoZd4j9INqVkWSXEDxR7EicJXt8eq2whg4N5hKGqLHoDSnWfrVSPQn4NoG5T7jhPypphSoysImfQ== dependencies: - "@babel/core" "^7.17.5" - "@babel/generator" "^7.17.3" + "@babel/core" "^7.17.10" + "@babel/generator" "^7.17.10" "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-transform-runtime" "^7.17.0" - "@babel/preset-env" "^7.16.11" + "@babel/plugin-transform-runtime" "^7.17.10" + "@babel/preset-env" "^7.17.10" "@babel/preset-react" "^7.16.7" "@babel/preset-typescript" "^7.16.7" - "@babel/runtime" "^7.17.2" - "@babel/runtime-corejs3" "^7.17.2" - "@babel/traverse" "^7.17.3" - "@docusaurus/cssnano-preset" "2.0.0-beta.17" - "@docusaurus/logger" "2.0.0-beta.17" - "@docusaurus/mdx-loader" "2.0.0-beta.17" + "@babel/runtime" "^7.17.9" + "@babel/runtime-corejs3" "^7.17.9" + "@babel/traverse" "^7.17.10" + "@docusaurus/cssnano-preset" "2.0.0-beta.20" + "@docusaurus/logger" "2.0.0-beta.20" + "@docusaurus/mdx-loader" "2.0.0-beta.20" "@docusaurus/react-loadable" "5.5.2" - "@docusaurus/utils" "2.0.0-beta.17" - "@docusaurus/utils-common" "2.0.0-beta.17" - "@docusaurus/utils-validation" "2.0.0-beta.17" - "@slorber/static-site-generator-webpack-plugin" "^4.0.1" + "@docusaurus/utils" "2.0.0-beta.20" + "@docusaurus/utils-common" "2.0.0-beta.20" + "@docusaurus/utils-validation" "2.0.0-beta.20" + "@slorber/static-site-generator-webpack-plugin" "^4.0.4" "@svgr/webpack" "^6.2.1" - autoprefixer "^10.4.2" - babel-loader "^8.2.3" + autoprefixer "^10.4.5" + babel-loader "^8.2.5" babel-plugin-dynamic-import-node "2.3.0" boxen "^6.2.1" chokidar "^3.5.3" - clean-css "^5.2.4" - cli-table3 "^0.6.1" + clean-css "^5.3.0" + cli-table3 "^0.6.2" combine-promises "^1.1.0" commander "^5.1.0" copy-webpack-plugin "^10.2.4" - core-js "^3.21.1" - css-loader "^6.6.0" + core-js "^3.22.3" + css-loader "^6.7.1" css-minimizer-webpack-plugin "^3.4.1" - cssnano "^5.0.17" + cssnano "^5.1.7" del "^6.0.0" detect-port "^1.3.0" escape-html "^1.0.3" eta "^1.12.3" file-loader "^6.2.0" - fs-extra "^10.0.1" + fs-extra "^10.1.0" html-minifier-terser "^6.1.0" - html-tags "^3.1.0" + html-tags "^3.2.0" html-webpack-plugin "^5.5.0" import-fresh "^3.3.0" - is-root "^2.1.0" leven "^3.1.0" lodash "^4.17.21" - mini-css-extract-plugin "^2.5.3" - nprogress "^0.2.0" - postcss "^8.4.7" + mini-css-extract-plugin "^2.6.0" + postcss "^8.4.13" postcss-loader "^6.2.1" prompts "^2.4.2" - react-dev-utils "^12.0.0" - react-helmet-async "^1.2.3" + react-dev-utils "^12.0.1" + react-helmet-async "^1.3.0" react-loadable "npm:@docusaurus/react-loadable@5.5.2" react-loadable-ssr-addon-v5-slorber "^1.0.1" react-router "^5.2.0" @@ -1250,183 +1246,184 @@ react-router-dom "^5.2.0" remark-admonitions "^1.2.1" rtl-detect "^1.0.4" - semver "^7.3.4" + semver "^7.3.7" serve-handler "^6.1.3" shelljs "^0.8.5" terser-webpack-plugin "^5.3.1" - tslib "^2.3.1" + tslib "^2.4.0" update-notifier "^5.1.0" url-loader "^4.1.1" wait-on "^6.0.1" - webpack "^5.69.1" + webpack "^5.72.0" webpack-bundle-analyzer "^4.5.0" - webpack-dev-server "^4.7.4" + webpack-dev-server "^4.8.1" webpack-merge "^5.8.0" webpackbar "^5.0.2" -"@docusaurus/cssnano-preset@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.0-beta.17.tgz#f687bc6e5c8cb2139a7830dec757cfcb92dbb681" - integrity sha512-DoBwtLjJ9IY9/lNMHIEdo90L4NDayvU28nLgtjR2Sc6aBIMEB/3a5Ndjehnp+jZAkwcDdNASA86EkZVUyz1O1A== +"@docusaurus/cssnano-preset@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.0-beta.20.tgz#c47722e347fd044f2372e924199eabf61733232f" + integrity sha512-7pfrYuahHl3YYS+gYhbb1YHsq5s5+hk+1KIU7QqNNn4YjrIqAHlOznCQ9XfQfspe9boZmaNFGMZQ1tawNOVLqQ== dependencies: - cssnano-preset-advanced "^5.1.12" - postcss "^8.4.7" + cssnano-preset-advanced "^5.3.3" + postcss "^8.4.13" postcss-sort-media-queries "^4.2.1" -"@docusaurus/logger@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-2.0.0-beta.17.tgz#89c5ace3b4efd5274adb0d8919328892c4466d02" - integrity sha512-F9JDl06/VLg+ylsvnq9NpILSUeWtl0j4H2LtlLzX5gufEL4dGiCMlnUzYdHl7FSHSzYJ0A/R7vu0SYofsexC4w== +"@docusaurus/logger@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-2.0.0-beta.20.tgz#bb49e8516e48082ab96bca11569a18541476d5a6" + integrity sha512-7Rt7c8m3ZM81o5jsm6ENgdbjq/hUICv8Om2i7grynI4GT2aQyFoHcusaNbRji4FZt0DaKT2CQxiAWP8BbD4xzQ== dependencies: chalk "^4.1.2" - tslib "^2.3.1" + tslib "^2.4.0" -"@docusaurus/mdx-loader@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-beta.17.tgz#838f87f4cbf12701c4d8eb11e4f9698fb7155bf8" - integrity sha512-AhJ3GWRmjQYCyINHE595pff5tn3Rt83oGpdev5UT9uvG9lPYPC8nEmh1LI6c0ogfw7YkNznzxWSW4hyyVbYQ3A== +"@docusaurus/mdx-loader@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-beta.20.tgz#7016e8ce7e4a11c9ea458e2236d3c93af71f393f" + integrity sha512-BBuf77sji3JxbCEW7Qsv3CXlgpm+iSLTQn6JUK7x8vJ1JYZ3KJbNgpo9TmxIIltpcvNQ/QOy6dvqrpSStaWmKQ== dependencies: - "@babel/parser" "^7.17.3" - "@babel/traverse" "^7.17.3" - "@docusaurus/logger" "2.0.0-beta.17" - "@docusaurus/utils" "2.0.0-beta.17" + "@babel/parser" "^7.17.10" + "@babel/traverse" "^7.17.10" + "@docusaurus/logger" "2.0.0-beta.20" + "@docusaurus/utils" "2.0.0-beta.20" "@mdx-js/mdx" "^1.6.22" escape-html "^1.0.3" file-loader "^6.2.0" - fs-extra "^10.0.1" + fs-extra "^10.1.0" image-size "^1.0.1" mdast-util-to-string "^2.0.0" - remark-emoji "^2.1.0" + remark-emoji "^2.2.0" stringify-object "^3.3.0" - tslib "^2.3.1" - unist-util-visit "^2.0.2" + tslib "^2.4.0" + unist-util-visit "^2.0.3" url-loader "^4.1.1" - webpack "^5.69.1" + webpack "^5.72.0" -"@docusaurus/module-type-aliases@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.0.0-beta.17.tgz#73f6d34be202ac093e78769ff72613d353087cd7" - integrity sha512-Tu+8geC/wyygBudbSwvWIHEvt5RwyA7dEoE1JmPbgQtmqUxOZ9bgnfemwXpJW5mKuDiJASbN4of1DhbLqf4sPg== +"@docusaurus/module-type-aliases@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.0.0-beta.20.tgz#669605a64b04226c391e0284c44743e137eb2595" + integrity sha512-lUIXLwQEOyYwcb3iCNibPUL6O9ijvYF5xQwehGeVraTEBts/Ch8ZwELFk+XbaGHKh52PiVxuWL2CP4Gdjy5QKw== dependencies: - "@docusaurus/types" "2.0.0-beta.17" + "@docusaurus/types" "2.0.0-beta.20" "@types/react" "*" "@types/react-router-config" "*" "@types/react-router-dom" "*" react-helmet-async "*" -"@docusaurus/plugin-content-blog@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-beta.17.tgz#1d1063bfda78a80d517694567b965d5c3a70479f" - integrity sha512-gcX4UR+WKT4bhF8FICBQHy+ESS9iRMeaglSboTZbA/YHGax/3EuZtcPU3dU4E/HFJeZ866wgUdbLKpIpsZOidg== - dependencies: - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/logger" "2.0.0-beta.17" - "@docusaurus/mdx-loader" "2.0.0-beta.17" - "@docusaurus/utils" "2.0.0-beta.17" - "@docusaurus/utils-common" "2.0.0-beta.17" - "@docusaurus/utils-validation" "2.0.0-beta.17" +"@docusaurus/plugin-content-blog@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-beta.20.tgz#7c0d413ac8df9a422a0b3ddd90b77ec491bbda15" + integrity sha512-6aby36Gmny5h2oo/eEZ2iwVsIlBWbRnNNeqT0BYnJO5aj53iCU/ctFPpJVYcw0l2l8+8ITS70FyePIWEsaZ0jA== + dependencies: + "@docusaurus/core" "2.0.0-beta.20" + "@docusaurus/logger" "2.0.0-beta.20" + "@docusaurus/mdx-loader" "2.0.0-beta.20" + "@docusaurus/utils" "2.0.0-beta.20" + "@docusaurus/utils-common" "2.0.0-beta.20" + "@docusaurus/utils-validation" "2.0.0-beta.20" cheerio "^1.0.0-rc.10" feed "^4.2.2" - fs-extra "^10.0.1" + fs-extra "^10.1.0" lodash "^4.17.21" reading-time "^1.5.0" remark-admonitions "^1.2.1" - tslib "^2.3.1" + tslib "^2.4.0" + unist-util-visit "^2.0.3" utility-types "^3.10.0" - webpack "^5.69.1" - -"@docusaurus/plugin-content-docs@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-beta.17.tgz#97f13bb458e165224db6867836e8e9637ea15921" - integrity sha512-YYrBpuRfTfE6NtENrpSHTJ7K7PZifn6j6hcuvdC0QKE+WD8pS+O2/Ws30yoyvHwLnAnfhvaderh1v9Kaa0/ANg== - dependencies: - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/logger" "2.0.0-beta.17" - "@docusaurus/mdx-loader" "2.0.0-beta.17" - "@docusaurus/utils" "2.0.0-beta.17" - "@docusaurus/utils-validation" "2.0.0-beta.17" + webpack "^5.72.0" + +"@docusaurus/plugin-content-docs@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-beta.20.tgz#2a53b9fc355f45bf7c6917f19be7bfa0698b8b9e" + integrity sha512-XOgwUqXtr/DStpB3azdN6wgkKtQkOXOx1XetORzhHnjihrSMn6daxg+spmcJh1ki/mpT3n7yBbKJxVNo+VB38Q== + dependencies: + "@docusaurus/core" "2.0.0-beta.20" + "@docusaurus/logger" "2.0.0-beta.20" + "@docusaurus/mdx-loader" "2.0.0-beta.20" + "@docusaurus/utils" "2.0.0-beta.20" + "@docusaurus/utils-validation" "2.0.0-beta.20" combine-promises "^1.1.0" - fs-extra "^10.0.1" + fs-extra "^10.1.0" import-fresh "^3.3.0" js-yaml "^4.1.0" lodash "^4.17.21" remark-admonitions "^1.2.1" - tslib "^2.3.1" + tslib "^2.4.0" utility-types "^3.10.0" - webpack "^5.69.1" - -"@docusaurus/plugin-content-pages@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-beta.17.tgz#d5955d3cc23722518a6032f830cf8c7b7aeb3d5a" - integrity sha512-d5x0mXTMJ44ojRQccmLyshYoamFOep2AnBe69osCDnwWMbD3Or3pnc2KMK9N7mVpQFnNFKbHNCLrX3Rv0uwEHA== - dependencies: - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/mdx-loader" "2.0.0-beta.17" - "@docusaurus/utils" "2.0.0-beta.17" - "@docusaurus/utils-validation" "2.0.0-beta.17" - fs-extra "^10.0.1" + webpack "^5.72.0" + +"@docusaurus/plugin-content-pages@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-beta.20.tgz#6a76c7fa049983d2d94d8c4d738802acf01611fe" + integrity sha512-ubY6DG4F0skFKjfNGCbfO34Qf+MZy6C05OtpIYsoA2YU8ADx0nRH7qPgdEkwR3ma860DbY612rleRT13ogSlhg== + dependencies: + "@docusaurus/core" "2.0.0-beta.20" + "@docusaurus/mdx-loader" "2.0.0-beta.20" + "@docusaurus/utils" "2.0.0-beta.20" + "@docusaurus/utils-validation" "2.0.0-beta.20" + fs-extra "^10.1.0" remark-admonitions "^1.2.1" - tslib "^2.3.1" - webpack "^5.69.1" + tslib "^2.4.0" + webpack "^5.72.0" -"@docusaurus/plugin-debug@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.0.0-beta.17.tgz#0185dfd5575aa940443d2cb9fab4bed3308ed3a1" - integrity sha512-p26fjYFRSC0esEmKo/kRrLVwXoFnzPCFDumwrImhPyqfVxbj+IKFaiXkayb2qHnyEGE/1KSDIgRF4CHt/pyhiw== +"@docusaurus/plugin-debug@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.0.0-beta.20.tgz#7c026e81c45fd4f00801a785c928b9e8727a99de" + integrity sha512-acGZmpncPA1XDczpV1ji1ajBCRBY/H2lXN8alSjOB1vh0c/2Qz+KKD05p17lsUbhIyvsnZBa/BaOwtek91Lu7Q== dependencies: - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/utils" "2.0.0-beta.17" - fs-extra "^10.0.1" + "@docusaurus/core" "2.0.0-beta.20" + "@docusaurus/utils" "2.0.0-beta.20" + fs-extra "^10.1.0" react-json-view "^1.21.3" - tslib "^2.3.1" - -"@docusaurus/plugin-google-analytics@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.0-beta.17.tgz#31ca1ef88f0f7874c6e12c642d64abe694494720" - integrity sha512-jvgYIhggYD1W2jymqQVAAyjPJUV1xMCn70bAzaCMxriureMWzhQ/kQMVQpop0ijTMvifOxaV9yTcL1VRXev++A== - dependencies: - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/utils-validation" "2.0.0-beta.17" - tslib "^2.3.1" - -"@docusaurus/plugin-google-gtag@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.0-beta.17.tgz#e6baf8f03cea756ed2259a5356fa689388bc303d" - integrity sha512-1pnWHtIk1Jfeqwvr8PlcPE5SODWT1gW4TI+ptmJbJ296FjjyvL/pG0AcGEJmYLY/OQc3oz0VQ0W2ognw9jmFIw== - dependencies: - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/utils-validation" "2.0.0-beta.17" - tslib "^2.3.1" - -"@docusaurus/plugin-sitemap@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-beta.17.tgz#e1aa67ff09d9145e8e5522c4541bbcdd6365560c" - integrity sha512-19/PaGCsap6cjUPZPGs87yV9e1hAIyd0CTSeVV6Caega8nmOKk20FTrQGFJjZPeX8jvD9QIXcdg6BJnPxcKkaQ== - dependencies: - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/utils" "2.0.0-beta.17" - "@docusaurus/utils-common" "2.0.0-beta.17" - "@docusaurus/utils-validation" "2.0.0-beta.17" - fs-extra "^10.0.1" + tslib "^2.4.0" + +"@docusaurus/plugin-google-analytics@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.0-beta.20.tgz#c1bdbc1239f987f9716fa30c2fd86962c190a765" + integrity sha512-4C5nY25j0R1lntFmpSEalhL7jYA7tWvk0VZObiIxGilLagT/f9gWPQtIjNBe4yzdQvkhiaXpa8xcMcJUAKRJyw== + dependencies: + "@docusaurus/core" "2.0.0-beta.20" + "@docusaurus/utils-validation" "2.0.0-beta.20" + tslib "^2.4.0" + +"@docusaurus/plugin-google-gtag@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.0-beta.20.tgz#7284bcfad9cb4e5d63605e95f6da73ca8ac8f053" + integrity sha512-EMZdiMTNg4NwE60xwjbetcqMDqAOazMTwQAQ4OuNAclv7oh8+VPCvqRF8s8AxCoI2Uqc7vh8yzNUuM307Ne9JA== + dependencies: + "@docusaurus/core" "2.0.0-beta.20" + "@docusaurus/utils-validation" "2.0.0-beta.20" + tslib "^2.4.0" + +"@docusaurus/plugin-sitemap@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-beta.20.tgz#08eada1260cafb273abea33c9c890ab667c7cbd3" + integrity sha512-Rf5a2vOBWjbe7PJJEBDeLZzDA7lsDi+16bqzKN8OKSXlcZLhxjmIpL5NrjANNbpGpL5vbl9z+iqvjbQmZ3QSmA== + dependencies: + "@docusaurus/core" "2.0.0-beta.20" + "@docusaurus/utils" "2.0.0-beta.20" + "@docusaurus/utils-common" "2.0.0-beta.20" + "@docusaurus/utils-validation" "2.0.0-beta.20" + fs-extra "^10.1.0" sitemap "^7.1.1" - tslib "^2.3.1" - -"@docusaurus/preset-classic@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-2.0.0-beta.17.tgz#a8fc3447aa6fe0e5f259d894cc8dd64c049c7605" - integrity sha512-7YUxPEgM09aZWr25/hpDEp1gPl+1KsCPV1ZTRW43sbQ9TinPm+9AKR3rHVDa8ea8MdiS7BpqCVyK+H/eiyQrUw== - dependencies: - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/plugin-content-blog" "2.0.0-beta.17" - "@docusaurus/plugin-content-docs" "2.0.0-beta.17" - "@docusaurus/plugin-content-pages" "2.0.0-beta.17" - "@docusaurus/plugin-debug" "2.0.0-beta.17" - "@docusaurus/plugin-google-analytics" "2.0.0-beta.17" - "@docusaurus/plugin-google-gtag" "2.0.0-beta.17" - "@docusaurus/plugin-sitemap" "2.0.0-beta.17" - "@docusaurus/theme-classic" "2.0.0-beta.17" - "@docusaurus/theme-common" "2.0.0-beta.17" - "@docusaurus/theme-search-algolia" "2.0.0-beta.17" + tslib "^2.4.0" + +"@docusaurus/preset-classic@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-2.0.0-beta.20.tgz#19566be713ce0297834cd999392ea3605bc6f574" + integrity sha512-artUDjiYFIlGd2fxk0iqqcJ5xSCrgormOAoind1c0pn8TRXY1WSCQWYI6p4X24jjhSCzLv0s6Z9PMDyxZdivhg== + dependencies: + "@docusaurus/core" "2.0.0-beta.20" + "@docusaurus/plugin-content-blog" "2.0.0-beta.20" + "@docusaurus/plugin-content-docs" "2.0.0-beta.20" + "@docusaurus/plugin-content-pages" "2.0.0-beta.20" + "@docusaurus/plugin-debug" "2.0.0-beta.20" + "@docusaurus/plugin-google-analytics" "2.0.0-beta.20" + "@docusaurus/plugin-google-gtag" "2.0.0-beta.20" + "@docusaurus/plugin-sitemap" "2.0.0-beta.20" + "@docusaurus/theme-classic" "2.0.0-beta.20" + "@docusaurus/theme-common" "2.0.0-beta.20" + "@docusaurus/theme-search-algolia" "2.0.0-beta.20" "@docusaurus/react-loadable@5.5.2", "react-loadable@npm:@docusaurus/react-loadable@5.5.2": version "5.5.2" @@ -1436,129 +1433,133 @@ "@types/react" "*" prop-types "^15.6.2" -"@docusaurus/theme-classic@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.0.0-beta.17.tgz#1f7a1dd714993819f266ce422d06dd4533d4ab3a" - integrity sha512-xfZ9kpgqo0lP9YO4rJj79wtiQJXU6ARo5wYy10IIwiWN+lg00scJHhkmNV431b05xIUjUr0cKeH9nqZmEsQRKg== - dependencies: - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/plugin-content-blog" "2.0.0-beta.17" - "@docusaurus/plugin-content-docs" "2.0.0-beta.17" - "@docusaurus/plugin-content-pages" "2.0.0-beta.17" - "@docusaurus/theme-common" "2.0.0-beta.17" - "@docusaurus/theme-translations" "2.0.0-beta.17" - "@docusaurus/utils" "2.0.0-beta.17" - "@docusaurus/utils-common" "2.0.0-beta.17" - "@docusaurus/utils-validation" "2.0.0-beta.17" +"@docusaurus/theme-classic@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.0.0-beta.20.tgz#c4c7712c2b35c5654433228729f92ec73e6c598e" + integrity sha512-rs4U68x8Xk6rPsZC/7eaPxCKqzXX1S45FICKmq/IZuaDaQyQIijCvv2ssxYnUyVZUNayZfJK7ZtNu+A0kzYgSQ== + dependencies: + "@docusaurus/core" "2.0.0-beta.20" + "@docusaurus/plugin-content-blog" "2.0.0-beta.20" + "@docusaurus/plugin-content-docs" "2.0.0-beta.20" + "@docusaurus/plugin-content-pages" "2.0.0-beta.20" + "@docusaurus/theme-common" "2.0.0-beta.20" + "@docusaurus/theme-translations" "2.0.0-beta.20" + "@docusaurus/utils" "2.0.0-beta.20" + "@docusaurus/utils-common" "2.0.0-beta.20" + "@docusaurus/utils-validation" "2.0.0-beta.20" "@mdx-js/react" "^1.6.22" clsx "^1.1.1" copy-text-to-clipboard "^3.0.1" - infima "0.2.0-alpha.37" + infima "0.2.0-alpha.39" lodash "^4.17.21" - postcss "^8.4.7" - prism-react-renderer "^1.2.1" - prismjs "^1.27.0" + nprogress "^0.2.0" + postcss "^8.4.13" + prism-react-renderer "^1.3.1" + prismjs "^1.28.0" react-router-dom "^5.2.0" - rtlcss "^3.3.0" + rtlcss "^3.5.0" -"@docusaurus/theme-common@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.0.0-beta.17.tgz#3b71bb8b0973a0cee969a1bb76794c81d597f290" - integrity sha512-LJBDhx+Qexn1JHBqZbE4k+7lBaV1LgpE33enXf43ShB7ebhC91d5HLHhBwgt0pih4+elZU4rG+BG/roAmsNM0g== +"@docusaurus/theme-common@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.0.0-beta.20.tgz#4ec7d77ecd2ade9dad33b8689e3cd51b07e594b0" + integrity sha512-lmdGB3/GQM5z0GH0iHGRXUco4Wfqc6sR5eRKuW4j0sx3+UFVvtbVTTIGt0Cie4Dh6omnFxjPbNDlPDgWr/agVQ== dependencies: - "@docusaurus/module-type-aliases" "2.0.0-beta.17" - "@docusaurus/plugin-content-blog" "2.0.0-beta.17" - "@docusaurus/plugin-content-docs" "2.0.0-beta.17" - "@docusaurus/plugin-content-pages" "2.0.0-beta.17" + "@docusaurus/module-type-aliases" "2.0.0-beta.20" + "@docusaurus/plugin-content-blog" "2.0.0-beta.20" + "@docusaurus/plugin-content-docs" "2.0.0-beta.20" + "@docusaurus/plugin-content-pages" "2.0.0-beta.20" clsx "^1.1.1" parse-numeric-range "^1.3.0" prism-react-renderer "^1.3.1" - tslib "^2.3.1" + tslib "^2.4.0" utility-types "^3.10.0" -"@docusaurus/theme-search-algolia@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-beta.17.tgz#880fb965b71e5aa7f01d456a1a2aa8eb6c244082" - integrity sha512-W12XKM7QC5Jmrec359bJ7aDp5U8DNkCxjVKsMNIs8rDunBoI/N+R35ERJ0N7Bg9ONAWO6o7VkUERQsfGqdvr9w== +"@docusaurus/theme-search-algolia@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-beta.20.tgz#14f2ea376a87d7cfa4840d8c917d1ec62d3a07f7" + integrity sha512-9XAyiXXHgyhDmKXg9RUtnC4WBkYAZUqKT9Ntuk0OaOb4mBwiYUGL74tyP0LLL6T+oa9uEdXiUMlIL1onU8xhvA== dependencies: "@docsearch/react" "^3.0.0" - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/logger" "2.0.0-beta.17" - "@docusaurus/theme-common" "2.0.0-beta.17" - "@docusaurus/theme-translations" "2.0.0-beta.17" - "@docusaurus/utils" "2.0.0-beta.17" - "@docusaurus/utils-validation" "2.0.0-beta.17" - algoliasearch "^4.12.1" - algoliasearch-helper "^3.7.0" + "@docusaurus/core" "2.0.0-beta.20" + "@docusaurus/logger" "2.0.0-beta.20" + "@docusaurus/plugin-content-docs" "2.0.0-beta.20" + "@docusaurus/theme-common" "2.0.0-beta.20" + "@docusaurus/theme-translations" "2.0.0-beta.20" + "@docusaurus/utils" "2.0.0-beta.20" + "@docusaurus/utils-validation" "2.0.0-beta.20" + algoliasearch "^4.13.0" + algoliasearch-helper "^3.8.2" clsx "^1.1.1" eta "^1.12.3" - fs-extra "^10.0.1" + fs-extra "^10.1.0" lodash "^4.17.21" - tslib "^2.3.1" + tslib "^2.4.0" utility-types "^3.10.0" -"@docusaurus/theme-translations@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-2.0.0-beta.17.tgz#a4b84fa63befc11847da471922387aa3eb4e5626" - integrity sha512-oxCX6khjZH3lgdRCL0DH06KkUM/kDr9+lzB35+vY8rpFeQruVgRdi8ekPqG3+Wr0U/N+LMhcYE5BmCb6D0Fv2A== +"@docusaurus/theme-translations@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-2.0.0-beta.20.tgz#dcc7efb43ff110c19736764c287f6c5128a5dbba" + integrity sha512-O7J/4dHcg7Yr+r3ylgtqmtMEz6d5ScpUxBg8nsNTWOCRoGEXNZVmXSd5l6v72KCyxPZpllPrgjmqkL+I19qWiw== dependencies: - fs-extra "^10.0.1" - tslib "^2.3.1" + fs-extra "^10.1.0" + tslib "^2.4.0" -"@docusaurus/types@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.0.0-beta.17.tgz#582e3d961ce4409ed17454669b3f6a7a9f696cdd" - integrity sha512-4o7TXu5sKlQpybfFFtsGUElBXwSpiXKsQyyWaRKj7DRBkvMtkDX6ITZNnZO9+EHfLbP/cfrokB8C/oO7mCQ5BQ== +"@docusaurus/types@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.0.0-beta.20.tgz#069d40cc225141d5c9a85605a1c61a460814bf5d" + integrity sha512-d4ZIpcrzGsUUcZJL3iz8/iSaewobPPiYfn2Lmmv7GTT5ZPtPkOAtR5mE6+LAf/KpjjgqrC7mpwDKADnOL/ic4Q== dependencies: commander "^5.1.0" + history "^4.9.0" joi "^17.6.0" - querystring "0.2.1" + react-helmet-async "^1.3.0" utility-types "^3.10.0" - webpack "^5.69.1" + webpack "^5.72.0" webpack-merge "^5.8.0" -"@docusaurus/utils-common@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.0.0-beta.17.tgz#cefd950a7722f5f702690b4de27ea19fd65f3364" - integrity sha512-90WCVdj6zYzs7neEIS594qfLO78cUL6EVK1CsRHJgVkkGjcYlCQ1NwkyO7bOb+nIAwdJrPJRc2FBSpuEGxPD3w== +"@docusaurus/utils-common@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.0.0-beta.20.tgz#adb914c331d711a3c0ef2ba3f64139acdf4cd781" + integrity sha512-HabHh23vOQn6ygs0PjuCSF/oZaNsYTFsxB2R6EwHNyw01nWgBC3QAcGVmyIWQhlb9p8V3byKgbzVS68hZX5t9A== dependencies: - tslib "^2.3.1" + tslib "^2.4.0" -"@docusaurus/utils-validation@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.0.0-beta.17.tgz#d7dbfc1a29768c37c0d8a6af85eb1bdfef7656df" - integrity sha512-5UjayUP16fDjgd52eSEhL7SlN9x60pIhyS+K7kt7RmpSLy42+4/bSr2pns2VlATmuaoNOO6iIFdB2jgSYJ6SGA== +"@docusaurus/utils-validation@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.0.0-beta.20.tgz#ebf475a4388066bd450877fe920f405c53ff5ad2" + integrity sha512-7MxMoaF4VNAt5vUwvITa6nbkw1tb4WE6hp1VlfIoLCY4D7Wk5cMf1ZFhppCP1UzmPwvFb9zw8fPuvDfB3Tb5nQ== dependencies: - "@docusaurus/logger" "2.0.0-beta.17" - "@docusaurus/utils" "2.0.0-beta.17" + "@docusaurus/logger" "2.0.0-beta.20" + "@docusaurus/utils" "2.0.0-beta.20" joi "^17.6.0" - tslib "^2.3.1" + js-yaml "^4.1.0" + tslib "^2.4.0" -"@docusaurus/utils@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.0.0-beta.17.tgz#6a696e2ec5e50b2271f2d26d31562e9f3e2bc559" - integrity sha512-yRKGdzSc5v6M/6GyQ4omkrAHCleevwKYiIrufCJgRbOtkhYE574d8mIjjirOuA/emcyLxjh+TLtqAA5TwhIryA== +"@docusaurus/utils@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.0.0-beta.20.tgz#d5a9816a328b2ca5e4e1a3fbf267e3674abacd48" + integrity sha512-eUQquakhrbnvhsmx8jRPLgoyjyzMuOhmQC99m7rotar7XOzROpgEpm7+xVaquG5Ha47WkybE3djHJhKNih7GZQ== dependencies: - "@docusaurus/logger" "2.0.0-beta.17" - "@svgr/webpack" "^6.0.0" + "@docusaurus/logger" "2.0.0-beta.20" + "@svgr/webpack" "^6.2.1" file-loader "^6.2.0" - fs-extra "^10.0.1" + fs-extra "^10.1.0" github-slugger "^1.4.0" - globby "^11.0.4" + globby "^11.1.0" gray-matter "^4.0.3" js-yaml "^4.1.0" lodash "^4.17.21" - micromatch "^4.0.4" + micromatch "^4.0.5" resolve-pathname "^3.0.0" shelljs "^0.8.5" - tslib "^2.3.1" + tslib "^2.4.0" url-loader "^4.1.1" - webpack "^5.69.1" + webpack "^5.72.0" "@hapi/hoek@^9.0.0": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.2.1.tgz#9551142a1980503752536b5050fd99f4a7f13b17" - integrity sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw== + version "9.3.0" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" + integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== "@hapi/topo@^5.0.0": version "5.1.0" @@ -1567,24 +1568,42 @@ dependencies: "@hapi/hoek" "^9.0.0" +"@jridgewell/gen-mapping@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" + integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/resolve-uri@^3.0.3": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c" - integrity sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew== + version "3.0.6" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.6.tgz#4ac237f4dabc8dd93330386907b97591801f7352" + integrity sha512-R7xHtBSNm+9SyvpJkdQl+qrM3Hm2fea3Ef197M3mUug+v+yR+Rhfbs7PBtcBUVnIWJ4JcAdjvij+c8hXS9p5aw== + +"@jridgewell/set-array@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.0.tgz#1179863356ac8fbea64a5a4bcde93a4871012c01" + integrity sha512-SfJxIxNVYLTsKwzB3MoOQ1yxf4w/E6MdkvTgrgAt1bfxjSrLUoHMKrDOykwN14q65waezZIdqDneUIPh4/sKxg== "@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.11" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec" - integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg== + version "1.4.12" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.12.tgz#7ed98f6fa525ffb7c56a2cbecb5f7bb91abd2baf" + integrity sha512-az/NhpIwP3K33ILr0T2bso+k2E/SLf8Yidd8mHl0n6sCQ4YdyC8qDhZA6kOPDNDBA56ZnIjngVl0U3jREA0BUA== -"@jridgewell/trace-mapping@^0.3.0": - version "0.3.4" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3" - integrity sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ== +"@jridgewell/trace-mapping@^0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== dependencies: "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" +"@leichtgewicht/ip-codec@^2.0.1": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.3.tgz#0300943770e04231041a51bd39f0439b5c7ab4f0" + integrity sha512-nkalE/f1RvRGChwBnEIoBfSEYOXnCRdleKuv6+lePbMDrMZXeDQnqak5XDOeBgrPPyPfAdcCu/B5z+v3VhplGg== + "@mdx-js/mdx@^1.6.22": version "1.6.22" resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-1.6.22.tgz#8a723157bf90e78f17dc0f27995398e6c731f1ba" @@ -1647,9 +1666,9 @@ integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g== "@sideway/address@^4.1.3": - version "4.1.3" - resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.3.tgz#d93cce5d45c5daec92ad76db492cc2ee3c64ab27" - integrity sha512-8ncEUtmnTsMmL7z1YPB47kPUq7LpKWJNFPsRzHiIajGC5uXlWGn+AmkYPcHNl8S4tcEGx+cnORnNYaw2wvL+LQ== + version "4.1.4" + resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" + integrity sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw== dependencies: "@hapi/hoek" "^9.0.0" @@ -1668,15 +1687,14 @@ resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== -"@slorber/static-site-generator-webpack-plugin@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@slorber/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.1.tgz#0c8852146441aaa683693deaa5aee2f991d94841" - integrity sha512-PSv4RIVO1Y3kvHxjvqeVisk3E9XFoO04uwYBDWe217MFqKspplYswTuKLiJu0aLORQWzuQjfVsSlLPojwfYsLw== +"@slorber/static-site-generator-webpack-plugin@^4.0.4": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@slorber/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.4.tgz#2bf4a2545e027830d2aa5eb950437c26a289b0f1" + integrity sha512-FvMavoWEIePps6/JwGCOLYKCRhuwIHhMtmbKpBFgzNkxwpa/569LfTkrbRk1m1I3n+ezJK4on9E1A6cjuZmD9g== dependencies: bluebird "^3.7.1" cheerio "^0.22.0" - eval "^0.1.4" - url "^0.11.0" + eval "^0.1.8" webpack-sources "^1.4.3" "@svgr/babel-plugin-add-jsx-attribute@^6.0.0": @@ -1769,7 +1787,7 @@ deepmerge "^4.2.2" svgo "^2.5.0" -"@svgr/webpack@^6.0.0", "@svgr/webpack@^6.2.1": +"@svgr/webpack@^6.2.1": version "6.2.1" resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-6.2.1.tgz#ef5d51c1b6be4e7537fb9f76b3f2b2e22b63c58d" integrity sha512-h09ngMNd13hnePwgXa+Y5CgOjzlCvfWLHg+MBnydEedAnuLRzUHUJmGS3o2OsrhxTOOqEsPOFt5v/f6C5Qulcw== @@ -1834,9 +1852,9 @@ "@types/estree" "*" "@types/eslint@*": - version "8.4.1" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.1.tgz#c48251553e8759db9e656de3efc846954ac32304" - integrity sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA== + version "8.4.2" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.2.tgz#48f2ac58ab9c631cb68845c3d956b28f79fad575" + integrity sha512-Z1nseZON+GEnFjJc04sv4NSALGjhFwy6K0HXt7qsn5ArfAKtb63dXNJHf+1YW6IpOIYRBGUbu3GwJdj8DGnCjA== dependencies: "@types/estree" "*" "@types/json-schema" "*" @@ -1883,16 +1901,16 @@ integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== "@types/http-proxy@^1.17.8": - version "1.17.8" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.8.tgz#968c66903e7e42b483608030ee85800f22d03f55" - integrity sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA== + version "1.17.9" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.9.tgz#7f0e7931343761efde1e2bf48c40f02f3f75705a" + integrity sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw== dependencies: "@types/node" "*" "@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" - integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== "@types/mdast@^3.0.0": version "3.0.10" @@ -1907,9 +1925,9 @@ integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== "@types/node@*", "@types/node@^17.0.5": - version "17.0.21" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.21.tgz#864b987c0c68d07b4345845c3e63b75edd143644" - integrity sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ== + version "17.0.31" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.31.tgz#a5bb84ecfa27eec5e1c802c6bbf8139bdb163a5d" + integrity sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q== "@types/parse-json@^4.0.0": version "4.0.0" @@ -1922,9 +1940,9 @@ integrity sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw== "@types/prop-types@*": - version "15.7.4" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" - integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== + version "15.7.5" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" + integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== "@types/qs@*": version "6.9.7" @@ -1963,18 +1981,18 @@ "@types/react" "*" "@types/react@*": - version "17.0.39" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.39.tgz#d0f4cde092502a6db00a1cded6e6bf2abb7633ce" - integrity sha512-UVavlfAxDd/AgAacMa60Azl7ygyQNRwC/DsHZmKgNvPmRR5p70AJ5Q9EAmL2NWOJmeV+vVUI4IAP7GZrN8h8Ug== + version "18.0.8" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.8.tgz#a051eb380a9fbcaa404550543c58e1cf5ce4ab87" + integrity sha512-+j2hk9BzCOrrOSJASi5XiOyBbERk9jG5O73Ya4M0env5Ixi6vUNli4qy994AINcEF+1IEHISYFfIT4zwr++LKw== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" csstype "^3.0.2" -"@types/retry@^0.12.0": - version "0.12.1" - resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.1.tgz#d8f1c0d0dc23afad6dc16a9e993a0865774b4065" - integrity sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g== +"@types/retry@0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" + integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== "@types/sax@^1.2.1": version "1.2.4" @@ -2015,10 +2033,10 @@ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== -"@types/ws@^8.2.2": - version "8.5.2" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.2.tgz#77e0c2e360e9579da930ffcfa53c5975ea3bdd26" - integrity sha512-VXI82ykONr5tacHEojnErTQk+KQSoYbW1NB6iz6wUwrNd+BqfkfggQNoNdCqhJSzbNumShPERbM+Pc5zpfhlbw== +"@types/ws@^8.5.1": + version "8.5.3" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.3.tgz#7d25a1ffbecd3c4f2d35068d0b283c037003274d" + integrity sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w== dependencies: "@types/node" "*" @@ -2172,14 +2190,14 @@ acorn-walk@^8.0.0: integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== acorn@^8.0.4, acorn@^8.4.1, acorn@^8.5.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" - integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== + version "8.7.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" + integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== address@^1.0.1, address@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" - integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== + version "1.2.0" + resolved "https://registry.yarnpkg.com/address/-/address-1.2.0.tgz#d352a62c92fee90f89a693eccd2a8b2139ab02d9" + integrity sha512-tNEZYz5G/zYunxFm7sfhAxkXEuLj3K6BKwv6ZURlsF6yiUQ65z0Q2wZW9L5cPUl9ocofGvXOdFYbFHp0+6MOig== aggregate-error@^3.0.0: version "3.1.0" @@ -2219,41 +2237,41 @@ ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: uri-js "^4.2.2" ajv@^8.0.0, ajv@^8.8.0: - version "8.10.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.10.0.tgz#e573f719bd3af069017e3b66538ab968d040e54d" - integrity sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw== + version "8.11.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" + integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" require-from-string "^2.0.2" uri-js "^4.2.2" -algoliasearch-helper@^3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.7.0.tgz#c0a0493df84d850360f664ad7a9d4fc78a94fd78" - integrity sha512-XJ3QfERBLfeVCyTVx80gon7r3/rgm/CE8Ha1H7cbablRe/X7SfYQ14g/eO+MhjVKIQp+gy9oC6G5ilmLwS1k6w== +algoliasearch-helper@^3.8.2: + version "3.8.2" + resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.8.2.tgz#35726dc6d211f49dbab0bf6d37b4658165539523" + integrity sha512-AXxiF0zT9oYwl8ZBgU/eRXvfYhz7cBA5YrLPlw9inZHdaYF0QEya/f1Zp1mPYMXc1v6VkHwBq4pk6/vayBLICg== dependencies: "@algolia/events" "^4.0.1" -algoliasearch@^4.0.0, algoliasearch@^4.12.1: - version "4.12.2" - resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.12.2.tgz#d7672a15b8fd1b261d9ae193535b68bcb189cfd2" - integrity sha512-bn1P9+V415zeDQJtXn+1SwuwedEAv9/LJAxt8XwR6ygH/sMwaHSm2hpkz8wIbCBt/tKQ43TL672Kyxzv5PwGgQ== - dependencies: - "@algolia/cache-browser-local-storage" "4.12.2" - "@algolia/cache-common" "4.12.2" - "@algolia/cache-in-memory" "4.12.2" - "@algolia/client-account" "4.12.2" - "@algolia/client-analytics" "4.12.2" - "@algolia/client-common" "4.12.2" - "@algolia/client-personalization" "4.12.2" - "@algolia/client-search" "4.12.2" - "@algolia/logger-common" "4.12.2" - "@algolia/logger-console" "4.12.2" - "@algolia/requester-browser-xhr" "4.12.2" - "@algolia/requester-common" "4.12.2" - "@algolia/requester-node-http" "4.12.2" - "@algolia/transporter" "4.12.2" +algoliasearch@^4.0.0, algoliasearch@^4.13.0: + version "4.13.0" + resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.13.0.tgz#e36611fda82b1fc548c156ae7929a7f486e4b663" + integrity sha512-oHv4faI1Vl2s+YC0YquwkK/TsaJs79g2JFg5FDm2rKN12VItPTAeQ7hyJMHarOPPYuCnNC5kixbtcqvb21wchw== + dependencies: + "@algolia/cache-browser-local-storage" "4.13.0" + "@algolia/cache-common" "4.13.0" + "@algolia/cache-in-memory" "4.13.0" + "@algolia/client-account" "4.13.0" + "@algolia/client-analytics" "4.13.0" + "@algolia/client-common" "4.13.0" + "@algolia/client-personalization" "4.13.0" + "@algolia/client-search" "4.13.0" + "@algolia/logger-common" "4.13.0" + "@algolia/logger-console" "4.13.0" + "@algolia/requester-browser-xhr" "4.13.0" + "@algolia/requester-common" "4.13.0" + "@algolia/requester-node-http" "4.13.0" + "@algolia/transporter" "4.13.0" ansi-align@^3.0.0, ansi-align@^3.0.1: version "3.0.1" @@ -2326,7 +2344,7 @@ array-flatten@1.1.1: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= -array-flatten@^2.1.0: +array-flatten@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== @@ -2346,26 +2364,19 @@ asap@~2.0.3: resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= -async@^2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== - dependencies: - lodash "^4.17.14" - at-least-node@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== -autoprefixer@^10.3.7, autoprefixer@^10.4.2: - version "10.4.2" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.2.tgz#25e1df09a31a9fba5c40b578936b90d35c9d4d3b" - integrity sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ== +autoprefixer@^10.3.7, autoprefixer@^10.4.5: + version "10.4.7" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.7.tgz#1db8d195f41a52ca5069b7593be167618edbbedf" + integrity sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA== dependencies: - browserslist "^4.19.1" - caniuse-lite "^1.0.30001297" - fraction.js "^4.1.2" + browserslist "^4.20.3" + caniuse-lite "^1.0.30001335" + fraction.js "^4.2.0" normalize-range "^0.1.2" picocolors "^1.0.0" postcss-value-parser "^4.2.0" @@ -2377,13 +2388,13 @@ axios@^0.25.0: dependencies: follow-redirects "^1.14.7" -babel-loader@^8.2.3: - version "8.2.3" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.3.tgz#8986b40f1a64cacfcb4b8429320085ef68b1342d" - integrity sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw== +babel-loader@^8.2.5: + version "8.2.5" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.5.tgz#d45f585e654d5a5d90f5350a779d7647c5ed512e" + integrity sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ== dependencies: find-cache-dir "^3.3.1" - loader-utils "^1.4.0" + loader-utils "^2.0.0" make-dir "^3.1.0" schema-utils "^2.6.5" @@ -2475,33 +2486,33 @@ bluebird@^3.7.1: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -body-parser@1.19.2: - version "1.19.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.2.tgz#4714ccd9c157d44797b8b5607d72c0b89952f26e" - integrity sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw== +body-parser@1.20.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5" + integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg== dependencies: bytes "3.1.2" content-type "~1.0.4" debug "2.6.9" - depd "~1.1.2" - http-errors "1.8.1" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.9.7" - raw-body "2.4.3" + on-finished "2.4.1" + qs "6.10.3" + raw-body "2.5.1" type-is "~1.6.18" + unpipe "1.0.0" -bonjour@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" - integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= +bonjour-service@^1.0.11: + version "1.0.12" + resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.0.12.tgz#28fbd4683f5f2e36feedb833e24ba661cac960c3" + integrity sha512-pMmguXYCu63Ug37DluMKEHdxc+aaIf/ay4YbF8Gxtba+9d3u+rmEWy61VK3Z3hp8Rskok3BunHYnG0dUHAsblw== dependencies: - array-flatten "^2.1.0" - deep-equal "^1.0.1" + array-flatten "^2.1.2" dns-equal "^1.0.0" - dns-txt "^2.0.2" - multicast-dns "^6.0.1" - multicast-dns-service-types "^1.1.0" + fast-deep-equal "^3.1.3" + multicast-dns "^7.2.4" boolbase@^1.0.0, boolbase@~1.0.0: version "1.0.0" @@ -2544,22 +2555,22 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^3.0.1, braces@~3.0.2: +braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" -browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.17.5, browserslist@^4.18.1, browserslist@^4.19.1: - version "4.19.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.3.tgz#29b7caad327ecf2859485f696f9604214bedd383" - integrity sha512-XK3X4xtKJ+Txj8G5c30B4gsm71s69lqXlkYui4s6EkKxuv49qjYlY6oVd+IFJ73d4YymtM3+djvvt/R/iJwwDg== +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.18.1, browserslist@^4.20.2, browserslist@^4.20.3: + version "4.20.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.3.tgz#eb7572f49ec430e054f56d52ff0ebe9be915f8bf" + integrity sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg== dependencies: - caniuse-lite "^1.0.30001312" - electron-to-chromium "^1.4.71" + caniuse-lite "^1.0.30001332" + electron-to-chromium "^1.4.118" escalade "^3.1.1" - node-releases "^2.0.2" + node-releases "^2.0.3" picocolors "^1.0.0" buffer-from@^1.0.0: @@ -2567,11 +2578,6 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -buffer-indexof@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" - integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== - bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -2595,7 +2601,7 @@ cacheable-request@^6.0.0: normalize-url "^4.1.0" responselike "^1.0.2" -call-bind@^1.0.0, call-bind@^1.0.2: +call-bind@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== @@ -2636,10 +2642,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001297, caniuse-lite@^1.0.30001312: - version "1.0.30001312" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz#e11eba4b87e24d22697dae05455d5aea28550d5f" - integrity sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001332, caniuse-lite@^1.0.30001335: + version "1.0.30001336" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001336.tgz#a9eb13edd2613f418ebc632c8d6c9ab9fde7ccc4" + integrity sha512-/YxSlBmL7iKXTbIJ48IQTnAOBk7XmWsxhBF1PZLOko5Dt9qc4Pl+84lfqG3Tc4EuavurRn1QLoVJGxY2iSycfw== ccount@^1.0.0, ccount@^1.0.3: version "1.1.0" @@ -2679,15 +2685,15 @@ character-reference-invalid@^1.0.0: integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== cheerio-select@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-1.5.0.tgz#faf3daeb31b17c5e1a9dabcee288aaf8aafa5823" - integrity sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg== + version "1.6.0" + resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-1.6.0.tgz#489f36604112c722afa147dedd0d4609c09e1696" + integrity sha512-eq0GdBvxVFbqWgmCm7M3XGs1I8oLy/nExUnh6oLqmBditPO9AqQJrkslDpMun/hZ0yyTs8L0m85OHp4ho6Qm9g== dependencies: - css-select "^4.1.3" - css-what "^5.0.1" + css-select "^4.3.0" + css-what "^6.0.1" domelementtype "^2.2.0" - domhandler "^4.2.0" - domutils "^2.7.0" + domhandler "^4.3.1" + domutils "^2.8.0" cheerio@^0.22.0: version "0.22.0" @@ -2749,10 +2755,10 @@ ci-info@^2.0.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== -clean-css@^5.2.2, clean-css@^5.2.4: - version "5.2.4" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.2.4.tgz#982b058f8581adb2ae062520808fb2429bd487a4" - integrity sha512-nKseG8wCzEuji/4yrgM/5cthL9oTDc5UOQyFMvW/Q53oP6gLH690o1NbuTh6Y18nujr7BxlsFuS7gXLnLzKJGg== +clean-css@^5.2.2, clean-css@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.0.tgz#ad3d8238d5f3549e83d5f87205189494bc7cbb59" + integrity sha512-YYuuxv4H/iNb1Z/5IbMRoxgrzjWGhOEFfd+groZ5dMCVkpENiMZmwspdrzBo9286JjM1gZJPAyL7ZIdzuvu2AQ== dependencies: source-map "~0.6.0" @@ -2771,14 +2777,14 @@ cli-boxes@^3.0.0: resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-3.0.0.tgz#71a10c716feeba005e4504f36329ef0b17cf3145" integrity sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g== -cli-table3@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.1.tgz#36ce9b7af4847f288d3cdd081fbd09bf7bd237b8" - integrity sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA== +cli-table3@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.2.tgz#aaf5df9d8b5bf12634dc8b3040806a0c07120d2a" + integrity sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw== dependencies: string-width "^4.2.0" optionalDependencies: - colors "1.4.0" + "@colors/colors" "1.5.0" clone-deep@^4.0.1: version "4.0.1" @@ -2840,11 +2846,6 @@ colorette@^2.0.10: resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== -colors@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" - integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== - combine-promises@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/combine-promises/-/combine-promises-1.1.0.tgz#72db90743c0ca7aab7d0d8d2052fd7b0f674de71" @@ -2956,10 +2957,10 @@ cookie-signature@1.0.6: resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= -cookie@0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" - integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== copy-text-to-clipboard@^3.0.1: version "3.0.1" @@ -2978,23 +2979,23 @@ copy-webpack-plugin@^10.2.4: schema-utils "^4.0.0" serialize-javascript "^6.0.0" -core-js-compat@^3.20.2, core-js-compat@^3.21.0: - version "3.21.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.21.1.tgz#cac369f67c8d134ff8f9bd1623e3bc2c42068c82" - integrity sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g== +core-js-compat@^3.21.0, core-js-compat@^3.22.1: + version "3.22.4" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.22.4.tgz#d700f451e50f1d7672dcad0ac85d910e6691e579" + integrity sha512-dIWcsszDezkFZrfm1cnB4f/J85gyhiCpxbgBdohWCDtSVuAaChTSpPV7ldOQf/Xds2U5xCIJZOK82G4ZPAIswA== dependencies: - browserslist "^4.19.1" + browserslist "^4.20.3" semver "7.0.0" core-js-pure@^3.20.2: - version "3.21.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.21.1.tgz#8c4d1e78839f5f46208de7230cebfb72bc3bdb51" - integrity sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ== + version "3.22.4" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.22.4.tgz#a992210f4cad8b32786b8654563776c56b0e0d0a" + integrity sha512-4iF+QZkpzIz0prAFuepmxwJ2h5t4agvE8WPYqs2mjLJMNNwJOnpch76w2Q7bUfCPEv/V7wpvOfog0w273M+ZSw== -core-js@^3.21.1: - version "3.21.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.21.1.tgz#f2e0ddc1fc43da6f904706e8e955bc19d06a0d94" - integrity sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig== +core-js@^3.22.3: + version "3.22.4" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.22.4.tgz#f4b3f108d45736935aa028444a69397e40d8c531" + integrity sha512-1uLykR+iOfYja+6Jn/57743gc9n73EWiOnSJJ4ba3B4fOEYDBv25MagmEZBxTp5cWq4b/KPx/l77zgsp28ju4w== core-util-is@~1.0.0: version "1.0.3" @@ -3044,20 +3045,18 @@ crypto-random-string@^2.0.0: resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== -css-declaration-sorter@^6.0.3: - version "6.1.4" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.1.4.tgz#b9bfb4ed9a41f8dcca9bf7184d849ea94a8294b4" - integrity sha512-lpfkqS0fctcmZotJGhnxkIyJWvBXgpyi2wsFd4J8VB7wzyrT6Ch/3Q+FMNJpjK4gu1+GN5khOnpU2ZVKrLbhCw== - dependencies: - timsort "^0.3.0" +css-declaration-sorter@^6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.2.2.tgz#bfd2f6f50002d6a3ae779a87d3a0c5d5b10e0f02" + integrity sha512-Ufadglr88ZLsrvS11gjeu/40Lw74D9Am/Jpr3LlYm5Q4ZP5KdlUhG+6u2EjyXeZcxmZ2h1ebCKngDjolpeLHpg== -css-loader@^6.6.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.6.0.tgz#c792ad5510bd1712618b49381bd0310574fafbd3" - integrity sha512-FK7H2lisOixPT406s5gZM1S3l8GrfhEBT3ZiL2UX1Ng1XWs0y2GPllz/OTyvbaHe12VgQrIXIzuEGVlbUhodqg== +css-loader@^6.7.1: + version "6.7.1" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.7.1.tgz#e98106f154f6e1baf3fc3bc455cb9981c1d5fd2e" + integrity sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw== dependencies: icss-utils "^5.1.0" - postcss "^8.4.5" + postcss "^8.4.7" postcss-modules-extract-imports "^3.0.0" postcss-modules-local-by-default "^4.0.0" postcss-modules-scope "^3.0.0" @@ -3077,14 +3076,14 @@ css-minimizer-webpack-plugin@^3.4.1: serialize-javascript "^6.0.0" source-map "^0.6.1" -css-select@^4.1.3: - version "4.2.1" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.2.1.tgz#9e665d6ae4c7f9d65dbe69d0316e3221fb274cdd" - integrity sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ== +css-select@^4.1.3, css-select@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== dependencies: boolbase "^1.0.0" - css-what "^5.1.0" - domhandler "^4.3.0" + css-what "^6.0.1" + domhandler "^4.3.1" domutils "^2.8.0" nth-check "^2.0.1" @@ -3111,47 +3110,47 @@ css-what@2.1: resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== -css-what@^5.0.1, css-what@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" - integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw== +css-what@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssnano-preset-advanced@^5.1.12: - version "5.2.0" - resolved "https://registry.yarnpkg.com/cssnano-preset-advanced/-/cssnano-preset-advanced-5.2.0.tgz#fc87b7c7327b61306e3e707e2f0fda3fa468f713" - integrity sha512-E7jJoKc2GjZsRLm8wQd2wZa+1a6tslA1elimwpcJTnH6dBQBkjQ8tAwNWUeyT72owYcCNGWTnar60bTnrnEWzw== +cssnano-preset-advanced@^5.3.3: + version "5.3.3" + resolved "https://registry.yarnpkg.com/cssnano-preset-advanced/-/cssnano-preset-advanced-5.3.3.tgz#848422118d7a62b5b29a53edc160f58c7f7f7539" + integrity sha512-AB9SmTSC2Gd8T7PpKUsXFJ3eNsg7dc4CTZ0+XAJ29MNxyJsrCEk7N1lw31bpHrsQH2PVJr21bbWgGAfA9j0dIA== dependencies: autoprefixer "^10.3.7" - cssnano-preset-default "^5.2.0" + cssnano-preset-default "^5.2.7" postcss-discard-unused "^5.1.0" - postcss-merge-idents "^5.1.0" - postcss-reduce-idents "^5.1.0" + postcss-merge-idents "^5.1.1" + postcss-reduce-idents "^5.2.0" postcss-zindex "^5.1.0" -cssnano-preset-default@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.0.tgz#2579d38b9217746f2cf9f938954a91e00418ded6" - integrity sha512-3N5Vcptj2pqVKpHVqH6ezOJvqikR2PdLTbTrsrhF61FbLRQuujAqZ2sKN5rvcMsb7hFjrNnjZT8CGEkxoN/Pwg== +cssnano-preset-default@^5.2.7: + version "5.2.7" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.7.tgz#791e3603fb8f1b46717ac53b47e3c418e950f5f3" + integrity sha512-JiKP38ymZQK+zVKevphPzNSGHSlTI+AOwlasoSRtSVMUU285O7/6uZyd5NbW92ZHp41m0sSHe6JoZosakj63uA== dependencies: - css-declaration-sorter "^6.0.3" + css-declaration-sorter "^6.2.2" cssnano-utils "^3.1.0" postcss-calc "^8.2.3" postcss-colormin "^5.3.0" postcss-convert-values "^5.1.0" - postcss-discard-comments "^5.1.0" + postcss-discard-comments "^5.1.1" postcss-discard-duplicates "^5.1.0" - postcss-discard-empty "^5.1.0" + postcss-discard-empty "^5.1.1" postcss-discard-overridden "^5.1.0" - postcss-merge-longhand "^5.1.0" - postcss-merge-rules "^5.1.0" + postcss-merge-longhand "^5.1.4" + postcss-merge-rules "^5.1.1" postcss-minify-font-values "^5.1.0" - postcss-minify-gradients "^5.1.0" - postcss-minify-params "^5.1.0" + postcss-minify-gradients "^5.1.1" + postcss-minify-params "^5.1.2" postcss-minify-selectors "^5.2.0" postcss-normalize-charset "^5.1.0" postcss-normalize-display-values "^5.1.0" @@ -3161,24 +3160,24 @@ cssnano-preset-default@^5.2.0: postcss-normalize-timing-functions "^5.1.0" postcss-normalize-unicode "^5.1.0" postcss-normalize-url "^5.1.0" - postcss-normalize-whitespace "^5.1.0" - postcss-ordered-values "^5.1.0" + postcss-normalize-whitespace "^5.1.1" + postcss-ordered-values "^5.1.1" postcss-reduce-initial "^5.1.0" postcss-reduce-transforms "^5.1.0" postcss-svgo "^5.1.0" - postcss-unique-selectors "^5.1.0" + postcss-unique-selectors "^5.1.1" cssnano-utils@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== -cssnano@^5.0.17, cssnano@^5.0.6: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.0.tgz#cf977d660a5824d0d5542639ed1d4045afd84cbe" - integrity sha512-wWxave1wMlThGg4ueK98jFKaNqXnQd1nVZpSkQ9XvR+YymlzP1ofWqES1JkHtI250LksP9z5JH+oDcrKDJezAg== +cssnano@^5.0.6, cssnano@^5.1.7: + version "5.1.7" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.7.tgz#99858bef6c76c9240f0cdc9239570bc7db8368be" + integrity sha512-pVsUV6LcTXif7lvKKW9ZrmX+rGRzxkEdJuVJcp5ftUjWITgwam5LMZOgaTvUrWPkcORBey6he7JKb4XAJvrpKg== dependencies: - cssnano-preset-default "^5.2.0" + cssnano-preset-default "^5.2.7" lilconfig "^2.0.3" yaml "^1.10.2" @@ -3201,17 +3200,10 @@ debug@2.6.9, debug@^2.6.0: dependencies: ms "2.0.0" -debug@^3.1.1: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - debug@^4.1.0, debug@^4.1.1: - version "4.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" - integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" @@ -3222,18 +3214,6 @@ decompress-response@^3.3.0: dependencies: mimic-response "^1.0.0" -deep-equal@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" - integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== - dependencies: - is-arguments "^1.0.4" - is-date-object "^1.0.1" - is-regex "^1.0.4" - object-is "^1.0.1" - object-keys "^1.1.1" - regexp.prototype.flags "^1.2.0" - deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" @@ -3262,11 +3242,12 @@ define-lazy-prop@^2.0.0: integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" + integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== dependencies: - object-keys "^1.0.12" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" del@^6.0.0: version "6.0.0" @@ -3282,15 +3263,20 @@ del@^6.0.0: rimraf "^3.0.2" slash "^3.0.0" +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== detab@2.0.4: version "2.0.4" @@ -3332,20 +3318,12 @@ dns-equal@^1.0.0: resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= -dns-packet@^1.3.1: - version "1.3.4" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f" - integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA== - dependencies: - ip "^1.1.0" - safe-buffer "^5.0.1" - -dns-txt@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" - integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= +dns-packet@^5.2.2: + version "5.3.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.3.1.tgz#eb94413789daec0f0ebe2fcc230bdc9d7c91b43d" + integrity sha512-spBwIj0TK0Ey3666GwIdWVfUpLyubpU53BTCu8iPn4r4oXd9O14Hjg3EHw3ts2oed77/SeckunUYCyRlSngqHw== dependencies: - buffer-indexof "^1.0.0" + "@leichtgewicht/ip-codec" "^2.0.1" dom-converter@^0.2.0: version "0.2.0" @@ -3363,9 +3341,9 @@ dom-serializer@0: entities "^2.0.0" dom-serializer@^1.0.1, dom-serializer@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" - integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== + version "1.4.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== dependencies: domelementtype "^2.0.1" domhandler "^4.2.0" @@ -3385,9 +3363,9 @@ domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== domelementtype@^2.0.1, domelementtype@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" - integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== domhandler@^2.3.0: version "2.4.2" @@ -3396,10 +3374,10 @@ domhandler@^2.3.0: dependencies: domelementtype "1" -domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.0.tgz#16c658c626cf966967e306f966b431f77d4a5626" - integrity sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g== +domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== dependencies: domelementtype "^2.2.0" @@ -3419,7 +3397,7 @@ domutils@^1.5.1: dom-serializer "0" domelementtype "1" -domutils@^2.5.2, domutils@^2.7.0, domutils@^2.8.0: +domutils@^2.5.2, domutils@^2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== @@ -3463,10 +3441,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.4.71: - version "1.4.75" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.75.tgz#d1ad9bb46f2f1bf432118c2be21d27ffeae82fdd" - integrity sha512-LxgUNeu3BVU7sXaKjUDD9xivocQLxFtq6wgERrutdY/yIOps3ODOZExK1jg8DTEg4U8TUCb5MLGeWFOYuxjF3Q== +electron-to-chromium@^1.4.118: + version "1.4.134" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.134.tgz#9baca7a018ca489d8e81a00c7cfe15161da38568" + integrity sha512-OdD7M2no4Mi8PopfvoOuNcwYDJ2mNFxaBfurA6okG3fLBaMcFah9S+si84FhX+FIWLKkdaiHfl4A+5ep/gOVrg== emoji-regex@^8.0.0: version "8.0.0" @@ -3501,9 +3479,9 @@ end-of-stream@^1.1.0: once "^1.4.0" enhanced-resolve@^5.9.2: - version "5.9.2" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz#0224dcd6a43389ebfb2d55efee517e5466772dd9" - integrity sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA== + version "5.9.3" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz#44a342c012cbc473254af5cc6ae20ebd0aae5d88" + integrity sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -3605,11 +3583,12 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= -eval@^0.1.4: - version "0.1.6" - resolved "https://registry.yarnpkg.com/eval/-/eval-0.1.6.tgz#9620d7d8c85515e97e6b47c5814f46ae381cb3cc" - integrity sha512-o0XUw+5OGkXw4pJZzQoXUk+H87DHuC+7ZE//oSrRGtatTmr12oTnLfg6QOq9DyTt0c/p4TwzgmkKrBzWTSizyQ== +eval@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/eval/-/eval-0.1.8.tgz#2b903473b8cc1d1989b83a1e7923f883eb357f85" + integrity sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw== dependencies: + "@types/node" "*" require-like ">= 0.1.1" eventemitter3@^4.0.0: @@ -3637,38 +3616,39 @@ execa@^5.0.0: signal-exit "^3.0.3" strip-final-newline "^2.0.0" -express@^4.17.1: - version "4.17.3" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.3.tgz#f6c7302194a4fb54271b73a1fe7a06478c8f85a1" - integrity sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg== +express@^4.17.3: + version "4.18.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf" + integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q== dependencies: accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.19.2" + body-parser "1.20.0" content-disposition "0.5.4" content-type "~1.0.4" - cookie "0.4.2" + cookie "0.5.0" cookie-signature "1.0.6" debug "2.6.9" - depd "~1.1.2" + depd "2.0.0" encodeurl "~1.0.2" escape-html "~1.0.3" etag "~1.8.1" - finalhandler "~1.1.2" + finalhandler "1.2.0" fresh "0.5.2" + http-errors "2.0.0" merge-descriptors "1.0.1" methods "~1.1.2" - on-finished "~2.3.0" + on-finished "2.4.1" parseurl "~1.3.3" path-to-regexp "0.1.7" proxy-addr "~2.0.7" - qs "6.9.7" + qs "6.10.3" range-parser "~1.2.1" safe-buffer "5.2.1" - send "0.17.2" - serve-static "1.14.2" + send "0.18.0" + serve-static "1.15.0" setprototypeof "1.2.0" - statuses "~1.5.0" + statuses "2.0.1" type-is "~1.6.18" utils-merge "1.0.1" vary "~1.1.2" @@ -3779,17 +3759,17 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -finalhandler@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== dependencies: debug "2.6.9" encodeurl "~1.0.2" escape-html "~1.0.3" - on-finished "~2.3.0" + on-finished "2.4.1" parseurl "~1.3.3" - statuses "~1.5.0" + statuses "2.0.1" unpipe "~1.0.0" find-cache-dir@^3.3.1: @@ -3833,14 +3813,14 @@ flux@^4.0.1: fbjs "^3.0.1" follow-redirects@^1.0.0, follow-redirects@^1.14.7: - version "1.14.9" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7" - integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w== + version "1.15.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.0.tgz#06441868281c86d0dda4ad8bdaead2d02dca89d4" + integrity sha512-aExlJShTV4qOUOL7yF1U5tvLCB0xQuudbf6toyYA0E/acBNw71mvjFTnLaRp50aQaYocMR0a/RMMBIHeZnGyjQ== fork-ts-checker-webpack-plugin@^6.5.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.0.tgz#0282b335fa495a97e167f69018f566ea7d2a2b5e" - integrity sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw== + version "6.5.2" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.2.tgz#4f67183f2f9eb8ba7df7177ce3cf3e75cdafb340" + integrity sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA== dependencies: "@babel/code-frame" "^7.8.3" "@types/json-schema" "^7.0.5" @@ -3861,20 +3841,20 @@ forwarded@0.2.0: resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== -fraction.js@^4.1.2: - version "4.1.3" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.1.3.tgz#be65b0f20762ef27e1e793860bc2dfb716e99e65" - integrity sha512-pUHWWt6vHzZZiQJcM6S/0PXfS+g6FM4BF5rj9wZyreivhQPdsh5PpE25VtSNxq80wHS5RfY51Ii+8Z0Zl/pmzg== +fraction.js@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" + integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== fresh@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= -fs-extra@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.1.tgz#27de43b4320e833f6867cc044bfce29fdf0ef3b8" - integrity sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag== +fs-extra@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== dependencies: graceful-fs "^4.2.0" jsonfile "^6.0.1" @@ -3915,7 +3895,7 @@ gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-intrinsic@^1.0.2: +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== @@ -4012,7 +3992,7 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globby@^11.0.1, globby@^11.0.4: +globby@^11.0.1, globby@^11.0.4, globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -4054,9 +4034,9 @@ got@^9.6.0: url-parse-lax "^3.0.0" graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: - version "4.2.9" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" - integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== gray-matter@^4.0.3: version "4.0.3" @@ -4090,18 +4070,18 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbols@^1.0.1, has-symbols@^1.0.2: +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-symbols@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - has-yarn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" @@ -4238,9 +4218,9 @@ hpack.js@^2.1.6: wbuf "^1.1.0" html-entities@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.2.tgz#760b404685cb1d794e4f4b744332e3b00dcfe488" - integrity sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ== + version "2.3.3" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.3.tgz#117d7626bece327fc8baace8868fa6f5ef856e46" + integrity sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA== html-minifier-terser@^6.0.2, html-minifier-terser@^6.1.0: version "6.1.0" @@ -4255,10 +4235,10 @@ html-minifier-terser@^6.0.2, html-minifier-terser@^6.1.0: relateurl "^0.2.7" terser "^5.10.0" -html-tags@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140" - integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg== +html-tags@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.2.0.tgz#dbb3518d20b726524e4dd43de397eb0a95726961" + integrity sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg== html-void-elements@^1.0.0: version "1.0.5" @@ -4308,15 +4288,15 @@ http-deceiver@^1.2.7: resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= -http-errors@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" - integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== dependencies: - depd "~1.1.2" + depd "2.0.0" inherits "2.0.4" setprototypeof "1.2.0" - statuses ">= 1.5.0 < 2" + statuses "2.0.1" toidentifier "1.0.1" http-errors@~1.6.2: @@ -4330,14 +4310,14 @@ http-errors@~1.6.2: statuses ">= 1.4.0 < 2" http-parser-js@>=0.5.1: - version "0.5.5" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.5.tgz#d7c30d5d3c90d865b4a2e870181f9d6f22ac7ac5" - integrity sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA== + version "0.5.6" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.6.tgz#2e02406ab2df8af8a7abfba62e0da01c62b95afd" + integrity sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA== -http-proxy-middleware@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.3.tgz#5df04f69a89f530c2284cd71eeaa51ba52243289" - integrity sha512-1bloEwnrHMnCoO/Gcwbz7eSVvW50KPES01PecpagI+YLNLci4AcuKJrujW4Mc3sBLpFxMSlsLNHS5Nl/lvrTPA== +http-proxy-middleware@^2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" + integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== dependencies: "@types/http-proxy" "^1.17.8" http-proxy "^1.18.1" @@ -4411,10 +4391,10 @@ indent-string@^4.0.0: resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== -infima@0.2.0-alpha.37: - version "0.2.0-alpha.37" - resolved "https://registry.yarnpkg.com/infima/-/infima-0.2.0-alpha.37.tgz#b87ff42d528d6d050098a560f0294fbdd12adb78" - integrity sha512-4GX7Baw+/lwS4PPW/UJNY89tWSvYG1DL6baKVdpK6mC593iRgMssxNtORMTFArLPJ/A/lzsGhRmx+z6MaMxj0Q== +infima@0.2.0-alpha.39: + version "0.2.0-alpha.39" + resolved "https://registry.yarnpkg.com/infima/-/infima-0.2.0-alpha.39.tgz#054b13ac44f3e9a42bc083988f1a1586add2f59c" + integrity sha512-UyYiwD3nwHakGhuOUfpe3baJ8gkiPpRVx4a4sE/Ag+932+Y6swtLsdPoRR8ezhwqGnduzxmFkjumV9roz6QoLw== inflight@^1.0.4: version "1.0.6" @@ -4461,11 +4441,6 @@ invariant@^2.2.4: dependencies: loose-envify "^1.0.0" -ip@^1.1.0: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= - ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" @@ -4489,14 +4464,6 @@ is-alphanumerical@^1.0.0: is-alphabetical "^1.0.0" is-decimal "^1.0.0" -is-arguments@^1.0.4: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" - integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -4522,19 +4489,12 @@ is-ci@^2.0.0: ci-info "^2.0.0" is-core-module@^2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" - integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== + version "2.9.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" + integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== dependencies: has "^1.0.3" -is-date-object@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - dependencies: - has-tostringtag "^1.0.0" - is-decimal@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" @@ -4627,14 +4587,6 @@ is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-regex@^1.0.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - is-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" @@ -4772,19 +4724,10 @@ json-schema-traverse@^1.0.0: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - -json5@^2.1.2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" - integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== - dependencies: - minimist "^1.2.5" +json5@^2.1.2, json5@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" + integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== jsonfile@^6.0.1: version "6.1.0" @@ -4830,9 +4773,9 @@ leven@^3.1.0: integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== lilconfig@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.4.tgz#f4507d043d7058b380b6a8f5cb7bcd4b34cee082" - integrity sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA== + version "2.0.5" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.5.tgz#19e57fd06ccc3848fd1891655b5a447092225b25" + integrity sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg== lines-and-columns@^1.1.6: version "1.2.4" @@ -4840,18 +4783,9 @@ lines-and-columns@^1.1.6: integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== loader-runner@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" - integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== - -loader-utils@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" + version "4.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== loader-utils@^2.0.0: version "2.0.2" @@ -4969,12 +4903,17 @@ lodash.some@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d" integrity sha1-G7nzFO9ri63tE7VJFpsqlF62jk0= +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + lodash.uniq@4.5.0, lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21: +lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -5097,20 +5036,15 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -micromatch@^4.0.2, micromatch@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== +micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: - braces "^3.0.1" - picomatch "^2.2.3" + braces "^3.0.2" + picomatch "^2.3.1" -mime-db@1.51.0: - version "1.51.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" - integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== - -"mime-db@>= 1.43.0 < 2": +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== @@ -5128,11 +5062,11 @@ mime-types@2.1.18: mime-db "~1.33.0" mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: - version "2.1.34" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" - integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: - mime-db "1.51.0" + mime-db "1.52.0" mime@1.6.0: version "1.6.0" @@ -5157,10 +5091,10 @@ mini-create-react-context@^0.4.0: "@babel/runtime" "^7.12.1" tiny-warning "^1.0.3" -mini-css-extract-plugin@^2.5.3: - version "2.5.3" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.5.3.tgz#c5c79f9b22ce9b4f164e9492267358dbe35376d9" - integrity sha512-YseMB8cs8U/KCaAGQoqYmfUuhhGW0a9p9XvWXrxVOkE3/IiISTLw4ALNt7JR5B2eYauFM+PQGSbXMDmVbR7Tfw== +mini-css-extract-plugin@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.0.tgz#578aebc7fc14d32c0ad304c2c34f08af44673f5e" + integrity sha512-ndG8nxCEnAemsg4FSgS+yNyHKgkTB4nPKqCOgh65j3/30qqC5RaSQQXMm++Y6sb6E1zRSxPkztj9fqxhS1Eo6w== dependencies: schema-utils "^4.0.0" @@ -5184,16 +5118,9 @@ minimatch@^3.0.4: brace-expansion "^1.1.7" minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -mkdirp@^0.5.5: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" + version "1.2.6" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== mrmime@^1.0.0: version "1.0.0" @@ -5210,28 +5137,23 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3, ms@^2.1.1: +ms@2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -multicast-dns-service-types@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" - integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= - -multicast-dns@^6.0.1: - version "6.2.3" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" - integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== +multicast-dns@^7.2.4: + version "7.2.4" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.4.tgz#cf0b115c31e922aeb20b64e6556cbeb34cf0dd19" + integrity sha512-XkCYOU+rr2Ft3LI6w4ye51M3VK31qJXFIxu0XLw169PtKG0Zx47OrXeVW/GCYOfpC9s1yyyf1S+L8/4LY0J9Zw== dependencies: - dns-packet "^1.3.1" + dns-packet "^5.2.2" thunky "^1.0.2" -nanoid@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" - integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== +nanoid@^3.3.3: + version "3.3.4" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== negotiator@0.6.3: version "0.6.3" @@ -5265,15 +5187,15 @@ node-fetch@2.6.7: dependencies: whatwg-url "^5.0.0" -node-forge@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.2.1.tgz#82794919071ef2eb5c509293325cec8afd0fd53c" - integrity sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w== +node-forge@^1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== -node-releases@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01" - integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg== +node-releases@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.4.tgz#f38252370c43854dc48aa431c766c6c398f40476" + integrity sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ== normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" @@ -5326,15 +5248,12 @@ object-assign@^4.1.0, object-assign@^4.1.1: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= -object-is@^1.0.1: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" - integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" +object-inspect@^1.9.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" + integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== -object-keys@^1.0.12, object-keys@^1.1.1: +object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== @@ -5354,10 +5273,10 @@ obuf@^1.0.0, obuf@^1.1.2: resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== dependencies: ee-first "1.1.1" @@ -5442,11 +5361,11 @@ p-map@^4.0.0: aggregate-error "^3.0.0" p-retry@^4.5.0: - version "4.6.1" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.1.tgz#8fcddd5cdf7a67a0911a9cf2ef0e5df7f602316c" - integrity sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA== + version "4.6.2" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" + integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== dependencies: - "@types/retry" "^0.12.0" + "@types/retry" "0.12.0" retry "^0.13.1" p-try@^2.0.0: @@ -5593,7 +5512,7 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -5612,15 +5531,6 @@ pkg-up@^3.1.0: dependencies: find-up "^3.0.0" -portfinder@^1.0.28: - version "1.0.28" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" - integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== - dependencies: - async "^2.6.2" - debug "^3.1.1" - mkdirp "^0.5.5" - postcss-calc@^8.2.3: version "8.2.4" resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" @@ -5646,20 +5556,20 @@ postcss-convert-values@^5.1.0: dependencies: postcss-value-parser "^4.2.0" -postcss-discard-comments@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.0.tgz#87be4e0953bf599935837b940c701f8d4eca7d0b" - integrity sha512-L0IKF4jAshRyn03SkEO6ar/Ipz2oLywVbg2THf2EqqdNkBwmVMxuTR/RoAltOw4piiaLt3gCAdrbAqmTBInmhg== +postcss-discard-comments@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.1.tgz#e90019e1a0e5b99de05f63516ce640bd0df3d369" + integrity sha512-5JscyFmvkUxz/5/+TB3QTTT9Gi9jHkcn8dcmmuN68JQcv3aQg4y88yEHHhwFB52l/NkaJ43O0dbksGMAo49nfQ== postcss-discard-duplicates@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== -postcss-discard-empty@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.0.tgz#7f51b16cd1b89f8180bbc7cee34d6cbabf2ef810" - integrity sha512-782T/buGgb3HOuHOJAHpdyKzAAKsv/BxWqsutnZ+QsiHEcDkY7v+6WWdturuBiSal6XMOO1p1aJvwXdqLD5vhA== +postcss-discard-empty@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" + integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== postcss-discard-overridden@^5.1.0: version "5.1.0" @@ -5682,26 +5592,26 @@ postcss-loader@^6.2.1: klona "^2.0.5" semver "^7.3.5" -postcss-merge-idents@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-5.1.0.tgz#948e1183cd659cfb5f99c7389f5fcec83c8f9a00" - integrity sha512-l+awq6+uUiCILsHahWK5KE25495I4oCKlUrIA+EdBvklnVdWlBEsbkzq5+ouPKb8OAe4WwRBgFvaSq7f77FY+w== +postcss-merge-idents@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-5.1.1.tgz#7753817c2e0b75d0853b56f78a89771e15ca04a1" + integrity sha512-pCijL1TREiCoog5nQp7wUe+TUonA2tC2sQ54UGeMmryK3UFGIYKqDyjnqd6RcuI4znFn9hWSLNN8xKE/vWcUQw== dependencies: cssnano-utils "^3.1.0" postcss-value-parser "^4.2.0" -postcss-merge-longhand@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.0.tgz#f716bffbf0bdfbde6ea78c36088e21559f8a0a95" - integrity sha512-Gr46srN2tsLD8fudKYoHO56RG0BLQ2nsBRnSZGY04eNBPwTeWa9KeHrbL3tOLAHyB2aliikycPH2TMJG1U+W6g== +postcss-merge-longhand@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.4.tgz#0f46f8753989a33260efc47de9a0cdc571f2ec5c" + integrity sha512-hbqRRqYfmXoGpzYKeW0/NCZhvNyQIlQeWVSao5iKWdyx7skLvCfQFGIUsP9NUs3dSbPac2IC4Go85/zG+7MlmA== dependencies: postcss-value-parser "^4.2.0" stylehacks "^5.1.0" -postcss-merge-rules@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.0.tgz#a2d5117eba09c8686a5471d97bd9afcf30d1b41f" - integrity sha512-NecukEJovQ0mG7h7xV8wbYAkXGTO3MPKnXvuiXzOKcxoOodfTTKYjeo8TMhAswlSkjcPIBlnKbSFcTuVSDaPyQ== +postcss-merge-rules@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.1.tgz#d327b221cd07540bcc8d9ff84446d8b404d00162" + integrity sha512-8wv8q2cXjEuCcgpIB1Xx1pIy8/rhMPIQqYKNzEdyx37m6gpq83mQQdCxgIkFgliyEnKvdwJf/C61vN4tQDq4Ww== dependencies: browserslist "^4.16.6" caniuse-api "^3.0.0" @@ -5715,19 +5625,19 @@ postcss-minify-font-values@^5.1.0: dependencies: postcss-value-parser "^4.2.0" -postcss-minify-gradients@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.0.tgz#de0260a67a13b7b321a8adc3150725f2c6612377" - integrity sha512-J/TMLklkONn3LuL8wCwfwU8zKC1hpS6VcxFkNUNjmVt53uKqrrykR3ov11mdUYyqVMEx67slMce0tE14cE4DTg== +postcss-minify-gradients@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" + integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== dependencies: colord "^2.9.1" cssnano-utils "^3.1.0" postcss-value-parser "^4.2.0" -postcss-minify-params@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.0.tgz#e0b1f4e05cfd396682f612856485907e4064f25e" - integrity sha512-q67dcts4Hct6x8+JmhBgctHkbvUsqGIg2IItenjE63iZXMbhjr7AlVZkNnKtIGt/1Wsv7p/7YzeSII6Q+KPXRg== +postcss-minify-params@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.2.tgz#77e250780c64198289c954884ebe3ee4481c3b1c" + integrity sha512-aEP+p71S/urY48HWaRHasyx4WHQJyOYaKpQ6eXl8k0kxg66Wt/30VR6/woh8THgcpRbonJD5IeD+CzNhPi1L8g== dependencies: browserslist "^4.16.6" cssnano-utils "^3.1.0" @@ -5824,25 +5734,25 @@ postcss-normalize-url@^5.1.0: normalize-url "^6.0.1" postcss-value-parser "^4.2.0" -postcss-normalize-whitespace@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.0.tgz#aed8b4580c9ad6e8eac034177291187ea16a059c" - integrity sha512-7O1FanKaJkpWFyCghFzIkLhehujV/frGkdofGLwhg5upbLyGsSfiTcZAdSzoPsSUgyPCkBkNMeWR8yVgPdQybg== +postcss-normalize-whitespace@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" + integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== dependencies: postcss-value-parser "^4.2.0" -postcss-ordered-values@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.0.tgz#04ef429e0991b0292bc918b135cd4c038f7b889f" - integrity sha512-wU4Z4D4uOIH+BUKkYid36gGDJNQtkVJT7Twv8qH6UyfttbbJWyw4/xIPuVEkkCtQLAJ0EdsNSh8dlvqkXb49TA== +postcss-ordered-values@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.1.tgz#0b41b610ba02906a3341e92cab01ff8ebc598adb" + integrity sha512-7lxgXF0NaoMIgyihL/2boNAEZKiW0+HkMhdKMTD93CjW8TdCy2hSdj8lsAo+uwm7EDG16Da2Jdmtqpedl0cMfw== dependencies: cssnano-utils "^3.1.0" postcss-value-parser "^4.2.0" -postcss-reduce-idents@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-5.1.0.tgz#386b65cf861a9045663bd349d572027ab138ca4a" - integrity sha512-2xDoPTzv98D/HFDrGTgVEBlcuS47wvua2oc4g2WoZdYPwzPWMWb2TCRruCyN7vbl+HAtVLGvEOMZIZb3wYgv7w== +postcss-reduce-idents@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-5.2.0.tgz#c89c11336c432ac4b28792f24778859a67dfba95" + integrity sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg== dependencies: postcss-value-parser "^4.2.0" @@ -5862,9 +5772,9 @@ postcss-reduce-transforms@^5.1.0: postcss-value-parser "^4.2.0" postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: - version "6.0.9" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz#ee71c3b9ff63d9cd130838876c13a2ec1a992b2f" - integrity sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ== + version "6.0.10" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" + integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" @@ -5884,10 +5794,10 @@ postcss-svgo@^5.1.0: postcss-value-parser "^4.2.0" svgo "^2.7.0" -postcss-unique-selectors@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.0.tgz#70a945da1b0599d00f617222a44ba1d82a676694" - integrity sha512-LmUhgGobtpeVJJHuogzjLRwJlN7VH+BL5c9GKMVJSS/ejoyePZkXvNsYUtk//F6vKOGK86gfRS0xH7fXQSDtvA== +postcss-unique-selectors@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" + integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== dependencies: postcss-selector-parser "^6.0.5" @@ -5901,12 +5811,12 @@ postcss-zindex@^5.1.0: resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-5.1.0.tgz#4a5c7e5ff1050bd4c01d95b1847dfdcc58a496ff" integrity sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A== -postcss@^8.3.11, postcss@^8.3.5, postcss@^8.4.5, postcss@^8.4.7: - version "8.4.7" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.7.tgz#f99862069ec4541de386bf57f5660a6c7a0875a8" - integrity sha512-L9Ye3r6hkkCeOETQX6iOaWZgjp3LL6Lpqm6EtgbKrgqGGteRMNb9vzBfRL96YOSu8o7x3MfIH9Mo5cPJFGrW6A== +postcss@^8.3.11, postcss@^8.3.5, postcss@^8.4.13, postcss@^8.4.7: + version "8.4.13" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.13.tgz#7c87bc268e79f7f86524235821dfdf9f73e5d575" + integrity sha512-jtL6eTBrza5MPzy8oJLFuUscHDXTV5KcLlqAWHl5q5WYRfnNRGSmOZmOZ1T6Gy7A99mOZfqungmZMpMmCVJ8ZA== dependencies: - nanoid "^3.3.1" + nanoid "^3.3.3" picocolors "^1.0.0" source-map-js "^1.0.2" @@ -5928,15 +5838,15 @@ pretty-time@^1.1.0: resolved "https://registry.yarnpkg.com/pretty-time/-/pretty-time-1.1.0.tgz#ffb7429afabb8535c346a34e41873adf3d74dd0e" integrity sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA== -prism-react-renderer@^1.2.1, prism-react-renderer@^1.3.1: +prism-react-renderer@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-1.3.1.tgz#88fc9d0df6bed06ca2b9097421349f8c2f24e30d" integrity sha512-xUeDMEz074d0zc5y6rxiMp/dlC7C+5IDDlaEUlcBOFE2wddz7hz5PNupb087mPwTt7T9BrFmewObfCBuf/LKwQ== -prismjs@^1.27.0: - version "1.27.0" - resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.27.0.tgz#bb6ee3138a0b438a3653dd4d6ce0cc6510a45057" - integrity sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA== +prismjs@^1.28.0: + version "1.28.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.28.0.tgz#0d8f561fa0f7cf6ebca901747828b149147044b6" + integrity sha512-8aaXdYvl1F7iC7Xm1spqSaY/OJBpYW3v+KJ+F17iYxvdc8sfjW194COK5wVhMZX45tGteiBQgdvD/nhxcRwylw== process-nextick-args@~2.0.0: version "2.0.1" @@ -5990,11 +5900,6 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - punycode@^1.3.2: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" @@ -6017,20 +5922,12 @@ pure-color@^1.2.0: resolved "https://registry.yarnpkg.com/pure-color/-/pure-color-1.3.0.tgz#1fe064fb0ac851f0de61320a8bf796836422f33e" integrity sha1-H+Bk+wrIUfDeYTIKi/eWg2Qi8z4= -qs@6.9.7: - version "6.9.7" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.7.tgz#4610846871485e1e048f44ae3b94033f0e675afe" - integrity sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw== - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - -querystring@0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd" - integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== +qs@6.10.3: + version "6.10.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" + integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== + dependencies: + side-channel "^1.0.4" queue-microtask@^1.2.2: version "1.2.3" @@ -6061,13 +5958,13 @@ range-parser@^1.2.1, range-parser@~1.2.1: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.4.3: - version "2.4.3" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.3.tgz#8f80305d11c2a0a545c2d9d89d7a0286fcead43c" - integrity sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g== +raw-body@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== dependencies: bytes "3.1.2" - http-errors "1.8.1" + http-errors "2.0.0" iconv-lite "0.4.24" unpipe "1.0.0" @@ -6091,10 +5988,10 @@ react-base16-styling@^0.6.0: lodash.flow "^3.3.0" pure-color "^1.2.0" -react-dev-utils@^12.0.0: - version "12.0.0" - resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.0.tgz#4eab12cdb95692a077616770b5988f0adf806526" - integrity sha512-xBQkitdxozPxt1YZ9O1097EJiVpwHr9FoAuEVURCKV0Av8NBERovJauzP7bo1ThvuhZ4shsQ1AJiu4vQpoT1AQ== +react-dev-utils@^12.0.1: + version "12.0.1" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.1.tgz#ba92edb4a1f379bd46ccd6bcd4e7bc398df33e73" + integrity sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ== dependencies: "@babel/code-frame" "^7.16.0" address "^1.1.2" @@ -6115,13 +6012,13 @@ react-dev-utils@^12.0.0: open "^8.4.0" pkg-up "^3.1.0" prompts "^2.4.2" - react-error-overlay "^6.0.10" + react-error-overlay "^6.0.11" recursive-readdir "^2.2.2" shell-quote "^1.7.3" strip-ansi "^6.0.1" text-table "^0.2.0" -react-dom@^17.0.1: +react-dom@^17.0.2: version "17.0.2" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== @@ -6130,20 +6027,20 @@ react-dom@^17.0.1: object-assign "^4.1.1" scheduler "^0.20.2" -react-error-overlay@^6.0.10: - version "6.0.10" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.10.tgz#0fe26db4fa85d9dbb8624729580e90e7159a59a6" - integrity sha512-mKR90fX7Pm5seCOfz8q9F+66VCc1PGsWSBxKbITjfKVQHMNF2zudxHnMdJiB1fRCb+XsbQV9sO9DCkgsMQgBIA== +react-error-overlay@^6.0.11: + version "6.0.11" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb" + integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== react-fast-compare@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== -react-helmet-async@*, react-helmet-async@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/react-helmet-async/-/react-helmet-async-1.2.3.tgz#57326a69304ea3293036eafb49475e9ba454cb37" - integrity sha512-mCk2silF53Tq/YaYdkl2sB+/tDoPnaxN7dFS/6ZLJb/rhUY2EWGI5Xj2b4jHppScMqY45MbgPSwTxDchKpZ5Kw== +react-helmet-async@*, react-helmet-async@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/react-helmet-async/-/react-helmet-async-1.3.0.tgz#7bd5bf8c5c69ea9f02f6083f14ce33ef545c222e" + integrity sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg== dependencies: "@babel/runtime" "^7.12.5" invariant "^2.2.4" @@ -6186,22 +6083,22 @@ react-router-config@^5.1.1: "@babel/runtime" "^7.1.2" react-router-dom@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.0.tgz#da1bfb535a0e89a712a93b97dd76f47ad1f32363" - integrity sha512-ObVBLjUZsphUUMVycibxgMdh5jJ1e3o+KpAZBVeHcNQZ4W+uUGGWsokurzlF4YOldQYRQL4y6yFRWM4m3svmuQ== + version "5.3.1" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.1.tgz#0151baf2365c5fcd8493f6ec9b9b31f34d0f8ae1" + integrity sha512-f0pj/gMAbv9e8gahTmCEY20oFhxhrmHwYeIwH5EO5xu0qme+wXtsdB8YfUOAZzUz4VaXmb58m3ceiLtjMhqYmQ== dependencies: "@babel/runtime" "^7.12.13" history "^4.9.0" loose-envify "^1.3.1" prop-types "^15.6.2" - react-router "5.2.1" + react-router "5.3.1" tiny-invariant "^1.0.2" tiny-warning "^1.0.0" -react-router@5.2.1, react-router@^5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.2.1.tgz#4d2e4e9d5ae9425091845b8dbc6d9d276239774d" - integrity sha512-lIboRiOtDLFdg1VTemMwud9vRVuOCZmUIT/7lUoZiSpPODiiH1UQlfXy+vPLC/7IWdFYnhRwAyNqA/+I7wnvKQ== +react-router@5.3.1, react-router@^5.2.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.3.1.tgz#b13e84a016c79b9e80dde123ca4112c4f117e3cf" + integrity sha512-v+zwjqb7bakqgF+wMVKlAPTca/cEmPOvQ9zt7gpSNyPXau1+0qvuYZ5BWzzNDP1y6s15zDwgb9rPN63+SIniRQ== dependencies: "@babel/runtime" "^7.12.13" history "^4.9.0" @@ -6223,7 +6120,7 @@ react-textarea-autosize@^8.3.2: use-composed-ref "^1.0.0" use-latest "^1.0.0" -react@^17.0.1: +react@^17.0.2: version "17.0.2" resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== @@ -6296,21 +6193,13 @@ regenerator-runtime@^0.13.4: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== -regenerator-transform@^0.14.2: - version "0.14.5" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" - integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== +regenerator-transform@^0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz#cbd9ead5d77fae1a48d957cf889ad0586adb6537" + integrity sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg== dependencies: "@babel/runtime" "^7.8.4" -regexp.prototype.flags@^1.2.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz#b3f4c0059af9e47eca9f3f660e51d81307e72307" - integrity sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - regexpu-core@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3" @@ -6372,7 +6261,7 @@ remark-admonitions@^1.2.1: unified "^8.4.2" unist-util-visit "^2.0.1" -remark-emoji@^2.1.0: +remark-emoji@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/remark-emoji/-/remark-emoji-2.2.0.tgz#1c702090a1525da5b80e15a8f963ef2c8236cac7" integrity sha512-P3cj9s5ggsUvWw5fS2uzCHJMGuXYRb0NnZqYlNecewXt8QBU9n5vW3DUUKOhepS8F9CwdMx9B8a3i7pqFWAI5w== @@ -6508,7 +6397,7 @@ rtl-detect@^1.0.4: resolved "https://registry.yarnpkg.com/rtl-detect/-/rtl-detect-1.0.4.tgz#40ae0ea7302a150b96bc75af7d749607392ecac6" integrity sha512-EBR4I2VDSSYr7PkBmFy04uhycIpDKp+21p/jARYXlCSjQksTBQcJ0HFUPOO79EPPH5JS6VAhiIQbycf0O3JAxQ== -rtlcss@^3.3.0: +rtlcss@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/rtlcss/-/rtlcss-3.5.0.tgz#c9eb91269827a102bac7ae3115dd5d049de636c3" integrity sha512-wzgMaMFHQTnyi9YOwsx9LjOxYXJPzS8sYnFaKm6R5ysvTkwzHiB0vxnbHwchHQT65PTdBjDG21/kQBWI7q9O7A== @@ -6526,9 +6415,9 @@ run-parallel@^1.1.9: queue-microtask "^1.2.2" rxjs@^7.5.4: - version "7.5.4" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.4.tgz#3d6bd407e6b7ce9a123e76b1e770dc5761aa368d" - integrity sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ== + version "7.5.5" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.5.tgz#2ebad89af0f560f460ad5cc4213219e1f7dd4e9f" + integrity sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw== dependencies: tslib "^2.1.0" @@ -6537,7 +6426,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -6610,12 +6499,12 @@ select-hose@^2.0.0: resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= -selfsigned@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.0.0.tgz#e927cd5377cbb0a1075302cff8df1042cc2bce5b" - integrity sha512-cUdFiCbKoa1mZ6osuJs2uDHrs0k0oprsKveFiiaBKCNq3SYyb5gs2HxhQyDNLCmL51ZZThqi4YNDpCK6GOP1iQ== +selfsigned@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.0.1.tgz#8b2df7fa56bf014d19b6007655fff209c0ef0a56" + integrity sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ== dependencies: - node-forge "^1.2.0" + node-forge "^1" semver-diff@^3.1.1: version "3.1.1" @@ -6639,31 +6528,31 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== +semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7: + version "7.3.7" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== dependencies: lru-cache "^6.0.0" -send@0.17.2: - version "0.17.2" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.2.tgz#926622f76601c41808012c8bf1688fe3906f7820" - integrity sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww== +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== dependencies: debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" + depd "2.0.0" + destroy "1.2.0" encodeurl "~1.0.2" escape-html "~1.0.3" etag "~1.8.1" fresh "0.5.2" - http-errors "1.8.1" + http-errors "2.0.0" mime "1.6.0" ms "2.1.3" - on-finished "~2.3.0" + on-finished "2.4.1" range-parser "~1.2.1" - statuses "~1.5.0" + statuses "2.0.1" serialize-javascript@^6.0.0: version "6.0.0" @@ -6699,15 +6588,15 @@ serve-index@^1.9.1: mime-types "~2.1.17" parseurl "~1.3.2" -serve-static@1.14.2: - version "1.14.2" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.2.tgz#722d6294b1d62626d41b43a013ece4598d292bfa" - integrity sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ== +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== dependencies: encodeurl "~1.0.2" escape-html "~1.0.3" parseurl "~1.3.3" - send "0.17.2" + send "0.18.0" setimmediate@^1.0.5: version "1.0.5" @@ -6762,6 +6651,15 @@ shelljs@^0.8.5: interpret "^1.0.0" rechoir "^0.6.2" +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + signal-exit@^3.0.2, signal-exit@^3.0.3: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" @@ -6843,10 +6741,12 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@~0.7.2: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== +source-map@~0.8.0-beta.0: + version "0.8.0-beta.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" + integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== + dependencies: + whatwg-url "^7.0.0" space-separated-tokens@^1.0.0: version "1.1.5" @@ -6891,15 +6791,20 @@ state-toggle@^1.0.0: resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ== -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +"statuses@>= 1.4.0 < 2": version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= std-env@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.0.1.tgz#bc4cbc0e438610197e34c2d79c3df30b491f5182" - integrity sha512-mC1Ps9l77/97qeOZc+HrOL7TIaOboHqMZ24dGVQrlxFcpPpfCHpH+qfUT7Dz+6mlG8+JPA1KfBQo19iC/+Ngcw== + version "3.1.1" + resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.1.1.tgz#1f19c4d3f6278c52efd08a94574a2a8d32b7d092" + integrity sha512-/c645XdExBypL01TpFKiG/3RAa/Qmu+zRi0MwAmrdEkwHNuN0ebo8ccAXBBDa5Z0QOJgBskUIbuCK91x0sCVEw== string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2: version "4.2.3" @@ -6949,7 +6854,7 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" -strip-ansi@^7.0.0, strip-ansi@^7.0.1: +strip-ansi@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== @@ -7057,13 +6962,13 @@ terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.3.1: terser "^5.7.2" terser@^5.10.0, terser@^5.7.2: - version "5.12.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.12.0.tgz#728c6bff05f7d1dcb687d8eace0644802a9dae8a" - integrity sha512-R3AUhNBGWiFc77HXag+1fXpAxTAFRQTJemlJKjAgD9r8xXTpjNKqIXwHM/o7Rh+O0kUJtS3WQVdBeMKFk5sw9A== + version "5.13.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.13.1.tgz#66332cdc5a01b04a224c9fad449fc1a18eaa1799" + integrity sha512-hn4WKOfwnwbYfe48NgrQjqNOH9jzLqRcIfbYytOXCOv46LBfWr9bDS17MQqOi+BWGD0sJK3Sj5NC/gJjiojaoA== dependencies: acorn "^8.5.0" commander "^2.20.0" - source-map "~0.7.2" + source-map "~0.8.0-beta.0" source-map-support "~0.5.20" text-table@^0.2.0: @@ -7076,11 +6981,6 @@ thunky@^1.0.2: resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== -timsort@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" - integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= - tiny-invariant@^1.0.2: version "1.2.0" resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.2.0.tgz#a1141f86b672a9148c72e978a19a73b9b94a15a9" @@ -7118,6 +7018,13 @@ totalist@^1.0.0: resolved "https://registry.yarnpkg.com/totalist/-/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df" integrity sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g== +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= + dependencies: + punycode "^2.1.0" + tr46@~0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" @@ -7138,10 +7045,10 @@ trough@^1.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== -tslib@^2.0.3, tslib@^2.1.0, tslib@^2.2.0, tslib@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" - integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== +tslib@^2.0.3, tslib@^2.1.0, tslib@^2.2.0, tslib@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== type-fest@^0.20.2: version "0.20.2" @@ -7149,9 +7056,9 @@ type-fest@^0.20.2: integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== type-fest@^2.5.0: - version "2.12.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.12.0.tgz#ce342f58cab9114912f54b493d60ab39c3fc82b6" - integrity sha512-Qe5GRT+n/4GoqCNGGVp5Snapg1Omq3V7irBJB3EaKsp7HWDo5Gv2d/67gfNyV+d5EXD+x/RF5l1h4yJ7qNkcGA== + version "2.12.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.12.2.tgz#80a53614e6b9b475eb9077472fb7498dc7aa51d0" + integrity sha512-qt6ylCGpLjZ7AaODxbpyBZSs9fCI9SkL3Z9q2oxMBQhs/uyY+VD8jHA8ULCGmWQJlBgqvO3EJeAngOHD8zQCrQ== type-is@~1.6.18: version "1.6.18" @@ -7283,7 +7190,7 @@ unist-util-visit-parents@^3.0.0: "@types/unist" "^2.0.0" unist-util-is "^4.0.0" -unist-util-visit@2.0.3, unist-util-visit@^2.0.0, unist-util-visit@^2.0.1, unist-util-visit@^2.0.2, unist-util-visit@^2.0.3: +unist-util-visit@2.0.3, unist-util-visit@^2.0.0, unist-util-visit@^2.0.1, unist-util-visit@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c" integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q== @@ -7345,30 +7252,22 @@ url-parse-lax@^3.0.0: dependencies: prepend-http "^2.0.0" -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - use-composed-ref@^1.0.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.2.1.tgz#9bdcb5ccd894289105da2325e1210079f56bf849" - integrity sha512-6+X1FLlIcjvFMAeAD/hcxDT8tmyrWnbSPMU0EnxQuDLIxokuFzWliXBiYZuGIx+mrAMLBw0WFfCkaPw8ebzAhw== + version "1.3.0" + resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.3.0.tgz#3d8104db34b7b264030a9d916c5e94fbe280dbda" + integrity sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ== -use-isomorphic-layout-effect@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.1.tgz#7bb6589170cd2987a152042f9084f9effb75c225" - integrity sha512-L7Evj8FGcwo/wpbv/qvSfrkHFtOpCzvM5yl2KVyDJoylVuSvzphiiasmjgQPttIGBAy2WKiBNR98q8w7PiNgKQ== +use-isomorphic-layout-effect@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb" + integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== use-latest@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/use-latest/-/use-latest-1.2.0.tgz#a44f6572b8288e0972ec411bdd0840ada366f232" - integrity sha512-d2TEuG6nSLKQLAfW3By8mKr8HurOlTkul0sOpxbClIv4SQ4iOd7BYr7VIzdbktUCnv7dua/60xzd8igMU6jmyw== + version "1.2.1" + resolved "https://registry.yarnpkg.com/use-latest/-/use-latest-1.2.1.tgz#d13dfb4b08c28e3e33991546a2cee53e14038cf2" + integrity sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw== dependencies: - use-isomorphic-layout-effect "^1.0.0" + use-isomorphic-layout-effect "^1.1.1" util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" @@ -7464,6 +7363,11 @@ webidl-conversions@^3.0.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + webpack-bundle-analyzer@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz#1b0eea2947e73528754a6f9af3e91b2b6e0f79d5" @@ -7490,39 +7394,37 @@ webpack-dev-middleware@^5.3.1: range-parser "^1.2.1" schema-utils "^4.0.0" -webpack-dev-server@^4.7.4: - version "4.7.4" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.7.4.tgz#d0ef7da78224578384e795ac228d8efb63d5f945" - integrity sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A== +webpack-dev-server@^4.8.1: + version "4.9.0" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.9.0.tgz#737dbf44335bb8bde68f8f39127fc401c97a1557" + integrity sha512-+Nlb39iQSOSsFv0lWUuUTim3jDQO8nhK3E68f//J2r5rIcp4lULHXz2oZ0UVdEeWXEh5lSzYUlzarZhDAeAVQw== dependencies: "@types/bonjour" "^3.5.9" "@types/connect-history-api-fallback" "^1.3.5" "@types/express" "^4.17.13" "@types/serve-index" "^1.9.1" "@types/sockjs" "^0.3.33" - "@types/ws" "^8.2.2" + "@types/ws" "^8.5.1" ansi-html-community "^0.0.8" - bonjour "^3.5.0" + bonjour-service "^1.0.11" chokidar "^3.5.3" colorette "^2.0.10" compression "^1.7.4" connect-history-api-fallback "^1.6.0" default-gateway "^6.0.3" - del "^6.0.0" - express "^4.17.1" + express "^4.17.3" graceful-fs "^4.2.6" html-entities "^2.3.2" - http-proxy-middleware "^2.0.0" + http-proxy-middleware "^2.0.3" ipaddr.js "^2.0.1" open "^8.0.9" p-retry "^4.5.0" - portfinder "^1.0.28" + rimraf "^3.0.2" schema-utils "^4.0.0" - selfsigned "^2.0.0" + selfsigned "^2.0.1" serve-index "^1.9.1" sockjs "^0.3.21" spdy "^4.0.2" - strip-ansi "^7.0.0" webpack-dev-middleware "^5.3.1" ws "^8.4.2" @@ -7547,10 +7449,10 @@ webpack-sources@^3.2.3: resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -webpack@^5.69.1: - version "5.70.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.70.0.tgz#3461e6287a72b5e6e2f4872700bc8de0d7500e6d" - integrity sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw== +webpack@^5.72.0: + version "5.72.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.72.0.tgz#f8bc40d9c6bb489a4b7a8a685101d6022b8b6e28" + integrity sha512-qmSmbspI0Qo5ld49htys8GY9XhS9CGqFoHTsOVAnjBdg0Zn79y135R+k4IR4rKK6+eKaabMhJwiVB7xw0SJu5w== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^0.0.51" @@ -7609,6 +7511,15 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -7681,9 +7592,9 @@ ws@^7.3.1: integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A== ws@^8.4.2: - version "8.5.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" - integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== + version "8.6.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.6.0.tgz#e5e9f1d9e7ff88083d0c0dd8281ea662a42c9c23" + integrity sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw== xdg-basedir@^4.0.0: version "4.0.0" diff --git a/examples/facebook/docs/tutorial-basics/_category_.json b/examples/facebook/docs/tutorial-basics/_category_.json index 135e4a6858be..2e6db55b1eb6 100644 --- a/examples/facebook/docs/tutorial-basics/_category_.json +++ b/examples/facebook/docs/tutorial-basics/_category_.json @@ -1,4 +1,8 @@ { "label": "Tutorial - Basics", - "position": 2 + "position": 2, + "link": { + "type": "generated-index", + "description": "5 minutes to learn the most important Docusaurus concepts." + } } diff --git a/examples/facebook/docs/tutorial-basics/create-a-document.md b/examples/facebook/docs/tutorial-basics/create-a-document.md index feaced79d0a3..a9bb9a4140b1 100644 --- a/examples/facebook/docs/tutorial-basics/create-a-document.md +++ b/examples/facebook/docs/tutorial-basics/create-a-document.md @@ -41,14 +41,14 @@ This is my **first Docusaurus document**! It is also possible to create your sidebar explicitly in `sidebars.js`: -```diff title="sidebars.js" +```js title="sidebars.js" module.exports = { tutorialSidebar: [ { type: 'category', label: 'Tutorial', -- items: [...], -+ items: ['hello'], + // highlight-next-line + items: ['hello'], }, ], }; diff --git a/examples/facebook/docs/tutorial-basics/markdown-features.mdx b/examples/facebook/docs/tutorial-basics/markdown-features.mdx index 8855626051f1..6b3aaaaaaf85 100644 --- a/examples/facebook/docs/tutorial-basics/markdown-features.mdx +++ b/examples/facebook/docs/tutorial-basics/markdown-features.mdx @@ -43,7 +43,7 @@ Let's see how to [Create a page](./create-a-page.md). Regular Markdown images are supported. -Add an image at `static/img/docusaurus.png` and display it in Markdown: +You can use absolute paths to reference images in the static directory (`static/img/docusaurus.png`): ```md ![Docusaurus logo](/img/docusaurus.png) @@ -51,6 +51,8 @@ Add an image at `static/img/docusaurus.png` and display it in Markdown: ![Docusaurus logo](/img/docusaurus.png) +You can reference images relative to the current file as well, as shown in [the extra guides](../tutorial-extras/manage-docs-versions.md). + ## Code Blocks Markdown code blocks are supported with Syntax highlighting. diff --git a/examples/facebook/docs/tutorial-extras/_category_.json b/examples/facebook/docs/tutorial-extras/_category_.json index ca3f8e06408b..a8ffcc19300e 100644 --- a/examples/facebook/docs/tutorial-extras/_category_.json +++ b/examples/facebook/docs/tutorial-extras/_category_.json @@ -1,4 +1,7 @@ { "label": "Tutorial - Extras", - "position": 3 + "position": 3, + "link": { + "type": "generated-index" + } } diff --git a/examples/facebook/docs/tutorial-extras/img/docsVersionDropdown.png b/examples/facebook/docs/tutorial-extras/img/docsVersionDropdown.png new file mode 100644 index 000000000000..97e4164618b5 Binary files /dev/null and b/examples/facebook/docs/tutorial-extras/img/docsVersionDropdown.png differ diff --git a/examples/facebook/docs/tutorial-extras/img/localeDropdown.png b/examples/facebook/docs/tutorial-extras/img/localeDropdown.png new file mode 100644 index 000000000000..e257edc1f932 Binary files /dev/null and b/examples/facebook/docs/tutorial-extras/img/localeDropdown.png differ diff --git a/examples/facebook/docs/tutorial-extras/manage-docs-versions.md b/examples/facebook/docs/tutorial-extras/manage-docs-versions.md index 6335b0ac94b8..e12c3f3444fa 100644 --- a/examples/facebook/docs/tutorial-extras/manage-docs-versions.md +++ b/examples/facebook/docs/tutorial-extras/manage-docs-versions.md @@ -45,7 +45,7 @@ module.exports = { The docs version dropdown appears in your navbar: -![Docs Version Dropdown](/img/tutorial/docsVersionDropdown.png) +![Docs Version Dropdown](./img/docsVersionDropdown.png) ## Update an existing version diff --git a/examples/facebook/docs/tutorial-extras/translate-your-site.md b/examples/facebook/docs/tutorial-extras/translate-your-site.md index a25c089ed794..da2b8a365f48 100644 --- a/examples/facebook/docs/tutorial-extras/translate-your-site.md +++ b/examples/facebook/docs/tutorial-extras/translate-your-site.md @@ -71,7 +71,7 @@ module.exports = { The locale dropdown now appears in your navbar: -![Locale Dropdown](/img/tutorial/localeDropdown.png) +![Locale Dropdown](./img/localeDropdown.png) ## Build your localized site diff --git a/examples/facebook/docusaurus.config.js b/examples/facebook/docusaurus.config.js index a88ea59b1d5a..d140034e07f5 100644 --- a/examples/facebook/docusaurus.config.js +++ b/examples/facebook/docusaurus.config.js @@ -18,6 +18,9 @@ const config = { onBrokenLinks: 'throw', onBrokenMarkdownLinks: 'warn', favicon: 'img/favicon.ico', + + // GitHub pages deployment config. + // If you aren't using GitHub pages, you don't need these. organizationName: 'facebook', // Usually your GitHub org/user name. projectName: 'docusaurus', // Usually your repo name. @@ -29,12 +32,14 @@ const config = { docs: { sidebarPath: require.resolve('./sidebars.js'), // Please change this to your repo. + // Remove this to remove the "edit this page" links. editUrl: 'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/', }, blog: { showReadingTime: true, // Please change this to your repo. + // Remove this to remove the "edit this page" links. editUrl: 'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/', }, diff --git a/examples/facebook/package.json b/examples/facebook/package.json index e715e47413b6..d0e8a7759323 100644 --- a/examples/facebook/package.json +++ b/examples/facebook/package.json @@ -19,25 +19,25 @@ "dev": "docusaurus start" }, "dependencies": { - "@docusaurus/core": "2.0.0-beta.17", - "@docusaurus/preset-classic": "2.0.0-beta.17", + "@docusaurus/core": "2.0.0-beta.20", + "@docusaurus/preset-classic": "2.0.0-beta.20", "@mdx-js/react": "^1.6.22", "clsx": "^1.1.1", - "react": "^17.0.1", - "react-dom": "^17.0.1" + "react": "^17.0.2", + "react-dom": "^17.0.2" }, "devDependencies": { - "@babel/eslint-parser": "^7.16.3", - "eslint": "^8.8.0", - "eslint-config-airbnb": "^19.0.0", - "eslint-config-prettier": "^8.4.0", + "@babel/eslint-parser": "^7.17.0", + "eslint": "^8.14.0", + "eslint-config-airbnb": "^19.0.4", + "eslint-config-prettier": "^8.5.0", "eslint-plugin-header": "^3.1.1", - "eslint-plugin-import": "^2.25.3", + "eslint-plugin-import": "^2.26.0", "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-react": "^7.29.2", - "eslint-plugin-react-hooks": "^4.3.0", - "prettier": "^2.5.1", - "stylelint": "^14.5.3" + "eslint-plugin-react": "^7.29.4", + "eslint-plugin-react-hooks": "^4.5.0", + "prettier": "^2.6.2", + "stylelint": "^14.8.1" }, "browserslist": { "production": [ diff --git a/examples/facebook/src/css/custom.css b/examples/facebook/src/css/custom.css index 29e525236964..c11ab1671663 100644 --- a/examples/facebook/src/css/custom.css +++ b/examples/facebook/src/css/custom.css @@ -35,10 +35,3 @@ --ifm-color-primary-lighter: #32d8b4; --ifm-color-primary-lightest: #4fddbf; } - -.docusaurus-highlight-code-line { - background-color: rgb(72, 77, 91); - display: block; - margin: 0 calc(-1 * var(--ifm-pre-padding)); - padding: 0 var(--ifm-pre-padding); -} diff --git a/examples/facebook/static/img/tutorial/docsVersionDropdown.png b/examples/facebook/static/img/tutorial/docsVersionDropdown.png deleted file mode 100644 index ff1cbe68893d..000000000000 Binary files a/examples/facebook/static/img/tutorial/docsVersionDropdown.png and /dev/null differ diff --git a/examples/facebook/static/img/tutorial/localeDropdown.png b/examples/facebook/static/img/tutorial/localeDropdown.png deleted file mode 100644 index d7163f967524..000000000000 Binary files a/examples/facebook/static/img/tutorial/localeDropdown.png and /dev/null differ diff --git a/examples/facebook/yarn.lock b/examples/facebook/yarn.lock index a4a733394d48..0fd949106e11 100644 --- a/examples/facebook/yarn.lock +++ b/examples/facebook/yarn.lock @@ -21,121 +21,122 @@ resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.5.2.tgz#e157f9ad624ab8fd940ff28bd2094cdf199cdd79" integrity sha512-ylQAYv5H0YKMfHgVWX0j0NmL8XBcAeeeVQUmppnnMtzDbDnca6CzhKj3Q8eF9cHCgcdTDdb5K+3aKyGWA0obug== -"@algolia/cache-browser-local-storage@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.12.2.tgz#62935ddb81b50d539111b2146fa340495ec1cd53" - integrity sha512-z8LjFsQc0B6h6LEE3pkUGM4ErVktn6bkFbhnYbTccjmFVQ+wXFJd/D63e0WtaC+hwRB1xq8uKhkz9oojEKEsGA== - dependencies: - "@algolia/cache-common" "4.12.2" - -"@algolia/cache-common@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.12.2.tgz#8512f311524f4d0aae8611e9879214a5e2a577ae" - integrity sha512-r//r7MF0Na0HxD2BHnjWsDKuI72Z5UEf/Rb/8MC08XKBsjCwBihGxWxycjRcNGjNEIxJBsvRMIEOipcd9qD54g== - -"@algolia/cache-in-memory@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.12.2.tgz#cacd13c02a7826bfad1c391d012ce00bc5db3859" - integrity sha512-opWpbBUloP1fcTG3wBDnAfcoyNXW5GFDgGtLXrSANdfnelPKkr3O8j01ZTkRlPIuBDR0izGZG8MVWMDlTf71Bw== - dependencies: - "@algolia/cache-common" "4.12.2" - -"@algolia/client-account@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.12.2.tgz#adc4833b78576d1558ba45b7d44be22747debdc9" - integrity sha512-HZqEyeVVjzOlfoSUyc+7+ueEJmRgqSuC+hqQOGECYa5JVno4d8eRVuDAMOb87I2LOdg/WoFMcAtaaRq2gpfV/w== - dependencies: - "@algolia/client-common" "4.12.2" - "@algolia/client-search" "4.12.2" - "@algolia/transporter" "4.12.2" - -"@algolia/client-analytics@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.12.2.tgz#741115db1af7db9526acdd702890480480dc09ce" - integrity sha512-7ktimzesu+vk3l+eG9w/nQh6/9AoIieCKmoiRIguKh6okGsaSBrcTHvUwIQEIiliqPuAFBk2M8eXYFqOZzwCZw== - dependencies: - "@algolia/client-common" "4.12.2" - "@algolia/client-search" "4.12.2" - "@algolia/requester-common" "4.12.2" - "@algolia/transporter" "4.12.2" - -"@algolia/client-common@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.12.2.tgz#88ffd3ddececdc5f343a4a9cb1f6c4058fe780c1" - integrity sha512-+dTicT1lklwOpeoiDspUoRSQYHhrr2IzllrX89/WuTPEBm2eww1xurqrSTQYC0MuVeX1s9/i4k34Q0ZnspypWg== - dependencies: - "@algolia/requester-common" "4.12.2" - "@algolia/transporter" "4.12.2" - -"@algolia/client-personalization@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.12.2.tgz#5aa1d2a4bbc64559a98bb6d029dda59dbc86e490" - integrity sha512-JBW3vYFGIm5sAAy3cLUdmUCpmSAdreo5S1fERg7xgF6KyxGrwyy5BViTNWrOKG+av2yusk1wKydOYJ1Fbpbaxw== - dependencies: - "@algolia/client-common" "4.12.2" - "@algolia/requester-common" "4.12.2" - "@algolia/transporter" "4.12.2" - -"@algolia/client-search@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.12.2.tgz#940dd07ae4fa7aa86e382ecaf0a82445010b1b4c" - integrity sha512-JIqi14TgfEqAooNbSPBC1ZCk3Pnviqlaz9KofAqWBxSRTpPUFnU/XQCU5ihR0PC68SFVDnU/Y9cak/XotXPUeg== - dependencies: - "@algolia/client-common" "4.12.2" - "@algolia/requester-common" "4.12.2" - "@algolia/transporter" "4.12.2" +"@algolia/cache-browser-local-storage@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.13.0.tgz#f8aa4fe31104b19d616ea392f9ed5c2ea847d964" + integrity sha512-nj1vHRZauTqP/bluwkRIgEADEimqojJgoTRCel5f6q8WCa9Y8QeI4bpDQP28FoeKnDRYa3J5CauDlN466jqRhg== + dependencies: + "@algolia/cache-common" "4.13.0" + +"@algolia/cache-common@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.13.0.tgz#27b83fd3939d08d72261b36a07eeafc4cb4d2113" + integrity sha512-f9mdZjskCui/dA/fA/5a+6hZ7xnHaaZI5tM/Rw9X8rRB39SUlF/+o3P47onZ33n/AwkpSbi5QOyhs16wHd55kA== + +"@algolia/cache-in-memory@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.13.0.tgz#10801a74550cbabb64b59ff08c56bce9c278ff2d" + integrity sha512-hHdc+ahPiMM92CQMljmObE75laYzNFYLrNOu0Q3/eyvubZZRtY2SUsEEgyUEyzXruNdzrkcDxFYa7YpWBJYHAg== + dependencies: + "@algolia/cache-common" "4.13.0" + +"@algolia/client-account@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.13.0.tgz#f8646dd40d1e9e3353e10abbd5d6c293ea92a8e2" + integrity sha512-FzFqFt9b0g/LKszBDoEsW+dVBuUe1K3scp2Yf7q6pgHWM1WqyqUlARwVpLxqyc+LoyJkTxQftOKjyFUqddnPKA== + dependencies: + "@algolia/client-common" "4.13.0" + "@algolia/client-search" "4.13.0" + "@algolia/transporter" "4.13.0" + +"@algolia/client-analytics@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.13.0.tgz#a00bd02df45d71becb9dd4c5c993d805f2e1786d" + integrity sha512-klmnoq2FIiiMHImkzOm+cGxqRLLu9CMHqFhbgSy9wtXZrqb8BBUIUE2VyBe7azzv1wKcxZV2RUyNOMpFqmnRZA== + dependencies: + "@algolia/client-common" "4.13.0" + "@algolia/client-search" "4.13.0" + "@algolia/requester-common" "4.13.0" + "@algolia/transporter" "4.13.0" + +"@algolia/client-common@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.13.0.tgz#8bc373d164dbdcce38b4586912bbe162492bcb86" + integrity sha512-GoXfTp0kVcbgfSXOjfrxx+slSipMqGO9WnNWgeMmru5Ra09MDjrcdunsiiuzF0wua6INbIpBQFTC2Mi5lUNqGA== + dependencies: + "@algolia/requester-common" "4.13.0" + "@algolia/transporter" "4.13.0" + +"@algolia/client-personalization@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.13.0.tgz#10fb7af356422551f11a67222b39c52306f1512c" + integrity sha512-KneLz2WaehJmNfdr5yt2HQETpLaCYagRdWwIwkTqRVFCv4DxRQ2ChPVW9jeTj4YfAAhfzE6F8hn7wkQ/Jfj6ZA== + dependencies: + "@algolia/client-common" "4.13.0" + "@algolia/requester-common" "4.13.0" + "@algolia/transporter" "4.13.0" + +"@algolia/client-search@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.13.0.tgz#2d8ff8e755c4a37ec89968f3f9b358eed005c7f0" + integrity sha512-blgCKYbZh1NgJWzeGf+caKE32mo3j54NprOf0LZVCubQb3Kx37tk1Hc8SDs9bCAE8hUvf3cazMPIg7wscSxspA== + dependencies: + "@algolia/client-common" "4.13.0" + "@algolia/requester-common" "4.13.0" + "@algolia/transporter" "4.13.0" "@algolia/events@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@algolia/events/-/events-4.0.1.tgz#fd39e7477e7bc703d7f893b556f676c032af3950" integrity sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ== -"@algolia/logger-common@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.12.2.tgz#cdc9a685d7cf356a4d9e5915f741f1ee1a6baade" - integrity sha512-iOiJAymLjq137G7+8EQuUEkrgta0cZGMg6scp8s4hJ+X6k+6By4nyptdkCWYwKLsW/Xy927QcIhGlkWV78vQIQ== +"@algolia/logger-common@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.13.0.tgz#be2606e71aae618a1ff1ea9a1b5f5a74284b35a8" + integrity sha512-8yqXk7rMtmQJ9wZiHOt/6d4/JDEg5VCk83gJ39I+X/pwUPzIsbKy9QiK4uJ3aJELKyoIiDT1hpYVt+5ia+94IA== -"@algolia/logger-console@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.12.2.tgz#d7348e41378fbab5413cb5f97d8ae2ff378cfdb8" - integrity sha512-veuQZyTSqHoHJtr9mLMnYeal9Mee6hCie4eqY+645VbeOrgT9p/kCMbKg5GLJGoLPlXGu7C0XpHyUj5k7/NQyw== +"@algolia/logger-console@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.13.0.tgz#f28028a760e3d9191e28a10b12925e48f6c9afde" + integrity sha512-YepRg7w2/87L0vSXRfMND6VJ5d6699sFJBRWzZPOlek2p5fLxxK7O0VncYuc/IbVHEgeApvgXx0WgCEa38GVuQ== dependencies: - "@algolia/logger-common" "4.12.2" + "@algolia/logger-common" "4.13.0" -"@algolia/requester-browser-xhr@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.12.2.tgz#abfcb1901602ccdf51879b10d914208b776aa418" - integrity sha512-FpFdHNd81tS3zj6Glqd+lt+RV0ljPExKtx+QB+gani6HWZ9YlSCM+Zl82T4ibxN+hmkrMeAyT+TMzS0jiGhGyQ== +"@algolia/requester-browser-xhr@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.13.0.tgz#e2483f4e8d7f09e27cd0daf6c77711d15c5a919f" + integrity sha512-Dj+bnoWR5MotrnjblzGKZ2kCdQi2cK/VzPURPnE616NU/il7Ypy6U6DLGZ/ZYz+tnwPa0yypNf21uqt84fOgrg== dependencies: - "@algolia/requester-common" "4.12.2" + "@algolia/requester-common" "4.13.0" -"@algolia/requester-common@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.12.2.tgz#6d6181fb961205695bf535e108d2e5be8f8c9047" - integrity sha512-4szj/lvDQf/u8EyyRBBRZD1ZkKDyLBbckLj7meQDlnbfwnW1UpLwpB2l3XJ9wDmDSftGxUCeTl5oMFe4z9OEvQ== +"@algolia/requester-common@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.13.0.tgz#47fb3464cfb26b55ba43676d13f295d812830596" + integrity sha512-BRTDj53ecK+gn7ugukDWOOcBRul59C4NblCHqj4Zm5msd5UnHFjd/sGX+RLOEoFMhetILAnmg6wMrRrQVac9vw== -"@algolia/requester-node-http@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.12.2.tgz#f91e749ee6854c944cc741f13c539dff23363f67" - integrity sha512-UXfJNZt2KMwjBjiOa3cJ/PyoXWZa/F1vy6rdyG4xQeZDcLbqKP3O2b+bOJcGPmFbmdwBhtAyMVLt+hvAvAVfOw== +"@algolia/requester-node-http@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.13.0.tgz#7d981bbd31492f51dd11820a665f9d8906793c37" + integrity sha512-9b+3O4QFU4azLhGMrZAr/uZPydvzOR4aEZfSL8ZrpLZ7fbbqTO0S/5EVko+QIgglRAtVwxvf8UJ1wzTD2jvKxQ== dependencies: - "@algolia/requester-common" "4.12.2" + "@algolia/requester-common" "4.13.0" -"@algolia/transporter@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.12.2.tgz#60189b626b170f3386deb1d7a0a1e70ed8156864" - integrity sha512-PUq79if4CukXsm27ymTQ3eD3juSvMcyJmt6mxCkSFE0zQRL4ert61HBlNH6S9y/quUVe3g7oggfHq3d5pdpqZA== +"@algolia/transporter@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.13.0.tgz#f6379e5329efa2127da68c914d1141f5f21dbd07" + integrity sha512-8tSQYE+ykQENAdeZdofvtkOr5uJ9VcQSWgRhQ9h01AehtBIPAczk/b2CLrMsw5yQZziLs5cZ3pJ3478yI+urhA== dependencies: - "@algolia/cache-common" "4.12.2" - "@algolia/logger-common" "4.12.2" - "@algolia/requester-common" "4.12.2" + "@algolia/cache-common" "4.13.0" + "@algolia/logger-common" "4.13.0" + "@algolia/requester-common" "4.13.0" "@ampproject/remapping@^2.1.0": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34" - integrity sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg== + version "2.2.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" + integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== dependencies: - "@jridgewell/trace-mapping" "^0.3.0" + "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/trace-mapping" "^0.3.9" "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.8.3": version "7.16.7" @@ -144,10 +145,10 @@ dependencies: "@babel/highlight" "^7.16.7" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.4", "@babel/compat-data@^7.16.8", "@babel/compat-data@^7.17.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.0.tgz#86850b8597ea6962089770952075dcaabb8dba34" - integrity sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng== +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.17.0", "@babel/compat-data@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.10.tgz#711dc726a492dfc8be8220028b1b92482362baab" + integrity sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw== "@babel/core@7.12.9": version "7.12.9" @@ -171,28 +172,28 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.15.5", "@babel/core@^7.17.5": - version "7.17.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.5.tgz#6cd2e836058c28f06a4ca8ee7ed955bbf37c8225" - integrity sha512-/BBMw4EvjmyquN5O+t5eh0+YqB3XXJkYD2cjKpYtWOfFy4lQ4UozNSmxAcWT8r2XtZs0ewG+zrfsqeR15i1ajA== +"@babel/core@^7.15.5", "@babel/core@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.10.tgz#74ef0fbf56b7dfc3f198fc2d927f4f03e12f4b05" + integrity sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.3" - "@babel/helper-compilation-targets" "^7.16.7" - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helpers" "^7.17.2" - "@babel/parser" "^7.17.3" + "@babel/generator" "^7.17.10" + "@babel/helper-compilation-targets" "^7.17.10" + "@babel/helper-module-transforms" "^7.17.7" + "@babel/helpers" "^7.17.9" + "@babel/parser" "^7.17.10" "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.3" - "@babel/types" "^7.17.0" + "@babel/traverse" "^7.17.10" + "@babel/types" "^7.17.10" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" - json5 "^2.1.2" + json5 "^2.2.1" semver "^6.3.0" -"@babel/eslint-parser@^7.16.3": +"@babel/eslint-parser@^7.17.0": version "7.17.0" resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.17.0.tgz#eabb24ad9f0afa80e5849f8240d0e5facc2d90d6" integrity sha512-PUEJ7ZBXbRkbq3qqM/jZ2nIuakUBqCYc7Qf52Lj7dlZ6zERnqisdHioL0l4wwQZnmskMeasqUNzLBFKs3nylXA== @@ -201,14 +202,14 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.0" -"@babel/generator@^7.12.5", "@babel/generator@^7.17.3": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.3.tgz#a2c30b0c4f89858cb87050c3ffdfd36bdf443200" - integrity sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg== +"@babel/generator@^7.12.5", "@babel/generator@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.10.tgz#c281fa35b0c349bbe9d02916f4ae08fc85ed7189" + integrity sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg== dependencies: - "@babel/types" "^7.17.0" + "@babel/types" "^7.17.10" + "@jridgewell/gen-mapping" "^0.1.0" jsesc "^2.5.1" - source-map "^0.5.0" "@babel/helper-annotate-as-pure@^7.16.7": version "7.16.7" @@ -225,30 +226,30 @@ "@babel/helper-explode-assignable-expression" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz#06e66c5f299601e6c7da350049315e83209d551b" - integrity sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA== +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz#09c63106d47af93cf31803db6bc49fef354e2ebe" + integrity sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ== dependencies: - "@babel/compat-data" "^7.16.4" + "@babel/compat-data" "^7.17.10" "@babel/helper-validator-option" "^7.16.7" - browserslist "^4.17.5" + browserslist "^4.20.2" semver "^6.3.0" "@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.6": - version "7.17.6" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz#3778c1ed09a7f3e65e6d6e0f6fbfcc53809d92c9" - integrity sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg== + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz#71835d7fb9f38bd9f1378e40a4c0902fdc2ea49d" + integrity sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-member-expression-to-functions" "^7.17.7" "@babel/helper-optimise-call-expression" "^7.16.7" "@babel/helper-replace-supers" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" -"@babel/helper-create-regexp-features-plugin@^7.16.7": +"@babel/helper-create-regexp-features-plugin@^7.16.7", "@babel/helper-create-regexp-features-plugin@^7.17.0": version "7.17.0" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz#1dcc7d40ba0c6b6b25618997c5dbfd310f186fe1" integrity sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA== @@ -284,21 +285,13 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-function-name@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" - integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA== +"@babel/helper-function-name@^7.16.7", "@babel/helper-function-name@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12" + integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg== dependencies: - "@babel/helper-get-function-arity" "^7.16.7" "@babel/template" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/helper-get-function-arity@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" - integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw== - dependencies: - "@babel/types" "^7.16.7" + "@babel/types" "^7.17.0" "@babel/helper-hoist-variables@^7.16.7": version "7.16.7" @@ -307,12 +300,12 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-member-expression-to-functions@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz#42b9ca4b2b200123c3b7e726b0ae5153924905b0" - integrity sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q== +"@babel/helper-member-expression-to-functions@^7.16.7", "@babel/helper-member-expression-to-functions@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4" + integrity sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw== dependencies: - "@babel/types" "^7.16.7" + "@babel/types" "^7.17.0" "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7": version "7.16.7" @@ -321,14 +314,14 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.16.7": - version "7.17.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.6.tgz#3c3b03cc6617e33d68ef5a27a67419ac5199ccd0" - integrity sha512-2ULmRdqoOMpdvkbT8jONrZML/XALfzxlb052bldftkicAUy8AxSCkD5trDPQcwHNmolcl7wP6ehNqMlyUw6AaA== +"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.16.7", "@babel/helper-module-transforms@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz#3943c7f777139e7954a5355c815263741a9c1cbd" + integrity sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw== dependencies: "@babel/helper-environment-visitor" "^7.16.7" "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-simple-access" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" "@babel/helper-split-export-declaration" "^7.16.7" "@babel/helper-validator-identifier" "^7.16.7" "@babel/template" "^7.16.7" @@ -372,12 +365,12 @@ "@babel/traverse" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/helper-simple-access@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz#d656654b9ea08dbb9659b69d61063ccd343ff0f7" - integrity sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g== +"@babel/helper-simple-access@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz#aaa473de92b7987c6dfa7ce9a7d9674724823367" + integrity sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA== dependencies: - "@babel/types" "^7.16.7" + "@babel/types" "^7.17.0" "@babel/helper-skip-transparent-expression-wrappers@^7.16.0": version "7.16.0" @@ -413,28 +406,28 @@ "@babel/traverse" "^7.16.8" "@babel/types" "^7.16.8" -"@babel/helpers@^7.12.5", "@babel/helpers@^7.17.2": - version "7.17.2" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.2.tgz#23f0a0746c8e287773ccd27c14be428891f63417" - integrity sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ== +"@babel/helpers@^7.12.5", "@babel/helpers@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.9.tgz#b2af120821bfbe44f9907b1826e168e819375a1a" + integrity sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q== dependencies: "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.0" + "@babel/traverse" "^7.17.9" "@babel/types" "^7.17.0" "@babel/highlight@^7.16.7": - version "7.16.10" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" - integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw== + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.9.tgz#61b2ee7f32ea0454612def4fccdae0de232b73e3" + integrity sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg== dependencies: "@babel/helper-validator-identifier" "^7.16.7" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.12.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.3": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.3.tgz#b07702b982990bf6fdc1da5049a23fece4c5c3d0" - integrity sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA== +"@babel/parser@^7.12.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.10.tgz#873b16db82a8909e0fbd7f115772f4b739f6ce78" + integrity sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": version "7.16.7" @@ -469,7 +462,7 @@ "@babel/helper-create-class-features-plugin" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-proposal-class-static-block@^7.16.7": +"@babel/plugin-proposal-class-static-block@^7.17.6": version "7.17.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz#164e8fd25f0d80fa48c5a4d1438a6629325ad83c" integrity sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA== @@ -535,7 +528,7 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-transform-parameters" "^7.12.1" -"@babel/plugin-proposal-object-rest-spread@^7.16.7": +"@babel/plugin-proposal-object-rest-spread@^7.17.3": version "7.17.3" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz#d9eb649a54628a51701aef7e0ea3d17e2b9dd390" integrity sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw== @@ -702,9 +695,9 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-typescript@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz#39c9b55ee153151990fb038651d58d3fd03f98f8" - integrity sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A== + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.10.tgz#80031e6042cad6a95ed753f672ebd23c30933195" + integrity sha512-xJefea1DWXW09pW4Tm9bjwVlPDyYA2it3fWlmEjpYz6alPvTUjL0EOzNzI/FEOyI3r4/J7uVH5UqKgl1TQ5hqQ== dependencies: "@babel/helper-plugin-utils" "^7.16.7" @@ -759,10 +752,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-destructuring@^7.16.7": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.3.tgz#c445f75819641788a27a0a3a759d9df911df6abc" - integrity sha512-dDFzegDYKlPqa72xIlbmSkly5MluLoaC1JswABGktyt6NTXSBcUuse/kWE/wvKFWJHPETpi158qJZFS3JmykJg== +"@babel/plugin-transform-destructuring@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz#49dc2675a7afa9a5e4c6bdee636061136c3408d1" + integrity sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ== dependencies: "@babel/helper-plugin-utils" "^7.16.7" @@ -828,23 +821,23 @@ "@babel/helper-plugin-utils" "^7.16.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz#cdee19aae887b16b9d331009aa9a219af7c86afe" - integrity sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA== +"@babel/plugin-transform-modules-commonjs@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz#274be1a2087beec0254d4abd4d86e52442e1e5b6" + integrity sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw== dependencies: - "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-module-transforms" "^7.17.7" "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-simple-access" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz#887cefaef88e684d29558c2b13ee0563e287c2d7" - integrity sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw== +"@babel/plugin-transform-modules-systemjs@^7.17.8": + version "7.17.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz#81fd834024fae14ea78fbe34168b042f38703859" + integrity sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw== dependencies: "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-module-transforms" "^7.17.7" "@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-validator-identifier" "^7.16.7" babel-plugin-dynamic-import-node "^2.3.3" @@ -857,12 +850,12 @@ "@babel/helper-module-transforms" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-named-capturing-groups-regex@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz#7f860e0e40d844a02c9dcf9d84965e7dfd666252" - integrity sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw== +"@babel/plugin-transform-named-capturing-groups-regex@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.10.tgz#715dbcfafdb54ce8bccd3d12e8917296a4ba66a4" + integrity sha512-v54O6yLaJySCs6mGzaVOUw9T967GnH38T6CQSAtnzdNPwu84l2qAjssKzo/WSO8Yi7NF+7ekm5cVbF/5qiIgNA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-create-regexp-features-plugin" "^7.17.0" "@babel/plugin-transform-new-target@^7.16.7": version "7.16.7" @@ -933,12 +926,12 @@ "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-regenerator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz#9e7576dc476cb89ccc5096fff7af659243b4adeb" - integrity sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q== +"@babel/plugin-transform-regenerator@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz#0a33c3a61cf47f45ed3232903683a0afd2d3460c" + integrity sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ== dependencies: - regenerator-transform "^0.14.2" + regenerator-transform "^0.15.0" "@babel/plugin-transform-reserved-words@^7.16.7": version "7.16.7" @@ -947,10 +940,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-runtime@^7.17.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz#0a2e08b5e2b2d95c4b1d3b3371a2180617455b70" - integrity sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A== +"@babel/plugin-transform-runtime@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.10.tgz#b89d821c55d61b5e3d3c3d1d636d8d5a81040ae1" + integrity sha512-6jrMilUAJhktTr56kACL8LnWC5hx3Lf27BS0R0DSyW/OoJfb/iTHeE96V3b1dgKG3FSFdd/0culnYWMkjcKCig== dependencies: "@babel/helper-module-imports" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" @@ -1019,27 +1012,27 @@ "@babel/helper-create-regexp-features-plugin" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/preset-env@^7.15.6", "@babel/preset-env@^7.16.11": - version "7.16.11" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.11.tgz#5dd88fd885fae36f88fd7c8342475c9f0abe2982" - integrity sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g== +"@babel/preset-env@^7.15.6", "@babel/preset-env@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.17.10.tgz#a81b093669e3eb6541bb81a23173c5963c5de69c" + integrity sha512-YNgyBHZQpeoBSRBg0xixsZzfT58Ze1iZrajvv0lJc70qDDGuGfonEnMGfWeSY0mQ3JTuCWFbMkzFRVafOyJx4g== dependencies: - "@babel/compat-data" "^7.16.8" - "@babel/helper-compilation-targets" "^7.16.7" + "@babel/compat-data" "^7.17.10" + "@babel/helper-compilation-targets" "^7.17.10" "@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-validator-option" "^7.16.7" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.7" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.7" "@babel/plugin-proposal-async-generator-functions" "^7.16.8" "@babel/plugin-proposal-class-properties" "^7.16.7" - "@babel/plugin-proposal-class-static-block" "^7.16.7" + "@babel/plugin-proposal-class-static-block" "^7.17.6" "@babel/plugin-proposal-dynamic-import" "^7.16.7" "@babel/plugin-proposal-export-namespace-from" "^7.16.7" "@babel/plugin-proposal-json-strings" "^7.16.7" "@babel/plugin-proposal-logical-assignment-operators" "^7.16.7" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.7" "@babel/plugin-proposal-numeric-separator" "^7.16.7" - "@babel/plugin-proposal-object-rest-spread" "^7.16.7" + "@babel/plugin-proposal-object-rest-spread" "^7.17.3" "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" "@babel/plugin-proposal-optional-chaining" "^7.16.7" "@babel/plugin-proposal-private-methods" "^7.16.11" @@ -1065,7 +1058,7 @@ "@babel/plugin-transform-block-scoping" "^7.16.7" "@babel/plugin-transform-classes" "^7.16.7" "@babel/plugin-transform-computed-properties" "^7.16.7" - "@babel/plugin-transform-destructuring" "^7.16.7" + "@babel/plugin-transform-destructuring" "^7.17.7" "@babel/plugin-transform-dotall-regex" "^7.16.7" "@babel/plugin-transform-duplicate-keys" "^7.16.7" "@babel/plugin-transform-exponentiation-operator" "^7.16.7" @@ -1074,15 +1067,15 @@ "@babel/plugin-transform-literals" "^7.16.7" "@babel/plugin-transform-member-expression-literals" "^7.16.7" "@babel/plugin-transform-modules-amd" "^7.16.7" - "@babel/plugin-transform-modules-commonjs" "^7.16.8" - "@babel/plugin-transform-modules-systemjs" "^7.16.7" + "@babel/plugin-transform-modules-commonjs" "^7.17.9" + "@babel/plugin-transform-modules-systemjs" "^7.17.8" "@babel/plugin-transform-modules-umd" "^7.16.7" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.8" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.17.10" "@babel/plugin-transform-new-target" "^7.16.7" "@babel/plugin-transform-object-super" "^7.16.7" "@babel/plugin-transform-parameters" "^7.16.7" "@babel/plugin-transform-property-literals" "^7.16.7" - "@babel/plugin-transform-regenerator" "^7.16.7" + "@babel/plugin-transform-regenerator" "^7.17.9" "@babel/plugin-transform-reserved-words" "^7.16.7" "@babel/plugin-transform-shorthand-properties" "^7.16.7" "@babel/plugin-transform-spread" "^7.16.7" @@ -1092,11 +1085,11 @@ "@babel/plugin-transform-unicode-escapes" "^7.16.7" "@babel/plugin-transform-unicode-regex" "^7.16.7" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.16.8" + "@babel/types" "^7.17.10" babel-plugin-polyfill-corejs2 "^0.3.0" babel-plugin-polyfill-corejs3 "^0.5.0" babel-plugin-polyfill-regenerator "^0.3.0" - core-js-compat "^3.20.2" + core-js-compat "^3.22.1" semver "^6.3.0" "@babel/preset-modules@^0.1.5": @@ -1131,18 +1124,18 @@ "@babel/helper-validator-option" "^7.16.7" "@babel/plugin-transform-typescript" "^7.16.7" -"@babel/runtime-corejs3@^7.10.2", "@babel/runtime-corejs3@^7.17.2": - version "7.17.2" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.17.2.tgz#fdca2cd05fba63388babe85d349b6801b008fd13" - integrity sha512-NcKtr2epxfIrNM4VOmPKO46TvDMCBhgi2CrSHaEarrz+Plk2K5r9QemmOFTGpZaoKnWoGH5MO+CzeRsih/Fcgg== +"@babel/runtime-corejs3@^7.10.2", "@babel/runtime-corejs3@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.17.9.tgz#3d02d0161f0fbf3ada8e88159375af97690f4055" + integrity sha512-WxYHHUWF2uZ7Hp1K+D1xQgbgkGUfA+5UPOegEXGt2Y5SMog/rYCVaifLZDbw8UkNXozEqqrZTy6bglL7xTaCOw== dependencies: core-js-pure "^3.20.2" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.2", "@babel/runtime@^7.8.4": - version "7.17.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.2.tgz#66f68591605e59da47523c631416b18508779941" - integrity sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw== +"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.9", "@babel/runtime@^7.8.4": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72" + integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg== dependencies: regenerator-runtime "^0.13.4" @@ -1155,30 +1148,35 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.0", "@babel/traverse@^7.17.3": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57" - integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw== +"@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.10", "@babel/traverse@^7.17.3", "@babel/traverse@^7.17.9": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.10.tgz#1ee1a5ac39f4eac844e6cf855b35520e5eb6f8b5" + integrity sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw== dependencies: "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.3" + "@babel/generator" "^7.17.10" "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" + "@babel/helper-function-name" "^7.17.9" "@babel/helper-hoist-variables" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.17.3" - "@babel/types" "^7.17.0" + "@babel/parser" "^7.17.10" + "@babel/types" "^7.17.10" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.12.7", "@babel/types@^7.15.6", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.4.4": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" - integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== +"@babel/types@^7.12.7", "@babel/types@^7.15.6", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.10", "@babel/types@^7.4.4": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.10.tgz#d35d7b4467e439fcf06d195f8100e0fea7fc82c4" + integrity sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A== dependencies: "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + "@docsearch/css@3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.0.0.tgz#fe57b474802ffd706d3246eab25d52fac8aa3698" @@ -1194,64 +1192,62 @@ "@docsearch/css" "3.0.0" algoliasearch "^4.0.0" -"@docusaurus/core@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.0.0-beta.17.tgz#f631aae04405de42a428a31928998242cd1d7b77" - integrity sha512-iNdW7CsmHNOgc4PxD9BFxa+MD8+i7ln7erOBkF3FSMMPnsKUeVqsR3rr31aLmLZRlTXMITSPLxlXwtBZa3KPCw== +"@docusaurus/core@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.0.0-beta.20.tgz#cf4aeeccecacb547a6fb42340c83bed0cccb57c0" + integrity sha512-a3UgZ4lIcIOoZd4j9INqVkWSXEDxR7EicJXt8eq2whg4N5hKGqLHoDSnWfrVSPQn4NoG5T7jhPypphSoysImfQ== dependencies: - "@babel/core" "^7.17.5" - "@babel/generator" "^7.17.3" + "@babel/core" "^7.17.10" + "@babel/generator" "^7.17.10" "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-transform-runtime" "^7.17.0" - "@babel/preset-env" "^7.16.11" + "@babel/plugin-transform-runtime" "^7.17.10" + "@babel/preset-env" "^7.17.10" "@babel/preset-react" "^7.16.7" "@babel/preset-typescript" "^7.16.7" - "@babel/runtime" "^7.17.2" - "@babel/runtime-corejs3" "^7.17.2" - "@babel/traverse" "^7.17.3" - "@docusaurus/cssnano-preset" "2.0.0-beta.17" - "@docusaurus/logger" "2.0.0-beta.17" - "@docusaurus/mdx-loader" "2.0.0-beta.17" + "@babel/runtime" "^7.17.9" + "@babel/runtime-corejs3" "^7.17.9" + "@babel/traverse" "^7.17.10" + "@docusaurus/cssnano-preset" "2.0.0-beta.20" + "@docusaurus/logger" "2.0.0-beta.20" + "@docusaurus/mdx-loader" "2.0.0-beta.20" "@docusaurus/react-loadable" "5.5.2" - "@docusaurus/utils" "2.0.0-beta.17" - "@docusaurus/utils-common" "2.0.0-beta.17" - "@docusaurus/utils-validation" "2.0.0-beta.17" - "@slorber/static-site-generator-webpack-plugin" "^4.0.1" + "@docusaurus/utils" "2.0.0-beta.20" + "@docusaurus/utils-common" "2.0.0-beta.20" + "@docusaurus/utils-validation" "2.0.0-beta.20" + "@slorber/static-site-generator-webpack-plugin" "^4.0.4" "@svgr/webpack" "^6.2.1" - autoprefixer "^10.4.2" - babel-loader "^8.2.3" + autoprefixer "^10.4.5" + babel-loader "^8.2.5" babel-plugin-dynamic-import-node "2.3.0" boxen "^6.2.1" chokidar "^3.5.3" - clean-css "^5.2.4" - cli-table3 "^0.6.1" + clean-css "^5.3.0" + cli-table3 "^0.6.2" combine-promises "^1.1.0" commander "^5.1.0" copy-webpack-plugin "^10.2.4" - core-js "^3.21.1" - css-loader "^6.6.0" + core-js "^3.22.3" + css-loader "^6.7.1" css-minimizer-webpack-plugin "^3.4.1" - cssnano "^5.0.17" + cssnano "^5.1.7" del "^6.0.0" detect-port "^1.3.0" escape-html "^1.0.3" eta "^1.12.3" file-loader "^6.2.0" - fs-extra "^10.0.1" + fs-extra "^10.1.0" html-minifier-terser "^6.1.0" - html-tags "^3.1.0" + html-tags "^3.2.0" html-webpack-plugin "^5.5.0" import-fresh "^3.3.0" - is-root "^2.1.0" leven "^3.1.0" lodash "^4.17.21" - mini-css-extract-plugin "^2.5.3" - nprogress "^0.2.0" - postcss "^8.4.7" + mini-css-extract-plugin "^2.6.0" + postcss "^8.4.13" postcss-loader "^6.2.1" prompts "^2.4.2" - react-dev-utils "^12.0.0" - react-helmet-async "^1.2.3" + react-dev-utils "^12.0.1" + react-helmet-async "^1.3.0" react-loadable "npm:@docusaurus/react-loadable@5.5.2" react-loadable-ssr-addon-v5-slorber "^1.0.1" react-router "^5.2.0" @@ -1259,183 +1255,184 @@ react-router-dom "^5.2.0" remark-admonitions "^1.2.1" rtl-detect "^1.0.4" - semver "^7.3.4" + semver "^7.3.7" serve-handler "^6.1.3" shelljs "^0.8.5" terser-webpack-plugin "^5.3.1" - tslib "^2.3.1" + tslib "^2.4.0" update-notifier "^5.1.0" url-loader "^4.1.1" wait-on "^6.0.1" - webpack "^5.69.1" + webpack "^5.72.0" webpack-bundle-analyzer "^4.5.0" - webpack-dev-server "^4.7.4" + webpack-dev-server "^4.8.1" webpack-merge "^5.8.0" webpackbar "^5.0.2" -"@docusaurus/cssnano-preset@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.0-beta.17.tgz#f687bc6e5c8cb2139a7830dec757cfcb92dbb681" - integrity sha512-DoBwtLjJ9IY9/lNMHIEdo90L4NDayvU28nLgtjR2Sc6aBIMEB/3a5Ndjehnp+jZAkwcDdNASA86EkZVUyz1O1A== +"@docusaurus/cssnano-preset@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.0-beta.20.tgz#c47722e347fd044f2372e924199eabf61733232f" + integrity sha512-7pfrYuahHl3YYS+gYhbb1YHsq5s5+hk+1KIU7QqNNn4YjrIqAHlOznCQ9XfQfspe9boZmaNFGMZQ1tawNOVLqQ== dependencies: - cssnano-preset-advanced "^5.1.12" - postcss "^8.4.7" + cssnano-preset-advanced "^5.3.3" + postcss "^8.4.13" postcss-sort-media-queries "^4.2.1" -"@docusaurus/logger@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-2.0.0-beta.17.tgz#89c5ace3b4efd5274adb0d8919328892c4466d02" - integrity sha512-F9JDl06/VLg+ylsvnq9NpILSUeWtl0j4H2LtlLzX5gufEL4dGiCMlnUzYdHl7FSHSzYJ0A/R7vu0SYofsexC4w== +"@docusaurus/logger@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-2.0.0-beta.20.tgz#bb49e8516e48082ab96bca11569a18541476d5a6" + integrity sha512-7Rt7c8m3ZM81o5jsm6ENgdbjq/hUICv8Om2i7grynI4GT2aQyFoHcusaNbRji4FZt0DaKT2CQxiAWP8BbD4xzQ== dependencies: chalk "^4.1.2" - tslib "^2.3.1" + tslib "^2.4.0" -"@docusaurus/mdx-loader@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-beta.17.tgz#838f87f4cbf12701c4d8eb11e4f9698fb7155bf8" - integrity sha512-AhJ3GWRmjQYCyINHE595pff5tn3Rt83oGpdev5UT9uvG9lPYPC8nEmh1LI6c0ogfw7YkNznzxWSW4hyyVbYQ3A== +"@docusaurus/mdx-loader@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-beta.20.tgz#7016e8ce7e4a11c9ea458e2236d3c93af71f393f" + integrity sha512-BBuf77sji3JxbCEW7Qsv3CXlgpm+iSLTQn6JUK7x8vJ1JYZ3KJbNgpo9TmxIIltpcvNQ/QOy6dvqrpSStaWmKQ== dependencies: - "@babel/parser" "^7.17.3" - "@babel/traverse" "^7.17.3" - "@docusaurus/logger" "2.0.0-beta.17" - "@docusaurus/utils" "2.0.0-beta.17" + "@babel/parser" "^7.17.10" + "@babel/traverse" "^7.17.10" + "@docusaurus/logger" "2.0.0-beta.20" + "@docusaurus/utils" "2.0.0-beta.20" "@mdx-js/mdx" "^1.6.22" escape-html "^1.0.3" file-loader "^6.2.0" - fs-extra "^10.0.1" + fs-extra "^10.1.0" image-size "^1.0.1" mdast-util-to-string "^2.0.0" - remark-emoji "^2.1.0" + remark-emoji "^2.2.0" stringify-object "^3.3.0" - tslib "^2.3.1" - unist-util-visit "^2.0.2" + tslib "^2.4.0" + unist-util-visit "^2.0.3" url-loader "^4.1.1" - webpack "^5.69.1" + webpack "^5.72.0" -"@docusaurus/module-type-aliases@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.0.0-beta.17.tgz#73f6d34be202ac093e78769ff72613d353087cd7" - integrity sha512-Tu+8geC/wyygBudbSwvWIHEvt5RwyA7dEoE1JmPbgQtmqUxOZ9bgnfemwXpJW5mKuDiJASbN4of1DhbLqf4sPg== +"@docusaurus/module-type-aliases@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.0.0-beta.20.tgz#669605a64b04226c391e0284c44743e137eb2595" + integrity sha512-lUIXLwQEOyYwcb3iCNibPUL6O9ijvYF5xQwehGeVraTEBts/Ch8ZwELFk+XbaGHKh52PiVxuWL2CP4Gdjy5QKw== dependencies: - "@docusaurus/types" "2.0.0-beta.17" + "@docusaurus/types" "2.0.0-beta.20" "@types/react" "*" "@types/react-router-config" "*" "@types/react-router-dom" "*" react-helmet-async "*" -"@docusaurus/plugin-content-blog@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-beta.17.tgz#1d1063bfda78a80d517694567b965d5c3a70479f" - integrity sha512-gcX4UR+WKT4bhF8FICBQHy+ESS9iRMeaglSboTZbA/YHGax/3EuZtcPU3dU4E/HFJeZ866wgUdbLKpIpsZOidg== - dependencies: - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/logger" "2.0.0-beta.17" - "@docusaurus/mdx-loader" "2.0.0-beta.17" - "@docusaurus/utils" "2.0.0-beta.17" - "@docusaurus/utils-common" "2.0.0-beta.17" - "@docusaurus/utils-validation" "2.0.0-beta.17" +"@docusaurus/plugin-content-blog@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-beta.20.tgz#7c0d413ac8df9a422a0b3ddd90b77ec491bbda15" + integrity sha512-6aby36Gmny5h2oo/eEZ2iwVsIlBWbRnNNeqT0BYnJO5aj53iCU/ctFPpJVYcw0l2l8+8ITS70FyePIWEsaZ0jA== + dependencies: + "@docusaurus/core" "2.0.0-beta.20" + "@docusaurus/logger" "2.0.0-beta.20" + "@docusaurus/mdx-loader" "2.0.0-beta.20" + "@docusaurus/utils" "2.0.0-beta.20" + "@docusaurus/utils-common" "2.0.0-beta.20" + "@docusaurus/utils-validation" "2.0.0-beta.20" cheerio "^1.0.0-rc.10" feed "^4.2.2" - fs-extra "^10.0.1" + fs-extra "^10.1.0" lodash "^4.17.21" reading-time "^1.5.0" remark-admonitions "^1.2.1" - tslib "^2.3.1" + tslib "^2.4.0" + unist-util-visit "^2.0.3" utility-types "^3.10.0" - webpack "^5.69.1" - -"@docusaurus/plugin-content-docs@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-beta.17.tgz#97f13bb458e165224db6867836e8e9637ea15921" - integrity sha512-YYrBpuRfTfE6NtENrpSHTJ7K7PZifn6j6hcuvdC0QKE+WD8pS+O2/Ws30yoyvHwLnAnfhvaderh1v9Kaa0/ANg== - dependencies: - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/logger" "2.0.0-beta.17" - "@docusaurus/mdx-loader" "2.0.0-beta.17" - "@docusaurus/utils" "2.0.0-beta.17" - "@docusaurus/utils-validation" "2.0.0-beta.17" + webpack "^5.72.0" + +"@docusaurus/plugin-content-docs@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-beta.20.tgz#2a53b9fc355f45bf7c6917f19be7bfa0698b8b9e" + integrity sha512-XOgwUqXtr/DStpB3azdN6wgkKtQkOXOx1XetORzhHnjihrSMn6daxg+spmcJh1ki/mpT3n7yBbKJxVNo+VB38Q== + dependencies: + "@docusaurus/core" "2.0.0-beta.20" + "@docusaurus/logger" "2.0.0-beta.20" + "@docusaurus/mdx-loader" "2.0.0-beta.20" + "@docusaurus/utils" "2.0.0-beta.20" + "@docusaurus/utils-validation" "2.0.0-beta.20" combine-promises "^1.1.0" - fs-extra "^10.0.1" + fs-extra "^10.1.0" import-fresh "^3.3.0" js-yaml "^4.1.0" lodash "^4.17.21" remark-admonitions "^1.2.1" - tslib "^2.3.1" + tslib "^2.4.0" utility-types "^3.10.0" - webpack "^5.69.1" - -"@docusaurus/plugin-content-pages@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-beta.17.tgz#d5955d3cc23722518a6032f830cf8c7b7aeb3d5a" - integrity sha512-d5x0mXTMJ44ojRQccmLyshYoamFOep2AnBe69osCDnwWMbD3Or3pnc2KMK9N7mVpQFnNFKbHNCLrX3Rv0uwEHA== - dependencies: - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/mdx-loader" "2.0.0-beta.17" - "@docusaurus/utils" "2.0.0-beta.17" - "@docusaurus/utils-validation" "2.0.0-beta.17" - fs-extra "^10.0.1" + webpack "^5.72.0" + +"@docusaurus/plugin-content-pages@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-beta.20.tgz#6a76c7fa049983d2d94d8c4d738802acf01611fe" + integrity sha512-ubY6DG4F0skFKjfNGCbfO34Qf+MZy6C05OtpIYsoA2YU8ADx0nRH7qPgdEkwR3ma860DbY612rleRT13ogSlhg== + dependencies: + "@docusaurus/core" "2.0.0-beta.20" + "@docusaurus/mdx-loader" "2.0.0-beta.20" + "@docusaurus/utils" "2.0.0-beta.20" + "@docusaurus/utils-validation" "2.0.0-beta.20" + fs-extra "^10.1.0" remark-admonitions "^1.2.1" - tslib "^2.3.1" - webpack "^5.69.1" + tslib "^2.4.0" + webpack "^5.72.0" -"@docusaurus/plugin-debug@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.0.0-beta.17.tgz#0185dfd5575aa940443d2cb9fab4bed3308ed3a1" - integrity sha512-p26fjYFRSC0esEmKo/kRrLVwXoFnzPCFDumwrImhPyqfVxbj+IKFaiXkayb2qHnyEGE/1KSDIgRF4CHt/pyhiw== +"@docusaurus/plugin-debug@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.0.0-beta.20.tgz#7c026e81c45fd4f00801a785c928b9e8727a99de" + integrity sha512-acGZmpncPA1XDczpV1ji1ajBCRBY/H2lXN8alSjOB1vh0c/2Qz+KKD05p17lsUbhIyvsnZBa/BaOwtek91Lu7Q== dependencies: - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/utils" "2.0.0-beta.17" - fs-extra "^10.0.1" + "@docusaurus/core" "2.0.0-beta.20" + "@docusaurus/utils" "2.0.0-beta.20" + fs-extra "^10.1.0" react-json-view "^1.21.3" - tslib "^2.3.1" - -"@docusaurus/plugin-google-analytics@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.0-beta.17.tgz#31ca1ef88f0f7874c6e12c642d64abe694494720" - integrity sha512-jvgYIhggYD1W2jymqQVAAyjPJUV1xMCn70bAzaCMxriureMWzhQ/kQMVQpop0ijTMvifOxaV9yTcL1VRXev++A== - dependencies: - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/utils-validation" "2.0.0-beta.17" - tslib "^2.3.1" - -"@docusaurus/plugin-google-gtag@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.0-beta.17.tgz#e6baf8f03cea756ed2259a5356fa689388bc303d" - integrity sha512-1pnWHtIk1Jfeqwvr8PlcPE5SODWT1gW4TI+ptmJbJ296FjjyvL/pG0AcGEJmYLY/OQc3oz0VQ0W2ognw9jmFIw== - dependencies: - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/utils-validation" "2.0.0-beta.17" - tslib "^2.3.1" - -"@docusaurus/plugin-sitemap@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-beta.17.tgz#e1aa67ff09d9145e8e5522c4541bbcdd6365560c" - integrity sha512-19/PaGCsap6cjUPZPGs87yV9e1hAIyd0CTSeVV6Caega8nmOKk20FTrQGFJjZPeX8jvD9QIXcdg6BJnPxcKkaQ== - dependencies: - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/utils" "2.0.0-beta.17" - "@docusaurus/utils-common" "2.0.0-beta.17" - "@docusaurus/utils-validation" "2.0.0-beta.17" - fs-extra "^10.0.1" + tslib "^2.4.0" + +"@docusaurus/plugin-google-analytics@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.0-beta.20.tgz#c1bdbc1239f987f9716fa30c2fd86962c190a765" + integrity sha512-4C5nY25j0R1lntFmpSEalhL7jYA7tWvk0VZObiIxGilLagT/f9gWPQtIjNBe4yzdQvkhiaXpa8xcMcJUAKRJyw== + dependencies: + "@docusaurus/core" "2.0.0-beta.20" + "@docusaurus/utils-validation" "2.0.0-beta.20" + tslib "^2.4.0" + +"@docusaurus/plugin-google-gtag@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.0-beta.20.tgz#7284bcfad9cb4e5d63605e95f6da73ca8ac8f053" + integrity sha512-EMZdiMTNg4NwE60xwjbetcqMDqAOazMTwQAQ4OuNAclv7oh8+VPCvqRF8s8AxCoI2Uqc7vh8yzNUuM307Ne9JA== + dependencies: + "@docusaurus/core" "2.0.0-beta.20" + "@docusaurus/utils-validation" "2.0.0-beta.20" + tslib "^2.4.0" + +"@docusaurus/plugin-sitemap@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-beta.20.tgz#08eada1260cafb273abea33c9c890ab667c7cbd3" + integrity sha512-Rf5a2vOBWjbe7PJJEBDeLZzDA7lsDi+16bqzKN8OKSXlcZLhxjmIpL5NrjANNbpGpL5vbl9z+iqvjbQmZ3QSmA== + dependencies: + "@docusaurus/core" "2.0.0-beta.20" + "@docusaurus/utils" "2.0.0-beta.20" + "@docusaurus/utils-common" "2.0.0-beta.20" + "@docusaurus/utils-validation" "2.0.0-beta.20" + fs-extra "^10.1.0" sitemap "^7.1.1" - tslib "^2.3.1" - -"@docusaurus/preset-classic@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-2.0.0-beta.17.tgz#a8fc3447aa6fe0e5f259d894cc8dd64c049c7605" - integrity sha512-7YUxPEgM09aZWr25/hpDEp1gPl+1KsCPV1ZTRW43sbQ9TinPm+9AKR3rHVDa8ea8MdiS7BpqCVyK+H/eiyQrUw== - dependencies: - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/plugin-content-blog" "2.0.0-beta.17" - "@docusaurus/plugin-content-docs" "2.0.0-beta.17" - "@docusaurus/plugin-content-pages" "2.0.0-beta.17" - "@docusaurus/plugin-debug" "2.0.0-beta.17" - "@docusaurus/plugin-google-analytics" "2.0.0-beta.17" - "@docusaurus/plugin-google-gtag" "2.0.0-beta.17" - "@docusaurus/plugin-sitemap" "2.0.0-beta.17" - "@docusaurus/theme-classic" "2.0.0-beta.17" - "@docusaurus/theme-common" "2.0.0-beta.17" - "@docusaurus/theme-search-algolia" "2.0.0-beta.17" + tslib "^2.4.0" + +"@docusaurus/preset-classic@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-2.0.0-beta.20.tgz#19566be713ce0297834cd999392ea3605bc6f574" + integrity sha512-artUDjiYFIlGd2fxk0iqqcJ5xSCrgormOAoind1c0pn8TRXY1WSCQWYI6p4X24jjhSCzLv0s6Z9PMDyxZdivhg== + dependencies: + "@docusaurus/core" "2.0.0-beta.20" + "@docusaurus/plugin-content-blog" "2.0.0-beta.20" + "@docusaurus/plugin-content-docs" "2.0.0-beta.20" + "@docusaurus/plugin-content-pages" "2.0.0-beta.20" + "@docusaurus/plugin-debug" "2.0.0-beta.20" + "@docusaurus/plugin-google-analytics" "2.0.0-beta.20" + "@docusaurus/plugin-google-gtag" "2.0.0-beta.20" + "@docusaurus/plugin-sitemap" "2.0.0-beta.20" + "@docusaurus/theme-classic" "2.0.0-beta.20" + "@docusaurus/theme-common" "2.0.0-beta.20" + "@docusaurus/theme-search-algolia" "2.0.0-beta.20" "@docusaurus/react-loadable@5.5.2", "react-loadable@npm:@docusaurus/react-loadable@5.5.2": version "5.5.2" @@ -1445,144 +1442,148 @@ "@types/react" "*" prop-types "^15.6.2" -"@docusaurus/theme-classic@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.0.0-beta.17.tgz#1f7a1dd714993819f266ce422d06dd4533d4ab3a" - integrity sha512-xfZ9kpgqo0lP9YO4rJj79wtiQJXU6ARo5wYy10IIwiWN+lg00scJHhkmNV431b05xIUjUr0cKeH9nqZmEsQRKg== - dependencies: - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/plugin-content-blog" "2.0.0-beta.17" - "@docusaurus/plugin-content-docs" "2.0.0-beta.17" - "@docusaurus/plugin-content-pages" "2.0.0-beta.17" - "@docusaurus/theme-common" "2.0.0-beta.17" - "@docusaurus/theme-translations" "2.0.0-beta.17" - "@docusaurus/utils" "2.0.0-beta.17" - "@docusaurus/utils-common" "2.0.0-beta.17" - "@docusaurus/utils-validation" "2.0.0-beta.17" +"@docusaurus/theme-classic@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.0.0-beta.20.tgz#c4c7712c2b35c5654433228729f92ec73e6c598e" + integrity sha512-rs4U68x8Xk6rPsZC/7eaPxCKqzXX1S45FICKmq/IZuaDaQyQIijCvv2ssxYnUyVZUNayZfJK7ZtNu+A0kzYgSQ== + dependencies: + "@docusaurus/core" "2.0.0-beta.20" + "@docusaurus/plugin-content-blog" "2.0.0-beta.20" + "@docusaurus/plugin-content-docs" "2.0.0-beta.20" + "@docusaurus/plugin-content-pages" "2.0.0-beta.20" + "@docusaurus/theme-common" "2.0.0-beta.20" + "@docusaurus/theme-translations" "2.0.0-beta.20" + "@docusaurus/utils" "2.0.0-beta.20" + "@docusaurus/utils-common" "2.0.0-beta.20" + "@docusaurus/utils-validation" "2.0.0-beta.20" "@mdx-js/react" "^1.6.22" clsx "^1.1.1" copy-text-to-clipboard "^3.0.1" - infima "0.2.0-alpha.37" + infima "0.2.0-alpha.39" lodash "^4.17.21" - postcss "^8.4.7" - prism-react-renderer "^1.2.1" - prismjs "^1.27.0" + nprogress "^0.2.0" + postcss "^8.4.13" + prism-react-renderer "^1.3.1" + prismjs "^1.28.0" react-router-dom "^5.2.0" - rtlcss "^3.3.0" + rtlcss "^3.5.0" -"@docusaurus/theme-common@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.0.0-beta.17.tgz#3b71bb8b0973a0cee969a1bb76794c81d597f290" - integrity sha512-LJBDhx+Qexn1JHBqZbE4k+7lBaV1LgpE33enXf43ShB7ebhC91d5HLHhBwgt0pih4+elZU4rG+BG/roAmsNM0g== +"@docusaurus/theme-common@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.0.0-beta.20.tgz#4ec7d77ecd2ade9dad33b8689e3cd51b07e594b0" + integrity sha512-lmdGB3/GQM5z0GH0iHGRXUco4Wfqc6sR5eRKuW4j0sx3+UFVvtbVTTIGt0Cie4Dh6omnFxjPbNDlPDgWr/agVQ== dependencies: - "@docusaurus/module-type-aliases" "2.0.0-beta.17" - "@docusaurus/plugin-content-blog" "2.0.0-beta.17" - "@docusaurus/plugin-content-docs" "2.0.0-beta.17" - "@docusaurus/plugin-content-pages" "2.0.0-beta.17" + "@docusaurus/module-type-aliases" "2.0.0-beta.20" + "@docusaurus/plugin-content-blog" "2.0.0-beta.20" + "@docusaurus/plugin-content-docs" "2.0.0-beta.20" + "@docusaurus/plugin-content-pages" "2.0.0-beta.20" clsx "^1.1.1" parse-numeric-range "^1.3.0" prism-react-renderer "^1.3.1" - tslib "^2.3.1" + tslib "^2.4.0" utility-types "^3.10.0" -"@docusaurus/theme-search-algolia@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-beta.17.tgz#880fb965b71e5aa7f01d456a1a2aa8eb6c244082" - integrity sha512-W12XKM7QC5Jmrec359bJ7aDp5U8DNkCxjVKsMNIs8rDunBoI/N+R35ERJ0N7Bg9ONAWO6o7VkUERQsfGqdvr9w== +"@docusaurus/theme-search-algolia@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-beta.20.tgz#14f2ea376a87d7cfa4840d8c917d1ec62d3a07f7" + integrity sha512-9XAyiXXHgyhDmKXg9RUtnC4WBkYAZUqKT9Ntuk0OaOb4mBwiYUGL74tyP0LLL6T+oa9uEdXiUMlIL1onU8xhvA== dependencies: "@docsearch/react" "^3.0.0" - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/logger" "2.0.0-beta.17" - "@docusaurus/theme-common" "2.0.0-beta.17" - "@docusaurus/theme-translations" "2.0.0-beta.17" - "@docusaurus/utils" "2.0.0-beta.17" - "@docusaurus/utils-validation" "2.0.0-beta.17" - algoliasearch "^4.12.1" - algoliasearch-helper "^3.7.0" + "@docusaurus/core" "2.0.0-beta.20" + "@docusaurus/logger" "2.0.0-beta.20" + "@docusaurus/plugin-content-docs" "2.0.0-beta.20" + "@docusaurus/theme-common" "2.0.0-beta.20" + "@docusaurus/theme-translations" "2.0.0-beta.20" + "@docusaurus/utils" "2.0.0-beta.20" + "@docusaurus/utils-validation" "2.0.0-beta.20" + algoliasearch "^4.13.0" + algoliasearch-helper "^3.8.2" clsx "^1.1.1" eta "^1.12.3" - fs-extra "^10.0.1" + fs-extra "^10.1.0" lodash "^4.17.21" - tslib "^2.3.1" + tslib "^2.4.0" utility-types "^3.10.0" -"@docusaurus/theme-translations@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-2.0.0-beta.17.tgz#a4b84fa63befc11847da471922387aa3eb4e5626" - integrity sha512-oxCX6khjZH3lgdRCL0DH06KkUM/kDr9+lzB35+vY8rpFeQruVgRdi8ekPqG3+Wr0U/N+LMhcYE5BmCb6D0Fv2A== +"@docusaurus/theme-translations@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-2.0.0-beta.20.tgz#dcc7efb43ff110c19736764c287f6c5128a5dbba" + integrity sha512-O7J/4dHcg7Yr+r3ylgtqmtMEz6d5ScpUxBg8nsNTWOCRoGEXNZVmXSd5l6v72KCyxPZpllPrgjmqkL+I19qWiw== dependencies: - fs-extra "^10.0.1" - tslib "^2.3.1" + fs-extra "^10.1.0" + tslib "^2.4.0" -"@docusaurus/types@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.0.0-beta.17.tgz#582e3d961ce4409ed17454669b3f6a7a9f696cdd" - integrity sha512-4o7TXu5sKlQpybfFFtsGUElBXwSpiXKsQyyWaRKj7DRBkvMtkDX6ITZNnZO9+EHfLbP/cfrokB8C/oO7mCQ5BQ== +"@docusaurus/types@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.0.0-beta.20.tgz#069d40cc225141d5c9a85605a1c61a460814bf5d" + integrity sha512-d4ZIpcrzGsUUcZJL3iz8/iSaewobPPiYfn2Lmmv7GTT5ZPtPkOAtR5mE6+LAf/KpjjgqrC7mpwDKADnOL/ic4Q== dependencies: commander "^5.1.0" + history "^4.9.0" joi "^17.6.0" - querystring "0.2.1" + react-helmet-async "^1.3.0" utility-types "^3.10.0" - webpack "^5.69.1" + webpack "^5.72.0" webpack-merge "^5.8.0" -"@docusaurus/utils-common@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.0.0-beta.17.tgz#cefd950a7722f5f702690b4de27ea19fd65f3364" - integrity sha512-90WCVdj6zYzs7neEIS594qfLO78cUL6EVK1CsRHJgVkkGjcYlCQ1NwkyO7bOb+nIAwdJrPJRc2FBSpuEGxPD3w== +"@docusaurus/utils-common@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.0.0-beta.20.tgz#adb914c331d711a3c0ef2ba3f64139acdf4cd781" + integrity sha512-HabHh23vOQn6ygs0PjuCSF/oZaNsYTFsxB2R6EwHNyw01nWgBC3QAcGVmyIWQhlb9p8V3byKgbzVS68hZX5t9A== dependencies: - tslib "^2.3.1" + tslib "^2.4.0" -"@docusaurus/utils-validation@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.0.0-beta.17.tgz#d7dbfc1a29768c37c0d8a6af85eb1bdfef7656df" - integrity sha512-5UjayUP16fDjgd52eSEhL7SlN9x60pIhyS+K7kt7RmpSLy42+4/bSr2pns2VlATmuaoNOO6iIFdB2jgSYJ6SGA== +"@docusaurus/utils-validation@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.0.0-beta.20.tgz#ebf475a4388066bd450877fe920f405c53ff5ad2" + integrity sha512-7MxMoaF4VNAt5vUwvITa6nbkw1tb4WE6hp1VlfIoLCY4D7Wk5cMf1ZFhppCP1UzmPwvFb9zw8fPuvDfB3Tb5nQ== dependencies: - "@docusaurus/logger" "2.0.0-beta.17" - "@docusaurus/utils" "2.0.0-beta.17" + "@docusaurus/logger" "2.0.0-beta.20" + "@docusaurus/utils" "2.0.0-beta.20" joi "^17.6.0" - tslib "^2.3.1" + js-yaml "^4.1.0" + tslib "^2.4.0" -"@docusaurus/utils@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.0.0-beta.17.tgz#6a696e2ec5e50b2271f2d26d31562e9f3e2bc559" - integrity sha512-yRKGdzSc5v6M/6GyQ4omkrAHCleevwKYiIrufCJgRbOtkhYE574d8mIjjirOuA/emcyLxjh+TLtqAA5TwhIryA== +"@docusaurus/utils@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.0.0-beta.20.tgz#d5a9816a328b2ca5e4e1a3fbf267e3674abacd48" + integrity sha512-eUQquakhrbnvhsmx8jRPLgoyjyzMuOhmQC99m7rotar7XOzROpgEpm7+xVaquG5Ha47WkybE3djHJhKNih7GZQ== dependencies: - "@docusaurus/logger" "2.0.0-beta.17" - "@svgr/webpack" "^6.0.0" + "@docusaurus/logger" "2.0.0-beta.20" + "@svgr/webpack" "^6.2.1" file-loader "^6.2.0" - fs-extra "^10.0.1" + fs-extra "^10.1.0" github-slugger "^1.4.0" - globby "^11.0.4" + globby "^11.1.0" gray-matter "^4.0.3" js-yaml "^4.1.0" lodash "^4.17.21" - micromatch "^4.0.4" + micromatch "^4.0.5" resolve-pathname "^3.0.0" shelljs "^0.8.5" - tslib "^2.3.1" + tslib "^2.4.0" url-loader "^4.1.1" - webpack "^5.69.1" + webpack "^5.72.0" -"@eslint/eslintrc@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.2.0.tgz#7ce1547a5c46dfe56e1e45c3c9ed18038c721c6a" - integrity sha512-igm9SjJHNEJRiUnecP/1R5T3wKLEJ7pL6e2P+GUSfCd0dGjPYYZve08uzw8L2J8foVHFz+NGu12JxRcU2gGo6w== +"@eslint/eslintrc@^1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.2.2.tgz#4989b9e8c0216747ee7cca314ae73791bb281aae" + integrity sha512-lTVWHs7O2hjBFZunXTZYnYqtB9GakA1lnxIf+gKq2nY5gxkkNi/lQvveW6t8gFdOHTg6nG50Xs95PrLqVpcaLg== dependencies: ajv "^6.12.4" debug "^4.3.2" espree "^9.3.1" globals "^13.9.0" - ignore "^4.0.6" + ignore "^5.2.0" import-fresh "^3.2.1" js-yaml "^4.1.0" minimatch "^3.0.4" strip-json-comments "^3.1.1" "@hapi/hoek@^9.0.0": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.2.1.tgz#9551142a1980503752536b5050fd99f4a7f13b17" - integrity sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw== + version "9.3.0" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" + integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== "@hapi/topo@^5.0.0": version "5.1.0" @@ -1605,24 +1606,42 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@jridgewell/gen-mapping@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" + integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/resolve-uri@^3.0.3": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c" - integrity sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew== + version "3.0.6" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.6.tgz#4ac237f4dabc8dd93330386907b97591801f7352" + integrity sha512-R7xHtBSNm+9SyvpJkdQl+qrM3Hm2fea3Ef197M3mUug+v+yR+Rhfbs7PBtcBUVnIWJ4JcAdjvij+c8hXS9p5aw== + +"@jridgewell/set-array@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.0.tgz#1179863356ac8fbea64a5a4bcde93a4871012c01" + integrity sha512-SfJxIxNVYLTsKwzB3MoOQ1yxf4w/E6MdkvTgrgAt1bfxjSrLUoHMKrDOykwN14q65waezZIdqDneUIPh4/sKxg== "@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.11" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec" - integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg== + version "1.4.12" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.12.tgz#7ed98f6fa525ffb7c56a2cbecb5f7bb91abd2baf" + integrity sha512-az/NhpIwP3K33ILr0T2bso+k2E/SLf8Yidd8mHl0n6sCQ4YdyC8qDhZA6kOPDNDBA56ZnIjngVl0U3jREA0BUA== -"@jridgewell/trace-mapping@^0.3.0": - version "0.3.4" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3" - integrity sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ== +"@jridgewell/trace-mapping@^0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== dependencies: "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" +"@leichtgewicht/ip-codec@^2.0.1": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.3.tgz#0300943770e04231041a51bd39f0439b5c7ab4f0" + integrity sha512-nkalE/f1RvRGChwBnEIoBfSEYOXnCRdleKuv6+lePbMDrMZXeDQnqak5XDOeBgrPPyPfAdcCu/B5z+v3VhplGg== + "@mdx-js/mdx@^1.6.22": version "1.6.22" resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-1.6.22.tgz#8a723157bf90e78f17dc0f27995398e6c731f1ba" @@ -1685,9 +1704,9 @@ integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g== "@sideway/address@^4.1.3": - version "4.1.3" - resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.3.tgz#d93cce5d45c5daec92ad76db492cc2ee3c64ab27" - integrity sha512-8ncEUtmnTsMmL7z1YPB47kPUq7LpKWJNFPsRzHiIajGC5uXlWGn+AmkYPcHNl8S4tcEGx+cnORnNYaw2wvL+LQ== + version "4.1.4" + resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" + integrity sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw== dependencies: "@hapi/hoek" "^9.0.0" @@ -1706,15 +1725,14 @@ resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== -"@slorber/static-site-generator-webpack-plugin@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@slorber/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.1.tgz#0c8852146441aaa683693deaa5aee2f991d94841" - integrity sha512-PSv4RIVO1Y3kvHxjvqeVisk3E9XFoO04uwYBDWe217MFqKspplYswTuKLiJu0aLORQWzuQjfVsSlLPojwfYsLw== +"@slorber/static-site-generator-webpack-plugin@^4.0.4": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@slorber/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.4.tgz#2bf4a2545e027830d2aa5eb950437c26a289b0f1" + integrity sha512-FvMavoWEIePps6/JwGCOLYKCRhuwIHhMtmbKpBFgzNkxwpa/569LfTkrbRk1m1I3n+ezJK4on9E1A6cjuZmD9g== dependencies: bluebird "^3.7.1" cheerio "^0.22.0" - eval "^0.1.4" - url "^0.11.0" + eval "^0.1.8" webpack-sources "^1.4.3" "@svgr/babel-plugin-add-jsx-attribute@^6.0.0": @@ -1807,7 +1825,7 @@ deepmerge "^4.2.2" svgo "^2.5.0" -"@svgr/webpack@^6.0.0", "@svgr/webpack@^6.2.1": +"@svgr/webpack@^6.2.1": version "6.2.1" resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-6.2.1.tgz#ef5d51c1b6be4e7537fb9f76b3f2b2e22b63c58d" integrity sha512-h09ngMNd13hnePwgXa+Y5CgOjzlCvfWLHg+MBnydEedAnuLRzUHUJmGS3o2OsrhxTOOqEsPOFt5v/f6C5Qulcw== @@ -1872,9 +1890,9 @@ "@types/estree" "*" "@types/eslint@*": - version "8.4.1" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.1.tgz#c48251553e8759db9e656de3efc846954ac32304" - integrity sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA== + version "8.4.2" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.2.tgz#48f2ac58ab9c631cb68845c3d956b28f79fad575" + integrity sha512-Z1nseZON+GEnFjJc04sv4NSALGjhFwy6K0HXt7qsn5ArfAKtb63dXNJHf+1YW6IpOIYRBGUbu3GwJdj8DGnCjA== dependencies: "@types/estree" "*" "@types/json-schema" "*" @@ -1921,16 +1939,16 @@ integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== "@types/http-proxy@^1.17.8": - version "1.17.8" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.8.tgz#968c66903e7e42b483608030ee85800f22d03f55" - integrity sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA== + version "1.17.9" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.9.tgz#7f0e7931343761efde1e2bf48c40f02f3f75705a" + integrity sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw== dependencies: "@types/node" "*" "@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" - integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== "@types/json5@^0.0.29": version "0.0.29" @@ -1955,9 +1973,9 @@ integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== "@types/node@*", "@types/node@^17.0.5": - version "17.0.21" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.21.tgz#864b987c0c68d07b4345845c3e63b75edd143644" - integrity sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ== + version "17.0.31" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.31.tgz#a5bb84ecfa27eec5e1c802c6bbf8139bdb163a5d" + integrity sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q== "@types/normalize-package-data@^2.4.0": version "2.4.1" @@ -1975,9 +1993,9 @@ integrity sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw== "@types/prop-types@*": - version "15.7.4" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" - integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== + version "15.7.5" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" + integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== "@types/qs@*": version "6.9.7" @@ -2016,18 +2034,18 @@ "@types/react" "*" "@types/react@*": - version "17.0.39" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.39.tgz#d0f4cde092502a6db00a1cded6e6bf2abb7633ce" - integrity sha512-UVavlfAxDd/AgAacMa60Azl7ygyQNRwC/DsHZmKgNvPmRR5p70AJ5Q9EAmL2NWOJmeV+vVUI4IAP7GZrN8h8Ug== + version "18.0.8" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.8.tgz#a051eb380a9fbcaa404550543c58e1cf5ce4ab87" + integrity sha512-+j2hk9BzCOrrOSJASi5XiOyBbERk9jG5O73Ya4M0env5Ixi6vUNli4qy994AINcEF+1IEHISYFfIT4zwr++LKw== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" csstype "^3.0.2" -"@types/retry@^0.12.0": - version "0.12.1" - resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.1.tgz#d8f1c0d0dc23afad6dc16a9e993a0865774b4065" - integrity sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g== +"@types/retry@0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" + integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== "@types/sax@^1.2.1": version "1.2.4" @@ -2068,10 +2086,10 @@ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== -"@types/ws@^8.2.2": - version "8.5.2" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.2.tgz#77e0c2e360e9579da930ffcfa53c5975ea3bdd26" - integrity sha512-VXI82ykONr5tacHEojnErTQk+KQSoYbW1NB6iz6wUwrNd+BqfkfggQNoNdCqhJSzbNumShPERbM+Pc5zpfhlbw== +"@types/ws@^8.5.1": + version "8.5.3" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.3.tgz#7d25a1ffbecd3c4f2d35068d0b283c037003274d" + integrity sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w== dependencies: "@types/node" "*" @@ -2230,14 +2248,14 @@ acorn-walk@^8.0.0: integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== acorn@^8.0.4, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" - integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== + version "8.7.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" + integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== address@^1.0.1, address@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" - integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== + version "1.2.0" + resolved "https://registry.yarnpkg.com/address/-/address-1.2.0.tgz#d352a62c92fee90f89a693eccd2a8b2139ab02d9" + integrity sha512-tNEZYz5G/zYunxFm7sfhAxkXEuLj3K6BKwv6ZURlsF6yiUQ65z0Q2wZW9L5cPUl9ocofGvXOdFYbFHp0+6MOig== aggregate-error@^3.0.0: version "3.1.0" @@ -2277,41 +2295,41 @@ ajv@^6.10.0, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: uri-js "^4.2.2" ajv@^8.0.0, ajv@^8.0.1, ajv@^8.8.0: - version "8.10.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.10.0.tgz#e573f719bd3af069017e3b66538ab968d040e54d" - integrity sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw== + version "8.11.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" + integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" require-from-string "^2.0.2" uri-js "^4.2.2" -algoliasearch-helper@^3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.7.0.tgz#c0a0493df84d850360f664ad7a9d4fc78a94fd78" - integrity sha512-XJ3QfERBLfeVCyTVx80gon7r3/rgm/CE8Ha1H7cbablRe/X7SfYQ14g/eO+MhjVKIQp+gy9oC6G5ilmLwS1k6w== +algoliasearch-helper@^3.8.2: + version "3.8.2" + resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.8.2.tgz#35726dc6d211f49dbab0bf6d37b4658165539523" + integrity sha512-AXxiF0zT9oYwl8ZBgU/eRXvfYhz7cBA5YrLPlw9inZHdaYF0QEya/f1Zp1mPYMXc1v6VkHwBq4pk6/vayBLICg== dependencies: "@algolia/events" "^4.0.1" -algoliasearch@^4.0.0, algoliasearch@^4.12.1: - version "4.12.2" - resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.12.2.tgz#d7672a15b8fd1b261d9ae193535b68bcb189cfd2" - integrity sha512-bn1P9+V415zeDQJtXn+1SwuwedEAv9/LJAxt8XwR6ygH/sMwaHSm2hpkz8wIbCBt/tKQ43TL672Kyxzv5PwGgQ== - dependencies: - "@algolia/cache-browser-local-storage" "4.12.2" - "@algolia/cache-common" "4.12.2" - "@algolia/cache-in-memory" "4.12.2" - "@algolia/client-account" "4.12.2" - "@algolia/client-analytics" "4.12.2" - "@algolia/client-common" "4.12.2" - "@algolia/client-personalization" "4.12.2" - "@algolia/client-search" "4.12.2" - "@algolia/logger-common" "4.12.2" - "@algolia/logger-console" "4.12.2" - "@algolia/requester-browser-xhr" "4.12.2" - "@algolia/requester-common" "4.12.2" - "@algolia/requester-node-http" "4.12.2" - "@algolia/transporter" "4.12.2" +algoliasearch@^4.0.0, algoliasearch@^4.13.0: + version "4.13.0" + resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.13.0.tgz#e36611fda82b1fc548c156ae7929a7f486e4b663" + integrity sha512-oHv4faI1Vl2s+YC0YquwkK/TsaJs79g2JFg5FDm2rKN12VItPTAeQ7hyJMHarOPPYuCnNC5kixbtcqvb21wchw== + dependencies: + "@algolia/cache-browser-local-storage" "4.13.0" + "@algolia/cache-common" "4.13.0" + "@algolia/cache-in-memory" "4.13.0" + "@algolia/client-account" "4.13.0" + "@algolia/client-analytics" "4.13.0" + "@algolia/client-common" "4.13.0" + "@algolia/client-personalization" "4.13.0" + "@algolia/client-search" "4.13.0" + "@algolia/logger-common" "4.13.0" + "@algolia/logger-console" "4.13.0" + "@algolia/requester-browser-xhr" "4.13.0" + "@algolia/requester-common" "4.13.0" + "@algolia/requester-node-http" "4.13.0" + "@algolia/transporter" "4.13.0" ansi-align@^3.0.0, ansi-align@^3.0.1: version "3.0.1" @@ -2392,19 +2410,19 @@ array-flatten@1.1.1: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= -array-flatten@^2.1.0: +array-flatten@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== -array-includes@^3.1.3, array-includes@^3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9" - integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw== +array-includes@^3.1.4: + version "3.1.5" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb" + integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.1.4" + es-abstract "^1.19.5" get-intrinsic "^1.1.1" is-string "^1.0.7" @@ -2419,22 +2437,24 @@ array-union@^3.0.1: integrity sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw== array.prototype.flat@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz#07e0975d84bbc7c48cd1879d609e682598d33e13" - integrity sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg== + version "1.3.0" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz#0b0c1567bf57b38b56b4c97b8aa72ab45e4adc7b" + integrity sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw== dependencies: call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.19.0" + es-abstract "^1.19.2" + es-shim-unscopables "^1.0.0" array.prototype.flatmap@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz#908dc82d8a406930fdf38598d51e7411d18d4446" - integrity sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA== + version "1.3.0" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz#a7e8ed4225f4788a70cd910abcf0791e76a5534f" + integrity sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg== dependencies: - call-bind "^1.0.0" + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.19.0" + es-abstract "^1.19.2" + es-shim-unscopables "^1.0.0" arrify@^1.0.1: version "1.0.1" @@ -2456,26 +2476,19 @@ astral-regex@^2.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== -async@^2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== - dependencies: - lodash "^4.17.14" - at-least-node@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== -autoprefixer@^10.3.7, autoprefixer@^10.4.2: - version "10.4.2" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.2.tgz#25e1df09a31a9fba5c40b578936b90d35c9d4d3b" - integrity sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ== +autoprefixer@^10.3.7, autoprefixer@^10.4.5: + version "10.4.7" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.7.tgz#1db8d195f41a52ca5069b7593be167618edbbedf" + integrity sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA== dependencies: - browserslist "^4.19.1" - caniuse-lite "^1.0.30001297" - fraction.js "^4.1.2" + browserslist "^4.20.3" + caniuse-lite "^1.0.30001335" + fraction.js "^4.2.0" normalize-range "^0.1.2" picocolors "^1.0.0" postcss-value-parser "^4.2.0" @@ -2497,13 +2510,13 @@ axobject-query@^2.2.0: resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== -babel-loader@^8.2.3: - version "8.2.3" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.3.tgz#8986b40f1a64cacfcb4b8429320085ef68b1342d" - integrity sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw== +babel-loader@^8.2.5: + version "8.2.5" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.5.tgz#d45f585e654d5a5d90f5350a779d7647c5ed512e" + integrity sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ== dependencies: find-cache-dir "^3.3.1" - loader-utils "^1.4.0" + loader-utils "^2.0.0" make-dir "^3.1.0" schema-utils "^2.6.5" @@ -2600,33 +2613,33 @@ bluebird@^3.7.1: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -body-parser@1.19.2: - version "1.19.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.2.tgz#4714ccd9c157d44797b8b5607d72c0b89952f26e" - integrity sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw== +body-parser@1.20.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5" + integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg== dependencies: bytes "3.1.2" content-type "~1.0.4" debug "2.6.9" - depd "~1.1.2" - http-errors "1.8.1" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.9.7" - raw-body "2.4.3" + on-finished "2.4.1" + qs "6.10.3" + raw-body "2.5.1" type-is "~1.6.18" + unpipe "1.0.0" -bonjour@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" - integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= +bonjour-service@^1.0.11: + version "1.0.12" + resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.0.12.tgz#28fbd4683f5f2e36feedb833e24ba661cac960c3" + integrity sha512-pMmguXYCu63Ug37DluMKEHdxc+aaIf/ay4YbF8Gxtba+9d3u+rmEWy61VK3Z3hp8Rskok3BunHYnG0dUHAsblw== dependencies: - array-flatten "^2.1.0" - deep-equal "^1.0.1" + array-flatten "^2.1.2" dns-equal "^1.0.0" - dns-txt "^2.0.2" - multicast-dns "^6.0.1" - multicast-dns-service-types "^1.1.0" + fast-deep-equal "^3.1.3" + multicast-dns "^7.2.4" boolbase@^1.0.0, boolbase@~1.0.0: version "1.0.0" @@ -2669,22 +2682,22 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^3.0.1, braces@~3.0.2: +braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" -browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.17.5, browserslist@^4.18.1, browserslist@^4.19.1: - version "4.19.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.3.tgz#29b7caad327ecf2859485f696f9604214bedd383" - integrity sha512-XK3X4xtKJ+Txj8G5c30B4gsm71s69lqXlkYui4s6EkKxuv49qjYlY6oVd+IFJ73d4YymtM3+djvvt/R/iJwwDg== +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.18.1, browserslist@^4.20.2, browserslist@^4.20.3: + version "4.20.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.3.tgz#eb7572f49ec430e054f56d52ff0ebe9be915f8bf" + integrity sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg== dependencies: - caniuse-lite "^1.0.30001312" - electron-to-chromium "^1.4.71" + caniuse-lite "^1.0.30001332" + electron-to-chromium "^1.4.118" escalade "^3.1.1" - node-releases "^2.0.2" + node-releases "^2.0.3" picocolors "^1.0.0" buffer-from@^1.0.0: @@ -2692,11 +2705,6 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -buffer-indexof@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" - integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== - bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -2775,10 +2783,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001297, caniuse-lite@^1.0.30001312: - version "1.0.30001312" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz#e11eba4b87e24d22697dae05455d5aea28550d5f" - integrity sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001332, caniuse-lite@^1.0.30001335: + version "1.0.30001336" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001336.tgz#a9eb13edd2613f418ebc632c8d6c9ab9fde7ccc4" + integrity sha512-/YxSlBmL7iKXTbIJ48IQTnAOBk7XmWsxhBF1PZLOko5Dt9qc4Pl+84lfqG3Tc4EuavurRn1QLoVJGxY2iSycfw== ccount@^1.0.0, ccount@^1.0.3: version "1.1.0" @@ -2818,15 +2826,15 @@ character-reference-invalid@^1.0.0: integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== cheerio-select@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-1.5.0.tgz#faf3daeb31b17c5e1a9dabcee288aaf8aafa5823" - integrity sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg== + version "1.6.0" + resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-1.6.0.tgz#489f36604112c722afa147dedd0d4609c09e1696" + integrity sha512-eq0GdBvxVFbqWgmCm7M3XGs1I8oLy/nExUnh6oLqmBditPO9AqQJrkslDpMun/hZ0yyTs8L0m85OHp4ho6Qm9g== dependencies: - css-select "^4.1.3" - css-what "^5.0.1" + css-select "^4.3.0" + css-what "^6.0.1" domelementtype "^2.2.0" - domhandler "^4.2.0" - domutils "^2.7.0" + domhandler "^4.3.1" + domutils "^2.8.0" cheerio@^0.22.0: version "0.22.0" @@ -2888,10 +2896,10 @@ ci-info@^2.0.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== -clean-css@^5.2.2, clean-css@^5.2.4: - version "5.2.4" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.2.4.tgz#982b058f8581adb2ae062520808fb2429bd487a4" - integrity sha512-nKseG8wCzEuji/4yrgM/5cthL9oTDc5UOQyFMvW/Q53oP6gLH690o1NbuTh6Y18nujr7BxlsFuS7gXLnLzKJGg== +clean-css@^5.2.2, clean-css@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.0.tgz#ad3d8238d5f3549e83d5f87205189494bc7cbb59" + integrity sha512-YYuuxv4H/iNb1Z/5IbMRoxgrzjWGhOEFfd+groZ5dMCVkpENiMZmwspdrzBo9286JjM1gZJPAyL7ZIdzuvu2AQ== dependencies: source-map "~0.6.0" @@ -2910,14 +2918,14 @@ cli-boxes@^3.0.0: resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-3.0.0.tgz#71a10c716feeba005e4504f36329ef0b17cf3145" integrity sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g== -cli-table3@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.1.tgz#36ce9b7af4847f288d3cdd081fbd09bf7bd237b8" - integrity sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA== +cli-table3@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.2.tgz#aaf5df9d8b5bf12634dc8b3040806a0c07120d2a" + integrity sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw== dependencies: string-width "^4.2.0" optionalDependencies: - colors "1.4.0" + "@colors/colors" "1.5.0" clone-deep@^4.0.1: version "4.0.1" @@ -2986,11 +2994,6 @@ colorette@^2.0.10: resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== -colors@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" - integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== - combine-promises@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/combine-promises/-/combine-promises-1.1.0.tgz#72db90743c0ca7aab7d0d8d2052fd7b0f674de71" @@ -3107,10 +3110,10 @@ cookie-signature@1.0.6: resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= -cookie@0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" - integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== copy-text-to-clipboard@^3.0.1: version "3.0.1" @@ -3129,23 +3132,23 @@ copy-webpack-plugin@^10.2.4: schema-utils "^4.0.0" serialize-javascript "^6.0.0" -core-js-compat@^3.20.2, core-js-compat@^3.21.0: - version "3.21.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.21.1.tgz#cac369f67c8d134ff8f9bd1623e3bc2c42068c82" - integrity sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g== +core-js-compat@^3.21.0, core-js-compat@^3.22.1: + version "3.22.4" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.22.4.tgz#d700f451e50f1d7672dcad0ac85d910e6691e579" + integrity sha512-dIWcsszDezkFZrfm1cnB4f/J85gyhiCpxbgBdohWCDtSVuAaChTSpPV7ldOQf/Xds2U5xCIJZOK82G4ZPAIswA== dependencies: - browserslist "^4.19.1" + browserslist "^4.20.3" semver "7.0.0" core-js-pure@^3.20.2: - version "3.21.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.21.1.tgz#8c4d1e78839f5f46208de7230cebfb72bc3bdb51" - integrity sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ== + version "3.22.4" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.22.4.tgz#a992210f4cad8b32786b8654563776c56b0e0d0a" + integrity sha512-4iF+QZkpzIz0prAFuepmxwJ2h5t4agvE8WPYqs2mjLJMNNwJOnpch76w2Q7bUfCPEv/V7wpvOfog0w273M+ZSw== -core-js@^3.21.1: - version "3.21.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.21.1.tgz#f2e0ddc1fc43da6f904706e8e955bc19d06a0d94" - integrity sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig== +core-js@^3.22.3: + version "3.22.4" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.22.4.tgz#f4b3f108d45736935aa028444a69397e40d8c531" + integrity sha512-1uLykR+iOfYja+6Jn/57743gc9n73EWiOnSJJ4ba3B4fOEYDBv25MagmEZBxTp5cWq4b/KPx/l77zgsp28ju4w== core-util-is@~1.0.0: version "1.0.3" @@ -3195,25 +3198,23 @@ crypto-random-string@^2.0.0: resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== -css-declaration-sorter@^6.0.3: - version "6.1.4" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.1.4.tgz#b9bfb4ed9a41f8dcca9bf7184d849ea94a8294b4" - integrity sha512-lpfkqS0fctcmZotJGhnxkIyJWvBXgpyi2wsFd4J8VB7wzyrT6Ch/3Q+FMNJpjK4gu1+GN5khOnpU2ZVKrLbhCw== - dependencies: - timsort "^0.3.0" +css-declaration-sorter@^6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.2.2.tgz#bfd2f6f50002d6a3ae779a87d3a0c5d5b10e0f02" + integrity sha512-Ufadglr88ZLsrvS11gjeu/40Lw74D9Am/Jpr3LlYm5Q4ZP5KdlUhG+6u2EjyXeZcxmZ2h1ebCKngDjolpeLHpg== css-functions-list@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/css-functions-list/-/css-functions-list-3.0.1.tgz#1460df7fb584d1692c30b105151dbb988c8094f9" integrity sha512-PriDuifDt4u4rkDgnqRCLnjfMatufLmWNfQnGCq34xZwpY3oabwhB9SqRBmuvWUgndbemCFlKqg+nO7C2q0SBw== -css-loader@^6.6.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.6.0.tgz#c792ad5510bd1712618b49381bd0310574fafbd3" - integrity sha512-FK7H2lisOixPT406s5gZM1S3l8GrfhEBT3ZiL2UX1Ng1XWs0y2GPllz/OTyvbaHe12VgQrIXIzuEGVlbUhodqg== +css-loader@^6.7.1: + version "6.7.1" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.7.1.tgz#e98106f154f6e1baf3fc3bc455cb9981c1d5fd2e" + integrity sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw== dependencies: icss-utils "^5.1.0" - postcss "^8.4.5" + postcss "^8.4.7" postcss-modules-extract-imports "^3.0.0" postcss-modules-local-by-default "^4.0.0" postcss-modules-scope "^3.0.0" @@ -3233,14 +3234,14 @@ css-minimizer-webpack-plugin@^3.4.1: serialize-javascript "^6.0.0" source-map "^0.6.1" -css-select@^4.1.3: - version "4.2.1" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.2.1.tgz#9e665d6ae4c7f9d65dbe69d0316e3221fb274cdd" - integrity sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ== +css-select@^4.1.3, css-select@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== dependencies: boolbase "^1.0.0" - css-what "^5.1.0" - domhandler "^4.3.0" + css-what "^6.0.1" + domhandler "^4.3.1" domutils "^2.8.0" nth-check "^2.0.1" @@ -3267,47 +3268,47 @@ css-what@2.1: resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== -css-what@^5.0.1, css-what@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" - integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw== +css-what@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssnano-preset-advanced@^5.1.12: - version "5.2.0" - resolved "https://registry.yarnpkg.com/cssnano-preset-advanced/-/cssnano-preset-advanced-5.2.0.tgz#fc87b7c7327b61306e3e707e2f0fda3fa468f713" - integrity sha512-E7jJoKc2GjZsRLm8wQd2wZa+1a6tslA1elimwpcJTnH6dBQBkjQ8tAwNWUeyT72owYcCNGWTnar60bTnrnEWzw== +cssnano-preset-advanced@^5.3.3: + version "5.3.3" + resolved "https://registry.yarnpkg.com/cssnano-preset-advanced/-/cssnano-preset-advanced-5.3.3.tgz#848422118d7a62b5b29a53edc160f58c7f7f7539" + integrity sha512-AB9SmTSC2Gd8T7PpKUsXFJ3eNsg7dc4CTZ0+XAJ29MNxyJsrCEk7N1lw31bpHrsQH2PVJr21bbWgGAfA9j0dIA== dependencies: autoprefixer "^10.3.7" - cssnano-preset-default "^5.2.0" + cssnano-preset-default "^5.2.7" postcss-discard-unused "^5.1.0" - postcss-merge-idents "^5.1.0" - postcss-reduce-idents "^5.1.0" + postcss-merge-idents "^5.1.1" + postcss-reduce-idents "^5.2.0" postcss-zindex "^5.1.0" -cssnano-preset-default@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.0.tgz#2579d38b9217746f2cf9f938954a91e00418ded6" - integrity sha512-3N5Vcptj2pqVKpHVqH6ezOJvqikR2PdLTbTrsrhF61FbLRQuujAqZ2sKN5rvcMsb7hFjrNnjZT8CGEkxoN/Pwg== +cssnano-preset-default@^5.2.7: + version "5.2.7" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.7.tgz#791e3603fb8f1b46717ac53b47e3c418e950f5f3" + integrity sha512-JiKP38ymZQK+zVKevphPzNSGHSlTI+AOwlasoSRtSVMUU285O7/6uZyd5NbW92ZHp41m0sSHe6JoZosakj63uA== dependencies: - css-declaration-sorter "^6.0.3" + css-declaration-sorter "^6.2.2" cssnano-utils "^3.1.0" postcss-calc "^8.2.3" postcss-colormin "^5.3.0" postcss-convert-values "^5.1.0" - postcss-discard-comments "^5.1.0" + postcss-discard-comments "^5.1.1" postcss-discard-duplicates "^5.1.0" - postcss-discard-empty "^5.1.0" + postcss-discard-empty "^5.1.1" postcss-discard-overridden "^5.1.0" - postcss-merge-longhand "^5.1.0" - postcss-merge-rules "^5.1.0" + postcss-merge-longhand "^5.1.4" + postcss-merge-rules "^5.1.1" postcss-minify-font-values "^5.1.0" - postcss-minify-gradients "^5.1.0" - postcss-minify-params "^5.1.0" + postcss-minify-gradients "^5.1.1" + postcss-minify-params "^5.1.2" postcss-minify-selectors "^5.2.0" postcss-normalize-charset "^5.1.0" postcss-normalize-display-values "^5.1.0" @@ -3317,24 +3318,24 @@ cssnano-preset-default@^5.2.0: postcss-normalize-timing-functions "^5.1.0" postcss-normalize-unicode "^5.1.0" postcss-normalize-url "^5.1.0" - postcss-normalize-whitespace "^5.1.0" - postcss-ordered-values "^5.1.0" + postcss-normalize-whitespace "^5.1.1" + postcss-ordered-values "^5.1.1" postcss-reduce-initial "^5.1.0" postcss-reduce-transforms "^5.1.0" postcss-svgo "^5.1.0" - postcss-unique-selectors "^5.1.0" + postcss-unique-selectors "^5.1.1" cssnano-utils@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== -cssnano@^5.0.17, cssnano@^5.0.6: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.0.tgz#cf977d660a5824d0d5542639ed1d4045afd84cbe" - integrity sha512-wWxave1wMlThGg4ueK98jFKaNqXnQd1nVZpSkQ9XvR+YymlzP1ofWqES1JkHtI250LksP9z5JH+oDcrKDJezAg== +cssnano@^5.0.6, cssnano@^5.1.7: + version "5.1.7" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.7.tgz#99858bef6c76c9240f0cdc9239570bc7db8368be" + integrity sha512-pVsUV6LcTXif7lvKKW9ZrmX+rGRzxkEdJuVJcp5ftUjWITgwam5LMZOgaTvUrWPkcORBey6he7JKb4XAJvrpKg== dependencies: - cssnano-preset-default "^5.2.0" + cssnano-preset-default "^5.2.7" lilconfig "^2.0.3" yaml "^1.10.2" @@ -3362,17 +3363,17 @@ debug@2.6.9, debug@^2.6.0, debug@^2.6.9: dependencies: ms "2.0.0" -debug@^3.1.1, debug@^3.2.7: +debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: ms "^2.1.1" -debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3: - version "4.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" - integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== +debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" @@ -3396,18 +3397,6 @@ decompress-response@^3.3.0: dependencies: mimic-response "^1.0.0" -deep-equal@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" - integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== - dependencies: - is-arguments "^1.0.4" - is-date-object "^1.0.1" - is-regex "^1.0.4" - object-is "^1.0.1" - object-keys "^1.1.1" - regexp.prototype.flags "^1.2.0" - deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" @@ -3440,12 +3429,13 @@ define-lazy-prop@^2.0.0: resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== -define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== +define-properties@^1.1.3, define-properties@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" + integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== dependencies: - object-keys "^1.0.12" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" del@^6.0.0: version "6.0.0" @@ -3461,15 +3451,20 @@ del@^6.0.0: rimraf "^3.0.2" slash "^3.0.0" +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== detab@2.0.4: version "2.0.4" @@ -3511,20 +3506,12 @@ dns-equal@^1.0.0: resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= -dns-packet@^1.3.1: - version "1.3.4" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f" - integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA== - dependencies: - ip "^1.1.0" - safe-buffer "^5.0.1" - -dns-txt@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" - integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= +dns-packet@^5.2.2: + version "5.3.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.3.1.tgz#eb94413789daec0f0ebe2fcc230bdc9d7c91b43d" + integrity sha512-spBwIj0TK0Ey3666GwIdWVfUpLyubpU53BTCu8iPn4r4oXd9O14Hjg3EHw3ts2oed77/SeckunUYCyRlSngqHw== dependencies: - buffer-indexof "^1.0.0" + "@leichtgewicht/ip-codec" "^2.0.1" doctrine@^2.1.0: version "2.1.0" @@ -3556,9 +3543,9 @@ dom-serializer@0: entities "^2.0.0" dom-serializer@^1.0.1, dom-serializer@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" - integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== + version "1.4.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== dependencies: domelementtype "^2.0.1" domhandler "^4.2.0" @@ -3578,9 +3565,9 @@ domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== domelementtype@^2.0.1, domelementtype@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" - integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== domhandler@^2.3.0: version "2.4.2" @@ -3589,10 +3576,10 @@ domhandler@^2.3.0: dependencies: domelementtype "1" -domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.0.tgz#16c658c626cf966967e306f966b431f77d4a5626" - integrity sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g== +domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== dependencies: domelementtype "^2.2.0" @@ -3612,7 +3599,7 @@ domutils@^1.5.1: dom-serializer "0" domelementtype "1" -domutils@^2.5.2, domutils@^2.7.0, domutils@^2.8.0: +domutils@^2.5.2, domutils@^2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== @@ -3656,10 +3643,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.4.71: - version "1.4.75" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.75.tgz#d1ad9bb46f2f1bf432118c2be21d27ffeae82fdd" - integrity sha512-LxgUNeu3BVU7sXaKjUDD9xivocQLxFtq6wgERrutdY/yIOps3ODOZExK1jg8DTEg4U8TUCb5MLGeWFOYuxjF3Q== +electron-to-chromium@^1.4.118: + version "1.4.134" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.134.tgz#9baca7a018ca489d8e81a00c7cfe15161da38568" + integrity sha512-OdD7M2no4Mi8PopfvoOuNcwYDJ2mNFxaBfurA6okG3fLBaMcFah9S+si84FhX+FIWLKkdaiHfl4A+5ep/gOVrg== emoji-regex@^8.0.0: version "8.0.0" @@ -3694,9 +3681,9 @@ end-of-stream@^1.1.0: once "^1.4.0" enhanced-resolve@^5.9.2: - version "5.9.2" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz#0224dcd6a43389ebfb2d55efee517e5466772dd9" - integrity sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA== + version "5.9.3" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz#44a342c012cbc473254af5cc6ae20ebd0aae5d88" + integrity sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -3723,10 +3710,10 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.19.0, es-abstract@^1.19.1: - version "1.19.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" - integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== +es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5: + version "1.19.5" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.5.tgz#a2cb01eb87f724e815b278b0dd0d00f36ca9a7f1" + integrity sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA== dependencies: call-bind "^1.0.2" es-to-primitive "^1.2.1" @@ -3734,15 +3721,15 @@ es-abstract@^1.19.0, es-abstract@^1.19.1: get-intrinsic "^1.1.1" get-symbol-description "^1.0.0" has "^1.0.3" - has-symbols "^1.0.2" + has-symbols "^1.0.3" internal-slot "^1.0.3" is-callable "^1.2.4" - is-negative-zero "^2.0.1" + is-negative-zero "^2.0.2" is-regex "^1.1.4" - is-shared-array-buffer "^1.0.1" + is-shared-array-buffer "^1.0.2" is-string "^1.0.7" - is-weakref "^1.0.1" - object-inspect "^1.11.0" + is-weakref "^1.0.2" + object-inspect "^1.12.0" object-keys "^1.1.1" object.assign "^4.1.2" string.prototype.trimend "^1.0.4" @@ -3754,6 +3741,13 @@ es-module-lexer@^0.9.0: resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + dependencies: + has "^1.0.3" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -3798,7 +3792,7 @@ eslint-config-airbnb-base@^15.0.0: object.entries "^1.1.5" semver "^6.3.0" -eslint-config-airbnb@^19.0.0: +eslint-config-airbnb@^19.0.4: version "19.0.4" resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz#84d4c3490ad70a0ffa571138ebcdea6ab085fdc3" integrity sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew== @@ -3807,7 +3801,7 @@ eslint-config-airbnb@^19.0.0: object.assign "^4.1.2" object.entries "^1.1.5" -eslint-config-prettier@^8.4.0: +eslint-config-prettier@^8.5.0: version "8.5.0" resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== @@ -3820,7 +3814,7 @@ eslint-import-resolver-node@^0.3.6: debug "^3.2.7" resolve "^1.20.0" -eslint-module-utils@^2.7.2: +eslint-module-utils@^2.7.3: version "2.7.3" resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz#ad7e3a10552fdd0642e1e55292781bd6e34876ee" integrity sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ== @@ -3833,24 +3827,24 @@ eslint-plugin-header@^3.1.1: resolved "https://registry.yarnpkg.com/eslint-plugin-header/-/eslint-plugin-header-3.1.1.tgz#6ce512432d57675265fac47292b50d1eff11acd6" integrity sha512-9vlKxuJ4qf793CmeeSrZUvVClw6amtpghq3CuWcB5cUNnWHQhgcqy5eF8oVKFk1G3Y/CbchGfEaw3wiIJaNmVg== -eslint-plugin-import@^2.25.3: - version "2.25.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz#322f3f916a4e9e991ac7af32032c25ce313209f1" - integrity sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA== +eslint-plugin-import@^2.26.0: + version "2.26.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b" + integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== dependencies: array-includes "^3.1.4" array.prototype.flat "^1.2.5" debug "^2.6.9" doctrine "^2.1.0" eslint-import-resolver-node "^0.3.6" - eslint-module-utils "^2.7.2" + eslint-module-utils "^2.7.3" has "^1.0.3" - is-core-module "^2.8.0" + is-core-module "^2.8.1" is-glob "^4.0.3" - minimatch "^3.0.4" + minimatch "^3.1.2" object.values "^1.1.5" - resolve "^1.20.0" - tsconfig-paths "^3.12.0" + resolve "^1.22.0" + tsconfig-paths "^3.14.1" eslint-plugin-jsx-a11y@^6.5.1: version "6.5.1" @@ -3870,15 +3864,15 @@ eslint-plugin-jsx-a11y@^6.5.1: language-tags "^1.0.5" minimatch "^3.0.4" -eslint-plugin-react-hooks@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz#318dbf312e06fab1c835a4abef00121751ac1172" - integrity sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA== +eslint-plugin-react-hooks@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.5.0.tgz#5f762dfedf8b2cf431c689f533c9d3fa5dcf25ad" + integrity sha512-8k1gRt7D7h03kd+SAAlzXkQwWK22BnK6GKZG+FJA6BAGy22CFvl8kCIXKpVux0cCxMWDQUPqSok0LKaZ0aOcCw== -eslint-plugin-react@^7.29.2: - version "7.29.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.29.2.tgz#2d4da69d30d0a736efd30890dc6826f3e91f3f7c" - integrity sha512-ypEBTKOy5liFQXZWMchJ3LN0JX1uPI6n7MN7OPHKacqXAxq5gYC30TdO7wqGYQyxD1OrzpobdHC3hDmlRWDg9w== +eslint-plugin-react@^7.29.4: + version "7.29.4" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz#4717de5227f55f3801a5fd51a16a4fa22b5914d2" + integrity sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ== dependencies: array-includes "^3.1.4" array.prototype.flatmap "^1.2.5" @@ -3928,12 +3922,12 @@ eslint-visitor-keys@^3.3.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== -eslint@^8.8.0: - version "8.10.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.10.0.tgz#931be395eb60f900c01658b278e05b6dae47199d" - integrity sha512-tcI1D9lfVec+R4LE1mNDnzoJ/f71Kl/9Cv4nG47jOueCMBrCCKYXr4AUVS7go6mWYGFD4+EoN6+eXSrEbRzXVw== +eslint@^8.14.0: + version "8.14.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.14.0.tgz#62741f159d9eb4a79695b28ec4989fcdec623239" + integrity sha512-3/CE4aJX7LNEiE3i6FeodHmI/38GZtWCsAtsymScmzYapx8q1nVVb+eLcLSzATmCPXw5pT4TqVs1E0OmxAd9tw== dependencies: - "@eslint/eslintrc" "^1.2.0" + "@eslint/eslintrc" "^1.2.2" "@humanwhocodes/config-array" "^0.9.2" ajv "^6.10.0" chalk "^4.0.0" @@ -4022,11 +4016,12 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= -eval@^0.1.4: - version "0.1.6" - resolved "https://registry.yarnpkg.com/eval/-/eval-0.1.6.tgz#9620d7d8c85515e97e6b47c5814f46ae381cb3cc" - integrity sha512-o0XUw+5OGkXw4pJZzQoXUk+H87DHuC+7ZE//oSrRGtatTmr12oTnLfg6QOq9DyTt0c/p4TwzgmkKrBzWTSizyQ== +eval@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/eval/-/eval-0.1.8.tgz#2b903473b8cc1d1989b83a1e7923f883eb357f85" + integrity sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw== dependencies: + "@types/node" "*" require-like ">= 0.1.1" eventemitter3@^4.0.0: @@ -4061,38 +4056,39 @@ execall@^2.0.0: dependencies: clone-regexp "^2.1.0" -express@^4.17.1: - version "4.17.3" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.3.tgz#f6c7302194a4fb54271b73a1fe7a06478c8f85a1" - integrity sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg== +express@^4.17.3: + version "4.18.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf" + integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q== dependencies: accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.19.2" + body-parser "1.20.0" content-disposition "0.5.4" content-type "~1.0.4" - cookie "0.4.2" + cookie "0.5.0" cookie-signature "1.0.6" debug "2.6.9" - depd "~1.1.2" + depd "2.0.0" encodeurl "~1.0.2" escape-html "~1.0.3" etag "~1.8.1" - finalhandler "~1.1.2" + finalhandler "1.2.0" fresh "0.5.2" + http-errors "2.0.0" merge-descriptors "1.0.1" methods "~1.1.2" - on-finished "~2.3.0" + on-finished "2.4.1" parseurl "~1.3.3" path-to-regexp "0.1.7" proxy-addr "~2.0.7" - qs "6.9.7" + qs "6.10.3" range-parser "~1.2.1" safe-buffer "5.2.1" - send "0.17.2" - serve-static "1.14.2" + send "0.18.0" + serve-static "1.15.0" setprototypeof "1.2.0" - statuses "~1.5.0" + statuses "2.0.1" type-is "~1.6.18" utils-merge "1.0.1" vary "~1.1.2" @@ -4220,17 +4216,17 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -finalhandler@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== dependencies: debug "2.6.9" encodeurl "~1.0.2" escape-html "~1.0.3" - on-finished "~2.3.0" + on-finished "2.4.1" parseurl "~1.3.3" - statuses "~1.5.0" + statuses "2.0.1" unpipe "~1.0.0" find-cache-dir@^3.3.1: @@ -4294,14 +4290,14 @@ flux@^4.0.1: fbjs "^3.0.1" follow-redirects@^1.0.0, follow-redirects@^1.14.7: - version "1.14.9" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7" - integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w== + version "1.15.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.0.tgz#06441868281c86d0dda4ad8bdaead2d02dca89d4" + integrity sha512-aExlJShTV4qOUOL7yF1U5tvLCB0xQuudbf6toyYA0E/acBNw71mvjFTnLaRp50aQaYocMR0a/RMMBIHeZnGyjQ== fork-ts-checker-webpack-plugin@^6.5.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.0.tgz#0282b335fa495a97e167f69018f566ea7d2a2b5e" - integrity sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw== + version "6.5.2" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.2.tgz#4f67183f2f9eb8ba7df7177ce3cf3e75cdafb340" + integrity sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA== dependencies: "@babel/code-frame" "^7.8.3" "@types/json-schema" "^7.0.5" @@ -4322,20 +4318,20 @@ forwarded@0.2.0: resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== -fraction.js@^4.1.2: - version "4.1.3" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.1.3.tgz#be65b0f20762ef27e1e793860bc2dfb716e99e65" - integrity sha512-pUHWWt6vHzZZiQJcM6S/0PXfS+g6FM4BF5rj9wZyreivhQPdsh5PpE25VtSNxq80wHS5RfY51Ii+8Z0Zl/pmzg== +fraction.js@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" + integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== fresh@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= -fs-extra@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.1.tgz#27de43b4320e833f6867cc044bfce29fdf0ef3b8" - integrity sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag== +fs-extra@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== dependencies: graceful-fs "^4.2.0" jsonfile "^6.0.1" @@ -4376,6 +4372,11 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= +functions-have-names@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -4492,9 +4493,9 @@ globals@^11.1.0: integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^13.6.0, globals@^13.9.0: - version "13.12.1" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.12.1.tgz#ec206be932e6c77236677127577aa8e50bf1c5cb" - integrity sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw== + version "13.13.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.13.0.tgz#ac32261060d8070e2719dd6998406e27d2b5727b" + integrity sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A== dependencies: type-fest "^0.20.2" @@ -4545,9 +4546,9 @@ got@^9.6.0: url-parse-lax "^3.0.0" graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: - version "4.2.9" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" - integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== gray-matter@^4.0.3: version "4.0.3" @@ -4576,10 +4577,10 @@ hard-rejection@^2.1.0: resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== -has-bigints@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" - integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== has-flag@^3.0.0: version "3.0.0" @@ -4591,7 +4592,14 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbols@^1.0.1, has-symbols@^1.0.2: +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== @@ -4751,9 +4759,9 @@ hpack.js@^2.1.6: wbuf "^1.1.0" html-entities@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.2.tgz#760b404685cb1d794e4f4b744332e3b00dcfe488" - integrity sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ== + version "2.3.3" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.3.tgz#117d7626bece327fc8baace8868fa6f5ef856e46" + integrity sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA== html-minifier-terser@^6.0.2, html-minifier-terser@^6.1.0: version "6.1.0" @@ -4768,10 +4776,10 @@ html-minifier-terser@^6.0.2, html-minifier-terser@^6.1.0: relateurl "^0.2.7" terser "^5.10.0" -html-tags@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140" - integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg== +html-tags@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.2.0.tgz#dbb3518d20b726524e4dd43de397eb0a95726961" + integrity sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg== html-void-elements@^1.0.0: version "1.0.5" @@ -4821,15 +4829,15 @@ http-deceiver@^1.2.7: resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= -http-errors@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" - integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== dependencies: - depd "~1.1.2" + depd "2.0.0" inherits "2.0.4" setprototypeof "1.2.0" - statuses ">= 1.5.0 < 2" + statuses "2.0.1" toidentifier "1.0.1" http-errors@~1.6.2: @@ -4843,14 +4851,14 @@ http-errors@~1.6.2: statuses ">= 1.4.0 < 2" http-parser-js@>=0.5.1: - version "0.5.5" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.5.tgz#d7c30d5d3c90d865b4a2e870181f9d6f22ac7ac5" - integrity sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA== + version "0.5.6" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.6.tgz#2e02406ab2df8af8a7abfba62e0da01c62b95afd" + integrity sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA== -http-proxy-middleware@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.3.tgz#5df04f69a89f530c2284cd71eeaa51ba52243289" - integrity sha512-1bloEwnrHMnCoO/Gcwbz7eSVvW50KPES01PecpagI+YLNLci4AcuKJrujW4Mc3sBLpFxMSlsLNHS5Nl/lvrTPA== +http-proxy-middleware@^2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" + integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== dependencies: "@types/http-proxy" "^1.17.8" http-proxy "^1.18.1" @@ -4884,11 +4892,6 @@ icss-utils@^5.0.0, icss-utils@^5.1.0: resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - ignore@^5.1.9, ignore@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" @@ -4934,10 +4937,10 @@ indent-string@^4.0.0: resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== -infima@0.2.0-alpha.37: - version "0.2.0-alpha.37" - resolved "https://registry.yarnpkg.com/infima/-/infima-0.2.0-alpha.37.tgz#b87ff42d528d6d050098a560f0294fbdd12adb78" - integrity sha512-4GX7Baw+/lwS4PPW/UJNY89tWSvYG1DL6baKVdpK6mC593iRgMssxNtORMTFArLPJ/A/lzsGhRmx+z6MaMxj0Q== +infima@0.2.0-alpha.39: + version "0.2.0-alpha.39" + resolved "https://registry.yarnpkg.com/infima/-/infima-0.2.0-alpha.39.tgz#054b13ac44f3e9a42bc083988f1a1586add2f59c" + integrity sha512-UyYiwD3nwHakGhuOUfpe3baJ8gkiPpRVx4a4sE/Ag+932+Y6swtLsdPoRR8ezhwqGnduzxmFkjumV9roz6QoLw== inflight@^1.0.4: version "1.0.6" @@ -4993,11 +4996,6 @@ invariant@^2.2.4: dependencies: loose-envify "^1.0.0" -ip@^1.1.0: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= - ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" @@ -5021,14 +5019,6 @@ is-alphanumerical@^1.0.0: is-alphabetical "^1.0.0" is-decimal "^1.0.0" -is-arguments@^1.0.4: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" - integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -5073,10 +5063,10 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" -is-core-module@^2.2.0, is-core-module@^2.5.0, is-core-module@^2.8.0, is-core-module@^2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" - integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== +is-core-module@^2.2.0, is-core-module@^2.5.0, is-core-module@^2.8.1: + version "2.9.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" + integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== dependencies: has "^1.0.3" @@ -5132,7 +5122,7 @@ is-installed-globally@^0.4.0: global-dirs "^3.0.0" is-path-inside "^3.0.2" -is-negative-zero@^2.0.1: +is-negative-zero@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== @@ -5143,9 +5133,9 @@ is-npm@^5.0.0: integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA== is-number-object@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" - integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== dependencies: has-tostringtag "^1.0.0" @@ -5201,7 +5191,7 @@ is-plain-object@^5.0.0: resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== -is-regex@^1.0.4, is-regex@^1.1.4: +is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== @@ -5224,10 +5214,12 @@ is-root@^2.1.0: resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== -is-shared-array-buffer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" - integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" is-stream@^2.0.0: version "2.0.1" @@ -5253,7 +5245,7 @@ is-typedarray@^1.0.0: resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= -is-weakref@^1.0.1: +is-weakref@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== @@ -5389,12 +5381,10 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" -json5@^2.1.2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" - integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== - dependencies: - minimist "^1.2.5" +json5@^2.1.2, json5@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" + integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== jsonfile@^6.0.1: version "6.1.0" @@ -5406,11 +5396,11 @@ jsonfile@^6.0.1: graceful-fs "^4.1.6" "jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz#720b97bfe7d901b927d87c3773637ae8ea48781b" - integrity sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA== + version "3.3.0" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.0.tgz#e624f259143b9062c92b6413ff92a164c80d3ccb" + integrity sha512-XzO9luP6L0xkxwhIJMTJQpZo/eeN60K08jHdexfD569AGxeNug6UketeHXEhROoM8aR7EcUoOQmIhcJQjcuq8Q== dependencies: - array-includes "^3.1.3" + array-includes "^3.1.4" object.assign "^4.1.2" keyv@^3.0.0: @@ -5435,10 +5425,10 @@ klona@^2.0.5: resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc" integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ== -known-css-properties@^0.24.0: - version "0.24.0" - resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.24.0.tgz#19aefd85003ae5698a5560d2b55135bf5432155c" - integrity sha512-RTSoaUAfLvpR357vWzAz/50Q/BmHfmE6ETSWfutT0AJiw10e6CmcdYRQJlLRd95B53D0Y2aD1jSxD3V3ySF+PA== +known-css-properties@^0.25.0: + version "0.25.0" + resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.25.0.tgz#6ebc4d4b412f602e5cfbeb4086bd544e34c0a776" + integrity sha512-b0/9J1O9Jcyik1GC6KC42hJ41jKwdO/Mq8Mdo5sYN+IuRTXs2YFHZC3kZSx6ueusqa95x3wLYe/ytKjbAfGixA== language-subtag-registry@~0.3.2: version "0.3.21" @@ -5473,9 +5463,9 @@ levn@^0.4.1: type-check "~0.4.0" lilconfig@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.4.tgz#f4507d043d7058b380b6a8f5cb7bcd4b34cee082" - integrity sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA== + version "2.0.5" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.5.tgz#19e57fd06ccc3848fd1891655b5a447092225b25" + integrity sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg== lines-and-columns@^1.1.6: version "1.2.4" @@ -5483,18 +5473,9 @@ lines-and-columns@^1.1.6: integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== loader-runner@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" - integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== - -loader-utils@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" + version "4.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== loader-utils@^2.0.0: version "2.0.2" @@ -5620,6 +5601,11 @@ lodash.some@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d" integrity sha1-G7nzFO9ri63tE7VJFpsqlF62jk0= +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + lodash.truncate@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" @@ -5630,7 +5616,7 @@ lodash.uniq@4.5.0, lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21: +lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -5786,20 +5772,15 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -micromatch@^4.0.2, micromatch@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== +micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: - braces "^3.0.1" - picomatch "^2.2.3" - -mime-db@1.51.0: - version "1.51.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" - integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== + braces "^3.0.2" + picomatch "^2.3.1" -"mime-db@>= 1.43.0 < 2": +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== @@ -5817,11 +5798,11 @@ mime-types@2.1.18: mime-db "~1.33.0" mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: - version "2.1.34" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" - integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: - mime-db "1.51.0" + mime-db "1.52.0" mime@1.6.0: version "1.6.0" @@ -5851,10 +5832,10 @@ mini-create-react-context@^0.4.0: "@babel/runtime" "^7.12.1" tiny-warning "^1.0.3" -mini-css-extract-plugin@^2.5.3: - version "2.5.3" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.5.3.tgz#c5c79f9b22ce9b4f164e9492267358dbe35376d9" - integrity sha512-YseMB8cs8U/KCaAGQoqYmfUuhhGW0a9p9XvWXrxVOkE3/IiISTLw4ALNt7JR5B2eYauFM+PQGSbXMDmVbR7Tfw== +mini-css-extract-plugin@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.0.tgz#578aebc7fc14d32c0ad304c2c34f08af44673f5e" + integrity sha512-ndG8nxCEnAemsg4FSgS+yNyHKgkTB4nPKqCOgh65j3/30qqC5RaSQQXMm++Y6sb6E1zRSxPkztj9fqxhS1Eo6w== dependencies: schema-utils "^4.0.0" @@ -5886,17 +5867,10 @@ minimist-options@4.1.0: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -mkdirp@^0.5.5: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" +minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== mrmime@^1.0.0: version "1.0.0" @@ -5918,23 +5892,18 @@ ms@2.1.3, ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -multicast-dns-service-types@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" - integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= - -multicast-dns@^6.0.1: - version "6.2.3" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" - integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== +multicast-dns@^7.2.4: + version "7.2.4" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.4.tgz#cf0b115c31e922aeb20b64e6556cbeb34cf0dd19" + integrity sha512-XkCYOU+rr2Ft3LI6w4ye51M3VK31qJXFIxu0XLw169PtKG0Zx47OrXeVW/GCYOfpC9s1yyyf1S+L8/4LY0J9Zw== dependencies: - dns-packet "^1.3.1" + dns-packet "^5.2.2" thunky "^1.0.2" -nanoid@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" - integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== +nanoid@^3.3.3: + version "3.3.4" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== natural-compare@^1.4.0: version "1.4.0" @@ -5973,15 +5942,15 @@ node-fetch@2.6.7: dependencies: whatwg-url "^5.0.0" -node-forge@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.2.1.tgz#82794919071ef2eb5c509293325cec8afd0fd53c" - integrity sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w== +node-forge@^1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== -node-releases@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01" - integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg== +node-releases@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.4.tgz#f38252370c43854dc48aa431c766c6c398f40476" + integrity sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ== normalize-package-data@^2.5.0: version "2.5.0" @@ -6059,20 +6028,12 @@ object-assign@^4.1.0, object-assign@^4.1.1: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= -object-inspect@^1.11.0, object-inspect@^1.9.0: +object-inspect@^1.12.0, object-inspect@^1.9.0: version "1.12.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== -object-is@^1.0.1: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" - integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -object-keys@^1.0.12, object-keys@^1.1.1: +object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== @@ -6106,12 +6067,12 @@ object.fromentries@^2.0.5: es-abstract "^1.19.1" object.hasown@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.0.tgz#7232ed266f34d197d15cac5880232f7a4790afe5" - integrity sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg== + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.1.tgz#ad1eecc60d03f49460600430d97f23882cf592a3" + integrity sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A== dependencies: - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.1.4" + es-abstract "^1.19.5" object.values@^1.1.5: version "1.1.5" @@ -6127,10 +6088,10 @@ obuf@^1.0.0, obuf@^1.1.2: resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== dependencies: ee-first "1.1.1" @@ -6241,11 +6202,11 @@ p-map@^4.0.0: aggregate-error "^3.0.0" p-retry@^4.5.0: - version "4.6.1" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.1.tgz#8fcddd5cdf7a67a0911a9cf2ef0e5df7f602316c" - integrity sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA== + version "4.6.2" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" + integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== dependencies: - "@types/retry" "^0.12.0" + "@types/retry" "0.12.0" retry "^0.13.1" p-try@^1.0.0: @@ -6397,7 +6358,7 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -6416,15 +6377,6 @@ pkg-up@^3.1.0: dependencies: find-up "^3.0.0" -portfinder@^1.0.28: - version "1.0.28" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" - integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== - dependencies: - async "^2.6.2" - debug "^3.1.1" - mkdirp "^0.5.5" - postcss-calc@^8.2.3: version "8.2.4" resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" @@ -6450,20 +6402,20 @@ postcss-convert-values@^5.1.0: dependencies: postcss-value-parser "^4.2.0" -postcss-discard-comments@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.0.tgz#87be4e0953bf599935837b940c701f8d4eca7d0b" - integrity sha512-L0IKF4jAshRyn03SkEO6ar/Ipz2oLywVbg2THf2EqqdNkBwmVMxuTR/RoAltOw4piiaLt3gCAdrbAqmTBInmhg== +postcss-discard-comments@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.1.tgz#e90019e1a0e5b99de05f63516ce640bd0df3d369" + integrity sha512-5JscyFmvkUxz/5/+TB3QTTT9Gi9jHkcn8dcmmuN68JQcv3aQg4y88yEHHhwFB52l/NkaJ43O0dbksGMAo49nfQ== postcss-discard-duplicates@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== -postcss-discard-empty@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.0.tgz#7f51b16cd1b89f8180bbc7cee34d6cbabf2ef810" - integrity sha512-782T/buGgb3HOuHOJAHpdyKzAAKsv/BxWqsutnZ+QsiHEcDkY7v+6WWdturuBiSal6XMOO1p1aJvwXdqLD5vhA== +postcss-discard-empty@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" + integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== postcss-discard-overridden@^5.1.0: version "5.1.0" @@ -6491,26 +6443,26 @@ postcss-media-query-parser@^0.2.3: resolved "https://registry.yarnpkg.com/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#27b39c6f4d94f81b1a73b8f76351c609e5cef244" integrity sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ= -postcss-merge-idents@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-5.1.0.tgz#948e1183cd659cfb5f99c7389f5fcec83c8f9a00" - integrity sha512-l+awq6+uUiCILsHahWK5KE25495I4oCKlUrIA+EdBvklnVdWlBEsbkzq5+ouPKb8OAe4WwRBgFvaSq7f77FY+w== +postcss-merge-idents@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-5.1.1.tgz#7753817c2e0b75d0853b56f78a89771e15ca04a1" + integrity sha512-pCijL1TREiCoog5nQp7wUe+TUonA2tC2sQ54UGeMmryK3UFGIYKqDyjnqd6RcuI4znFn9hWSLNN8xKE/vWcUQw== dependencies: cssnano-utils "^3.1.0" postcss-value-parser "^4.2.0" -postcss-merge-longhand@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.0.tgz#f716bffbf0bdfbde6ea78c36088e21559f8a0a95" - integrity sha512-Gr46srN2tsLD8fudKYoHO56RG0BLQ2nsBRnSZGY04eNBPwTeWa9KeHrbL3tOLAHyB2aliikycPH2TMJG1U+W6g== +postcss-merge-longhand@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.4.tgz#0f46f8753989a33260efc47de9a0cdc571f2ec5c" + integrity sha512-hbqRRqYfmXoGpzYKeW0/NCZhvNyQIlQeWVSao5iKWdyx7skLvCfQFGIUsP9NUs3dSbPac2IC4Go85/zG+7MlmA== dependencies: postcss-value-parser "^4.2.0" stylehacks "^5.1.0" -postcss-merge-rules@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.0.tgz#a2d5117eba09c8686a5471d97bd9afcf30d1b41f" - integrity sha512-NecukEJovQ0mG7h7xV8wbYAkXGTO3MPKnXvuiXzOKcxoOodfTTKYjeo8TMhAswlSkjcPIBlnKbSFcTuVSDaPyQ== +postcss-merge-rules@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.1.tgz#d327b221cd07540bcc8d9ff84446d8b404d00162" + integrity sha512-8wv8q2cXjEuCcgpIB1Xx1pIy8/rhMPIQqYKNzEdyx37m6gpq83mQQdCxgIkFgliyEnKvdwJf/C61vN4tQDq4Ww== dependencies: browserslist "^4.16.6" caniuse-api "^3.0.0" @@ -6524,19 +6476,19 @@ postcss-minify-font-values@^5.1.0: dependencies: postcss-value-parser "^4.2.0" -postcss-minify-gradients@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.0.tgz#de0260a67a13b7b321a8adc3150725f2c6612377" - integrity sha512-J/TMLklkONn3LuL8wCwfwU8zKC1hpS6VcxFkNUNjmVt53uKqrrykR3ov11mdUYyqVMEx67slMce0tE14cE4DTg== +postcss-minify-gradients@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" + integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== dependencies: colord "^2.9.1" cssnano-utils "^3.1.0" postcss-value-parser "^4.2.0" -postcss-minify-params@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.0.tgz#e0b1f4e05cfd396682f612856485907e4064f25e" - integrity sha512-q67dcts4Hct6x8+JmhBgctHkbvUsqGIg2IItenjE63iZXMbhjr7AlVZkNnKtIGt/1Wsv7p/7YzeSII6Q+KPXRg== +postcss-minify-params@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.2.tgz#77e250780c64198289c954884ebe3ee4481c3b1c" + integrity sha512-aEP+p71S/urY48HWaRHasyx4WHQJyOYaKpQ6eXl8k0kxg66Wt/30VR6/woh8THgcpRbonJD5IeD+CzNhPi1L8g== dependencies: browserslist "^4.16.6" cssnano-utils "^3.1.0" @@ -6633,25 +6585,25 @@ postcss-normalize-url@^5.1.0: normalize-url "^6.0.1" postcss-value-parser "^4.2.0" -postcss-normalize-whitespace@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.0.tgz#aed8b4580c9ad6e8eac034177291187ea16a059c" - integrity sha512-7O1FanKaJkpWFyCghFzIkLhehujV/frGkdofGLwhg5upbLyGsSfiTcZAdSzoPsSUgyPCkBkNMeWR8yVgPdQybg== +postcss-normalize-whitespace@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" + integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== dependencies: postcss-value-parser "^4.2.0" -postcss-ordered-values@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.0.tgz#04ef429e0991b0292bc918b135cd4c038f7b889f" - integrity sha512-wU4Z4D4uOIH+BUKkYid36gGDJNQtkVJT7Twv8qH6UyfttbbJWyw4/xIPuVEkkCtQLAJ0EdsNSh8dlvqkXb49TA== +postcss-ordered-values@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.1.tgz#0b41b610ba02906a3341e92cab01ff8ebc598adb" + integrity sha512-7lxgXF0NaoMIgyihL/2boNAEZKiW0+HkMhdKMTD93CjW8TdCy2hSdj8lsAo+uwm7EDG16Da2Jdmtqpedl0cMfw== dependencies: cssnano-utils "^3.1.0" postcss-value-parser "^4.2.0" -postcss-reduce-idents@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-5.1.0.tgz#386b65cf861a9045663bd349d572027ab138ca4a" - integrity sha512-2xDoPTzv98D/HFDrGTgVEBlcuS47wvua2oc4g2WoZdYPwzPWMWb2TCRruCyN7vbl+HAtVLGvEOMZIZb3wYgv7w== +postcss-reduce-idents@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-5.2.0.tgz#c89c11336c432ac4b28792f24778859a67dfba95" + integrity sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg== dependencies: postcss-value-parser "^4.2.0" @@ -6680,10 +6632,10 @@ postcss-safe-parser@^6.0.0: resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz#bb4c29894171a94bc5c996b9a30317ef402adaa1" integrity sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ== -postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: - version "6.0.9" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz#ee71c3b9ff63d9cd130838876c13a2ec1a992b2f" - integrity sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ== +postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: + version "6.0.10" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" + integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" @@ -6703,10 +6655,10 @@ postcss-svgo@^5.1.0: postcss-value-parser "^4.2.0" svgo "^2.7.0" -postcss-unique-selectors@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.0.tgz#70a945da1b0599d00f617222a44ba1d82a676694" - integrity sha512-LmUhgGobtpeVJJHuogzjLRwJlN7VH+BL5c9GKMVJSS/ejoyePZkXvNsYUtk//F6vKOGK86gfRS0xH7fXQSDtvA== +postcss-unique-selectors@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" + integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== dependencies: postcss-selector-parser "^6.0.5" @@ -6720,12 +6672,12 @@ postcss-zindex@^5.1.0: resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-5.1.0.tgz#4a5c7e5ff1050bd4c01d95b1847dfdcc58a496ff" integrity sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A== -postcss@^8.3.11, postcss@^8.3.5, postcss@^8.4.5, postcss@^8.4.6, postcss@^8.4.7: - version "8.4.7" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.7.tgz#f99862069ec4541de386bf57f5660a6c7a0875a8" - integrity sha512-L9Ye3r6hkkCeOETQX6iOaWZgjp3LL6Lpqm6EtgbKrgqGGteRMNb9vzBfRL96YOSu8o7x3MfIH9Mo5cPJFGrW6A== +postcss@^8.3.11, postcss@^8.3.5, postcss@^8.4.13, postcss@^8.4.7: + version "8.4.13" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.13.tgz#7c87bc268e79f7f86524235821dfdf9f73e5d575" + integrity sha512-jtL6eTBrza5MPzy8oJLFuUscHDXTV5KcLlqAWHl5q5WYRfnNRGSmOZmOZ1T6Gy7A99mOZfqungmZMpMmCVJ8ZA== dependencies: - nanoid "^3.3.1" + nanoid "^3.3.3" picocolors "^1.0.0" source-map-js "^1.0.2" @@ -6739,10 +6691,10 @@ prepend-http@^2.0.0: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= -prettier@^2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a" - integrity sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg== +prettier@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.6.2.tgz#e26d71a18a74c3d0f0597f55f01fb6c06c206032" + integrity sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew== pretty-error@^4.0.0: version "4.0.0" @@ -6757,15 +6709,15 @@ pretty-time@^1.1.0: resolved "https://registry.yarnpkg.com/pretty-time/-/pretty-time-1.1.0.tgz#ffb7429afabb8535c346a34e41873adf3d74dd0e" integrity sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA== -prism-react-renderer@^1.2.1, prism-react-renderer@^1.3.1: +prism-react-renderer@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-1.3.1.tgz#88fc9d0df6bed06ca2b9097421349f8c2f24e30d" integrity sha512-xUeDMEz074d0zc5y6rxiMp/dlC7C+5IDDlaEUlcBOFE2wddz7hz5PNupb087mPwTt7T9BrFmewObfCBuf/LKwQ== -prismjs@^1.27.0: - version "1.27.0" - resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.27.0.tgz#bb6ee3138a0b438a3653dd4d6ce0cc6510a45057" - integrity sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA== +prismjs@^1.28.0: + version "1.28.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.28.0.tgz#0d8f561fa0f7cf6ebca901747828b149147044b6" + integrity sha512-8aaXdYvl1F7iC7Xm1spqSaY/OJBpYW3v+KJ+F17iYxvdc8sfjW194COK5wVhMZX45tGteiBQgdvD/nhxcRwylw== process-nextick-args@~2.0.0: version "2.0.1" @@ -6819,11 +6771,6 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - punycode@^1.3.2: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" @@ -6846,20 +6793,12 @@ pure-color@^1.2.0: resolved "https://registry.yarnpkg.com/pure-color/-/pure-color-1.3.0.tgz#1fe064fb0ac851f0de61320a8bf796836422f33e" integrity sha1-H+Bk+wrIUfDeYTIKi/eWg2Qi8z4= -qs@6.9.7: - version "6.9.7" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.7.tgz#4610846871485e1e048f44ae3b94033f0e675afe" - integrity sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw== - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - -querystring@0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd" - integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== +qs@6.10.3: + version "6.10.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" + integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== + dependencies: + side-channel "^1.0.4" queue-microtask@^1.2.2: version "1.2.3" @@ -6895,13 +6834,13 @@ range-parser@^1.2.1, range-parser@~1.2.1: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.4.3: - version "2.4.3" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.3.tgz#8f80305d11c2a0a545c2d9d89d7a0286fcead43c" - integrity sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g== +raw-body@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== dependencies: bytes "3.1.2" - http-errors "1.8.1" + http-errors "2.0.0" iconv-lite "0.4.24" unpipe "1.0.0" @@ -6925,10 +6864,10 @@ react-base16-styling@^0.6.0: lodash.flow "^3.3.0" pure-color "^1.2.0" -react-dev-utils@^12.0.0: - version "12.0.0" - resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.0.tgz#4eab12cdb95692a077616770b5988f0adf806526" - integrity sha512-xBQkitdxozPxt1YZ9O1097EJiVpwHr9FoAuEVURCKV0Av8NBERovJauzP7bo1ThvuhZ4shsQ1AJiu4vQpoT1AQ== +react-dev-utils@^12.0.1: + version "12.0.1" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.1.tgz#ba92edb4a1f379bd46ccd6bcd4e7bc398df33e73" + integrity sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ== dependencies: "@babel/code-frame" "^7.16.0" address "^1.1.2" @@ -6949,13 +6888,13 @@ react-dev-utils@^12.0.0: open "^8.4.0" pkg-up "^3.1.0" prompts "^2.4.2" - react-error-overlay "^6.0.10" + react-error-overlay "^6.0.11" recursive-readdir "^2.2.2" shell-quote "^1.7.3" strip-ansi "^6.0.1" text-table "^0.2.0" -react-dom@^17.0.1: +react-dom@^17.0.2: version "17.0.2" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== @@ -6964,20 +6903,20 @@ react-dom@^17.0.1: object-assign "^4.1.1" scheduler "^0.20.2" -react-error-overlay@^6.0.10: - version "6.0.10" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.10.tgz#0fe26db4fa85d9dbb8624729580e90e7159a59a6" - integrity sha512-mKR90fX7Pm5seCOfz8q9F+66VCc1PGsWSBxKbITjfKVQHMNF2zudxHnMdJiB1fRCb+XsbQV9sO9DCkgsMQgBIA== +react-error-overlay@^6.0.11: + version "6.0.11" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb" + integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== react-fast-compare@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== -react-helmet-async@*, react-helmet-async@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/react-helmet-async/-/react-helmet-async-1.2.3.tgz#57326a69304ea3293036eafb49475e9ba454cb37" - integrity sha512-mCk2silF53Tq/YaYdkl2sB+/tDoPnaxN7dFS/6ZLJb/rhUY2EWGI5Xj2b4jHppScMqY45MbgPSwTxDchKpZ5Kw== +react-helmet-async@*, react-helmet-async@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/react-helmet-async/-/react-helmet-async-1.3.0.tgz#7bd5bf8c5c69ea9f02f6083f14ce33ef545c222e" + integrity sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg== dependencies: "@babel/runtime" "^7.12.5" invariant "^2.2.4" @@ -7020,22 +6959,22 @@ react-router-config@^5.1.1: "@babel/runtime" "^7.1.2" react-router-dom@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.0.tgz#da1bfb535a0e89a712a93b97dd76f47ad1f32363" - integrity sha512-ObVBLjUZsphUUMVycibxgMdh5jJ1e3o+KpAZBVeHcNQZ4W+uUGGWsokurzlF4YOldQYRQL4y6yFRWM4m3svmuQ== + version "5.3.1" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.1.tgz#0151baf2365c5fcd8493f6ec9b9b31f34d0f8ae1" + integrity sha512-f0pj/gMAbv9e8gahTmCEY20oFhxhrmHwYeIwH5EO5xu0qme+wXtsdB8YfUOAZzUz4VaXmb58m3ceiLtjMhqYmQ== dependencies: "@babel/runtime" "^7.12.13" history "^4.9.0" loose-envify "^1.3.1" prop-types "^15.6.2" - react-router "5.2.1" + react-router "5.3.1" tiny-invariant "^1.0.2" tiny-warning "^1.0.0" -react-router@5.2.1, react-router@^5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.2.1.tgz#4d2e4e9d5ae9425091845b8dbc6d9d276239774d" - integrity sha512-lIboRiOtDLFdg1VTemMwud9vRVuOCZmUIT/7lUoZiSpPODiiH1UQlfXy+vPLC/7IWdFYnhRwAyNqA/+I7wnvKQ== +react-router@5.3.1, react-router@^5.2.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.3.1.tgz#b13e84a016c79b9e80dde123ca4112c4f117e3cf" + integrity sha512-v+zwjqb7bakqgF+wMVKlAPTca/cEmPOvQ9zt7gpSNyPXau1+0qvuYZ5BWzzNDP1y6s15zDwgb9rPN63+SIniRQ== dependencies: "@babel/runtime" "^7.12.13" history "^4.9.0" @@ -7057,7 +6996,7 @@ react-textarea-autosize@^8.3.2: use-composed-ref "^1.0.0" use-latest "^1.0.0" -react@^17.0.1: +react@^17.0.2: version "17.0.2" resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== @@ -7157,20 +7096,21 @@ regenerator-runtime@^0.13.4: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== -regenerator-transform@^0.14.2: - version "0.14.5" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" - integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== +regenerator-transform@^0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz#cbd9ead5d77fae1a48d957cf889ad0586adb6537" + integrity sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg== dependencies: "@babel/runtime" "^7.8.4" -regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz#b3f4c0059af9e47eca9f3f660e51d81307e72307" - integrity sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ== +regexp.prototype.flags@^1.4.1: + version "1.4.3" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" + integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== dependencies: call-bind "^1.0.2" define-properties "^1.1.3" + functions-have-names "^1.2.2" regexpp@^3.2.0: version "3.2.0" @@ -7238,7 +7178,7 @@ remark-admonitions@^1.2.1: unified "^8.4.2" unist-util-visit "^2.0.1" -remark-emoji@^2.1.0: +remark-emoji@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/remark-emoji/-/remark-emoji-2.2.0.tgz#1c702090a1525da5b80e15a8f963ef2c8236cac7" integrity sha512-P3cj9s5ggsUvWw5fS2uzCHJMGuXYRb0NnZqYlNecewXt8QBU9n5vW3DUUKOhepS8F9CwdMx9B8a3i7pqFWAI5w== @@ -7341,7 +7281,7 @@ resolve-pathname@^3.0.0: resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.3.2: +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.3.2: version "1.22.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== @@ -7387,7 +7327,7 @@ rtl-detect@^1.0.4: resolved "https://registry.yarnpkg.com/rtl-detect/-/rtl-detect-1.0.4.tgz#40ae0ea7302a150b96bc75af7d749607392ecac6" integrity sha512-EBR4I2VDSSYr7PkBmFy04uhycIpDKp+21p/jARYXlCSjQksTBQcJ0HFUPOO79EPPH5JS6VAhiIQbycf0O3JAxQ== -rtlcss@^3.3.0: +rtlcss@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/rtlcss/-/rtlcss-3.5.0.tgz#c9eb91269827a102bac7ae3115dd5d049de636c3" integrity sha512-wzgMaMFHQTnyi9YOwsx9LjOxYXJPzS8sYnFaKm6R5ysvTkwzHiB0vxnbHwchHQT65PTdBjDG21/kQBWI7q9O7A== @@ -7405,9 +7345,9 @@ run-parallel@^1.1.9: queue-microtask "^1.2.2" rxjs@^7.5.4: - version "7.5.4" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.4.tgz#3d6bd407e6b7ce9a123e76b1e770dc5761aa368d" - integrity sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ== + version "7.5.5" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.5.tgz#2ebad89af0f560f460ad5cc4213219e1f7dd4e9f" + integrity sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw== dependencies: tslib "^2.1.0" @@ -7416,7 +7356,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -7489,12 +7429,12 @@ select-hose@^2.0.0: resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= -selfsigned@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.0.0.tgz#e927cd5377cbb0a1075302cff8df1042cc2bce5b" - integrity sha512-cUdFiCbKoa1mZ6osuJs2uDHrs0k0oprsKveFiiaBKCNq3SYyb5gs2HxhQyDNLCmL51ZZThqi4YNDpCK6GOP1iQ== +selfsigned@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.0.1.tgz#8b2df7fa56bf014d19b6007655fff209c0ef0a56" + integrity sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ== dependencies: - node-forge "^1.2.0" + node-forge "^1" semver-diff@^3.1.1: version "3.1.1" @@ -7518,31 +7458,31 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== +semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7: + version "7.3.7" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== dependencies: lru-cache "^6.0.0" -send@0.17.2: - version "0.17.2" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.2.tgz#926622f76601c41808012c8bf1688fe3906f7820" - integrity sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww== +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== dependencies: debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" + depd "2.0.0" + destroy "1.2.0" encodeurl "~1.0.2" escape-html "~1.0.3" etag "~1.8.1" fresh "0.5.2" - http-errors "1.8.1" + http-errors "2.0.0" mime "1.6.0" ms "2.1.3" - on-finished "~2.3.0" + on-finished "2.4.1" range-parser "~1.2.1" - statuses "~1.5.0" + statuses "2.0.1" serialize-javascript@^6.0.0: version "6.0.0" @@ -7578,15 +7518,15 @@ serve-index@^1.9.1: mime-types "~2.1.17" parseurl "~1.3.2" -serve-static@1.14.2: - version "1.14.2" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.2.tgz#722d6294b1d62626d41b43a013ece4598d292bfa" - integrity sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ== +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== dependencies: encodeurl "~1.0.2" escape-html "~1.0.3" parseurl "~1.3.3" - send "0.17.2" + send "0.18.0" setimmediate@^1.0.5: version "1.0.5" @@ -7740,10 +7680,12 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@~0.7.2: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== +source-map@~0.8.0-beta.0: + version "0.8.0-beta.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" + integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== + dependencies: + whatwg-url "^7.0.0" space-separated-tokens@^1.0.0: version "1.1.5" @@ -7819,15 +7761,20 @@ state-toggle@^1.0.0: resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ== -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +"statuses@>= 1.4.0 < 2": version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= std-env@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.0.1.tgz#bc4cbc0e438610197e34c2d79c3df30b491f5182" - integrity sha512-mC1Ps9l77/97qeOZc+HrOL7TIaOboHqMZ24dGVQrlxFcpPpfCHpH+qfUT7Dz+6mlG8+JPA1KfBQo19iC/+Ngcw== + version "3.1.1" + resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.1.1.tgz#1f19c4d3f6278c52efd08a94574a2a8d32b7d092" + integrity sha512-/c645XdExBypL01TpFKiG/3RAa/Qmu+zRi0MwAmrdEkwHNuN0ebo8ccAXBBDa5Z0QOJgBskUIbuCK91x0sCVEw== string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: version "4.2.3" @@ -7848,34 +7795,36 @@ string-width@^5.0.1: strip-ansi "^7.0.1" string.prototype.matchall@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz#5abb5dabc94c7b0ea2380f65ba610b3a544b15fa" - integrity sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg== + version "4.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d" + integrity sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg== dependencies: call-bind "^1.0.2" define-properties "^1.1.3" es-abstract "^1.19.1" get-intrinsic "^1.1.1" - has-symbols "^1.0.2" + has-symbols "^1.0.3" internal-slot "^1.0.3" - regexp.prototype.flags "^1.3.1" + regexp.prototype.flags "^1.4.1" side-channel "^1.0.4" string.prototype.trimend@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" - integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== + version "1.0.5" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" + integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" + define-properties "^1.1.4" + es-abstract "^1.19.5" string.prototype.trimstart@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" - integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== + version "1.0.5" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef" + integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" + define-properties "^1.1.4" + es-abstract "^1.19.5" string_decoder@^1.1.1: version "1.3.0" @@ -7907,7 +7856,7 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" -strip-ansi@^7.0.0, strip-ansi@^7.0.1: +strip-ansi@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== @@ -7966,16 +7915,16 @@ stylehacks@^5.1.0: browserslist "^4.16.6" postcss-selector-parser "^6.0.4" -stylelint@^14.5.3: - version "14.5.3" - resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.5.3.tgz#103b6670128ba3dea69fe3a1a07c4a5d3e0e3450" - integrity sha512-omHETL+kGHR+fCXFK1SkZD/A+emCP9esggAdWEl8GPjTNeyRYj+H6uetRDcU+7E451zwWiUYGVAX+lApsAZgsQ== +stylelint@^14.8.1: + version "14.8.2" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.8.2.tgz#801eef74fe6020611e6a515abb9fc7caeb125793" + integrity sha512-tjDfexCYfoPdl/xcDJ9Fv+Ko9cvzbDnmdiaqEn3ovXHXasi/hbkt5tSjsiReQ+ENqnz0eltaX/AOO+AlzVdcNA== dependencies: balanced-match "^2.0.0" colord "^2.9.2" cosmiconfig "^7.0.1" css-functions-list "^3.0.1" - debug "^4.3.3" + debug "^4.3.4" execall "^2.0.0" fast-glob "^3.2.11" fastest-levenshtein "^1.0.12" @@ -7984,23 +7933,23 @@ stylelint@^14.5.3: global-modules "^2.0.0" globby "^11.1.0" globjoin "^0.1.4" - html-tags "^3.1.0" + html-tags "^3.2.0" ignore "^5.2.0" import-lazy "^4.0.0" imurmurhash "^0.1.4" is-plain-object "^5.0.0" - known-css-properties "^0.24.0" + known-css-properties "^0.25.0" mathml-tag-names "^2.1.3" meow "^9.0.0" - micromatch "^4.0.4" + micromatch "^4.0.5" normalize-path "^3.0.0" normalize-selector "^0.2.0" picocolors "^1.0.0" - postcss "^8.4.6" + postcss "^8.4.13" postcss-media-query-parser "^0.2.3" postcss-resolve-nested-selector "^0.1.1" postcss-safe-parser "^6.0.0" - postcss-selector-parser "^6.0.9" + postcss-selector-parser "^6.0.10" postcss-value-parser "^4.2.0" resolve-from "^5.0.0" specificity "^0.4.1" @@ -8103,13 +8052,13 @@ terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.3.1: terser "^5.7.2" terser@^5.10.0, terser@^5.7.2: - version "5.12.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.12.0.tgz#728c6bff05f7d1dcb687d8eace0644802a9dae8a" - integrity sha512-R3AUhNBGWiFc77HXag+1fXpAxTAFRQTJemlJKjAgD9r8xXTpjNKqIXwHM/o7Rh+O0kUJtS3WQVdBeMKFk5sw9A== + version "5.13.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.13.1.tgz#66332cdc5a01b04a224c9fad449fc1a18eaa1799" + integrity sha512-hn4WKOfwnwbYfe48NgrQjqNOH9jzLqRcIfbYytOXCOv46LBfWr9bDS17MQqOi+BWGD0sJK3Sj5NC/gJjiojaoA== dependencies: acorn "^8.5.0" commander "^2.20.0" - source-map "~0.7.2" + source-map "~0.8.0-beta.0" source-map-support "~0.5.20" text-table@^0.2.0: @@ -8122,11 +8071,6 @@ thunky@^1.0.2: resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== -timsort@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" - integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= - tiny-invariant@^1.0.2: version "1.2.0" resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.2.0.tgz#a1141f86b672a9148c72e978a19a73b9b94a15a9" @@ -8164,6 +8108,13 @@ totalist@^1.0.0: resolved "https://registry.yarnpkg.com/totalist/-/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df" integrity sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g== +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= + dependencies: + punycode "^2.1.0" + tr46@~0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" @@ -8189,20 +8140,20 @@ trough@^1.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== -tsconfig-paths@^3.12.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz#19769aca6ee8f6a1a341e38c8fa45dd9fb18899b" - integrity sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg== +tsconfig-paths@^3.14.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" + integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== dependencies: "@types/json5" "^0.0.29" json5 "^1.0.1" - minimist "^1.2.0" + minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^2.0.3, tslib@^2.1.0, tslib@^2.2.0, tslib@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" - integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== +tslib@^2.0.3, tslib@^2.1.0, tslib@^2.2.0, tslib@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" @@ -8232,9 +8183,9 @@ type-fest@^0.8.1: integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== type-fest@^2.5.0: - version "2.12.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.12.0.tgz#ce342f58cab9114912f54b493d60ab39c3fc82b6" - integrity sha512-Qe5GRT+n/4GoqCNGGVp5Snapg1Omq3V7irBJB3EaKsp7HWDo5Gv2d/67gfNyV+d5EXD+x/RF5l1h4yJ7qNkcGA== + version "2.12.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.12.2.tgz#80a53614e6b9b475eb9077472fb7498dc7aa51d0" + integrity sha512-qt6ylCGpLjZ7AaODxbpyBZSs9fCI9SkL3Z9q2oxMBQhs/uyY+VD8jHA8ULCGmWQJlBgqvO3EJeAngOHD8zQCrQ== type-is@~1.6.18: version "1.6.18" @@ -8257,13 +8208,13 @@ ua-parser-js@^0.7.30: integrity sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ== unbox-primitive@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" - integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.1" - has-symbols "^1.0.2" + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" unherit@^1.0.4: @@ -8376,7 +8327,7 @@ unist-util-visit-parents@^3.0.0: "@types/unist" "^2.0.0" unist-util-is "^4.0.0" -unist-util-visit@2.0.3, unist-util-visit@^2.0.0, unist-util-visit@^2.0.1, unist-util-visit@^2.0.2, unist-util-visit@^2.0.3: +unist-util-visit@2.0.3, unist-util-visit@^2.0.0, unist-util-visit@^2.0.1, unist-util-visit@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c" integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q== @@ -8438,30 +8389,22 @@ url-parse-lax@^3.0.0: dependencies: prepend-http "^2.0.0" -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - use-composed-ref@^1.0.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.2.1.tgz#9bdcb5ccd894289105da2325e1210079f56bf849" - integrity sha512-6+X1FLlIcjvFMAeAD/hcxDT8tmyrWnbSPMU0EnxQuDLIxokuFzWliXBiYZuGIx+mrAMLBw0WFfCkaPw8ebzAhw== + version "1.3.0" + resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.3.0.tgz#3d8104db34b7b264030a9d916c5e94fbe280dbda" + integrity sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ== -use-isomorphic-layout-effect@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.1.tgz#7bb6589170cd2987a152042f9084f9effb75c225" - integrity sha512-L7Evj8FGcwo/wpbv/qvSfrkHFtOpCzvM5yl2KVyDJoylVuSvzphiiasmjgQPttIGBAy2WKiBNR98q8w7PiNgKQ== +use-isomorphic-layout-effect@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb" + integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== use-latest@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/use-latest/-/use-latest-1.2.0.tgz#a44f6572b8288e0972ec411bdd0840ada366f232" - integrity sha512-d2TEuG6nSLKQLAfW3By8mKr8HurOlTkul0sOpxbClIv4SQ4iOd7BYr7VIzdbktUCnv7dua/60xzd8igMU6jmyw== + version "1.2.1" + resolved "https://registry.yarnpkg.com/use-latest/-/use-latest-1.2.1.tgz#d13dfb4b08c28e3e33991546a2cee53e14038cf2" + integrity sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw== dependencies: - use-isomorphic-layout-effect "^1.0.0" + use-isomorphic-layout-effect "^1.1.1" util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" @@ -8570,6 +8513,11 @@ webidl-conversions@^3.0.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + webpack-bundle-analyzer@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz#1b0eea2947e73528754a6f9af3e91b2b6e0f79d5" @@ -8596,39 +8544,37 @@ webpack-dev-middleware@^5.3.1: range-parser "^1.2.1" schema-utils "^4.0.0" -webpack-dev-server@^4.7.4: - version "4.7.4" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.7.4.tgz#d0ef7da78224578384e795ac228d8efb63d5f945" - integrity sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A== +webpack-dev-server@^4.8.1: + version "4.9.0" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.9.0.tgz#737dbf44335bb8bde68f8f39127fc401c97a1557" + integrity sha512-+Nlb39iQSOSsFv0lWUuUTim3jDQO8nhK3E68f//J2r5rIcp4lULHXz2oZ0UVdEeWXEh5lSzYUlzarZhDAeAVQw== dependencies: "@types/bonjour" "^3.5.9" "@types/connect-history-api-fallback" "^1.3.5" "@types/express" "^4.17.13" "@types/serve-index" "^1.9.1" "@types/sockjs" "^0.3.33" - "@types/ws" "^8.2.2" + "@types/ws" "^8.5.1" ansi-html-community "^0.0.8" - bonjour "^3.5.0" + bonjour-service "^1.0.11" chokidar "^3.5.3" colorette "^2.0.10" compression "^1.7.4" connect-history-api-fallback "^1.6.0" default-gateway "^6.0.3" - del "^6.0.0" - express "^4.17.1" + express "^4.17.3" graceful-fs "^4.2.6" html-entities "^2.3.2" - http-proxy-middleware "^2.0.0" + http-proxy-middleware "^2.0.3" ipaddr.js "^2.0.1" open "^8.0.9" p-retry "^4.5.0" - portfinder "^1.0.28" + rimraf "^3.0.2" schema-utils "^4.0.0" - selfsigned "^2.0.0" + selfsigned "^2.0.1" serve-index "^1.9.1" sockjs "^0.3.21" spdy "^4.0.2" - strip-ansi "^7.0.0" webpack-dev-middleware "^5.3.1" ws "^8.4.2" @@ -8653,10 +8599,10 @@ webpack-sources@^3.2.3: resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -webpack@^5.69.1: - version "5.70.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.70.0.tgz#3461e6287a72b5e6e2f4872700bc8de0d7500e6d" - integrity sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw== +webpack@^5.72.0: + version "5.72.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.72.0.tgz#f8bc40d9c6bb489a4b7a8a685101d6022b8b6e28" + integrity sha512-qmSmbspI0Qo5ld49htys8GY9XhS9CGqFoHTsOVAnjBdg0Zn79y135R+k4IR4rKK6+eKaabMhJwiVB7xw0SJu5w== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^0.0.51" @@ -8715,6 +8661,15 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" @@ -8811,9 +8766,9 @@ ws@^7.3.1: integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A== ws@^8.4.2: - version "8.5.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" - integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== + version "8.6.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.6.0.tgz#e5e9f1d9e7ff88083d0c0dd8281ea662a42c9c23" + integrity sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw== xdg-basedir@^4.0.0: version "4.0.0" diff --git a/jest.config.mjs b/jest.config.mjs index 4c21dede96f7..5e7200416b7b 100644 --- a/jest.config.mjs +++ b/jest.config.mjs @@ -7,52 +7,83 @@ import {fileURLToPath} from 'url'; +process.env.TZ = 'UTC'; + const ignorePatterns = [ '/node_modules/', '__fixtures__', + '__mocks__', '/testUtils.ts', '/packages/docusaurus/lib', + '/packages/docusaurus-logger/lib', '/packages/docusaurus-utils/lib', + '/packages/docusaurus-utils-common/lib', '/packages/docusaurus-utils-validation/lib', '/packages/docusaurus-plugin-content-blog/lib', '/packages/docusaurus-plugin-content-docs/lib', '/packages/docusaurus-plugin-content-pages/lib', '/packages/docusaurus-theme-classic/lib', - '/packages/docusaurus-theme-classic/lib-next', + '/packages/docusaurus-theme-common/lib', '/packages/docusaurus-migrate/lib', + '/jest', ]; export default { rootDir: fileURLToPath(new URL('.', import.meta.url)), verbose: true, - testURL: 'http://localhost/', + testEnvironmentOptions: { + url: 'https://docusaurus.io/', + }, testEnvironment: 'node', testPathIgnorePatterns: ignorePatterns, - coveragePathIgnorePatterns: ignorePatterns, + coveragePathIgnorePatterns: [ + ...ignorePatterns, + // We also ignore all package entry points + '/packages/docusaurus-utils/src/index.ts', + ], transform: { - '^.+\\.[jt]sx?$': 'babel-jest', + '^.+\\.[jt]sx?$': [ + '@swc/jest', + { + jsc: { + parser: { + syntax: 'typescript', + tsx: true, + }, + target: 'es2020', + }, + }, + ], }, + errorOnDeprecated: true, + reporters: ['default', 'github-actions'], moduleNameMapper: { // Jest can't resolve CSS or asset imports - '^.+\\.(css|jpe?g|png|svg)$': '/jest/emptyModule.js', + '^.+\\.(css|jpe?g|png|svg|webp)$': '/jest/emptyModule.ts', - // TODO we need to allow Jest to resolve core Webpack aliases automatically - '@docusaurus/(browserContext|BrowserOnly|ComponentCreator|constants|docusaurusContext|ExecutionEnvironment|Head|Interpolate|isInternalUrl|Link|Noop|renderRoutes|router|Translate|use.*)': - '@docusaurus/core/lib/client/exports/$1', + // Using src instead of lib, so we always get fresh source + '@docusaurus/(BrowserOnly|ComponentCreator|constants|ExecutionEnvironment|Head|Interpolate|isInternalUrl|Link|Noop|renderRoutes|router|Translate|use.*)': + '@docusaurus/core/src/client/exports/$1', + + // TODO create dedicated testing utility for mocking contexts // Maybe point to a fixture? - '@generated/.*': '/jest/emptyModule.js', + '@generated/.*': '/jest/emptyModule.ts', // TODO use "projects" + multiple configs if we work on another theme? '@theme/(.*)': '@docusaurus/theme-classic/src/theme/$1', '@site/(.*)': 'website/$1', - // TODO why Jest can't figure node package entry points? + // Using src instead of lib, so we always get fresh source '@docusaurus/plugin-content-docs/client': - '@docusaurus/plugin-content-docs/lib/client/index.js', + '@docusaurus/plugin-content-docs/src/client/index.ts', + + '@testing-utils/(.*)': '/jest/utils/$1.ts', }, - globals: { - window: { - location: {href: 'https://docusaurus.io'}, - }, + snapshotSerializers: [ + '/jest/snapshotPathNormalizer.ts', + 'jest-serializer-react-helmet-async', + ], + snapshotFormat: { + escapeString: false, + printBasicPrototype: false, }, - snapshotSerializers: ['/jest/snapshotPathNormalizer.js'], }; diff --git a/jest/deps.d.ts b/jest/deps.d.ts new file mode 100644 index 000000000000..965ca69039cc --- /dev/null +++ b/jest/deps.d.ts @@ -0,0 +1,30 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +// modules only used in tests + +declare module 'to-vfile' { + import type {VFile} from 'vfile'; + + export function read(path: string, encoding?: string): Promise; +} + +declare module 'remark-mdx' { + import type {Plugin} from 'unified'; + + const mdx: Plugin; + export = mdx; +} + +declare module 'remark-rehype'; + +declare module 'rehype-stringify'; + +declare module '@testing-utils/git' { + const createTempRepo: typeof import('./utils/git').createTempRepo; + export {createTempRepo}; +} diff --git a/jest/emptyModule.js b/jest/emptyModule.ts similarity index 90% rename from jest/emptyModule.js rename to jest/emptyModule.ts index ec757d00e954..2687fdf661e1 100644 --- a/jest/emptyModule.js +++ b/jest/emptyModule.ts @@ -5,4 +5,4 @@ * LICENSE file in the root directory of this source tree. */ -module.exports = {}; +export default {}; diff --git a/jest/snapshotPathNormalizer.js b/jest/snapshotPathNormalizer.ts similarity index 52% rename from jest/snapshotPathNormalizer.js rename to jest/snapshotPathNormalizer.ts index 1db7669d01f3..a0e9a3f4d38d 100644 --- a/jest/snapshotPathNormalizer.js +++ b/jest/snapshotPathNormalizer.ts @@ -4,87 +4,62 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ -/* eslint-disable import/no-extraneous-dependencies */ // Forked from https://github.com/tribou/jest-serializer-path/blob/master/lib/index.js // Added some project-specific handlers -const _ = require('lodash'); -const {escapePath} = require('@docusaurus/utils'); -const {version} = require('@docusaurus/core/package.json'); -const os = require('os'); -const path = require('path'); -const fs = require('fs'); - -module.exports = { - print(val, serialize) { - let normalizedValue = val; - - if (_.isError(normalizedValue)) { - const message = normalizePaths(normalizedValue.message); - const error = new Error(message); - - // Clone hidden props - const ownProps = Object.getOwnPropertyNames(error); - // eslint-disable-next-line no-restricted-syntax - for (const index in ownProps) { - if (Object.prototype.hasOwnProperty.call(ownProps, index)) { - const key = ownProps[index]; - - error[key] = normalizePaths(normalizedValue[key]); - } - } - - // Clone normal props - // eslint-disable-next-line no-restricted-syntax - for (const index in normalizedValue) { - if (Object.prototype.hasOwnProperty.call(normalizedValue, index)) { - error[index] = normalizePaths(normalizedValue[index]); - } - } - - normalizedValue = error; - } else if (typeof normalizedValue === 'object') { - normalizedValue = _.cloneDeep(normalizedValue); - - Object.keys(normalizedValue).forEach((key) => { - normalizedValue[key] = normalizePaths(normalizedValue[key]); - }); - } else { - normalizedValue = normalizePaths(normalizedValue); - } - +import os from 'os'; +import path from 'path'; +import fs from 'fs'; +import _ from 'lodash'; +import {escapePath} from '@docusaurus/utils'; +import {version} from '@docusaurus/core/package.json'; +import stripAnsi from 'strip-ansi'; + +export function print( + val: unknown, + serialize: (val: unknown) => string, +): string { + if (val instanceof Error) { + const message = normalizePaths(val.message); + const error = new Error(message); + const allKeys = [ + ...Object.getOwnPropertyNames(error), + ...Object.keys(val), + ] as (keyof Error)[]; + allKeys.forEach((key) => { + error[key] = normalizePaths(val[key]) as never; + }); + return serialize(error); + } else if (val && typeof val === 'object') { + const normalizedValue = _.cloneDeep(val) as {[key: string]: unknown}; + + Object.keys(normalizedValue).forEach((key) => { + normalizedValue[key] = normalizePaths(normalizedValue[key]); + }); return serialize(normalizedValue); - }, - test(val) { - let has = false; - - if (val && typeof val === 'object') { - // val.message is non-enumerable in an error - if (val.message && shouldUpdate(val.message)) { - has = true; - } - - Object.keys(val).forEach((key) => { - if (shouldUpdate(val[key])) { - has = true; - } - }); - } else if (shouldUpdate(val)) { - has = true; - } - - return has; - }, - normalizePaths, - getRealPath, -}; + } + return serialize(normalizePaths(val)); +} + +export function test(val: unknown): boolean { + return ( + (typeof val === 'object' && + val && + Object.keys(val).some((key) => + shouldUpdate((val as {[key: string]: unknown})[key]), + )) || + // val.message is non-enumerable in an error + (val instanceof Error && shouldUpdate(val.message)) || + shouldUpdate(val) + ); +} /** * Normalize paths across platforms. * Filters must be ran on all platforms to guard against false positives */ -function normalizePaths(value) { +function normalizePaths(value: T): T { if (typeof value !== 'string') { return value; } @@ -101,7 +76,8 @@ function normalizePaths(value) { const homeRealRelativeToTempReal = path.relative(tempDirReal, homeDirReal); const homeRealRelativeToTemp = path.relative(tempDir, homeDirReal); - const runner = [ + const runner: ((val: string) => string)[] = [ + (val) => (val.includes('keepAnsi') ? val : stripAnsi(val)), // Replace process.cwd with (val) => val.split(cwdReal).join(''), (val) => val.split(cwd).join(''), @@ -114,7 +90,7 @@ function normalizePaths(value) { (val) => val.split(homeDirReal).join(''), (val) => val.split(homeDir).join(''), - // handle HOME_DIR nested inside TEMP_DIR + // Handle HOME_DIR nested inside TEMP_DIR (val) => val .split(`${path.sep + homeRelativeToTemp}`) @@ -122,7 +98,7 @@ function normalizePaths(value) { (val) => val .split(`${path.sep + homeRelativeToTempReal}`) - .join(''), // untested + .join(''), (val) => val .split(`${path.sep + homeRealRelativeToTempReal}`) @@ -130,7 +106,7 @@ function normalizePaths(value) { (val) => val .split(`${path.sep + homeRealRelativeToTemp}`) - .join(''), // untested + .join(''), // Replace the Docusaurus version with a stub (val) => val.split(version).join(''), @@ -146,33 +122,27 @@ function normalizePaths(value) { // Convert win32 backslash's to forward slashes, \ -> /; // ignore some that look like escape sequences. - (val) => val.replace(/\\(?!["])/g, '/'), + (val) => val.replace(/\\(?!")/g, '/'), ]; - let result = value; + let result = value as string; runner.forEach((current) => { result = current(result); }); - return result; + return result as T & string; } -function shouldUpdate(value) { - if (typeof value !== 'string') { - return false; - } - - // return true if value is different from normalized value - return normalizePaths(value) !== value; +function shouldUpdate(value: unknown) { + return typeof value === 'string' && normalizePaths(value) !== value; } -function getRealPath(pathname) { +function getRealPath(pathname: string) { try { // eslint-disable-next-line no-restricted-properties const realPath = fs.realpathSync(pathname); - return realPath; - } catch (error) { + } catch (err) { return pathname; } } diff --git a/jest/utils/git.ts b/jest/utils/git.ts new file mode 100644 index 000000000000..38db021dccc9 --- /dev/null +++ b/jest/utils/git.ts @@ -0,0 +1,63 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import fs from 'fs-extra'; +import os from 'os'; +import path from 'path'; +import shell from 'shelljs'; + +class Git { + constructor(private dir: string) { + const res = shell.exec('git init', {cwd: dir, silent: true}); + if (res.code !== 0) { + throw new Error(`git init exited with code ${res.code}. +stderr: ${res.stderr} +stdout: ${res.stdout}`); + } + // Doesn't matter currently + shell.exec('git config user.email "test@jc-verse.com"', { + cwd: dir, + silent: true, + }); + shell.exec('git config user.name "Test"', {cwd: dir, silent: true}); + + shell.exec('git commit --allow-empty -m "First commit"', { + cwd: dir, + silent: true, + }); + } + commit(msg: string, date: string, author: string): void { + const addRes = shell.exec('git add .', {cwd: this.dir, silent: true}); + const commitRes = shell.exec( + `git commit -m "${msg}" --date "${date}T00:00:00Z" --author "${author}"`, + { + cwd: this.dir, + env: {GIT_COMMITTER_DATE: `${date}T00:00:00Z`}, + silent: true, + }, + ); + if (addRes.code !== 0) { + throw new Error(`git add exited with code ${addRes.code}. +stderr: ${addRes.stderr} +stdout: ${addRes.stdout}`); + } + if (commitRes.code !== 0) { + throw new Error(`git commit exited with code ${commitRes.code}. +stderr: ${commitRes.stderr} +stdout: ${commitRes.stdout}`); + } + } +} + +// This function is sync so the same mock repo can be shared across tests +export function createTempRepo(): {repoDir: string; git: Git} { + const repoDir = fs.mkdtempSync(path.join(os.tmpdir(), 'git-test-repo')); + + const git = new Git(repoDir); + + return {repoDir, git}; +} diff --git a/lerna.json b/lerna.json index cb868eb2e866..b1fa19591185 100644 --- a/lerna.json +++ b/lerna.json @@ -1,17 +1,17 @@ { - "version": "2.0.0-beta.17", + "version": "2.0.0-beta.21", "npmClient": "yarn", "useWorkspaces": true, "changelog": { "repo": "facebook/docusaurus", "labels": { - "tag: new feature": ":rocket: New Feature", - "tag: breaking change": ":boom: Breaking Change", - "tag: bug fix": ":bug: Bug Fix", - "tag: polish": ":nail_care: Polish", - "tag: documentation": ":memo: Documentation", - "tag: internal": ":house: Internal", - "tag: performance": ":running_woman: Performance" + "pr: breaking change": ":boom: Breaking Change", + "pr: new feature": ":rocket: New Feature", + "pr: bug fix": ":bug: Bug Fix", + "pr: performance": ":running_woman: Performance", + "pr: polish": ":nail_care: Polish", + "pr: documentation": ":memo: Documentation", + "pr: maintenance": ":wrench: Maintenance" }, "cacheDir": ".changelog" } diff --git a/package.json b/package.json index f442643e5d05..c381b4dfcae0 100644 --- a/package.json +++ b/package.json @@ -13,11 +13,10 @@ "scripts": { "start": "yarn build:packages && yarn start:website", "start:website": "yarn workspace website start", - "start:website:watch": "nodemon --watch \"./packages/*/lib/**/*.*\" --exec \"yarn start:website\"", "start:website:baseUrl": "yarn workspace website start:baseUrl", "start:website:blogOnly": "yarn workspace website start:blogOnly", "start:website:deployPreview": "cross-env NETLIFY=true CONTEXT='deploy-preview' yarn workspace website start", - "examples:generate": "node admin/scripts/generateExamples.mjs", + "examples:generate": "node admin/scripts/generateExamples.js", "build": "yarn build:packages && yarn build:website", "build:packages": "lerna run build --no-private", "build:website": "yarn workspace website build", @@ -48,65 +47,70 @@ "format:diff": "prettier --list-different .", "lint": "yarn lint:js && yarn lint:style && yarn lint:spelling", "lint:ci": "yarn lint:js --quiet && yarn lint:style && yarn lint:spelling", - "lint:js": "eslint --cache --report-unused-disable-directives \"**/*.{js,jsx,ts,tsx,mjs}\"", + "lint:js": "eslint --cache --report-unused-disable-directives \"**/*.{js,jsx,ts,tsx,mjs}\"", "lint:spelling": "cspell \"**\" --no-progress", "lint:style": "stylelint \"**/*.css\"", "lerna": "lerna", - "test": "cross-env TZ=UTC jest", + "test": "jest", "test:build:website": "./admin/scripts/test-release.sh", "watch": "yarn lerna run --parallel watch", - "clear": "(yarn workspace website clear || echo 'Failure while running docusaurus clear') && yarn lerna exec --ignore docusaurus yarn rimraf lib lib-next", + "clear": "(yarn workspace website clear || echo 'Failure while running docusaurus clear') && yarn lerna exec --ignore docusaurus yarn rimraf lib", "test:baseUrl": "yarn build:website:baseUrl && yarn serve:website:baseUrl", - "lock:update": "npx yarn-deduplicate" + "lock:update": "npx --yes yarn-deduplicate" + }, + "dependencies": { + "unified": "^9.2.2" }, "devDependencies": { - "@babel/cli": "^7.17.6", - "@babel/core": "^7.17.5", - "@babel/preset-typescript": "^7.16.7", "@crowdin/cli": "^3.7.8", + "@swc/core": "^1.2.197", + "@swc/jest": "^0.2.21", + "@testing-library/react-hooks": "^8.0.0", "@types/fs-extra": "^9.0.13", - "@types/jest": "^27.4.1", - "@types/lodash": "^4.14.179", - "@types/node": "^17.0.21", + "@types/jest": "^28.1.1", + "@types/lodash": "^4.14.182", + "@types/node": "^17.0.42", "@types/prompts": "^2.0.14", - "@types/react": "^17.0.39", - "@types/react-dev-utils": "^9.0.10", - "@types/react-test-renderer": "^17.0.1", + "@types/react": "^18.0.12", + "@types/react-dev-utils": "^9.0.11", + "@types/react-test-renderer": "^18.0.0", "@types/semver": "^7.3.9", "@types/shelljs": "^0.8.11", - "@typescript-eslint/eslint-plugin": "^5.14.0", - "@typescript-eslint/parser": "^5.14.0", - "concurrently": "^7.0.0", + "@typescript-eslint/eslint-plugin": "^5.27.1", + "@typescript-eslint/parser": "^5.27.1", "cross-env": "^7.0.3", - "cspell": "^5.18.5", - "eslint": "^8.10.0", + "cspell": "^6.1.2", + "eslint": "^8.17.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-prettier": "^8.5.0", "eslint-plugin-header": "^3.1.1", - "eslint-plugin-import": "^2.25.4", - "eslint-plugin-jest": "^26.1.1", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-jest": "^26.5.3", "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-react": "^7.29.3", - "eslint-plugin-react-hooks": "^4.3.0", - "husky": "^7.0.4", + "eslint-plugin-react": "^7.30.0", + "eslint-plugin-react-hooks": "^4.5.0", + "eslint-plugin-regexp": "^1.7.0", + "husky": "^8.0.1", "image-size": "^1.0.1", - "jest": "^27.5.1", - "lerna": "^4.0.0", + "jest": "^28.1.1", + "jest-environment-jsdom": "^28.1.1", + "jest-serializer-react-helmet-async": "^1.0.21", + "lerna": "^5.1.1", "lerna-changelog": "^2.2.0", - "lint-staged": "^12.3.5", - "netlify-cli": "^9.13.0", - "nodemon": "^2.0.15", - "prettier": "^2.5.1", + "lint-staged": "^13.0.1", + "npm-run-all": "^4.1.5", + "prettier": "^2.6.2", "react": "^17.0.2", "react-dom": "^17.0.2", + "react-helmet-async": "^1.3.0", "react-test-renderer": "^17.0.2", "remark-parse": "^8.0.2", "rimraf": "^3.0.2", - "sharp": "^0.30.2", - "stylelint": "^14.5.3", + "sharp": "^0.30.6", + "strip-ansi": "^6.0.1", + "stylelint": "^14.9.1", "stylelint-config-prettier": "^9.0.3", - "stylelint-config-standard": "^25.0.0", - "typescript": "^4.6.2", - "unified": "^9.2.1" + "stylelint-config-standard": "^26.0.0", + "typescript": "~4.6.4" } } diff --git a/packages/create-docusaurus/.npmignore b/packages/create-docusaurus/.npmignore index 1edc83766ff5..1f851e4a70c0 100644 --- a/packages/create-docusaurus/.npmignore +++ b/packages/create-docusaurus/.npmignore @@ -1,5 +1,4 @@ -copyUntypedFiles.mjs -.tsbuildinfo +.tsbuildinfo* __tests__ node_modules diff --git a/packages/create-docusaurus/bin/index.js b/packages/create-docusaurus/bin/index.js index 7673e0025a0f..be5e14f68965 100755 --- a/packages/create-docusaurus/bin/index.js +++ b/packages/create-docusaurus/bin/index.js @@ -8,13 +8,15 @@ // @ts-check +import path from 'path'; +import {createRequire} from 'module'; import logger from '@docusaurus/logger'; import semver from 'semver'; -import path from 'path'; import {program} from 'commander'; -import {createRequire} from 'module'; -const packageJson = createRequire(import.meta.url)('../package.json'); +const packageJson = /** @type {import("../package.json")} */ ( + createRequire(import.meta.url)('../package.json') +); const requiredVersion = packageJson.engines.node; if (!semver.satisfies(process.version, requiredVersion)) { @@ -45,23 +47,11 @@ program \`custom\`: enter your custom git clone command. We will prompt you for it.`, ) .description('Initialize website.') - .action( - ( - siteName, - template, - rootDir = '.', - {packageManager, skipInstall, typescript, gitStrategy} = {}, - ) => { - // See https://github.com/facebook/docusaurus/pull/6860 - import('../lib/index.js').then(({default: init}) => { - init(path.resolve(rootDir), siteName, template, { - packageManager, - skipInstall, - typescript, - gitStrategy, - }); - }); - }, + .action((siteName, template, rootDir, options) => + // See https://github.com/facebook/docusaurus/pull/6860 + import('../lib/index.js').then(({default: init}) => + init(path.resolve(rootDir ?? '.'), siteName, template, options), + ), ); program.parse(process.argv); diff --git a/packages/create-docusaurus/package.json b/packages/create-docusaurus/package.json index 418329635a2f..9984e76be577 100755 --- a/packages/create-docusaurus/package.json +++ b/packages/create-docusaurus/package.json @@ -1,6 +1,6 @@ { "name": "create-docusaurus", - "version": "2.0.0-beta.17", + "version": "2.0.0-beta.21", "description": "Create Docusaurus apps easily.", "type": "module", "repository": { @@ -13,8 +13,8 @@ }, "scripts": { "create-docusaurus": "create-docusaurus", - "build": "tsc -p tsconfig.build.json", - "watch": "tsc -p tsconfig.build.json --watch" + "build": "tsc --build", + "watch": "tsc --build --watch" }, "bin": "bin/index.js", "publishConfig": { @@ -22,20 +22,21 @@ }, "license": "MIT", "dependencies": { - "@docusaurus/logger": "2.0.0-beta.17", + "@docusaurus/logger": "2.0.0-beta.21", + "@docusaurus/utils": "2.0.0-beta.21", "commander": "^5.1.0", - "fs-extra": "^10.0.1", + "fs-extra": "^10.1.0", "lodash": "^4.17.21", "prompts": "^2.4.2", - "semver": "^7.3.5", + "semver": "^7.3.7", "shelljs": "^0.8.5", - "supports-color": "^9.2.1", - "tslib": "^2.3.1" + "supports-color": "^9.2.2", + "tslib": "^2.4.0" }, "devDependencies": { "@types/supports-color": "^8.1.1" }, "engines": { - "node": ">=14" + "node": ">=16.14" } } diff --git a/packages/create-docusaurus/src/index.ts b/packages/create-docusaurus/src/index.ts index aa270c292fd2..b996c3e90b6b 100755 --- a/packages/create-docusaurus/src/index.ts +++ b/packages/create-docusaurus/src/index.ts @@ -5,42 +5,42 @@ * LICENSE file in the root directory of this source tree. */ -import logger from '@docusaurus/logger'; import fs from 'fs-extra'; -import prompts, {type Choice} from 'prompts'; +import {fileURLToPath} from 'url'; import path from 'path'; -import shell from 'shelljs'; import _ from 'lodash'; +import logger from '@docusaurus/logger'; +import shell from 'shelljs'; +import prompts, {type Choice} from 'prompts'; import supportsColor from 'supports-color'; -import {fileURLToPath} from 'url'; +import {escapeShellArg} from '@docusaurus/utils'; -const RecommendedTemplate = 'classic'; -const TypeScriptTemplateSuffix = '-typescript'; +type CLIOptions = { + packageManager?: PackageManager; + skipInstall?: boolean; + typescript?: boolean; + gitStrategy?: GitStrategy; +}; // Only used in the rare, rare case of running globally installed create + // using --skip-install. We need a default name to show the tip text -const DefaultPackageManager = 'npm'; +const defaultPackageManager = 'npm'; -const SupportedPackageManagers = { +const lockfileNames = { npm: 'package-lock.json', yarn: 'yarn.lock', pnpm: 'pnpm-lock.yaml', }; -type SupportedPackageManager = keyof typeof SupportedPackageManagers; +type PackageManager = keyof typeof lockfileNames; -const PackageManagersList = Object.keys( - SupportedPackageManagers, -) as SupportedPackageManager[]; +const packageManagers = Object.keys(lockfileNames) as PackageManager[]; -async function findPackageManagerFromLockFile(): Promise< - SupportedPackageManager | undefined -> { - for (const packageManager of PackageManagersList) { - const lockFilePath = path.resolve( - process.cwd(), - SupportedPackageManagers[packageManager], - ); +async function findPackageManagerFromLockFile( + rootDir: string, +): Promise { + for (const packageManager of packageManagers) { + const lockFilePath = path.join(rootDir, lockfileNames[packageManager]); if (await fs.pathExists(lockFilePath)) { return packageManager; } @@ -48,118 +48,117 @@ async function findPackageManagerFromLockFile(): Promise< return undefined; } -function findPackageManagerFromUserAgent(): - | SupportedPackageManager - | undefined { - return PackageManagersList.find((packageManager) => +function findPackageManagerFromUserAgent(): PackageManager | undefined { + return packageManagers.find((packageManager) => process.env.npm_config_user_agent?.startsWith(packageManager), ); } -async function askForPackageManagerChoice(): Promise { +async function askForPackageManagerChoice(): Promise { const hasYarn = shell.exec('yarn --version', {silent: true}).code === 0; - const hasPNPM = shell.exec('pnpm --version', {silent: true}).code === 0; + const hasPnpm = shell.exec('pnpm --version', {silent: true}).code === 0; - if (!hasYarn && !hasPNPM) { + if (!hasYarn && !hasPnpm) { return 'npm'; } - const choices = ['npm', hasYarn && 'yarn', hasPNPM && 'pnpm'] + const choices = ['npm', hasYarn && 'yarn', hasPnpm && 'pnpm'] .filter((p): p is string => Boolean(p)) .map((p) => ({title: p, value: p})); return ( - await prompts({ - type: 'select', - name: 'packageManager', - message: 'Select a package manager...', - choices, - }) - ).packageManager; + ( + (await prompts( + { + type: 'select', + name: 'packageManager', + message: 'Select a package manager...', + choices, + }, + { + onCancel() { + logger.info`Falling back to name=${defaultPackageManager}`; + }, + }, + )) as {packageManager?: PackageManager} + ).packageManager ?? defaultPackageManager + ); } async function getPackageManager( - packageManagerChoice: SupportedPackageManager | undefined, - skipInstall: boolean = false, -): Promise { - if ( - packageManagerChoice && - !PackageManagersList.includes(packageManagerChoice) - ) { + dest: string, + {packageManager, skipInstall}: CLIOptions, +): Promise { + if (packageManager && !packageManagers.includes(packageManager)) { throw new Error( - `Invalid package manager choice ${packageManagerChoice}. Must be one of ${PackageManagersList.join( + `Invalid package manager choice ${packageManager}. Must be one of ${packageManagers.join( ', ', )}`, ); } return ( - packageManagerChoice ?? - (await findPackageManagerFromLockFile()) ?? + // If dest already contains a lockfile (e.g. if using a local template), we + // always use that instead + (await findPackageManagerFromLockFile(dest)) ?? + packageManager ?? + (await findPackageManagerFromLockFile('.')) ?? findPackageManagerFromUserAgent() ?? // This only happens if the user has a global installation in PATH - (skipInstall ? DefaultPackageManager : askForPackageManagerChoice()) + (skipInstall ? defaultPackageManager : askForPackageManagerChoice()) ); } -function isValidGitRepoUrl(gitRepoUrl: string) { - return ['https://', 'git@'].some((item) => gitRepoUrl.startsWith(item)); -} +const recommendedTemplate = 'classic'; +const typeScriptTemplateSuffix = '-typescript'; +const templatesDir = fileURLToPath(new URL('../templates', import.meta.url)); -async function updatePkg(pkgPath: string, obj: Record) { - const content = await fs.readFile(pkgPath, 'utf-8'); - const pkg = JSON.parse(content); - const newPkg = Object.assign(pkg, obj); - - await fs.outputFile(pkgPath, `${JSON.stringify(newPkg, null, 2)}\n`); -} +type Template = { + name: string; + path: string; + tsVariantPath: string | undefined; +}; -async function readTemplates(templatesDir: string) { - const templates = (await fs.readdir(templatesDir)).filter( - (d) => - !d.startsWith('.') && - !d.startsWith('README') && - !d.endsWith(TypeScriptTemplateSuffix) && - d !== 'shared', +async function readTemplates(): Promise { + const dirContents = await fs.readdir(templatesDir); + const templates = await Promise.all( + dirContents + .filter( + (d) => + !d.startsWith('.') && + !d.startsWith('README') && + !d.endsWith(typeScriptTemplateSuffix) && + d !== 'shared', + ) + .map(async (name) => { + const tsVariantPath = path.join( + templatesDir, + `${name}${typeScriptTemplateSuffix}`, + ); + return { + name, + path: path.join(templatesDir, name), + tsVariantPath: (await fs.pathExists(tsVariantPath)) + ? tsVariantPath + : undefined, + }; + }), ); // Classic should be first in list! - return _.sortBy(templates, (t) => t !== RecommendedTemplate); -} - -function createTemplateChoices(templates: string[]) { - function makeNameAndValueChoice(value: string): Choice { - const title = - value === RecommendedTemplate ? `${value} (recommended)` : value; - return {title, value}; - } - - return [ - ...templates.map((template) => makeNameAndValueChoice(template)), - makeNameAndValueChoice('Git repository'), - makeNameAndValueChoice('Local template'), - ]; -} - -function getTypeScriptBaseTemplate(template: string): string | undefined { - if (template.endsWith(TypeScriptTemplateSuffix)) { - return template.replace(TypeScriptTemplateSuffix, ''); - } - return undefined; + return _.sortBy(templates, (t) => t.name !== recommendedTemplate); } async function copyTemplate( - templatesDir: string, - template: string, + template: Template, dest: string, -) { - await fs.copy(path.resolve(templatesDir, 'shared'), dest); + typescript: boolean, +): Promise { + await fs.copy(path.join(templatesDir, 'shared'), dest); // TypeScript variants will copy duplicate resources like CSS & config from // base template - const tsBaseTemplate = getTypeScriptBaseTemplate(template); - if (tsBaseTemplate) { - const tsBaseTemplatePath = path.resolve(templatesDir, tsBaseTemplate); - await fs.copy(tsBaseTemplatePath, dest, { + if (typescript) { + await fs.copy(template.path, dest, { filter: async (filePath) => (await fs.stat(filePath)).isDirectory() || path.extname(filePath) === '.css' || @@ -167,28 +166,59 @@ async function copyTemplate( }); } - await fs.copy(path.resolve(templatesDir, template), dest, { - // Symlinks don't exist in published NPM packages anymore, so this is only + await fs.copy(typescript ? template.tsVariantPath! : template.path, dest, { + // Symlinks don't exist in published npm packages anymore, so this is only // to prevent errors during local testing filter: async (filePath) => !(await fs.lstat(filePath)).isSymbolicLink(), }); } +function createTemplateChoices(templates: Template[]): Choice[] { + function makeNameAndValueChoice(value: string | Template): Choice { + if (typeof value === 'string') { + return {title: value, value}; + } + const title = + value.name === recommendedTemplate + ? `${value.name} (recommended)` + : value.name; + return {title, value}; + } + + return [ + ...templates.map((template) => makeNameAndValueChoice(template)), + makeNameAndValueChoice('Git repository'), + makeNameAndValueChoice('Local template'), + ]; +} + +function isValidGitRepoUrl(gitRepoUrl: string): boolean { + return ['https://', 'git@'].some((item) => gitRepoUrl.startsWith(item)); +} + const gitStrategies = ['deep', 'shallow', 'copy', 'custom'] as const; +type GitStrategy = typeof gitStrategies[number]; -async function getGitCommand(gitStrategy: typeof gitStrategies[number]) { +async function getGitCommand(gitStrategy: GitStrategy): Promise { switch (gitStrategy) { case 'shallow': case 'copy': return 'git clone --recursive --depth 1'; case 'custom': { - const {command} = await prompts({ - type: 'text', - name: 'command', - message: - 'Write your own git clone command. The repository URL and destination directory will be supplied. E.g. "git clone --depth 10"', - }); - return command; + const {command} = (await prompts( + { + type: 'text', + name: 'command', + message: + 'Write your own git clone command. The repository URL and destination directory will be supplied. E.g. "git clone --depth 10"', + }, + { + onCancel() { + logger.info`Falling back to code=${'git clone'}`; + }, + }, + )) as {command?: string}; + return command ?? 'git clone'; } case 'deep': default: @@ -196,178 +226,275 @@ async function getGitCommand(gitStrategy: typeof gitStrategies[number]) { } } -export default async function init( +async function getSiteName( + reqName: string | undefined, rootDir: string, - siteName?: string, - reqTemplate?: string, - cliOptions: Partial<{ - packageManager: SupportedPackageManager; - skipInstall: boolean; - typescript: boolean; - gitStrategy: typeof gitStrategies[number]; - }> = {}, -): Promise { - const templatesDir = fileURLToPath(new URL('../templates', import.meta.url)); - const templates = await readTemplates(templatesDir); - const hasTS = (templateName: string) => - fs.pathExists( - path.resolve(templatesDir, `${templateName}${TypeScriptTemplateSuffix}`), - ); - let name = siteName; - - // Prompt if siteName is not passed from CLI. - if (!name) { - const prompt = await prompts({ +): Promise { + async function validateSiteName(siteName: string) { + if (!siteName) { + return 'A website name is required.'; + } + const dest = path.resolve(rootDir, siteName); + if (await fs.pathExists(dest)) { + return logger.interpolate`Directory already exists at path=${dest}!`; + } + return true; + } + if (reqName) { + const res = validateSiteName(reqName); + if (typeof res === 'string') { + throw new Error(res); + } + return reqName; + } + const {siteName} = (await prompts( + { type: 'text', - name: 'name', + name: 'siteName', message: 'What should we name this site?', initial: 'website', - }); - name = prompt.name; - } - - if (!name) { - logger.error('A website name is required.'); - process.exit(1); - } - - const dest = path.resolve(rootDir, name); - if (await fs.pathExists(dest)) { - logger.error`Directory already exists at path=${dest}!`; - process.exit(1); - } + validate: validateSiteName, + }, + { + onCancel() { + logger.error('A website name is required.'); + process.exit(1); + }, + }, + )) as {siteName: string}; + return siteName; +} - let template = reqTemplate; - let useTS = cliOptions.typescript; - // Prompt if template is not provided from CLI. - if (!template) { - const templatePrompt = await prompts({ - type: 'select', - name: 'template', - message: 'Select a template below...', - choices: createTemplateChoices(templates), - }); - template = templatePrompt.template; - if (template && !useTS && (await hasTS(template))) { - const tsPrompt = await prompts({ - type: 'confirm', - name: 'useTS', - message: - 'This template is available in TypeScript. Do you want to use the TS variant?', - initial: false, - }); - useTS = tsPrompt.useTS; +type Source = + | { + type: 'template'; + template: Template; + typescript: boolean; } + | { + type: 'git'; + url: string; + strategy: GitStrategy; + } + | { + type: 'local'; + path: string; + }; + +async function getSource( + reqTemplate: string | undefined, + templates: Template[], + cliOptions: CLIOptions, +): Promise { + if (reqTemplate) { + if (isValidGitRepoUrl(reqTemplate)) { + if ( + cliOptions.gitStrategy && + !gitStrategies.includes(cliOptions.gitStrategy) + ) { + logger.error`Invalid git strategy: name=${ + cliOptions.gitStrategy + }. Value must be one of ${gitStrategies.join(', ')}.`; + process.exit(1); + } + return { + type: 'git', + url: reqTemplate, + strategy: cliOptions.gitStrategy ?? 'deep', + }; + } else if (await fs.pathExists(path.resolve(reqTemplate))) { + return { + type: 'local', + path: path.resolve(reqTemplate), + }; + } + const template = templates.find((t) => t.name === reqTemplate); + if (!template) { + logger.error('Invalid template.'); + process.exit(1); + } + if (cliOptions.typescript && !template.tsVariantPath) { + logger.error`Template name=${reqTemplate} doesn't provide the TypeScript variant.`; + process.exit(1); + } + return { + type: 'template', + template, + typescript: cliOptions.typescript ?? false, + }; } - - let gitStrategy = cliOptions.gitStrategy ?? 'deep'; - - // If user choose Git repository, we'll prompt for the url. + const template = cliOptions.gitStrategy + ? 'Git repository' + : ( + (await prompts( + { + type: 'select', + name: 'template', + message: 'Select a template below...', + choices: createTemplateChoices(templates), + }, + { + onCancel() { + logger.error('A choice is required.'); + process.exit(1); + }, + }, + )) as {template: Template | 'Git repository' | 'Local template'} + ).template; if (template === 'Git repository') { - const repoPrompt = await prompts({ - type: 'text', - name: 'gitRepoUrl', - validate: (url?: string) => { - if (url && isValidGitRepoUrl(url)) { - return true; - } - return logger.red('Invalid repository URL'); + const {gitRepoUrl} = (await prompts( + { + type: 'text', + name: 'gitRepoUrl', + validate: (url?: string) => { + if (url && isValidGitRepoUrl(url)) { + return true; + } + return logger.red('Invalid repository URL'); + }, + message: logger.interpolate`Enter a repository URL from GitHub, Bitbucket, GitLab, or any other public repo. +(e.g: url=${'https://github.com/ownerName/repoName.git'})`, }, - message: logger.interpolate`Enter a repository URL from GitHub, Bitbucket, GitLab, or any other public repo. -(e.g: path=${'https://github.com/ownerName/repoName.git'})`, - }); - ({gitStrategy} = await prompts({ - type: 'select', - name: 'gitStrategy', - message: 'How should we clone this repo?', - choices: [ - {title: 'Deep clone: preserve full history', value: 'deep'}, - {title: 'Shallow clone: clone with --depth=1', value: 'shallow'}, + { + onCancel() { + logger.error('A git repo URL is required.'); + process.exit(1); + }, + }, + )) as {gitRepoUrl: string}; + let strategy = cliOptions.gitStrategy; + if (!strategy) { + ({strategy} = (await prompts( { - title: 'Copy: do a shallow clone, but do not create a git repo', - value: 'copy', + type: 'select', + name: 'strategy', + message: 'How should we clone this repo?', + choices: [ + {title: 'Deep clone: preserve full history', value: 'deep'}, + {title: 'Shallow clone: clone with --depth=1', value: 'shallow'}, + { + title: 'Copy: do a shallow clone, but do not create a git repo', + value: 'copy', + }, + { + title: 'Custom: enter your custom git clone command', + value: 'custom', + }, + ], }, - {title: 'Custom: enter your custom git clone command', value: 'custom'}, - ], - })); - template = repoPrompt.gitRepoUrl; + { + onCancel() { + logger.info`Falling back to name=${'deep'}`; + }, + }, + )) as {strategy?: GitStrategy}); + } + return { + type: 'git', + url: gitRepoUrl, + strategy: strategy ?? 'deep', + }; } else if (template === 'Local template') { - const dirPrompt = await prompts({ - type: 'text', - name: 'templateDir', - validate: async (dir?: string) => { - if (dir) { - const fullDir = path.resolve(process.cwd(), dir); - if (await fs.pathExists(fullDir)) { - return true; + const {templateDir} = (await prompts( + { + type: 'text', + name: 'templateDir', + validate: async (dir?: string) => { + if (dir) { + const fullDir = path.resolve(dir); + if (await fs.pathExists(fullDir)) { + return true; + } + return logger.red( + logger.interpolate`path=${fullDir} does not exist.`, + ); } - return logger.red( - logger.interpolate`path=${fullDir} does not exist.`, - ); - } - return logger.red('Please enter a valid path.'); + return logger.red('Please enter a valid path.'); + }, + message: + 'Enter a local folder path, relative to the current working directory.', + }, + { + onCancel() { + logger.error('A file path is required.'); + process.exit(1); + }, }, + )) as {templateDir: string}; + return { + type: 'local', + path: templateDir, + }; + } + let useTS = cliOptions.typescript; + if (!useTS && template.tsVariantPath) { + ({useTS} = (await prompts({ + type: 'confirm', + name: 'useTS', message: - 'Enter a local folder path, relative to the current working directory.', - }); - template = dirPrompt.templateDir; + 'This template is available in TypeScript. Do you want to use the TS variant?', + initial: false, + })) as {useTS?: boolean}); } + return { + type: 'template', + template, + typescript: useTS ?? false, + }; +} - if (!template) { - logger.error('Template should not be empty'); - process.exit(1); - } +async function updatePkg(pkgPath: string, obj: {[key: string]: unknown}) { + const pkg = (await fs.readJSON(pkgPath)) as {[key: string]: unknown}; + const newPkg = Object.assign(pkg, obj); + + await fs.outputFile(pkgPath, `${JSON.stringify(newPkg, null, 2)}\n`); +} + +export default async function init( + rootDir: string, + reqName?: string, + reqTemplate?: string, + cliOptions: CLIOptions = {}, +): Promise { + const templates = await readTemplates(); + const siteName = await getSiteName(reqName, rootDir); + const dest = path.resolve(rootDir, siteName); + const source = await getSource(reqTemplate, templates, cliOptions); logger.info('Creating new Docusaurus project...'); - if (isValidGitRepoUrl(template)) { - logger.info`Cloning Git template path=${template}...`; - if (!gitStrategies.includes(gitStrategy)) { - logger.error`Invalid git strategy: name=${gitStrategy}. Value must be one of ${gitStrategies.join( - ', ', - )}.`; + if (source.type === 'git') { + const gitCommand = await getGitCommand(source.strategy); + const gitCloneCommand = `${gitCommand} ${escapeShellArg( + source.url, + )} ${escapeShellArg(dest)}`; + if (shell.exec(gitCloneCommand).code !== 0) { + logger.error`Cloning Git template failed!`; process.exit(1); } - const command = await getGitCommand(gitStrategy); - if (shell.exec(`${command} ${template} ${dest}`).code !== 0) { - logger.error`Cloning Git template name=${template} failed!`; - process.exit(1); - } - if (gitStrategy === 'copy') { + if (source.strategy === 'copy') { await fs.remove(path.join(dest, '.git')); } - } else if (templates.includes(template)) { - // Docusaurus templates. - if (useTS) { - if (!(await hasTS(template))) { - logger.error`Template name=${template} doesn't provide the Typescript variant.`; - process.exit(1); - } - template = `${template}${TypeScriptTemplateSuffix}`; - } + } else if (source.type === 'template') { try { - await copyTemplate(templatesDir, template, dest); + await copyTemplate(source.template, dest, source.typescript); } catch (err) { - logger.error`Copying Docusaurus template name=${template} failed!`; + logger.error`Copying Docusaurus template name=${source.template.name} failed!`; throw err; } - } else if (await fs.pathExists(path.resolve(process.cwd(), template))) { - const templateDir = path.resolve(process.cwd(), template); + } else { try { - await fs.copy(templateDir, dest); + await fs.copy(source.path, dest); } catch (err) { - logger.error`Copying local template path=${templateDir} failed!`; + logger.error`Copying local template path=${source.path} failed!`; throw err; } - } else { - logger.error('Invalid template.'); - process.exit(1); } // Update package.json info. try { await updatePkg(path.join(dest, 'package.json'), { - name: _.kebabCase(name), + name: _.kebabCase(siteName), version: '0.0.0', private: true, }); @@ -389,10 +516,7 @@ export default async function init( // Display the most elegant way to cd. const cdpath = path.relative('.', dest); - const pkgManager = await getPackageManager( - cliOptions.packageManager, - cliOptions.skipInstall, - ); + const pkgManager = await getPackageManager(dest, cliOptions); if (!cliOptions.skipInstall) { shell.cd(dest); logger.info`Installing dependencies with name=${pkgManager}...`; @@ -402,8 +526,8 @@ export default async function init( { env: { ...process.env, - // Force coloring the output, since the command is invoked, - // by shelljs which is not the interactive shell + // Force coloring the output, since the command is invoked by + // shelljs, which is not an interactive shell ...(supportsColor.stdout ? {FORCE_COLOR: '1'} : {}), }, }, @@ -419,7 +543,7 @@ export default async function init( } const useNpm = pkgManager === 'npm'; - logger.success`Created path=${cdpath}.`; + logger.success`Created name=${cdpath}.`; logger.info`Inside that directory, you can run several commands: code=${`${pkgManager} start`} diff --git a/packages/create-docusaurus/templates/classic-typescript/package.json b/packages/create-docusaurus/templates/classic-typescript/package.json index 9f93f84d81e2..6f7971bf2757 100644 --- a/packages/create-docusaurus/templates/classic-typescript/package.json +++ b/packages/create-docusaurus/templates/classic-typescript/package.json @@ -1,6 +1,6 @@ { "name": "docusaurus-2-classic-typescript-template", - "version": "2.0.0-beta.17", + "version": "2.0.0-beta.21", "private": true, "scripts": { "docusaurus": "docusaurus", @@ -15,18 +15,18 @@ "typecheck": "tsc" }, "dependencies": { - "@docusaurus/core": "2.0.0-beta.17", - "@docusaurus/preset-classic": "2.0.0-beta.17", + "@docusaurus/core": "2.0.0-beta.21", + "@docusaurus/preset-classic": "2.0.0-beta.21", "@mdx-js/react": "^1.6.22", "clsx": "^1.1.1", - "prism-react-renderer": "^1.2.1", - "react": "^17.0.1", - "react-dom": "^17.0.1" + "prism-react-renderer": "^1.3.3", + "react": "^17.0.2", + "react-dom": "^17.0.2" }, "devDependencies": { - "@docusaurus/module-type-aliases": "2.0.0-beta.17", - "@tsconfig/docusaurus": "^1.0.4", - "typescript": "^4.6.2" + "@docusaurus/module-type-aliases": "2.0.0-beta.21", + "@tsconfig/docusaurus": "^1.0.5", + "typescript": "^4.6.4" }, "browserslist": { "production": [ @@ -39,5 +39,8 @@ "last 1 firefox version", "last 1 safari version" ] + }, + "engines": { + "node": ">=16.14" } } diff --git a/packages/create-docusaurus/templates/classic-typescript/src/pages/index.tsx b/packages/create-docusaurus/templates/classic-typescript/src/pages/index.tsx index 3408a41e7f23..305139fba009 100644 --- a/packages/create-docusaurus/templates/classic-typescript/src/pages/index.tsx +++ b/packages/create-docusaurus/templates/classic-typescript/src/pages/index.tsx @@ -1,11 +1,12 @@ import React from 'react'; import clsx from 'clsx'; -import Layout from '@theme/Layout'; import Link from '@docusaurus/Link'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; -import styles from './index.module.css'; +import Layout from '@theme/Layout'; import HomepageFeatures from '@site/src/components/HomepageFeatures'; +import styles from './index.module.css'; + function HomepageHeader() { const {siteConfig} = useDocusaurusContext(); return ( diff --git a/packages/create-docusaurus/templates/classic/docusaurus.config.js b/packages/create-docusaurus/templates/classic/docusaurus.config.js index 437d1fba1a63..cbea7b1b4b1b 100644 --- a/packages/create-docusaurus/templates/classic/docusaurus.config.js +++ b/packages/create-docusaurus/templates/classic/docusaurus.config.js @@ -13,9 +13,20 @@ const config = { onBrokenLinks: 'throw', onBrokenMarkdownLinks: 'warn', favicon: 'img/favicon.ico', + + // GitHub pages deployment config. + // If you aren't using GitHub pages, you don't need these. organizationName: 'facebook', // Usually your GitHub org/user name. projectName: 'docusaurus', // Usually your repo name. + // Even if you don't use internalization, you can use this field to set useful + // metadata like html lang. For example, if your site is Chinese, you may want + // to replace "en" with "zh-Hans". + i18n: { + defaultLocale: 'en', + locales: ['en'], + }, + presets: [ [ 'classic', @@ -24,11 +35,14 @@ const config = { docs: { sidebarPath: require.resolve('./sidebars.js'), // Please change this to your repo. - editUrl: 'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/', + // Remove this to remove the "edit this page" links. + editUrl: + 'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/', }, blog: { showReadingTime: true, // Please change this to your repo. + // Remove this to remove the "edit this page" links. editUrl: 'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/', }, diff --git a/packages/create-docusaurus/templates/classic/package.json b/packages/create-docusaurus/templates/classic/package.json index 6248aefec3e0..b52e956acf66 100644 --- a/packages/create-docusaurus/templates/classic/package.json +++ b/packages/create-docusaurus/templates/classic/package.json @@ -1,6 +1,6 @@ { "name": "docusaurus-2-classic-template", - "version": "2.0.0-beta.17", + "version": "2.0.0-beta.21", "private": true, "scripts": { "docusaurus": "docusaurus", @@ -14,13 +14,16 @@ "write-heading-ids": "docusaurus write-heading-ids" }, "dependencies": { - "@docusaurus/core": "2.0.0-beta.17", - "@docusaurus/preset-classic": "2.0.0-beta.17", + "@docusaurus/core": "2.0.0-beta.21", + "@docusaurus/preset-classic": "2.0.0-beta.21", "@mdx-js/react": "^1.6.22", "clsx": "^1.1.1", - "prism-react-renderer": "^1.2.1", - "react": "^17.0.1", - "react-dom": "^17.0.1" + "prism-react-renderer": "^1.3.3", + "react": "^17.0.2", + "react-dom": "^17.0.2" + }, + "devDependencies": { + "@docusaurus/module-type-aliases": "2.0.0-beta.21" }, "browserslist": { "production": [ @@ -33,5 +36,8 @@ "last 1 firefox version", "last 1 safari version" ] + }, + "engines": { + "node": ">=16.14" } } diff --git a/packages/create-docusaurus/templates/classic/src/css/custom.css b/packages/create-docusaurus/templates/classic/src/css/custom.css index 311dc090d973..2bc6a4cfdef4 100644 --- a/packages/create-docusaurus/templates/classic/src/css/custom.css +++ b/packages/create-docusaurus/templates/classic/src/css/custom.css @@ -14,6 +14,7 @@ --ifm-color-primary-lighter: #359962; --ifm-color-primary-lightest: #3cad6e; --ifm-code-font-size: 95%; + --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1); } /* For readability concerns, you should choose a lighter palette in dark mode. */ @@ -25,15 +26,5 @@ --ifm-color-primary-light: #29d5b0; --ifm-color-primary-lighter: #32d8b4; --ifm-color-primary-lightest: #4fddbf; -} - -.docusaurus-highlight-code-line { - background-color: rgba(0, 0, 0, 0.1); - display: block; - margin: 0 calc(-1 * var(--ifm-pre-padding)); - padding: 0 var(--ifm-pre-padding); -} - -[data-theme='dark'] .docusaurus-highlight-code-line { - background-color: rgba(0, 0, 0, 0.3); + --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3); } diff --git a/packages/create-docusaurus/templates/classic/src/pages/index.js b/packages/create-docusaurus/templates/classic/src/pages/index.js index a4fc2d3f03e6..affcd9099c28 100644 --- a/packages/create-docusaurus/templates/classic/src/pages/index.js +++ b/packages/create-docusaurus/templates/classic/src/pages/index.js @@ -1,11 +1,12 @@ import React from 'react'; import clsx from 'clsx'; -import Layout from '@theme/Layout'; import Link from '@docusaurus/Link'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; -import styles from './index.module.css'; +import Layout from '@theme/Layout'; import HomepageFeatures from '@site/src/components/HomepageFeatures'; +import styles from './index.module.css'; + function HomepageHeader() { const {siteConfig} = useDocusaurusContext(); return ( diff --git a/packages/create-docusaurus/templates/facebook/docusaurus.config.js b/packages/create-docusaurus/templates/facebook/docusaurus.config.js index a88ea59b1d5a..d140034e07f5 100644 --- a/packages/create-docusaurus/templates/facebook/docusaurus.config.js +++ b/packages/create-docusaurus/templates/facebook/docusaurus.config.js @@ -18,6 +18,9 @@ const config = { onBrokenLinks: 'throw', onBrokenMarkdownLinks: 'warn', favicon: 'img/favicon.ico', + + // GitHub pages deployment config. + // If you aren't using GitHub pages, you don't need these. organizationName: 'facebook', // Usually your GitHub org/user name. projectName: 'docusaurus', // Usually your repo name. @@ -29,12 +32,14 @@ const config = { docs: { sidebarPath: require.resolve('./sidebars.js'), // Please change this to your repo. + // Remove this to remove the "edit this page" links. editUrl: 'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/', }, blog: { showReadingTime: true, // Please change this to your repo. + // Remove this to remove the "edit this page" links. editUrl: 'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/', }, diff --git a/packages/create-docusaurus/templates/facebook/package.json b/packages/create-docusaurus/templates/facebook/package.json index ac3f43d874be..d1569612d719 100644 --- a/packages/create-docusaurus/templates/facebook/package.json +++ b/packages/create-docusaurus/templates/facebook/package.json @@ -1,6 +1,6 @@ { "name": "docusaurus-2-facebook-template", - "version": "2.0.0-beta.17", + "version": "2.0.0-beta.21", "private": true, "scripts": { "docusaurus": "docusaurus", @@ -18,25 +18,25 @@ "format:diff": "prettier --config .prettierrc --list-different \"**/*.{js,jsx,ts,tsx,md,mdx}\"" }, "dependencies": { - "@docusaurus/core": "2.0.0-beta.17", - "@docusaurus/preset-classic": "2.0.0-beta.17", + "@docusaurus/core": "2.0.0-beta.21", + "@docusaurus/preset-classic": "2.0.0-beta.21", "@mdx-js/react": "^1.6.22", "clsx": "^1.1.1", - "react": "^17.0.1", - "react-dom": "^17.0.1" + "react": "^17.0.2", + "react-dom": "^17.0.2" }, "devDependencies": { - "@babel/eslint-parser": "^7.16.3", - "eslint": "^8.8.0", - "eslint-config-airbnb": "^19.0.0", + "@babel/eslint-parser": "^7.18.2", + "eslint": "^8.17.0", + "eslint-config-airbnb": "^19.0.4", "eslint-config-prettier": "^8.5.0", "eslint-plugin-header": "^3.1.1", - "eslint-plugin-import": "^2.25.3", + "eslint-plugin-import": "^2.26.0", "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-react": "^7.29.3", - "eslint-plugin-react-hooks": "^4.3.0", - "prettier": "^2.5.1", - "stylelint": "^14.5.3" + "eslint-plugin-react": "^7.30.0", + "eslint-plugin-react-hooks": "^4.5.0", + "prettier": "^2.6.2", + "stylelint": "^14.9.1" }, "browserslist": { "production": [ @@ -49,5 +49,8 @@ "last 1 firefox version", "last 1 safari version" ] + }, + "engines": { + "node": ">=16.14" } } diff --git a/packages/create-docusaurus/templates/facebook/src/css/custom.css b/packages/create-docusaurus/templates/facebook/src/css/custom.css index 29e525236964..c11ab1671663 100644 --- a/packages/create-docusaurus/templates/facebook/src/css/custom.css +++ b/packages/create-docusaurus/templates/facebook/src/css/custom.css @@ -35,10 +35,3 @@ --ifm-color-primary-lighter: #32d8b4; --ifm-color-primary-lightest: #4fddbf; } - -.docusaurus-highlight-code-line { - background-color: rgb(72, 77, 91); - display: block; - margin: 0 calc(-1 * var(--ifm-pre-padding)); - padding: 0 var(--ifm-pre-padding); -} diff --git a/packages/create-docusaurus/templates/shared/docs/tutorial-basics/_category_.json b/packages/create-docusaurus/templates/shared/docs/tutorial-basics/_category_.json index 135e4a6858be..2e6db55b1eb6 100644 --- a/packages/create-docusaurus/templates/shared/docs/tutorial-basics/_category_.json +++ b/packages/create-docusaurus/templates/shared/docs/tutorial-basics/_category_.json @@ -1,4 +1,8 @@ { "label": "Tutorial - Basics", - "position": 2 + "position": 2, + "link": { + "type": "generated-index", + "description": "5 minutes to learn the most important Docusaurus concepts." + } } diff --git a/packages/create-docusaurus/templates/shared/docs/tutorial-basics/create-a-blog-post.md b/packages/create-docusaurus/templates/shared/docs/tutorial-basics/create-a-blog-post.md index 0d50aaf31631..ea472bbaf871 100644 --- a/packages/create-docusaurus/templates/shared/docs/tutorial-basics/create-a-blog-post.md +++ b/packages/create-docusaurus/templates/shared/docs/tutorial-basics/create-a-blog-post.md @@ -31,4 +31,4 @@ Congratulations, you have made your first post! Feel free to play around and edit this post as much you like. ``` -A new blog post is now available at `http://localhost:3000/blog/greetings`. +A new blog post is now available at [http://localhost:3000/blog/greetings](http://localhost:3000/blog/greetings). diff --git a/packages/create-docusaurus/templates/shared/docs/tutorial-basics/create-a-document.md b/packages/create-docusaurus/templates/shared/docs/tutorial-basics/create-a-document.md index a9bb9a4140b1..06aa83ef4c7a 100644 --- a/packages/create-docusaurus/templates/shared/docs/tutorial-basics/create-a-document.md +++ b/packages/create-docusaurus/templates/shared/docs/tutorial-basics/create-a-document.md @@ -20,7 +20,7 @@ Create a markdown file at `docs/hello.md`: This is my **first Docusaurus document**! ``` -A new document is now available at `http://localhost:3000/docs/hello`. +A new document is now available at [http://localhost:3000/docs/hello](http://localhost:3000/docs/hello). ## Configure the Sidebar diff --git a/packages/create-docusaurus/templates/shared/docs/tutorial-basics/create-a-page.md b/packages/create-docusaurus/templates/shared/docs/tutorial-basics/create-a-page.md index e112b0059c26..c1e84f85caba 100644 --- a/packages/create-docusaurus/templates/shared/docs/tutorial-basics/create-a-page.md +++ b/packages/create-docusaurus/templates/shared/docs/tutorial-basics/create-a-page.md @@ -28,7 +28,7 @@ export default function MyReactPage() { } ``` -A new page is now available at `http://localhost:3000/my-react-page`. +A new page is now available at [http://localhost:3000/my-react-page](http://localhost:3000/my-react-page). ## Create your first Markdown Page @@ -40,4 +40,4 @@ Create a file at `src/pages/my-markdown-page.md`: This is a Markdown page ``` -A new page is now available at `http://localhost:3000/my-markdown-page`. +A new page is now available at [http://localhost:3000/my-markdown-page](http://localhost:3000/my-markdown-page). diff --git a/packages/create-docusaurus/templates/shared/docs/tutorial-basics/deploy-your-site.md b/packages/create-docusaurus/templates/shared/docs/tutorial-basics/deploy-your-site.md index 492eae0276b4..1c50ee063ef4 100644 --- a/packages/create-docusaurus/templates/shared/docs/tutorial-basics/deploy-your-site.md +++ b/packages/create-docusaurus/templates/shared/docs/tutorial-basics/deploy-your-site.md @@ -26,6 +26,6 @@ Test your production build locally: npm run serve ``` -The `build` folder is now served at `http://localhost:3000/`. +The `build` folder is now served at [http://localhost:3000/](http://localhost:3000/). You can now deploy the `build` folder **almost anywhere** easily, **for free** or very small cost (read the **[Deployment Guide](https://docusaurus.io/docs/deployment)**). diff --git a/packages/create-docusaurus/templates/shared/docs/tutorial-basics/markdown-features.mdx b/packages/create-docusaurus/templates/shared/docs/tutorial-basics/markdown-features.mdx index 8855626051f1..6b3aaaaaaf85 100644 --- a/packages/create-docusaurus/templates/shared/docs/tutorial-basics/markdown-features.mdx +++ b/packages/create-docusaurus/templates/shared/docs/tutorial-basics/markdown-features.mdx @@ -43,7 +43,7 @@ Let's see how to [Create a page](./create-a-page.md). Regular Markdown images are supported. -Add an image at `static/img/docusaurus.png` and display it in Markdown: +You can use absolute paths to reference images in the static directory (`static/img/docusaurus.png`): ```md ![Docusaurus logo](/img/docusaurus.png) @@ -51,6 +51,8 @@ Add an image at `static/img/docusaurus.png` and display it in Markdown: ![Docusaurus logo](/img/docusaurus.png) +You can reference images relative to the current file as well, as shown in [the extra guides](../tutorial-extras/manage-docs-versions.md). + ## Code Blocks Markdown code blocks are supported with Syntax highlighting. diff --git a/packages/create-docusaurus/templates/shared/docs/tutorial-extras/_category_.json b/packages/create-docusaurus/templates/shared/docs/tutorial-extras/_category_.json index ca3f8e06408b..a8ffcc19300e 100644 --- a/packages/create-docusaurus/templates/shared/docs/tutorial-extras/_category_.json +++ b/packages/create-docusaurus/templates/shared/docs/tutorial-extras/_category_.json @@ -1,4 +1,7 @@ { "label": "Tutorial - Extras", - "position": 3 + "position": 3, + "link": { + "type": "generated-index" + } } diff --git a/packages/create-docusaurus/templates/shared/docs/tutorial-extras/img/docsVersionDropdown.png b/packages/create-docusaurus/templates/shared/docs/tutorial-extras/img/docsVersionDropdown.png new file mode 100644 index 000000000000..97e4164618b5 Binary files /dev/null and b/packages/create-docusaurus/templates/shared/docs/tutorial-extras/img/docsVersionDropdown.png differ diff --git a/packages/create-docusaurus/templates/shared/docs/tutorial-extras/img/localeDropdown.png b/packages/create-docusaurus/templates/shared/docs/tutorial-extras/img/localeDropdown.png new file mode 100644 index 000000000000..e257edc1f932 Binary files /dev/null and b/packages/create-docusaurus/templates/shared/docs/tutorial-extras/img/localeDropdown.png differ diff --git a/packages/create-docusaurus/templates/shared/docs/tutorial-extras/manage-docs-versions.md b/packages/create-docusaurus/templates/shared/docs/tutorial-extras/manage-docs-versions.md index 6335b0ac94b8..e12c3f3444fa 100644 --- a/packages/create-docusaurus/templates/shared/docs/tutorial-extras/manage-docs-versions.md +++ b/packages/create-docusaurus/templates/shared/docs/tutorial-extras/manage-docs-versions.md @@ -45,7 +45,7 @@ module.exports = { The docs version dropdown appears in your navbar: -![Docs Version Dropdown](/img/tutorial/docsVersionDropdown.png) +![Docs Version Dropdown](./img/docsVersionDropdown.png) ## Update an existing version diff --git a/packages/create-docusaurus/templates/shared/docs/tutorial-extras/translate-your-site.md b/packages/create-docusaurus/templates/shared/docs/tutorial-extras/translate-your-site.md index a25c089ed794..caeaffb05548 100644 --- a/packages/create-docusaurus/templates/shared/docs/tutorial-extras/translate-your-site.md +++ b/packages/create-docusaurus/templates/shared/docs/tutorial-extras/translate-your-site.md @@ -39,7 +39,7 @@ Start your site on the French locale: npm run start -- --locale fr ``` -Your localized site is accessible at `http://localhost:3000/fr/` and the `Getting Started` page is translated. +Your localized site is accessible at [http://localhost:3000/fr/](http://localhost:3000/fr/) and the `Getting Started` page is translated. :::caution @@ -71,7 +71,7 @@ module.exports = { The locale dropdown now appears in your navbar: -![Locale Dropdown](/img/tutorial/localeDropdown.png) +![Locale Dropdown](./img/localeDropdown.png) ## Build your localized site diff --git a/packages/create-docusaurus/templates/shared/static/img/tutorial/docsVersionDropdown.png b/packages/create-docusaurus/templates/shared/static/img/tutorial/docsVersionDropdown.png deleted file mode 100644 index ff1cbe68893d..000000000000 Binary files a/packages/create-docusaurus/templates/shared/static/img/tutorial/docsVersionDropdown.png and /dev/null differ diff --git a/packages/create-docusaurus/templates/shared/static/img/tutorial/localeDropdown.png b/packages/create-docusaurus/templates/shared/static/img/tutorial/localeDropdown.png deleted file mode 100644 index d7163f967524..000000000000 Binary files a/packages/create-docusaurus/templates/shared/static/img/tutorial/localeDropdown.png and /dev/null differ diff --git a/packages/create-docusaurus/tsconfig.build.json b/packages/create-docusaurus/tsconfig.build.json index 41b40e7cf697..6f46335ae9d0 100644 --- a/packages/create-docusaurus/tsconfig.build.json +++ b/packages/create-docusaurus/tsconfig.build.json @@ -1,12 +1,14 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "noEmit": false, + "composite": true, "module": "es2020", "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", "rootDir": "src", "outDir": "lib" }, - "include": ["src/"], - "exclude": ["templates/"] + "include": ["src"], + "exclude": ["templates/", "**/__tests__/**"] } diff --git a/packages/create-docusaurus/tsconfig.json b/packages/create-docusaurus/tsconfig.json index edb2c88e1daf..5c73d3ac4eca 100644 --- a/packages/create-docusaurus/tsconfig.json +++ b/packages/create-docusaurus/tsconfig.json @@ -1,10 +1,11 @@ -// For editor typechecking; includes bin { - "extends": "./tsconfig.build.json", + "extends": "../../tsconfig.json", + "references": [{"path": "./tsconfig.build.json"}], "compilerOptions": { "noEmit": true, - "allowJs": true, + "module": "esnext", "rootDir": "." }, - "include": ["src", "bin"] + "include": ["bin"], + "exclude": ["**/__tests__/**"] } diff --git a/packages/docusaurus-cssnano-preset/.npmignore b/packages/docusaurus-cssnano-preset/.npmignore index c912533dd7d2..03c9ae1e1b54 100644 --- a/packages/docusaurus-cssnano-preset/.npmignore +++ b/packages/docusaurus-cssnano-preset/.npmignore @@ -1 +1,3 @@ +.tsbuildinfo* +tsconfig* __tests__ diff --git a/packages/docusaurus-cssnano-preset/index.js b/packages/docusaurus-cssnano-preset/index.js deleted file mode 100644 index cac7eda8999d..000000000000 --- a/packages/docusaurus-cssnano-preset/index.js +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -const advancedBasePreset = require('cssnano-preset-advanced'); -const postCssSortMediaQueries = require('postcss-sort-media-queries'); -const postCssRemoveOverriddenCustomProperties = require('./src/remove-overridden-custom-properties'); - -module.exports = function docusaurusCssnanoPreset(opts) { - const advancedPreset = advancedBasePreset({ - autoprefixer: {add: false}, - discardComments: {removeAll: true}, - ...opts, - }); - - advancedPreset.plugins.unshift( - [postCssSortMediaQueries], - [postCssRemoveOverriddenCustomProperties], - ); - - return advancedPreset; -}; diff --git a/packages/docusaurus-cssnano-preset/package.json b/packages/docusaurus-cssnano-preset/package.json index 5499124e0a26..9822774d4e4d 100644 --- a/packages/docusaurus-cssnano-preset/package.json +++ b/packages/docusaurus-cssnano-preset/package.json @@ -1,23 +1,31 @@ { "name": "@docusaurus/cssnano-preset", - "version": "2.0.0-beta.17", + "version": "2.0.0-beta.21", "description": "Advanced cssnano preset for maximum optimization.", - "main": "index.js", + "main": "lib/index.js", "license": "MIT", "publishConfig": { "access": "public" }, + "scripts": { + "build": "tsc", + "watch": "tsc --watch" + }, "repository": { "type": "git", "url": "https://github.com/facebook/docusaurus.git", "directory": "packages/docusaurus-cssnano-preset" }, "dependencies": { - "cssnano-preset-advanced": "^5.2.1", - "postcss": "^8.4.8", - "postcss-sort-media-queries": "^4.2.1" + "cssnano-preset-advanced": "^5.3.6", + "postcss": "^8.4.14", + "postcss-sort-media-queries": "^4.2.1", + "tslib": "^2.4.0" }, "devDependencies": { - "to-vfile": "^6.0.0" + "to-vfile": "^6.1.0" + }, + "engines": { + "node": ">=16.14" } } diff --git a/packages/docusaurus-plugin-sitemap/src/plugin-sitemap.d.ts b/packages/docusaurus-cssnano-preset/src/deps.d.ts similarity index 59% rename from packages/docusaurus-plugin-sitemap/src/plugin-sitemap.d.ts rename to packages/docusaurus-cssnano-preset/src/deps.d.ts index 0c9b4a826c95..f508fb9197d5 100644 --- a/packages/docusaurus-plugin-sitemap/src/plugin-sitemap.d.ts +++ b/packages/docusaurus-cssnano-preset/src/deps.d.ts @@ -5,9 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import type {EnumChangefreq} from 'sitemap'; - -export type Options = { - changefreq?: EnumChangefreq; - priority?: number; -}; +declare module 'postcss-sort-media-queries' { + const plugin: import('postcss').PluginCreator; + export default plugin; +} diff --git a/packages/docusaurus-cssnano-preset/src/index.ts b/packages/docusaurus-cssnano-preset/src/index.ts new file mode 100644 index 000000000000..6bae42c6f8c7 --- /dev/null +++ b/packages/docusaurus-cssnano-preset/src/index.ts @@ -0,0 +1,27 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import advancedBasePreset from 'cssnano-preset-advanced'; +import postCssSortMediaQueries from 'postcss-sort-media-queries'; +import postCssRemoveOverriddenCustomProperties from './remove-overridden-custom-properties'; + +const preset: typeof advancedBasePreset = function preset(opts) { + const advancedPreset = advancedBasePreset({ + autoprefixer: {add: false}, + discardComments: {removeAll: true}, + ...opts, + }); + + advancedPreset.plugins.unshift( + [postCssSortMediaQueries, undefined], + [postCssRemoveOverriddenCustomProperties, undefined], + ); + + return advancedPreset; +}; + +export = preset; diff --git a/packages/docusaurus-cssnano-preset/src/remove-overridden-custom-properties/__tests__/__snapshots__/index.test.js.snap b/packages/docusaurus-cssnano-preset/src/remove-overridden-custom-properties/__tests__/__snapshots__/index.test.ts.snap similarity index 100% rename from packages/docusaurus-cssnano-preset/src/remove-overridden-custom-properties/__tests__/__snapshots__/index.test.js.snap rename to packages/docusaurus-cssnano-preset/src/remove-overridden-custom-properties/__tests__/__snapshots__/index.test.ts.snap diff --git a/packages/docusaurus-cssnano-preset/src/remove-overridden-custom-properties/__tests__/index.test.js b/packages/docusaurus-cssnano-preset/src/remove-overridden-custom-properties/__tests__/index.test.js deleted file mode 100644 index e847faca8a3a..000000000000 --- a/packages/docusaurus-cssnano-preset/src/remove-overridden-custom-properties/__tests__/index.test.js +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -const path = require('path'); -const vfile = require('to-vfile'); -const postcss = require('postcss'); -const postCssRemoveOverriddenCustomProperties = require('../index'); - -const processFixture = (name) => { - const input = vfile.readSync( - path.join(__dirname, '__fixtures__', `${name}.css`), - 'utf8', - ); - const output = postcss([postCssRemoveOverriddenCustomProperties]).process( - input, - ); - - return output.css; -}; - -describe('remove-overridden-custom-properties', () => { - test('overridden custom properties should be removed', () => { - expect(processFixture('normal')).toMatchSnapshot(); - }); - - test('overridden custom properties with `!important` rule should not be removed', () => { - expect(processFixture('important_rule')).toMatchSnapshot(); - }); -}); diff --git a/packages/docusaurus-cssnano-preset/src/remove-overridden-custom-properties/__tests__/index.test.ts b/packages/docusaurus-cssnano-preset/src/remove-overridden-custom-properties/__tests__/index.test.ts new file mode 100644 index 000000000000..9ce352bd90c5 --- /dev/null +++ b/packages/docusaurus-cssnano-preset/src/remove-overridden-custom-properties/__tests__/index.test.ts @@ -0,0 +1,33 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import path from 'path'; +import vfile from 'to-vfile'; +import postcss from 'postcss'; +import postCssRemoveOverriddenCustomProperties from '../index'; + +const processFixture = async (name: string) => { + const input = await vfile.read( + path.join(__dirname, '__fixtures__', `${name}.css`), + 'utf8', + ); + const output = postcss([postCssRemoveOverriddenCustomProperties]).process( + input, + ); + + return output.css; +}; + +describe('remove-overridden-custom-properties', () => { + it('overridden custom properties should be removed', async () => { + await expect(processFixture('normal')).resolves.toMatchSnapshot(); + }); + + it('overridden custom properties with `!important` rule should not be removed', async () => { + await expect(processFixture('important_rule')).resolves.toMatchSnapshot(); + }); +}); diff --git a/packages/docusaurus-cssnano-preset/src/remove-overridden-custom-properties/index.js b/packages/docusaurus-cssnano-preset/src/remove-overridden-custom-properties/index.ts similarity index 69% rename from packages/docusaurus-cssnano-preset/src/remove-overridden-custom-properties/index.js rename to packages/docusaurus-cssnano-preset/src/remove-overridden-custom-properties/index.ts index 51eb53b35327..a7dbba88f3ce 100644 --- a/packages/docusaurus-cssnano-preset/src/remove-overridden-custom-properties/index.js +++ b/packages/docusaurus-cssnano-preset/src/remove-overridden-custom-properties/index.ts @@ -5,6 +5,10 @@ * LICENSE file in the root directory of this source tree. */ +import type {Plugin, Rule, Node} from 'postcss'; + +const isRule = (node: Node | undefined): node is Rule => node?.type === 'rule'; + /** * This PostCSS plugin will remove duplicate/same custom properties (which are * actually overridden ones) **only** from `:root` selector. @@ -17,32 +21,31 @@ * applied). * - If the same custom properties have at least one `!important` rule, then * only those properties that do not have this rule will be removed. - * @returns {import('postcss').Plugin} */ -module.exports = function creator() { +function creator(): Plugin { return { postcssPlugin: 'postcss-remove-overridden-custom-properties', Declaration(decl) { - if (decl.parent.selector !== ':root') { + if (!isRule(decl.parent) || decl.parent.selector !== ':root') { return; } const sameProperties = decl.parent.nodes.filter( - (n) => n.prop === decl.prop, + (n) => 'prop' in n && n.prop === decl.prop, ); - const hasImportantProperties = sameProperties.some((p) => - Object.prototype.hasOwnProperty.call(p, 'important'), + const hasImportantProperties = sameProperties.some( + (p) => 'important' in p, ); const overriddenProperties = hasImportantProperties - ? sameProperties.filter( - (p) => !Object.prototype.hasOwnProperty.call(p, 'important'), - ) + ? sameProperties.filter((p) => !('important' in p)) : sameProperties.slice(0, -1); overriddenProperties.map((p) => p.remove()); }, }; -}; +} + +creator.postcss = true as const; -module.exports.postcss = true; +export default creator; diff --git a/packages/docusaurus-cssnano-preset/tsconfig.json b/packages/docusaurus-cssnano-preset/tsconfig.json new file mode 100644 index 000000000000..80e43e9813ef --- /dev/null +++ b/packages/docusaurus-cssnano-preset/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "noEmit": false, + "incremental": true, + "tsBuildInfoFile": "./lib/.tsbuildinfo", + "module": "commonjs", + "rootDir": "src", + "outDir": "lib" + }, + "include": ["src"], + "exclude": ["**/__tests__/**"] +} diff --git a/packages/docusaurus-logger/.npmignore b/packages/docusaurus-logger/.npmignore index f2b994d4e359..03c9ae1e1b54 100644 --- a/packages/docusaurus-logger/.npmignore +++ b/packages/docusaurus-logger/.npmignore @@ -1,4 +1,3 @@ -copyUntypedFiles.mjs -.tsbuildinfo +.tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-logger/README.md b/packages/docusaurus-logger/README.md index 2c4cea3bf5fd..9b4540ce4c50 100644 --- a/packages/docusaurus-logger/README.md +++ b/packages/docusaurus-logger/README.md @@ -7,19 +7,33 @@ An encapsulated logger for semantically formatting console messages. It exports a single object as default export: `logger`. `logger` has the following properties: - Some useful colors. -- Formatters. These functions have the same signature as the formatters of `picocolors`. Note that their implementations are not guaranteed. You should only care about their semantics. - - `path`: formats a file path or URL. - - `id`: formats an identifier. + - `red` + - `yellow` + - `green` + - `bold` + - `dim` +- Formatters. These functions all have the signature `(msg: unknown) => string`. Note that their implementations are not guaranteed. You should only care about their semantics. + - `path`: formats a file path. + - `url`: formats a URL. + - `name`: formats an identifier. - `code`: formats a code snippet. - `subdue`: subdues the text. - `num`: formats a number. -- The `interpolate` function. It is a template literal tag. -- Logging functions. All logging functions can both be used as functions (in which it has the same usage as `console.log`) or template literal tags. +- The `interpolate` function. It is a template literal tag. The syntax can be found below. +- Logging functions. All logging functions can both be used as normal functions (similar to the `console.log` family, but only accepts one parameter) or template literal tags. - `info`: prints information. - `warn`: prints a warning that should be payed attention to. - `error`: prints an error (not necessarily halting the program) that signals significant problems. - `success`: prints a success message. +### A word on the `error` formatter + +Beware that an `error` message, even when it doesn't hang the program, is likely going to cause confusion. When users inspect logs and find an `[ERROR]`, even when the build succeeds, they will assume something is going wrong. Use it sparingly. + +Docusaurus only uses `logger.error` when printing messages immediately before throwing an error, or when user has set the reporting severity of `onBrokenLink`, etc. to `"error"`. + +In addition, `warn` and `error` will color the **entire** message for better attention. If you are printing large blocks of help text about an error, better use `logger.info`. + ### Using the template literal tag The template literal tag evaluates the template and expressions embedded. `interpolate` returns a new string, while other logging functions prints it. Below is a typical usage: @@ -31,10 +45,11 @@ logger.info`Hello name=${name}! You have number=${money} dollars. Here are the $ To buy anything, enter code=${'buy x'} where code=${'x'} is the item's name; to quit, press code=${'Ctrl + C'}.`; ``` -An embedded expression is optionally preceded by a flag in the form `%[a-z]+` (a percentage sign followed by a few lowercase letters). If it's not preceded by any flag, it's printed out as-is. Otherwise, it's formatted with one of the formatters: +An embedded expression is optionally preceded by a flag in the form `[a-z]+=` (a few lowercase letters, followed by an equals sign, directly preceding the embedded expression). If the expression is not preceded by any flag, it's printed out as-is. Otherwise, it's formatted with one of the formatters: - `path=`: `path` -- `name=`: `id` +- `url=`: `url` +- `name=`: `name` - `code=`: `code` - `subdue=`: `subdue` - `number=`: `num` diff --git a/packages/docusaurus-logger/package.json b/packages/docusaurus-logger/package.json index c43d320fcab9..6175c913da49 100644 --- a/packages/docusaurus-logger/package.json +++ b/packages/docusaurus-logger/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/logger", - "version": "2.0.0-beta.17", + "version": "2.0.0-beta.21", "description": "An encapsulated logger for semantically formatting console messages.", "main": "./lib/index.js", "repository": { @@ -21,10 +21,10 @@ "license": "MIT", "dependencies": { "chalk": "^4.1.2", - "tslib": "^2.3.1" + "tslib": "^2.4.0" }, "engines": { - "node": ">=14" + "node": ">=16.14" }, "devDependencies": { "@types/supports-color": "^8.1.1" diff --git a/packages/docusaurus-logger/src/__tests__/__snapshots__/index.test.ts.snap b/packages/docusaurus-logger/src/__tests__/__snapshots__/index.test.ts.snap new file mode 100644 index 000000000000..5980bd3de212 --- /dev/null +++ b/packages/docusaurus-logger/src/__tests__/__snapshots__/index.test.ts.snap @@ -0,0 +1,69 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`error prints objects 1`] = ` +[ + [ + "[ERROR] {"a":1}", + ], + [ + "[ERROR] undefined", + ], + [ + "[ERROR] 1,2,3", + ], + [ + "[ERROR] Sat Nov 13 2021 00:00:00 GMT+0000 (Coordinated Universal Time)", + ], +] +`; + +exports[`info prints objects 1`] = ` +[ + [ + "[INFO] {"a":1}", + ], + [ + "[INFO] undefined", + ], + [ + "[INFO] 1,2,3", + ], + [ + "[INFO] Sat Nov 13 2021 00:00:00 GMT+0000 (Coordinated Universal Time)", + ], +] +`; + +exports[`success prints objects 1`] = ` +[ + [ + "[SUCCESS] {"a":1}", + ], + [ + "[SUCCESS] undefined", + ], + [ + "[SUCCESS] 1,2,3", + ], + [ + "[SUCCESS] Sat Nov 13 2021 00:00:00 GMT+0000 (Coordinated Universal Time)", + ], +] +`; + +exports[`warn prints objects 1`] = ` +[ + [ + "[WARNING] {"a":1}", + ], + [ + "[WARNING] undefined", + ], + [ + "[WARNING] 1,2,3", + ], + [ + "[WARNING] Sat Nov 13 2021 00:00:00 GMT+0000 (Coordinated Universal Time)", + ], +] +`; diff --git a/packages/docusaurus-logger/src/__tests__/index.test.ts b/packages/docusaurus-logger/src/__tests__/index.test.ts index 5ae55907b774..59a8f9c0d1d9 100644 --- a/packages/docusaurus-logger/src/__tests__/index.test.ts +++ b/packages/docusaurus-logger/src/__tests__/index.test.ts @@ -5,67 +5,76 @@ * LICENSE file in the root directory of this source tree. */ +import {jest} from '@jest/globals'; import logger from '../index'; +// cSpell:ignore mkeep + describe('formatters', () => { - test('path', () => { - expect(logger.path('hey')).toMatchInlineSnapshot(`"hey"`); + it('path', () => { + expect(logger.path('keepAnsi')).toMatchInlineSnapshot(`""keepAnsi""`); + }); + it('url', () => { + expect(logger.url('https://docusaurus.io/keepAnsi')).toMatchInlineSnapshot( + `"https://docusaurus.io/keepAnsi"`, + ); }); - test('id', () => { - expect(logger.name('hey')).toMatchInlineSnapshot(`"hey"`); + it('id', () => { + expect(logger.name('keepAnsi')).toMatchInlineSnapshot(`"keepAnsi"`); }); - test('code', () => { - expect(logger.code('hey')).toMatchInlineSnapshot(`"\`hey\`"`); + it('code', () => { + expect(logger.code('keepAnsi')).toMatchInlineSnapshot(`"\`keepAnsi\`"`); }); - test('subdue', () => { - expect(logger.subdue('hey')).toMatchInlineSnapshot(`"hey"`); + it('subdue', () => { + expect(logger.subdue('keepAnsi')).toMatchInlineSnapshot(`"keepAnsi"`); }); }); describe('interpolate', () => { - test('should format text with variables & arrays', () => { + it('formats text with variables & arrays', () => { const name = 'Josh'; const items = [1, 'hi', 'Hmmm']; - expect(logger.interpolate`Hello ${name}! Here are your goodies:${items}`) - .toMatchInlineSnapshot(` - "Hello Josh! Here are your goodies: + expect( + logger.interpolate`(keepAnsi) Hello ${name}! Here are your goodies:${items}`, + ).toMatchInlineSnapshot(` + "(keepAnsi) Hello Josh! Here are your goodies: - 1 - hi - Hmmm" `); }); - test('should recognize valid flags', () => { + it('recognizes valid flags', () => { expect( - logger.interpolate`The package at path=${'packages/docusaurus'} has number=${10} files. name=${'Babel'} is exported here subdue=${'(as a preset)'} that you can with code=${"require.resolve('@docusaurus/core/lib/babel/preset')"}`, + logger.interpolate`(keepAnsi) The package at path=${'packages/docusaurus'} has number=${10} files. name=${'Babel'} is exported here subdue=${'(as a preset)'} that you can with code=${"require.resolve('@docusaurus/core/lib/babel/preset')"}`, ).toMatchInlineSnapshot( - `"The package at packages/docusaurus has 10 files. Babel is exported here (as a preset) that you can with \`require.resolve('@docusaurus/core/lib/babel/preset')\`"`, + `"(keepAnsi) The package at "packages/docusaurus" has 10 files. Babel is exported here (as a preset) that you can with \`require.resolve('@docusaurus/core/lib/babel/preset')\`"`, ); }); - test('should interpolate arrays with flags', () => { + it('interpolates arrays with flags', () => { expect( - logger.interpolate`The following commands are available:code=${[ + logger.interpolate`(keepAnsi) The following commands are available:code=${[ 'docusaurus start', 'docusaurus build', 'docusaurus deploy', ]}`, ).toMatchInlineSnapshot(` - "The following commands are available: + "(keepAnsi) The following commands are available: - \`docusaurus start\` - \`docusaurus build\` - \`docusaurus deploy\`" `); }); - test('should print detached flags as-is', () => { + it('prints detached flags as-is', () => { expect( - logger.interpolate`You can use placeholders like code= ${'and it will'} be replaced with the succeeding arguments`, + logger.interpolate`(keepAnsi) You can use placeholders like code= ${'and it will'} be replaced with the succeeding arguments`, ).toMatchInlineSnapshot( - `"You can use placeholders like code= and it will be replaced with the succeeding arguments"`, + `"(keepAnsi) You can use placeholders like code= and it will be replaced with the succeeding arguments"`, ); }); - test('should throw with bad flags', () => { + it('throws with bad flags', () => { expect( () => - logger.interpolate`I mistyped this: cde=${'this code'} and I will be damned`, + logger.interpolate`(keepAnsi) I mistyped this: cde=${'this code'} and I will be damned`, ).toThrowErrorMatchingInlineSnapshot( `"Bad Docusaurus logging message. This is likely an internal bug, please report it."`, ); @@ -74,104 +83,44 @@ describe('interpolate', () => { describe('info', () => { const consoleMock = jest.spyOn(console, 'info').mockImplementation(() => {}); - test('should print objects', () => { + it('prints objects', () => { logger.info({a: 1}); logger.info(undefined); logger.info([1, 2, 3]); logger.info(new Date(2021, 10, 13)); - expect(consoleMock.mock.calls).toMatchInlineSnapshot(` - Array [ - Array [ - "[INFO] {\\"a\\":1}", - ], - Array [ - "[INFO] undefined", - ], - Array [ - "[INFO] 1,2,3", - ], - Array [ - "[INFO] Sat Nov 13 2021 00:00:00 GMT+0000 (Coordinated Universal Time)", - ], - ] - `); + expect(consoleMock.mock.calls).toMatchSnapshot(); }); }); describe('warn', () => { const consoleMock = jest.spyOn(console, 'warn').mockImplementation(() => {}); - test('should print objects', () => { + it('prints objects', () => { logger.warn({a: 1}); logger.warn(undefined); logger.warn([1, 2, 3]); logger.warn(new Date(2021, 10, 13)); - expect(consoleMock.mock.calls).toMatchInlineSnapshot(` - Array [ - Array [ - "[WARNING] {\\"a\\":1}", - ], - Array [ - "[WARNING] undefined", - ], - Array [ - "[WARNING] 1,2,3", - ], - Array [ - "[WARNING] Sat Nov 13 2021 00:00:00 GMT+0000 (Coordinated Universal Time)", - ], - ] - `); + expect(consoleMock.mock.calls).toMatchSnapshot(); }); }); describe('error', () => { const consoleMock = jest.spyOn(console, 'error').mockImplementation(() => {}); - test('should print objects', () => { + it('prints objects', () => { logger.error({a: 1}); logger.error(undefined); logger.error([1, 2, 3]); logger.error(new Date(2021, 10, 13)); - expect(consoleMock.mock.calls).toMatchInlineSnapshot(` - Array [ - Array [ - "[ERROR] {\\"a\\":1}", - ], - Array [ - "[ERROR] undefined", - ], - Array [ - "[ERROR] 1,2,3", - ], - Array [ - "[ERROR] Sat Nov 13 2021 00:00:00 GMT+0000 (Coordinated Universal Time)", - ], - ] - `); + expect(consoleMock.mock.calls).toMatchSnapshot(); }); }); describe('success', () => { const consoleMock = jest.spyOn(console, 'log').mockImplementation(() => {}); - test('should print objects', () => { + it('prints objects', () => { logger.success({a: 1}); logger.success(undefined); logger.success([1, 2, 3]); logger.success(new Date(2021, 10, 13)); - expect(consoleMock.mock.calls).toMatchInlineSnapshot(` - Array [ - Array [ - "[SUCCESS] {\\"a\\":1}", - ], - Array [ - "[SUCCESS] undefined", - ], - Array [ - "[SUCCESS] 1,2,3", - ], - Array [ - "[SUCCESS] Sat Nov 13 2021 00:00:00 GMT+0000 (Coordinated Universal Time)", - ], - ] - `); + expect(consoleMock.mock.calls).toMatchSnapshot(); }); }); diff --git a/packages/docusaurus-logger/src/index.ts b/packages/docusaurus-logger/src/index.ts index 041d1d04b4b4..f430555b0e26 100644 --- a/packages/docusaurus-logger/src/index.ts +++ b/packages/docusaurus-logger/src/index.ts @@ -5,15 +5,16 @@ * LICENSE file in the root directory of this source tree. */ -import chalk, {type Chalk} from 'chalk'; +import chalk from 'chalk'; type InterpolatableValue = string | number | (string | number)[]; -const path = (msg: unknown): string => chalk.cyan(chalk.underline(msg)); -const name = (msg: unknown): string => chalk.blue(chalk.bold(msg)); -const code = (msg: unknown): string => chalk.cyan(`\`${msg}\``); -const subdue: Chalk = chalk.gray; -const num: Chalk = chalk.yellow; +const path = (msg: unknown): string => chalk.cyan.underline(`"${String(msg)}"`); +const url = (msg: unknown): string => chalk.cyan.underline(msg); +const name = (msg: unknown): string => chalk.blue.bold(msg); +const code = (msg: unknown): string => chalk.cyan(`\`${String(msg)}\``); +const subdue = (msg: unknown): string => chalk.gray(msg); +const num = (msg: unknown): string => chalk.yellow(msg); function interpolate( msgs: TemplateStringsArray, @@ -30,6 +31,8 @@ function interpolate( switch (flag[0]) { case 'path=': return path; + case 'url=': + return url; case 'number=': return num; case 'name=': @@ -66,7 +69,7 @@ function info( ): void; function info(msg: unknown, ...values: InterpolatableValue[]): void { console.info( - `${chalk.cyan(chalk.bold('[INFO]'))} ${ + `${chalk.cyan.bold('[INFO]')} ${ values.length === 0 ? stringify(msg) : interpolate(msg as TemplateStringsArray, ...values) @@ -112,7 +115,7 @@ function success( ): void; function success(msg: unknown, ...values: InterpolatableValue[]): void { console.log( - `${chalk.green(chalk.bold('[SUCCESS]'))} ${ + `${chalk.green.bold('[SUCCESS]')} ${ values.length === 0 ? stringify(msg) : interpolate(msg as TemplateStringsArray, ...values) @@ -125,12 +128,13 @@ function newLine(): void { } const logger = { - red: chalk.red, - yellow: chalk.yellow, - green: chalk.green, - bold: chalk.bold, - dim: chalk.dim, + red: (msg: string | number): string => chalk.red(msg), + yellow: (msg: string | number): string => chalk.yellow(msg), + green: (msg: string | number): string => chalk.green(msg), + bold: (msg: string | number): string => chalk.bold(msg), + dim: (msg: string | number): string => chalk.dim(msg), path, + url, name, code, subdue, @@ -145,7 +149,4 @@ const logger = { // TODO remove when migrating to ESM // logger can only be default-imported in ESM with this -module.exports = logger; -module.exports.default = logger; - -export default logger; +export = logger; diff --git a/packages/docusaurus-logger/tsconfig.json b/packages/docusaurus-logger/tsconfig.json index aee99fc0f38e..7807612b51a5 100644 --- a/packages/docusaurus-logger/tsconfig.json +++ b/packages/docusaurus-logger/tsconfig.json @@ -1,11 +1,15 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "noEmit": false, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", "sourceMap": true, "declarationMap": true, + "module": "commonjs", "rootDir": "src", "outDir": "lib" - } + }, + "include": ["src"], + "exclude": ["**/__tests__/**"] } diff --git a/packages/docusaurus-mdx-loader/.npmignore b/packages/docusaurus-mdx-loader/.npmignore index f2b994d4e359..03c9ae1e1b54 100644 --- a/packages/docusaurus-mdx-loader/.npmignore +++ b/packages/docusaurus-mdx-loader/.npmignore @@ -1,4 +1,3 @@ -copyUntypedFiles.mjs -.tsbuildinfo +.tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-mdx-loader/package.json b/packages/docusaurus-mdx-loader/package.json index 3d12f47209db..5f8492f35f6e 100644 --- a/packages/docusaurus-mdx-loader/package.json +++ b/packages/docusaurus-mdx-loader/package.json @@ -1,9 +1,9 @@ { "name": "@docusaurus/mdx-loader", - "version": "2.0.0-beta.17", + "version": "2.0.0-beta.21", "description": "Docusaurus Loader for MDX", "main": "lib/index.js", - "types": "src/mdx-loader.d.ts", + "types": "lib/index.d.ts", "publishConfig": { "access": "public" }, @@ -18,32 +18,35 @@ }, "license": "MIT", "dependencies": { - "@babel/parser": "^7.17.3", - "@babel/traverse": "^7.17.3", - "@docusaurus/logger": "2.0.0-beta.17", - "@docusaurus/utils": "2.0.0-beta.17", + "@babel/parser": "^7.18.4", + "@babel/traverse": "^7.18.2", + "@docusaurus/logger": "2.0.0-beta.21", + "@docusaurus/utils": "2.0.0-beta.21", "@mdx-js/mdx": "^1.6.22", "escape-html": "^1.0.3", "file-loader": "^6.2.0", - "fs-extra": "^10.0.1", + "fs-extra": "^10.1.0", "image-size": "^1.0.1", "mdast-util-to-string": "^2.0.0", - "remark-emoji": "^2.1.0", + "remark-emoji": "^2.2.0", "stringify-object": "^3.3.0", - "tslib": "^2.3.1", - "unist-util-visit": "^2.0.2", + "tslib": "^2.4.0", + "unified": "^9.2.2", + "unist-util-visit": "^2.0.3", "url-loader": "^4.1.1", - "webpack": "^5.70.0" + "webpack": "^5.73.0" }, "devDependencies": { - "@docusaurus/types": "2.0.0-beta.17", - "@types/escape-html": "^1.0.1", - "@types/mdast": "^3.0.7", + "@docusaurus/types": "2.0.0-beta.21", + "@types/escape-html": "^1.0.2", + "@types/mdast": "^3.0.10", "@types/stringify-object": "^3.3.1", "@types/unist": "^2.0.6", - "remark": "^12.0.0", + "remark": "^12.0.1", "remark-mdx": "^1.6.21", - "to-vfile": "^6.0.0", + "rehype-stringify": "^8.0.0", + "remark-rehype": "^8.1.0", + "to-vfile": "^6.1.0", "unist-builder": "^2.0.3", "unist-util-remove-position": "^3.0.0" }, @@ -52,6 +55,6 @@ "react-dom": "^16.8.4 || ^17.0.0" }, "engines": { - "node": ">=14" + "node": ">=16.14" } } diff --git a/packages/docusaurus-mdx-loader/src/deps.d.ts b/packages/docusaurus-mdx-loader/src/deps.d.ts index 78beb9c74562..7f8fb25a2fe0 100644 --- a/packages/docusaurus-mdx-loader/src/deps.d.ts +++ b/packages/docusaurus-mdx-loader/src/deps.d.ts @@ -7,24 +7,25 @@ // TODO Types provided by MDX 2.0 https://github.com/mdx-js/mdx/blob/main/packages/mdx/types/index.d.ts declare module '@mdx-js/mdx' { - import type {Processor} from 'unified'; - import type {RemarkOrRehypePlugin} from '@docusaurus/mdx-loader'; + import type {Processor, Plugin} from 'unified'; - namespace mdx { - interface Options { - filepath?: string; - skipExport?: boolean; - wrapExport?: string; - remarkPlugins?: RemarkOrRehypePlugin[]; - rehypePlugins?: RemarkOrRehypePlugin[]; - } + type MDXPlugin = + // eslint-disable-next-line @typescript-eslint/no-explicit-any + [Plugin, any] | Plugin; - function sync(content: string, options?: Options): string; - function createMdxAstCompiler(options?: Options): Processor; - function createCompiler(options?: Options): Processor; - } + type Options = { + filepath?: string; + skipExport?: boolean; + wrapExport?: string; + remarkPlugins?: MDXPlugin[]; + rehypePlugins?: MDXPlugin[]; + }; + + export function sync(content: string, options?: Options): string; + export function createMdxAstCompiler(options?: Options): Processor; + export function createCompiler(options?: Options): Processor; export default function mdx( content: string, - options?: mdx.Options, + options?: Options, ): Promise; } diff --git a/packages/docusaurus-mdx-loader/src/index.ts b/packages/docusaurus-mdx-loader/src/index.ts index 4188651a0950..ad7887dcc77c 100644 --- a/packages/docusaurus-mdx-loader/src/index.ts +++ b/packages/docusaurus-mdx-loader/src/index.ts @@ -5,221 +5,31 @@ * LICENSE file in the root directory of this source tree. */ -import fs from 'fs-extra'; -import mdx from '@mdx-js/mdx'; -import logger from '@docusaurus/logger'; -import emoji from 'remark-emoji'; -import { - parseFrontMatter, - parseMarkdownContentTitle, - escapePath, - getFileLoaderUtils, -} from '@docusaurus/utils'; -import stringifyObject from 'stringify-object'; -import headings from './remark/headings'; -import toc from './remark/toc'; -import unwrapMdxCodeBlocks from './remark/unwrapMdxCodeBlocks'; -import transformImage from './remark/transformImage'; -import transformLinks from './remark/transformLinks'; -import type {RemarkAndRehypePluginOptions} from '@docusaurus/mdx-loader'; -import type {LoaderContext} from 'webpack'; +import {mdxLoader} from './loader'; -const { - loaders: {inlineMarkdownImageFileLoader}, -} = getFileLoaderUtils(); +export default mdxLoader; -const DEFAULT_OPTIONS: RemarkAndRehypePluginOptions = { - rehypePlugins: [], - remarkPlugins: [unwrapMdxCodeBlocks, emoji, headings, toc], - beforeDefaultRemarkPlugins: [], - beforeDefaultRehypePlugins: [], +export type TOCItem = { + readonly value: string; + readonly id: string; + readonly level: number; }; -type Options = RemarkAndRehypePluginOptions & { - staticDirs: string[]; - siteDir: string; - isMDXPartial?: (filePath: string) => boolean; - isMDXPartialFrontMatterWarningDisabled?: boolean; - removeContentTitle?: boolean; - metadataPath?: string | ((filePath: string) => string); - createAssets?: (metadata: { - frontMatter: Record; - metadata: Record; - }) => Record; - filepath: string; +export type LoadedMDXContent = { + /** As verbatim declared in the MDX document. */ + readonly frontMatter: FrontMatter; + /** As provided by the content plugin. */ + readonly metadata: Metadata; + /** A list of TOC items (headings). */ + readonly toc: readonly TOCItem[]; + /** First h1 title before any content. */ + readonly contentTitle: string | undefined; + /** + * Usually image assets that may be collocated like `./img/thumbnail.png`. + * The loader would also bundle these assets and the client should use these + * in priority. + */ + readonly assets: Assets; + (): JSX.Element; }; - -/** - * When this throws, it generally means that there's no metadata file associated - * with this MDX document. It can happen when using MDX partials (usually - * starting with _). That's why it's important to provide the `isMDXPartial` - * function in config - */ -async function readMetadataPath(metadataPath: string) { - try { - return await fs.readFile(metadataPath, 'utf8'); - } catch (err) { - logger.error`MDX loader can't read MDX metadata file path=${metadataPath}. Maybe the isMDXPartial option function was not provided?`; - throw err; - } -} - -/** - * Converts assets an object with Webpack require calls code. - * This is useful for mdx files to reference co-located assets using relative - * paths. Those assets should enter the Webpack assets pipeline and be hashed. - * For now, we only handle that for images and paths starting with `./`: - * - * `{image: "./myImage.png"}` => `{image: require("./myImage.png")}` - */ -function createAssetsExportCode(assets: Record) { - if (Object.keys(assets).length === 0) { - return 'undefined'; - } - - // TODO implementation can be completed/enhanced - function createAssetValueCode(assetValue: unknown): string | undefined { - if (Array.isArray(assetValue)) { - const arrayItemCodes = assetValue.map( - (item) => createAssetValueCode(item) ?? 'undefined', - ); - return `[${arrayItemCodes.join(', ')}]`; - } - // Only process string values starting with ./ - // We could enhance this logic and check if file exists on disc? - if (typeof assetValue === 'string' && assetValue.startsWith('./')) { - // TODO do we have other use-cases than image assets? - // Probably not worth adding more support, as we want to move to Webpack 5 new asset system (https://github.com/facebook/docusaurus/pull/4708) - const inlineLoader = inlineMarkdownImageFileLoader; - return `require("${inlineLoader}${escapePath(assetValue)}").default`; - } - return undefined; - } - - const assetEntries = Object.entries(assets); - - const codeLines = assetEntries - .map(([key, value]) => { - const assetRequireCode = createAssetValueCode(value); - return assetRequireCode ? `"${key}": ${assetRequireCode},` : undefined; - }) - .filter(Boolean); - - return `{\n${codeLines.join('\n')}\n}`; -} - -export default async function mdxLoader( - this: LoaderContext, - fileString: string, -): Promise { - const callback = this.async(); - const filePath = this.resourcePath; - const reqOptions = this.getOptions() ?? {}; - - const {frontMatter, content: contentWithTitle} = parseFrontMatter(fileString); - - const {content, contentTitle} = parseMarkdownContentTitle(contentWithTitle, { - removeContentTitle: reqOptions.removeContentTitle, - }); - - const hasFrontMatter = Object.keys(frontMatter).length > 0; - - const options: Options = { - ...reqOptions, - remarkPlugins: [ - ...(reqOptions.beforeDefaultRemarkPlugins ?? []), - ...DEFAULT_OPTIONS.remarkPlugins, - [ - transformImage, - { - staticDirs: reqOptions.staticDirs, - siteDir: reqOptions.siteDir, - }, - ], - [ - transformLinks, - { - staticDirs: reqOptions.staticDirs, - siteDir: reqOptions.siteDir, - }, - ], - ...(reqOptions.remarkPlugins ?? []), - ], - rehypePlugins: [ - ...(reqOptions.beforeDefaultRehypePlugins ?? []), - ...DEFAULT_OPTIONS.rehypePlugins, - ...(reqOptions.rehypePlugins ?? []), - ], - filepath: filePath, - }; - - let result: string; - try { - result = await mdx(content, options); - } catch (err) { - return callback(err as Error); - } - - // MDX partials are MDX files starting with _ or in a folder starting with _ - // Partial are not expected to have associated metadata files or front matter - const isMDXPartial = options.isMDXPartial && options.isMDXPartial(filePath); - if (isMDXPartial && hasFrontMatter) { - const errorMessage = `Docusaurus MDX partial files should not contain FrontMatter. -Those partial files use the _ prefix as a convention by default, but this is configurable. -File at ${filePath} contains FrontMatter that will be ignored: -${JSON.stringify(frontMatter, null, 2)}`; - - if (!options.isMDXPartialFrontMatterWarningDisabled) { - const shouldError = process.env.NODE_ENV === 'test' || process.env.CI; - if (shouldError) { - return callback(new Error(errorMessage)); - } - logger.warn(errorMessage); - } - } - - function getMetadataPath(): string | undefined { - if (!isMDXPartial) { - // Read metadata for this MDX and export it. - if (options.metadataPath && typeof options.metadataPath === 'function') { - return options.metadataPath(filePath); - } - } - return undefined; - } - - const metadataPath = getMetadataPath(); - if (metadataPath) { - this.addDependency(metadataPath); - } - - const metadataJsonString = metadataPath - ? await readMetadataPath(metadataPath) - : undefined; - - const metadata = metadataJsonString - ? JSON.parse(metadataJsonString) - : undefined; - - const assets = - reqOptions.createAssets && metadata - ? reqOptions.createAssets({frontMatter, metadata}) - : undefined; - - const exportsCode = ` -export const frontMatter = ${stringifyObject(frontMatter)}; -export const contentTitle = ${stringifyObject(contentTitle)}; -${metadataJsonString ? `export const metadata = ${metadataJsonString};` : ''} -${assets ? `export const assets = ${createAssetsExportCode(assets)};` : ''} -`; - - const code = ` -import React from 'react'; -import { mdx } from '@mdx-js/react'; - -${exportsCode} -${result} -`; - - return callback(null, code); -} +export type {Options, MDXPlugin, MDXOptions} from './loader'; diff --git a/packages/docusaurus-mdx-loader/src/loader.ts b/packages/docusaurus-mdx-loader/src/loader.ts new file mode 100644 index 000000000000..764d62c2bdc5 --- /dev/null +++ b/packages/docusaurus-mdx-loader/src/loader.ts @@ -0,0 +1,282 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import fs from 'fs-extra'; +import logger from '@docusaurus/logger'; +import { + parseFrontMatter, + parseMarkdownContentTitle, + escapePath, + getFileLoaderUtils, +} from '@docusaurus/utils'; +import {createCompiler} from '@mdx-js/mdx'; +import emoji from 'remark-emoji'; +import stringifyObject from 'stringify-object'; + +import headings from './remark/headings'; +import toc from './remark/toc'; +import unwrapMdxCodeBlocks from './remark/unwrapMdxCodeBlocks'; +import transformImage from './remark/transformImage'; +import transformLinks from './remark/transformLinks'; + +import transformAdmonitions from './remark/admonitions'; +import type {LoaderContext} from 'webpack'; +import type {Processor, Plugin} from 'unified'; +import type {AdmonitionOptions} from './remark/admonitions'; + +const { + loaders: {inlineMarkdownImageFileLoader}, +} = getFileLoaderUtils(); + +const pragma = ` +/* @jsxRuntime classic */ +/* @jsx mdx */ +/* @jsxFrag React.Fragment */ +`; + +const DEFAULT_OPTIONS: MDXOptions = { + admonitions: true, + rehypePlugins: [], + remarkPlugins: [unwrapMdxCodeBlocks, emoji, headings, toc], + beforeDefaultRemarkPlugins: [], + beforeDefaultRehypePlugins: [], +}; + +const compilerCache = new Map(); + +export type MDXPlugin = + // eslint-disable-next-line @typescript-eslint/no-explicit-any + [Plugin, any] | Plugin; + +export type MDXOptions = { + admonitions: boolean | AdmonitionOptions; + remarkPlugins: MDXPlugin[]; + rehypePlugins: MDXPlugin[]; + beforeDefaultRemarkPlugins: MDXPlugin[]; + beforeDefaultRehypePlugins: MDXPlugin[]; +}; + +export type Options = Partial & { + staticDirs: string[]; + siteDir: string; + isMDXPartial?: (filePath: string) => boolean; + isMDXPartialFrontMatterWarningDisabled?: boolean; + removeContentTitle?: boolean; + metadataPath?: string | ((filePath: string) => string); + createAssets?: (metadata: { + frontMatter: {[key: string]: unknown}; + metadata: {[key: string]: unknown}; + }) => {[key: string]: unknown}; + filepath: string; +}; + +/** + * When this throws, it generally means that there's no metadata file associated + * with this MDX document. It can happen when using MDX partials (usually + * starting with _). That's why it's important to provide the `isMDXPartial` + * function in config + */ +async function readMetadataPath(metadataPath: string) { + try { + return await fs.readFile(metadataPath, 'utf8'); + } catch (err) { + logger.error`MDX loader can't read MDX metadata file path=${metadataPath}. Maybe the isMDXPartial option function was not provided?`; + throw err; + } +} + +/** + * Converts assets an object with Webpack require calls code. + * This is useful for mdx files to reference co-located assets using relative + * paths. Those assets should enter the Webpack assets pipeline and be hashed. + * For now, we only handle that for images and paths starting with `./`: + * + * `{image: "./myImage.png"}` => `{image: require("./myImage.png")}` + */ +function createAssetsExportCode(assets: unknown) { + if ( + typeof assets !== 'object' || + !assets || + Object.keys(assets).length === 0 + ) { + return 'undefined'; + } + + // TODO implementation can be completed/enhanced + function createAssetValueCode(assetValue: unknown): string | undefined { + if (Array.isArray(assetValue)) { + const arrayItemCodes = assetValue.map( + (item: unknown) => createAssetValueCode(item) ?? 'undefined', + ); + return `[${arrayItemCodes.join(', ')}]`; + } + // Only process string values starting with ./ + // We could enhance this logic and check if file exists on disc? + if (typeof assetValue === 'string' && assetValue.startsWith('./')) { + // TODO do we have other use-cases than image assets? + // Probably not worth adding more support, as we want to move to Webpack 5 new asset system (https://github.com/facebook/docusaurus/pull/4708) + const inlineLoader = inlineMarkdownImageFileLoader; + return `require("${inlineLoader}${escapePath(assetValue)}").default`; + } + return undefined; + } + + const assetEntries = Object.entries(assets); + + const codeLines = assetEntries + .map(([key, value]: [string, unknown]) => { + const assetRequireCode = createAssetValueCode(value); + return assetRequireCode ? `"${key}": ${assetRequireCode},` : undefined; + }) + .filter(Boolean); + + return `{\n${codeLines.join('\n')}\n}`; +} + +function getAdmonitionsPlugins( + admonitionsOption: MDXOptions['admonitions'], +): MDXPlugin[] { + if (admonitionsOption) { + const plugin: MDXPlugin = + admonitionsOption === true + ? transformAdmonitions + : [transformAdmonitions, admonitionsOption]; + return [plugin]; + } + return []; +} + +export async function mdxLoader( + this: LoaderContext, + fileString: string, +): Promise { + const callback = this.async(); + const filePath = this.resourcePath; + const reqOptions = this.getOptions(); + + const {frontMatter, content: contentWithTitle} = parseFrontMatter(fileString); + + const {content, contentTitle} = parseMarkdownContentTitle(contentWithTitle, { + removeContentTitle: reqOptions.removeContentTitle, + }); + + const hasFrontMatter = Object.keys(frontMatter).length > 0; + + if (!compilerCache.has(this.query)) { + const remarkPlugins: MDXPlugin[] = [ + ...(reqOptions.beforeDefaultRemarkPlugins ?? []), + ...getAdmonitionsPlugins(reqOptions.admonitions ?? false), + ...DEFAULT_OPTIONS.remarkPlugins, + [ + transformImage, + { + staticDirs: reqOptions.staticDirs, + siteDir: reqOptions.siteDir, + }, + ], + [ + transformLinks, + { + staticDirs: reqOptions.staticDirs, + siteDir: reqOptions.siteDir, + }, + ], + ...(reqOptions.remarkPlugins ?? []), + ]; + + const rehypePlugins: MDXPlugin[] = [ + ...(reqOptions.beforeDefaultRehypePlugins ?? []), + ...DEFAULT_OPTIONS.rehypePlugins, + ...(reqOptions.rehypePlugins ?? []), + ]; + + const options: Options = { + ...reqOptions, + remarkPlugins, + rehypePlugins, + }; + compilerCache.set(this.query, [createCompiler(options), options]); + } + + const [compiler, options] = compilerCache.get(this.query)!; + + let result: string; + try { + result = await compiler + .process({ + contents: content, + path: this.resourcePath, + }) + .then((res) => res.toString()); + } catch (err) { + return callback(err as Error); + } + + // MDX partials are MDX files starting with _ or in a folder starting with _ + // Partial are not expected to have associated metadata files or front matter + const isMDXPartial = options.isMDXPartial?.(filePath); + if (isMDXPartial && hasFrontMatter) { + const errorMessage = `Docusaurus MDX partial files should not contain front matter. +Those partial files use the _ prefix as a convention by default, but this is configurable. +File at ${filePath} contains front matter that will be ignored: +${JSON.stringify(frontMatter, null, 2)}`; + + if (!options.isMDXPartialFrontMatterWarningDisabled) { + const shouldError = process.env.NODE_ENV === 'test' || process.env.CI; + if (shouldError) { + return callback(new Error(errorMessage)); + } + logger.warn(errorMessage); + } + } + + function getMetadataPath(): string | undefined { + if (!isMDXPartial) { + // Read metadata for this MDX and export it. + if (options.metadataPath && typeof options.metadataPath === 'function') { + return options.metadataPath(filePath); + } + } + return undefined; + } + + const metadataPath = getMetadataPath(); + if (metadataPath) { + this.addDependency(metadataPath); + } + + const metadataJsonString = metadataPath + ? await readMetadataPath(metadataPath) + : undefined; + + const metadata = metadataJsonString + ? (JSON.parse(metadataJsonString) as {[key: string]: unknown}) + : undefined; + + const assets = + reqOptions.createAssets && metadata + ? reqOptions.createAssets({frontMatter, metadata}) + : undefined; + + const exportsCode = ` +export const frontMatter = ${stringifyObject(frontMatter)}; +export const contentTitle = ${stringifyObject(contentTitle)}; +${metadataJsonString ? `export const metadata = ${metadataJsonString};` : ''} +${assets ? `export const assets = ${createAssetsExportCode(assets)};` : ''} +`; + + const code = ` +${pragma} +import React from 'react'; +import { mdx } from '@mdx-js/react'; + +${exportsCode} +${result} +`; + + return callback(null, code); +} diff --git a/packages/docusaurus-mdx-loader/src/mdx-loader.d.ts b/packages/docusaurus-mdx-loader/src/mdx-loader.d.ts deleted file mode 100644 index 99d781b4363f..000000000000 --- a/packages/docusaurus-mdx-loader/src/mdx-loader.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -import type {Plugin} from 'unified'; - -export type RemarkOrRehypePlugin = - // eslint-disable-next-line @typescript-eslint/no-explicit-any - [Plugin, Record] | Plugin; -export type RemarkAndRehypePluginOptions = { - remarkPlugins: RemarkOrRehypePlugin[]; - rehypePlugins: RemarkOrRehypePlugin[]; - beforeDefaultRemarkPlugins: RemarkOrRehypePlugin[]; - beforeDefaultRehypePlugins: RemarkOrRehypePlugin[]; -}; diff --git a/packages/docusaurus-mdx-loader/src/remark/admonitions/LICENSE b/packages/docusaurus-mdx-loader/src/remark/admonitions/LICENSE new file mode 100644 index 000000000000..faa2221713df --- /dev/null +++ b/packages/docusaurus-mdx-loader/src/remark/admonitions/LICENSE @@ -0,0 +1,45 @@ +MIT License + +Copyright (c) 2020 Elvis Wolcott + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +--- + +MIT License + +Copyright (c) Facebook, Inc. and its affiliates. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/docusaurus-mdx-loader/src/remark/admonitions/README.md b/packages/docusaurus-mdx-loader/src/remark/admonitions/README.md new file mode 100644 index 000000000000..3add9f4f32a4 --- /dev/null +++ b/packages/docusaurus-mdx-loader/src/remark/admonitions/README.md @@ -0,0 +1,3 @@ +# Docusaurus admonitions + +Code from [remark-admonitions](https://github.com/remarkjs/remark-directive) (MIT license) has been copied to this folder, and highly customized for Docusaurus needs. diff --git a/packages/docusaurus-mdx-loader/src/remark/admonitions/__tests__/__fixtures__/base.md b/packages/docusaurus-mdx-loader/src/remark/admonitions/__tests__/__fixtures__/base.md new file mode 100644 index 000000000000..a9d3e4159661 --- /dev/null +++ b/packages/docusaurus-mdx-loader/src/remark/admonitions/__tests__/__fixtures__/base.md @@ -0,0 +1,25 @@ +The blog feature enables you to deploy in no time a full-featured blog. + +:::info Sample Title + +Check the [Blog Plugin API Reference documentation](./api/plugins/plugin-content-blog.md) for an exhaustive list of options. + +::: + +## Initial setup {#initial-setup} + +To set up your site's blog, start by creating a `blog` directory. + +:::tip + +Use the **[Fast Track](introduction.md#fast-track)** to understand Docusaurus in **5 minutes ⏱**! + +Use **[docusaurus.new](https://docusaurus.new)** to test Docusaurus immediately in your browser! + +::: + +++++tip + +Admonition with different syntax + +++++ diff --git a/packages/docusaurus-mdx-loader/src/remark/admonitions/__tests__/__fixtures__/interpolation.md b/packages/docusaurus-mdx-loader/src/remark/admonitions/__tests__/__fixtures__/interpolation.md new file mode 100644 index 000000000000..a20e62976bf7 --- /dev/null +++ b/packages/docusaurus-mdx-loader/src/remark/admonitions/__tests__/__fixtures__/interpolation.md @@ -0,0 +1,7 @@ +Test admonition with interpolated title/body + +:::tip My `interpolated` **title** + +`body` **interpolated** + +::: diff --git a/packages/docusaurus-mdx-loader/src/remark/admonitions/__tests__/__snapshots__/index.test.ts.snap b/packages/docusaurus-mdx-loader/src/remark/admonitions/__tests__/__snapshots__/index.test.ts.snap new file mode 100644 index 000000000000..227eb28b3370 --- /dev/null +++ b/packages/docusaurus-mdx-loader/src/remark/admonitions/__tests__/__snapshots__/index.test.ts.snap @@ -0,0 +1,44 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`admonitions remark plugin base 1`] = ` +"

The blog feature enables you to deploy in no time a full-featured blog.

+

Check the Blog Plugin API Reference documentation for an exhaustive list of options.

+

Initial setup {#initial-setup}

+

To set up your site's blog, start by creating a blog directory.

+

Use the Fast Track to understand Docusaurus in 5 minutes ⏱!

Use docusaurus.new to test Docusaurus immediately in your browser!

+

++++tip

+

Admonition with different syntax

+

++++

" +`; + +exports[`admonitions remark plugin custom keywords 1`] = ` +"

The blog feature enables you to deploy in no time a full-featured blog.

+

:::info Sample Title

+

Check the Blog Plugin API Reference documentation for an exhaustive list of options.

+

:::

+

Initial setup {#initial-setup}

+

To set up your site's blog, start by creating a blog directory.

+

Use the Fast Track to understand Docusaurus in 5 minutes ⏱!

Use docusaurus.new to test Docusaurus immediately in your browser!

+

++++tip

+

Admonition with different syntax

+

++++

" +`; + +exports[`admonitions remark plugin custom tag 1`] = ` +"

The blog feature enables you to deploy in no time a full-featured blog.

+

:::info Sample Title

+

Check the Blog Plugin API Reference documentation for an exhaustive list of options.

+

:::

+

Initial setup {#initial-setup}

+

To set up your site's blog, start by creating a blog directory.

+

:::tip

+

Use the Fast Track to understand Docusaurus in 5 minutes ⏱!

+

Use docusaurus.new to test Docusaurus immediately in your browser!

+

:::

+

Admonition with different syntax

" +`; + +exports[`admonitions remark plugin interpolation 1`] = ` +"

Test admonition with interpolated title/body

+My interpolated title <button style={{color: "red"}} onClick={() => alert("click")}>test

body interpolated content

" +`; diff --git a/packages/docusaurus-mdx-loader/src/remark/admonitions/__tests__/index.test.ts b/packages/docusaurus-mdx-loader/src/remark/admonitions/__tests__/index.test.ts new file mode 100644 index 000000000000..3794562bb16d --- /dev/null +++ b/packages/docusaurus-mdx-loader/src/remark/admonitions/__tests__/index.test.ts @@ -0,0 +1,53 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import path from 'path'; +import remark from 'remark'; +import remark2rehype from 'remark-rehype'; +import stringify from 'rehype-stringify'; + +import vfile from 'to-vfile'; +import plugin from '../index'; +import type {AdmonitionOptions} from '../index'; + +const processFixture = async ( + name: string, + options?: Partial, +) => { + const filePath = path.join(__dirname, '__fixtures__', `${name}.md`); + const file = await vfile.read(filePath); + + const result = await remark() + .use(plugin, options) + .use(remark2rehype) + .use(stringify) + .process(file); + + return result.toString(); +}; + +describe('admonitions remark plugin', () => { + it('base', async () => { + const result = await processFixture('base'); + expect(result).toMatchSnapshot(); + }); + + it('custom keywords', async () => { + const result = await processFixture('base', {keywords: ['tip']}); + expect(result).toMatchSnapshot(); + }); + + it('custom tag', async () => { + const result = await processFixture('base', {tag: '++++'}); + expect(result).toMatchSnapshot(); + }); + + it('interpolation', async () => { + const result = await processFixture('interpolation'); + expect(result).toMatchSnapshot(); + }); +}); diff --git a/packages/docusaurus-mdx-loader/src/remark/admonitions/index.ts b/packages/docusaurus-mdx-loader/src/remark/admonitions/index.ts new file mode 100644 index 000000000000..d6393b8c4529 --- /dev/null +++ b/packages/docusaurus-mdx-loader/src/remark/admonitions/index.ts @@ -0,0 +1,186 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import visit from 'unist-util-visit'; +import type {Transformer, Processor, Plugin} from 'unified'; +import type {Literal} from 'mdast'; + +const NEWLINE = '\n'; + +export type AdmonitionOptions = { + tag: string; + keywords: string[]; +}; + +export const DefaultAdmonitionOptions: AdmonitionOptions = { + tag: ':::', + keywords: [ + 'secondary', + 'info', + 'success', + 'danger', + 'note', + 'tip', + 'warning', + 'important', + 'caution', + ], +}; + +function escapeRegExp(s: string): string { + return s.replace(/[-[\]{}()*+?.\\^$|/]/g, '\\$&'); +} + +function normalizeOptions( + options: Partial, +): AdmonitionOptions { + return {...DefaultAdmonitionOptions, ...options}; +} + +// This string value does not matter much +// It is ignored because nodes are using hName/hProperties coming from HAST +const admonitionNodeType = 'admonitionHTML'; + +const plugin: Plugin = function plugin( + this: Processor, + optionsInput: Partial = {}, +): Transformer { + const options = normalizeOptions(optionsInput); + + const keywords = Object.values(options.keywords).map(escapeRegExp).join('|'); + const tag = escapeRegExp(options.tag); + const regex = new RegExp(`${tag}(${keywords})(?: *(.*))?\n`); + const escapeTag = new RegExp(escapeRegExp(`\\${options.tag}`), 'g'); + + // The tokenizer is called on blocks to determine if there is an admonition + // present and create tags for it + function blockTokenizer(this: any, eat: any, value: string, silent: boolean) { + // Stop if no match or match does not start at beginning of line + const match = regex.exec(value); + if (!match || match.index !== 0) { + return false; + } + // If silent return the match + if (silent) { + return true; + } + + const now = eat.now(); + const [opening, keyword, title] = match as string[] as [ + string, + string, + string, + ]; + const food = []; + const content = []; + + let newValue = value; + // consume lines until a closing tag + let idx = newValue.indexOf(NEWLINE); + while (idx !== -1) { + // grab this line and eat it + const next = newValue.indexOf(NEWLINE, idx + 1); + const line = + next !== -1 ? newValue.slice(idx + 1, next) : newValue.slice(idx + 1); + food.push(line); + newValue = newValue.slice(idx + 1); + // the closing tag is NOT part of the content + if (line.startsWith(options.tag)) { + break; + } + content.push(line); + idx = newValue.indexOf(NEWLINE); + } + + // consume the processed tag and replace escape sequences + const contentString = content.join(NEWLINE).replace(escapeTag, options.tag); + const add = eat(opening + food.join(NEWLINE)); + + // parse the content in block mode + const exit = this.enterBlock(); + const contentNodes = this.tokenizeBlock(contentString, now); + exit(); + + const titleNodes = this.tokenizeInline(title, now); + + const isSimpleTextTitle = + titleNodes.length === 1 && titleNodes[0].type === 'text'; + + const element = { + type: admonitionNodeType, + data: { + // hName/hProperties come from HAST + // See https://github.com/syntax-tree/mdast-util-to-hast#fields-on-nodes + hName: 'admonition', + hProperties: { + ...(title && isSimpleTextTitle && {title}), + type: keyword, + }, + }, + children: [ + // For titles containing MDX syntax: create a custom element. The theme + // component will extract it and render it nicely. + // + // Temporary workaround, because it's complex in MDX v1 to emit + // interpolated JSX prop syntax (title={<>my title}). + // For this reason, we use children instead of the title prop. + title && + !isSimpleTextTitle && { + type: admonitionNodeType, + data: { + hName: 'mdxAdmonitionTitle', + hProperties: {}, + }, + children: titleNodes, + }, + ...contentNodes, + ].filter(Boolean), + }; + + return add(element); + } + + // add tokenizer to parser after fenced code blocks + const Parser = this.Parser.prototype; + Parser.blockTokenizers.admonition = blockTokenizer; + Parser.blockMethods.splice( + Parser.blockMethods.indexOf('fencedCode') + 1, + 0, + 'admonition', + ); + Parser.interruptParagraph.splice( + Parser.interruptParagraph.indexOf('fencedCode') + 1, + 0, + ['admonition'], + ); + Parser.interruptList.splice( + Parser.interruptList.indexOf('fencedCode') + 1, + 0, + ['admonition'], + ); + Parser.interruptBlockquote.splice( + Parser.interruptBlockquote.indexOf('fencedCode') + 1, + 0, + ['admonition'], + ); + + return (root) => { + // escape everything except admonitionHTML nodes + visit( + root, + (node: unknown): node is Literal => + (node as Literal | undefined)?.type !== admonitionNodeType, + (node: Literal) => { + if (node.value) { + node.value = node.value.replace(escapeTag, options.tag); + } + }, + ); + }; +}; + +export default plugin; diff --git a/packages/docusaurus-mdx-loader/src/remark/headings/__tests__/index.test.ts b/packages/docusaurus-mdx-loader/src/remark/headings/__tests__/index.test.ts index ee10568ba883..47a31c836fc8 100644 --- a/packages/docusaurus-mdx-loader/src/remark/headings/__tests__/index.test.ts +++ b/packages/docusaurus-mdx-loader/src/remark/headings/__tests__/index.test.ts @@ -13,13 +13,15 @@ import removePosition from 'unist-util-remove-position'; import toString from 'mdast-util-to-string'; import visit from 'unist-util-visit'; import slug from '../index'; +import type {Plugin} from 'unified'; +import type {Parent} from 'unist'; -function process(doc, plugins = []) { +function process(doc: string, plugins: Plugin[] = []) { const processor = remark().use({plugins: [...plugins, slug]}); return removePosition(processor.runSync(processor.parse(doc)), true); } -function heading(label, id) { +function heading(label: string | null, id: string) { return u( 'heading', {depth: 2, data: {id, hProperties: {id}}}, @@ -27,8 +29,8 @@ function heading(label, id) { ); } -describe('headings plugin', () => { - test('should patch `id`s and `data.hProperties.id', () => { +describe('headings remark plugin', () => { + it('patches `id`s and `data.hProperties.id', () => { const result = process('# Normal\n\n## Table of Contents\n\n# Baz\n'); const expected = u('root', [ u( @@ -55,13 +57,10 @@ describe('headings plugin', () => { expect(result).toEqual(expected); }); - test('should not overwrite `data` on headings', () => { + it('does not overwrite `data` on headings', () => { const result = process('# Normal\n', [ - () => { - function transform(tree) { - tree.children[0].data = {foo: 'bar'}; - } - return transform; + () => (root) => { + (root as Parent).children[0]!.data = {foo: 'bar'}; }, ]); const expected = u('root', [ @@ -78,13 +77,12 @@ describe('headings plugin', () => { expect(result).toEqual(expected); }); - test('should not overwrite `data.hProperties` on headings', () => { + it('does not overwrite `data.hProperties` on headings', () => { const result = process('# Normal\n', [ - () => { - function transform(tree) { - tree.children[0].data = {hProperties: {className: ['foo']}}; - } - return transform; + () => (root) => { + (root as Parent).children[0]!.data = { + hProperties: {className: ['foo']}, + }; }, ]); const expected = u('root', [ @@ -101,7 +99,7 @@ describe('headings plugin', () => { expect(result).toEqual(expected); }); - test('should generate `id`s and `hProperties.id`s, based on `hProperties.id` if they exist', () => { + it('generates `id`s and `hProperties.id`s, based on `hProperties.id` if they exist', () => { const result = process( [ '## Something', @@ -110,12 +108,9 @@ describe('headings plugin', () => { '## Something also', ].join('\n\n'), [ - () => { - function transform(tree) { - tree.children[1].data = {hProperties: {id: 'here'}}; - tree.children[3].data = {hProperties: {id: 'something'}}; - } - return transform; + () => (root) => { + (root as Parent).children[1]!.data = {hProperties: {id: 'here'}}; + (root as Parent).children[3]!.data = {hProperties: {id: 'something'}}; }, ], ); @@ -157,7 +152,7 @@ describe('headings plugin', () => { expect(result).toEqual(expected); }); - test('should create GitHub-style headings ids', () => { + it('creates GitHub-style headings ids', () => { const result = process( [ '## I ♥ unicode', @@ -199,7 +194,9 @@ describe('headings plugin', () => { const expected = u('root', [ heading('I ♥ unicode', 'i--unicode'), heading('Dash-dash', 'dash-dash'), + // cSpell:ignore endash heading('en–dash', 'endash'), + // cSpell:ignore emdash heading('em–dash', 'emdash'), heading('😄 unicode emoji', '-unicode-emoji'), heading('😄-😄 unicode emoji', '--unicode-emoji'), @@ -214,6 +211,7 @@ describe('headings plugin', () => { heading(':ok_hand: Single', 'ok_hand-single'), heading( ':ok_hand::hatched_chick: Two in a row with no spaces', + // cSpell:ignore handhatched 'ok_handhatched_chick-two-in-a-row-with-no-spaces', ), heading( @@ -225,7 +223,7 @@ describe('headings plugin', () => { expect(result).toEqual(expected); }); - test('should generate id from only text contents of headings if they contains HTML tags', () => { + it('generates id from only text contents of headings if they contains HTML tags', () => { const result = process('# Normal\n'); const expected = u('root', [ u( @@ -245,17 +243,17 @@ describe('headings plugin', () => { expect(result).toEqual(expected); }); - test('should create custom headings ids', () => { + it('creates custom headings ids', () => { const result = process(` # Heading One {#custom_h1} ## Heading Two {#custom-heading-two} -# With *Bold* {#custom-withbold} +# With *Bold* {#custom-with-bold} -# With *Bold* hello{#custom-withbold-hello} +# With *Bold* hello{#custom-with-bold-hello} -# With *Bold* hello2 {#custom-withbold-hello2} +# With *Bold* hello2 {#custom-with-bold-hello2} # Snake-cased ID {#this_is_custom_id} @@ -266,9 +264,9 @@ describe('headings plugin', () => { # {#text-after} custom ID `); - const headers = []; + const headers: {text: string; id: string}[] = []; visit(result, 'heading', (node) => { - headers.push({text: toString(node), id: node.data.id}); + headers.push({text: toString(node), id: node.data!.id as string}); }); expect(headers).toEqual([ @@ -281,15 +279,15 @@ describe('headings plugin', () => { text: 'Heading Two', }, { - id: 'custom-withbold', + id: 'custom-with-bold', text: 'With Bold', }, { - id: 'custom-withbold-hello', + id: 'custom-with-bold-hello', text: 'With Bold hello', }, { - id: 'custom-withbold-hello2', + id: 'custom-with-bold-hello2', text: 'With Bold hello2', }, { diff --git a/packages/docusaurus-mdx-loader/src/remark/headings/index.ts b/packages/docusaurus-mdx-loader/src/remark/headings/index.ts index c964b8d266c1..98aaa37f7552 100644 --- a/packages/docusaurus-mdx-loader/src/remark/headings/index.ts +++ b/packages/docusaurus-mdx-loader/src/remark/headings/index.ts @@ -9,16 +9,15 @@ import {parseMarkdownHeadingId, createSlugger} from '@docusaurus/utils'; import visit from 'unist-util-visit'; -import toString from 'mdast-util-to-string'; +import mdastToString from 'mdast-util-to-string'; import type {Transformer} from 'unified'; -import type {Parent} from 'unist'; import type {Heading, Text} from 'mdast'; export default function plugin(): Transformer { return (root) => { const slugs = createSlugger(); visit(root, 'heading', (headingNode: Heading) => { - const data = headingNode.data || (headingNode.data = {}); + const data = headingNode.data ?? (headingNode.data = {}); const properties = (data.hProperties || (data.hProperties = {})) as { id: string; }; @@ -30,16 +29,14 @@ export default function plugin(): Transformer { const headingTextNodes = headingNode.children.filter( ({type}) => !['html', 'jsx'].includes(type), ); - const heading = toString( - headingTextNodes.length > 0 - ? ({children: headingTextNodes} as Parent) - : headingNode, + const heading = mdastToString( + headingTextNodes.length > 0 ? headingTextNodes : headingNode, ); // Support explicit heading IDs const parsedHeading = parseMarkdownHeadingId(heading); - id = parsedHeading.id || slugs.slug(heading); + id = parsedHeading.id ?? slugs.slug(heading); if (parsedHeading.id) { // When there's an id, it is always in the last child node diff --git a/packages/docusaurus-mdx-loader/src/remark/toc/__tests__/__fixtures__/just-content.md b/packages/docusaurus-mdx-loader/src/remark/toc/__tests__/__fixtures__/just-content.md index 982f2df6563a..7f9152f5b851 100644 --- a/packages/docusaurus-mdx-loader/src/remark/toc/__tests__/__fixtures__/just-content.md +++ b/packages/docusaurus-mdx-loader/src/remark/toc/__tests__/__fixtures__/just-content.md @@ -13,3 +13,5 @@ Lorem ipsum Some content here ## I ♥ unicode. + +export const c = 1; diff --git a/packages/docusaurus-mdx-loader/src/remark/toc/__tests__/__fixtures__/no-heading-with-toc-export.md b/packages/docusaurus-mdx-loader/src/remark/toc/__tests__/__fixtures__/no-heading-with-toc-export.md new file mode 100644 index 000000000000..900b8900c1f9 --- /dev/null +++ b/packages/docusaurus-mdx-loader/src/remark/toc/__tests__/__fixtures__/no-heading-with-toc-export.md @@ -0,0 +1,9 @@ +foo + +`bar` + +```js +baz +``` + +export const toc = 1; diff --git a/packages/docusaurus-mdx-loader/src/remark/toc/__tests__/__fixtures__/no-heading.md b/packages/docusaurus-mdx-loader/src/remark/toc/__tests__/__fixtures__/no-heading.md new file mode 100644 index 000000000000..d02f9a00f460 --- /dev/null +++ b/packages/docusaurus-mdx-loader/src/remark/toc/__tests__/__fixtures__/no-heading.md @@ -0,0 +1,7 @@ +foo + +`bar` + +```js +baz +``` diff --git a/packages/docusaurus-mdx-loader/src/remark/toc/__tests__/__snapshots__/index.test.ts.snap b/packages/docusaurus-mdx-loader/src/remark/toc/__tests__/__snapshots__/index.test.ts.snap index f82cda96d317..ba71805a2ab5 100644 --- a/packages/docusaurus-mdx-loader/src/remark/toc/__tests__/__snapshots__/index.test.ts.snap +++ b/packages/docusaurus-mdx-loader/src/remark/toc/__tests__/__snapshots__/index.test.ts.snap @@ -1,6 +1,19 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`inline code should be escaped 1`] = ` +exports[`toc remark plugin does not overwrite TOC var if no TOC 1`] = ` +"foo + +\`bar\` + +\`\`\`js +baz +\`\`\` + +export const toc = 1; +" +`; + +exports[`toc remark plugin escapes inline code 1`] = ` "export const toc = [ { value: '<Head />', @@ -48,7 +61,91 @@ exports[`inline code should be escaped 1`] = ` " `; -exports[`non text phrasing content 1`] = ` +exports[`toc remark plugin exports even with existing name 1`] = ` +"export const toc = [ + { + value: 'Thanos', + id: 'thanos', + level: 2 + }, + { + value: 'Tony Stark', + id: 'tony-stark', + level: 2 + }, + { + value: 'Avengers', + id: 'avengers', + level: 3 + } +]; + +## Thanos + +## Tony Stark + +### Avengers +" +`; + +exports[`toc remark plugin handles empty headings 1`] = ` +"export const toc = []; + +# Ignore this + +## + +## ![](an-image.svg) +" +`; + +exports[`toc remark plugin inserts below imports 1`] = ` +"import something from 'something'; + +import somethingElse from 'something-else'; + +export const toc = [ + { + value: 'Title', + id: 'title', + level: 2 + }, + { + value: 'Test', + id: 'test', + level: 2 + }, + { + value: 'Again', + id: 'again', + level: 3 + } +]; + +## Title + +## Test + +### Again + +Content. +" +`; + +exports[`toc remark plugin outputs empty array for no TOC 1`] = ` +"export const toc = []; + +foo + +\`bar\` + +\`\`\`js +baz +\`\`\` +" +`; + +exports[`toc remark plugin works on non text phrasing content 1`] = ` "export const toc = [ { value: 'Emphasis', @@ -88,3 +185,47 @@ exports[`non text phrasing content 1`] = ` ## \`inline.code()\` " `; + +exports[`toc remark plugin works on text content 1`] = ` +"export const toc = [ + { + value: 'Endi', + id: 'endi', + level: 3 + }, + { + value: 'Endi', + id: 'endi-1', + level: 2 + }, + { + value: 'Yangshun', + id: 'yangshun', + level: 3 + }, + { + value: 'I ♥ unicode.', + id: 'i--unicode', + level: 2 + } +]; + +### Endi + +\`\`\`md +## This is ignored +\`\`\` + +## Endi + +Lorem ipsum + +### Yangshun + +Some content here + +## I ♥ unicode. + +export const c = 1; +" +`; diff --git a/packages/docusaurus-mdx-loader/src/remark/toc/__tests__/index.test.ts b/packages/docusaurus-mdx-loader/src/remark/toc/__tests__/index.test.ts index daf2488705a6..6df3e94e672b 100644 --- a/packages/docusaurus-mdx-loader/src/remark/toc/__tests__/index.test.ts +++ b/packages/docusaurus-mdx-loader/src/remark/toc/__tests__/index.test.ts @@ -12,197 +12,59 @@ import vfile from 'to-vfile'; import plugin from '../index'; import headings from '../../headings/index'; -const processFixture = async (name, options?) => { +const processFixture = async (name: string) => { const filePath = path.join(__dirname, '__fixtures__', `${name}.md`); const file = await vfile.read(filePath); const result = await remark() .use(headings) .use(mdx) - .use(plugin, options) + .use(plugin) .process(file); return result.toString(); }; -test('non text phrasing content', async () => { - const result = await processFixture('non-text-content'); - expect(result).toMatchSnapshot(); -}); - -test('inline code should be escaped', async () => { - const result = await processFixture('inline-code'); - expect(result).toMatchSnapshot(); -}); - -test('text content', async () => { - const result = await processFixture('just-content'); - expect(result).toMatchInlineSnapshot(` - "export const toc = [ - { - value: 'Endi', - id: 'endi', - level: 3 - }, - { - value: 'Endi', - id: 'endi-1', - level: 2 - }, - { - value: 'Yangshun', - id: 'yangshun', - level: 3 - }, - { - value: 'I ♥ unicode.', - id: 'i--unicode', - level: 2 - } - ]; - - ### Endi - - \`\`\`md - ## This is ignored - \`\`\` - - ## Endi - - Lorem ipsum - - ### Yangshun - - Some content here - - ## I ♥ unicode. - " - `); -}); - -test('should export even with existing name', async () => { - const result = await processFixture('name-exist'); - expect(result).toMatchInlineSnapshot(` - "export const toc = [ - { - value: 'Thanos', - id: 'thanos', - level: 2 - }, - { - value: 'Tony Stark', - id: 'tony-stark', - level: 2 - }, - { - value: 'Avengers', - id: 'avengers', - level: 3 - } - ]; - - ## Thanos - - ## Tony Stark - - ### Avengers - " - `); -}); - -test('should export with custom name', async () => { - const options = { - name: 'customName', - }; - const result = await processFixture('just-content', options); - expect(result).toMatchInlineSnapshot(` - "export const customName = [ - { - value: 'Endi', - id: 'endi', - level: 3 - }, - { - value: 'Endi', - id: 'endi-1', - level: 2 - }, - { - value: 'Yangshun', - id: 'yangshun', - level: 3 - }, - { - value: 'I ♥ unicode.', - id: 'i--unicode', - level: 2 - } - ]; - - ### Endi - - \`\`\`md - ## This is ignored - \`\`\` - - ## Endi - - Lorem ipsum - - ### Yangshun - - Some content here - - ## I ♥ unicode. - " - `); -}); - -test('should insert below imports', async () => { - const result = await processFixture('insert-below-imports'); - expect(result).toMatchInlineSnapshot(` - "import something from 'something'; - - import somethingElse from 'something-else'; - - export const toc = [ - { - value: 'Title', - id: 'title', - level: 2 - }, - { - value: 'Test', - id: 'test', - level: 2 - }, - { - value: 'Again', - id: 'again', - level: 3 - } - ]; - - ## Title - - ## Test - - ### Again - - Content. - " - `); -}); - -test('empty headings', async () => { - const result = await processFixture('empty-headings'); - expect(result).toMatchInlineSnapshot(` - "export const toc = []; - - # Ignore this - - ## - - ## ![](an-image.svg) - " - `); +describe('toc remark plugin', () => { + it('outputs empty array for no TOC', async () => { + const result = await processFixture('no-heading'); + expect(result).toMatchSnapshot(); + }); + + // A very implicit API: we allow users to hand-write the toc variable. It will + // get overwritten in most cases, but until we find a better way, better keep + // supporting this + it('does not overwrite TOC var if no TOC', async () => { + const result = await processFixture('no-heading-with-toc-export'); + expect(result).toMatchSnapshot(); + }); + + it('works on non text phrasing content', async () => { + const result = await processFixture('non-text-content'); + expect(result).toMatchSnapshot(); + }); + + it('escapes inline code', async () => { + const result = await processFixture('inline-code'); + expect(result).toMatchSnapshot(); + }); + + it('works on text content', async () => { + const result = await processFixture('just-content'); + expect(result).toMatchSnapshot(); + }); + + it('exports even with existing name', async () => { + const result = await processFixture('name-exist'); + expect(result).toMatchSnapshot(); + }); + + it('inserts below imports', async () => { + const result = await processFixture('insert-below-imports'); + expect(result).toMatchSnapshot(); + }); + + it('handles empty headings', async () => { + const result = await processFixture('empty-headings'); + expect(result).toMatchSnapshot(); + }); }); diff --git a/packages/docusaurus-mdx-loader/src/remark/toc/index.ts b/packages/docusaurus-mdx-loader/src/remark/toc/index.ts index 0e25a5a46226..5e6c694dc339 100644 --- a/packages/docusaurus-mdx-loader/src/remark/toc/index.ts +++ b/packages/docusaurus-mdx-loader/src/remark/toc/index.ts @@ -6,14 +6,14 @@ */ import {parse, type ParserOptions} from '@babel/parser'; -import type {Identifier} from '@babel/types'; import traverse from '@babel/traverse'; import stringifyObject from 'stringify-object'; import toString from 'mdast-util-to-string'; import visit from 'unist-util-visit'; import {toValue} from '../utils'; -import type {TOCItem} from '@docusaurus/types'; +import type {Identifier} from '@babel/types'; +import type {TOCItem} from '../..'; import type {Node, Parent} from 'unist'; import type {Heading, Literal} from 'mdast'; import type {Transformer} from 'unified'; @@ -23,15 +23,13 @@ const parseOptions: ParserOptions = { sourceType: 'module', }; +const name = 'toc'; + const isImport = (child: Node): child is Literal => child.type === 'import'; const hasImports = (index: number) => index > -1; const isExport = (child: Node): child is Literal => child.type === 'export'; -interface PluginOptions { - name?: string; -} - -const isTarget = (child: Literal, name: string) => { +const isTarget = (child: Literal) => { let found = false; const ast = parse(child.value, parseOptions); traverse(ast, { @@ -44,14 +42,14 @@ const isTarget = (child: Literal, name: string) => { return found; }; -const getOrCreateExistingTargetIndex = (children: Node[], name: string) => { +const getOrCreateExistingTargetIndex = (children: Node[]) => { let importsIndex = -1; let targetIndex = -1; children.forEach((child, index) => { if (isImport(child)) { importsIndex = index; - } else if (isExport(child) && isTarget(child, name)) { + } else if (isExport(child) && isTarget(child)) { targetIndex = index; } }); @@ -70,16 +68,14 @@ const getOrCreateExistingTargetIndex = (children: Node[], name: string) => { return targetIndex; }; -export default function plugin(options: PluginOptions = {}): Transformer { - const name = options.name || 'toc'; - +export default function plugin(): Transformer { return (root) => { const headings: TOCItem[] = []; - visit(root, 'heading', (child: Heading, _index, parent) => { + visit(root, 'heading', (child: Heading, index, parent) => { const value = toString(child); - // depth:1 headings are titles and not included in the TOC + // depth: 1 headings are titles and not included in the TOC if (parent !== root || !value || child.depth < 2) { return; } @@ -91,9 +87,9 @@ export default function plugin(options: PluginOptions = {}): Transformer { }); }); const {children} = root as Parent; - const targetIndex = getOrCreateExistingTargetIndex(children, name); + const targetIndex = getOrCreateExistingTargetIndex(children); - if (headings && headings.length) { + if (headings.length) { children[targetIndex]!.value = `export const ${name} = ${stringifyObject( headings, )};`; diff --git a/packages/docusaurus-mdx-loader/src/remark/transformImage/__tests__/__snapshots__/index.test.ts.snap b/packages/docusaurus-mdx-loader/src/remark/transformImage/__tests__/__snapshots__/index.test.ts.snap index 7602293159e2..8366a7b23e19 100644 --- a/packages/docusaurus-mdx-loader/src/remark/transformImage/__tests__/__snapshots__/index.test.ts.snap +++ b/packages/docusaurus-mdx-loader/src/remark/transformImage/__tests__/__snapshots__/index.test.ts.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`transformImage plugin does not choke on invalid image 1`] = ` -"{\\"invalid/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=/node_modules/file-loader/dist/cjs.js!./static/invalid.png\\").default} /> +"{"invalid/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=/node_modules/file-loader/dist/cjs.js!./static/invalid.png").default} /> " `; @@ -9,7 +9,7 @@ exports[`transformImage plugin fail if image does not exist 1`] = `"Image packag exports[`transformImage plugin fail if image relative path does not exist 1`] = `"Image packages/docusaurus-mdx-loader/src/remark/transformImage/__tests__/__fixtures__/notFound.png used in packages/docusaurus-mdx-loader/src/remark/transformImage/__tests__/__fixtures__/fail2.md not found."`; -exports[`transformImage plugin fail if image url is absent 1`] = `"Markdown image URL is mandatory in \\"packages/docusaurus-mdx-loader/src/remark/transformImage/__tests__/__fixtures__/noUrl.md\\" file"`; +exports[`transformImage plugin fail if image url is absent 1`] = `"Markdown image URL is mandatory in "packages/docusaurus-mdx-loader/src/remark/transformImage/__tests__/__fixtures__/noUrl.md" file"`; exports[`transformImage plugin pathname protocol 1`] = ` "![img](/img/unchecked.png) @@ -19,29 +19,29 @@ exports[`transformImage plugin pathname protocol 1`] = ` exports[`transformImage plugin transform md images to 1`] = ` "![img](https://example.com/img.png) -/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=/node_modules/file-loader/dist/cjs.js!./static/img.png\\").default} width=\\"200\\" height=\\"200\\" /> +/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=/node_modules/file-loader/dist/cjs.js!./static/img.png").default} width="200" height="200" /> -{\\"img\\"}/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=/node_modules/file-loader/dist/cjs.js!./static/img.png\\").default} width=\\"200\\" height=\\"200\\" /> +{"img"}/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=/node_modules/file-loader/dist/cjs.js!./static/img.png").default} width="200" height="200" /> -{\\"img/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=/node_modules/file-loader/dist/cjs.js!./static2/img2.png\\").default} width=\\"256\\" height=\\"82\\" /> +{"img/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=/node_modules/file-loader/dist/cjs.js!./static2/img2.png").default} width="256" height="82" /> -{\\"img/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=/node_modules/file-loader/dist/cjs.js!./static2/img2.png\\").default} width=\\"256\\" height=\\"82\\" /> +{"img/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=/node_modules/file-loader/dist/cjs.js!./static2/img2.png").default} width="256" height="82" /> -{\\"img/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=/node_modules/file-loader/dist/cjs.js!./static2/img2 copy.png\\").default} width=\\"256\\" height=\\"82\\" /> +{"img/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=/node_modules/file-loader/dist/cjs.js!./static2/img2 copy.png").default} width="256" height="82" /> -{\\"img\\"}/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=/node_modules/file-loader/dist/cjs.js!./static/img.png\\").default} title=\\"Title\\" width=\\"200\\" height=\\"200\\" /> {\\"img\\"}/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=/node_modules/file-loader/dist/cjs.js!./static/img.png\\").default} width=\\"200\\" height=\\"200\\" /> +{"img"}/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=/node_modules/file-loader/dist/cjs.js!./static/img.png").default} title="Title" width="200" height="200" /> {"img"}/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=/node_modules/file-loader/dist/cjs.js!./static/img.png").default} width="200" height="200" /> -{\\"img/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=/node_modules/file-loader/dist/cjs.js!./static/img.png\\").default} title=\\"'Quoted' title\\" width=\\"200\\" height=\\"200\\" /> +{"img/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=/node_modules/file-loader/dist/cjs.js!./static/img.png").default} title="'Quoted' title" width="200" height="200" /> -{\\"site/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=/node_modules/file-loader/dist/cjs.js!./static/img.png\\").default} width=\\"200\\" height=\\"200\\" /> +{"site/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=/node_modules/file-loader/dist/cjs.js!./static/img.png").default} width="200" height="200" /> -{\\"img/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=/node_modules/file-loader/dist/cjs.js!./static/img.png\\").default + '#light'} width=\\"200\\" height=\\"200\\" /> -{\\"img/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=/node_modules/file-loader/dist/cjs.js!./static/img.png\\").default + '#dark'} width=\\"200\\" height=\\"200\\" /> +{"img/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=/node_modules/file-loader/dist/cjs.js!./static/img.png").default + '#light'} width="200" height="200" /> +{"img/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=/node_modules/file-loader/dist/cjs.js!./static/img.png").default + '#dark'} width="200" height="200" /> -{\\"img/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=/node_modules/file-loader/dist/cjs.js!./static/img.png?w=10\\").default} width=\\"200\\" height=\\"200\\" /> -{\\"img/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=/node_modules/file-loader/dist/cjs.js!./static/img.png?w=10&h=10\\").default} width=\\"200\\" height=\\"200\\" /> +{"img/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=/node_modules/file-loader/dist/cjs.js!./static/img.png?w=10").default} width="200" height="200" /> +{"img/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=/node_modules/file-loader/dist/cjs.js!./static/img.png?w=10&h=10").default} width="200" height="200" /> -{\\"img/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=/node_modules/file-loader/dist/cjs.js!./static/img.png?w=10&h=10\\").default + '#light'} width=\\"200\\" height=\\"200\\" /> +{"img/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=/node_modules/file-loader/dist/cjs.js!./static/img.png?w=10&h=10").default + '#light'} width="200" height="200" /> ## Heading diff --git a/packages/docusaurus-mdx-loader/src/remark/transformImage/__tests__/index.test.ts b/packages/docusaurus-mdx-loader/src/remark/transformImage/__tests__/index.test.ts index dc1ed9e1710c..94a0c7475580 100644 --- a/packages/docusaurus-mdx-loader/src/remark/transformImage/__tests__/index.test.ts +++ b/packages/docusaurus-mdx-loader/src/remark/transformImage/__tests__/index.test.ts @@ -5,20 +5,24 @@ * LICENSE file in the root directory of this source tree. */ +import {jest} from '@jest/globals'; import path from 'path'; import remark from 'remark'; import mdx from 'remark-mdx'; import vfile from 'to-vfile'; -import plugin from '../index'; +import plugin, {type PluginOptions} from '../index'; import headings from '../../headings/index'; -const processFixture = async (name, options) => { +const processFixture = async ( + name: string, + options: Partial, +) => { const filePath = path.join(__dirname, `__fixtures__/${name}.md`); const file = await vfile.read(filePath); const result = await remark() .use(headings) .use(mdx) - .use(plugin, {...options, filePath}) + .use(plugin, {siteDir: __dirname, staticDirs: [], ...options}) .process(file); return result.toString(); @@ -32,34 +36,34 @@ const staticDirs = [ const siteDir = path.join(__dirname, '__fixtures__'); describe('transformImage plugin', () => { - test('fail if image does not exist', async () => { + it('fail if image does not exist', async () => { await expect( processFixture('fail', {staticDirs}), ).rejects.toThrowErrorMatchingSnapshot(); }); - test('fail if image relative path does not exist', async () => { + it('fail if image relative path does not exist', async () => { await expect( processFixture('fail2', {staticDirs}), ).rejects.toThrowErrorMatchingSnapshot(); }); - test('fail if image url is absent', async () => { + it('fail if image url is absent', async () => { await expect( processFixture('noUrl', {staticDirs}), ).rejects.toThrowErrorMatchingSnapshot(); }); - test('transform md images to ', async () => { + it('transform md images to ', async () => { const result = await processFixture('img', {staticDirs, siteDir}); expect(result).toMatchSnapshot(); }); - test('pathname protocol', async () => { + it('pathname protocol', async () => { const result = await processFixture('pathname', {staticDirs}); expect(result).toMatchSnapshot(); }); - test('does not choke on invalid image', async () => { - const errorMock = jest.spyOn(console, 'warn').mockImplementation(); + it('does not choke on invalid image', async () => { + const errorMock = jest.spyOn(console, 'warn').mockImplementation(() => {}); const result = await processFixture('invalid-img', {staticDirs}); expect(result).toMatchSnapshot(); expect(errorMock).toBeCalledTimes(1); diff --git a/packages/docusaurus-mdx-loader/src/remark/transformImage/index.ts b/packages/docusaurus-mdx-loader/src/remark/transformImage/index.ts index bcc37f633508..06892e3ed0b9 100644 --- a/packages/docusaurus-mdx-loader/src/remark/transformImage/index.ts +++ b/packages/docusaurus-mdx-loader/src/remark/transformImage/index.ts @@ -5,6 +5,11 @@ * LICENSE file in the root directory of this source tree. */ +import path from 'path'; +import url from 'url'; +import fs from 'fs-extra'; +import {promisify} from 'util'; +import logger from '@docusaurus/logger'; import { toMessageRelativeFilePath, posixPath, @@ -13,21 +18,17 @@ import { findAsyncSequential, } from '@docusaurus/utils'; import visit from 'unist-util-visit'; -import path from 'path'; -import url from 'url'; -import fs from 'fs-extra'; import escapeHtml from 'escape-html'; import sizeOf from 'image-size'; -import {promisify} from 'util'; import type {Transformer} from 'unified'; +import type {Parent} from 'unist'; import type {Image, Literal} from 'mdast'; -import logger from '@docusaurus/logger'; const { loaders: {inlineMarkdownImageFileLoader}, } = getFileLoaderUtils(); -type PluginOptions = { +export type PluginOptions = { staticDirs: string[]; siteDir: string; }; @@ -36,12 +37,13 @@ type Context = PluginOptions & { filePath: string; }; +type Target = [node: Image, index: number, parent: Parent]; + async function toImageRequireNode( - node: Image, + [node, index, parent]: Target, imagePath: string, filePath: string, ) { - const jsxNode = node as Literal & Partial; let relativeImagePath = posixPath( path.relative(path.dirname(filePath), imagePath), ); @@ -75,12 +77,12 @@ ${(err as Error).message}`; } } - Object.keys(jsxNode).forEach( - (key) => delete jsxNode[key as keyof typeof jsxNode], - ); + const jsxNode: Literal = { + type: 'jsx', + value: ``, + }; - (jsxNode as Literal).type = 'jsx'; - jsxNode.value = ``; + parent.children.splice(index, 1, jsxNode); } async function ensureImageFileExist(imagePath: string, sourceFilePath: string) { @@ -103,7 +105,7 @@ async function getImageAbsolutePath( await ensureImageFileExist(imageFilePath, filePath); return imageFilePath; } else if (path.isAbsolute(imagePath)) { - // absolute paths are expected to exist in the static folder + // Absolute paths are expected to exist in the static folder. const possiblePaths = staticDirs.map((dir) => path.join(dir, imagePath)); const imageFilePath = await findAsyncSequential( possiblePaths, @@ -120,7 +122,7 @@ async function getImageAbsolutePath( } return imageFilePath; } - // relative paths are resolved against the source file's folder + // Relative paths are resolved against the source file's folder. const imageFilePath = path.join( path.dirname(filePath), decodeURIComponent(imagePath), @@ -129,7 +131,8 @@ async function getImageAbsolutePath( return imageFilePath; } -async function processImageNode(node: Image, context: Context) { +async function processImageNode(target: Target, context: Context) { + const [node] = target; if (!node.url) { throw new Error( `Markdown image URL is mandatory in "${toMessageRelativeFilePath( @@ -151,15 +154,18 @@ async function processImageNode(node: Image, context: Context) { // We try to convert image urls without protocol to images with require calls // going through webpack ensures that image assets exist at build time const imagePath = await getImageAbsolutePath(parsedUrl.pathname, context); - await toImageRequireNode(node, imagePath, context.filePath); + await toImageRequireNode(target, imagePath, context.filePath); } export default function plugin(options: PluginOptions): Transformer { return async (root, vfile) => { const promises: Promise[] = []; - visit(root, 'image', (node: Image) => { + visit(root, 'image', (node: Image, index, parent) => { promises.push( - processImageNode(node, {...options, filePath: vfile.path!}), + processImageNode([node, index, parent!], { + ...options, + filePath: vfile.path!, + }), ); }); await Promise.all(promises); diff --git a/packages/docusaurus-mdx-loader/src/remark/transformLinks/__tests__/__fixtures__/asset.md b/packages/docusaurus-mdx-loader/src/remark/transformLinks/__tests__/__fixtures__/asset.md index 407c853eb14f..a23a16a92832 100644 --- a/packages/docusaurus-mdx-loader/src/remark/transformLinks/__tests__/__fixtures__/asset.md +++ b/packages/docusaurus-mdx-loader/src/remark/transformLinks/__tests__/__fixtures__/asset.md @@ -40,4 +40,4 @@ [json](./data.json) -[static json](/staticjson.json) +[static json](/static-json.json) diff --git a/packages/docusaurus-mdx-loader/src/remark/transformLinks/__tests__/__fixtures__/static/staticjson.json b/packages/docusaurus-mdx-loader/src/remark/transformLinks/__tests__/__fixtures__/static/static-json.json similarity index 100% rename from packages/docusaurus-mdx-loader/src/remark/transformLinks/__tests__/__fixtures__/static/staticjson.json rename to packages/docusaurus-mdx-loader/src/remark/transformLinks/__tests__/__fixtures__/static/static-json.json diff --git a/packages/docusaurus-mdx-loader/src/remark/transformLinks/__tests__/__snapshots__/index.test.ts.snap b/packages/docusaurus-mdx-loader/src/remark/transformLinks/__tests__/__snapshots__/index.test.ts.snap index 1c27e176dcb7..0daf646c0574 100644 --- a/packages/docusaurus-mdx-loader/src/remark/transformLinks/__tests__/__snapshots__/index.test.ts.snap +++ b/packages/docusaurus-mdx-loader/src/remark/transformLinks/__tests__/__snapshots__/index.test.ts.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`transformAsset plugin fail if asset url is absent 1`] = `"Markdown link URL is mandatory in \\"packages/docusaurus-mdx-loader/src/remark/transformLinks/__tests__/__fixtures__/noUrl.md\\" file (title: asset, line: 1)."`; +exports[`transformAsset plugin fail if asset url is absent 1`] = `"Markdown link URL is mandatory in "packages/docusaurus-mdx-loader/src/remark/transformLinks/__tests__/__fixtures__/noUrl.md" file (title: asset, line: 1)."`; exports[`transformAsset plugin fail if asset with site alias does not exist 1`] = `"Asset packages/docusaurus-mdx-loader/src/remark/transformLinks/__tests__/__fixtures__/foo.pdf used in packages/docusaurus-mdx-loader/src/remark/transformLinks/__tests__/__fixtures__/nonexistentSiteAlias.md not found."`; @@ -12,15 +12,15 @@ exports[`transformAsset plugin pathname protocol 1`] = ` exports[`transformAsset plugin transform md links to 1`] = ` "[asset](https://example.com/asset.pdf) -/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./asset.pdf').default}> +/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./asset.pdf').default}> -/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./asset.pdf').default}>asset +/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./asset.pdf').default}>asset -/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./asset (2).pdf').default}>asset with URL encoded chars +/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./asset (2).pdf').default}>asset with URL encoded chars -/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./asset.pdf').default + '#page=2'}>asset with hash +/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./asset.pdf').default + '#page=2'}>asset with hash -/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./asset.pdf').default} title=\\"Title\\">asset +/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./asset.pdf').default} title="Title">asset [page](noUrl.md) @@ -34,24 +34,24 @@ exports[`transformAsset plugin transform md links to 1`] = ` [assets](/github/!file-loader!/assets.pdf) -/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./asset.pdf').default}>asset +/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./asset.pdf').default}>asset -/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./static2/asset2.pdf').default}>asset2 +/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./static2/asset2.pdf').default}>asset2 -/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./static/staticAsset.pdf').default}>staticAsset.pdf +/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./static/staticAsset.pdf').default}>staticAsset.pdf -/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./static/staticAsset.pdf').default}>@site/static/staticAsset.pdf +/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./static/staticAsset.pdf').default}>@site/static/staticAsset.pdf -/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./static/staticAsset.pdf').default + '#page=2'} title=\\"Title\\">@site/static/staticAsset.pdf +/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./static/staticAsset.pdf').default + '#page=2'} title="Title">@site/static/staticAsset.pdf -/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./static/staticAsset.pdf').default}>Just staticAsset.pdf, and /node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./static/staticAsset.pdf').default}>awesome staticAsset 2.pdf 'It is really "AWESOME"', but also /node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./static/staticAsset.pdf').default}>coded staticAsset 3.pdf +/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./static/staticAsset.pdf').default}>Just staticAsset.pdf, and /node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./static/staticAsset.pdf').default}>awesome staticAsset 2.pdf 'It is really "AWESOME"', but also /node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./static/staticAsset.pdf').default}>coded staticAsset 3.pdf -/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./static/staticAssetImage.png').default}>{\\"Clickable/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=/node_modules/file-loader/dist/cjs.js!./static/staticAssetImage.png\\").default} width=\\"200\\" height=\\"200\\" /> +/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./static/staticAssetImage.png').default}>{"Clickable/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=/node_modules/file-loader/dist/cjs.js!./static/staticAssetImage.png").default} width="200" height="200" /> -/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./asset.pdf').default}>Stylized link to asset file +/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./asset.pdf').default}>Stylized link to asset file -/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./data.json').default}>json +/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./data.json').default}>json -/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./static/staticjson.json').default}>static json +/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./static/static-json.json').default}>static json " `; diff --git a/packages/docusaurus-mdx-loader/src/remark/transformLinks/__tests__/index.test.ts b/packages/docusaurus-mdx-loader/src/remark/transformLinks/__tests__/index.test.ts index 2b2ac7979dc3..181ddd4f7315 100644 --- a/packages/docusaurus-mdx-loader/src/remark/transformLinks/__tests__/index.test.ts +++ b/packages/docusaurus-mdx-loader/src/remark/transformLinks/__tests__/index.test.ts @@ -10,21 +10,20 @@ import remark from 'remark'; import mdx from 'remark-mdx'; import vfile from 'to-vfile'; import plugin from '..'; -import transformImage from '../../transformImage'; +import transformImage, {type PluginOptions} from '../../transformImage'; -const processFixture = async (name: string, options?) => { - const filePath = path.join(__dirname, `__fixtures__/${name}.md`); +const processFixture = async (name: string, options?: PluginOptions) => { + const siteDir = path.join(__dirname, `__fixtures__`); const staticDirs = [ - path.join(__dirname, '__fixtures__/static'), - path.join(__dirname, '__fixtures__/static2'), + path.join(siteDir, 'static'), + path.join(siteDir, 'static2'), ]; - const file = await vfile.read(filePath); + const file = await vfile.read(path.join(siteDir, `${name}.md`)); const result = await remark() .use(mdx) - .use(transformImage, {...options, filePath, staticDirs}) + .use(transformImage, {...options, siteDir, staticDirs}) .use(plugin, { ...options, - filePath, staticDirs, siteDir: path.join(__dirname, '__fixtures__'), }) @@ -34,24 +33,24 @@ const processFixture = async (name: string, options?) => { }; describe('transformAsset plugin', () => { - test('fail if asset url is absent', async () => { + it('fail if asset url is absent', async () => { await expect( processFixture('noUrl'), ).rejects.toThrowErrorMatchingSnapshot(); }); - test('fail if asset with site alias does not exist', async () => { + it('fail if asset with site alias does not exist', async () => { await expect( processFixture('nonexistentSiteAlias'), ).rejects.toThrowErrorMatchingSnapshot(); }); - test('transform md links to ', async () => { + it('transform md links to ', async () => { const result = await processFixture('asset'); expect(result).toMatchSnapshot(); }); - test('pathname protocol', async () => { + it('pathname protocol', async () => { const result = await processFixture('pathname'); expect(result).toMatchSnapshot(); }); diff --git a/packages/docusaurus-mdx-loader/src/remark/transformLinks/index.ts b/packages/docusaurus-mdx-loader/src/remark/transformLinks/index.ts index b1e7d1467ed9..33602c0d26f4 100644 --- a/packages/docusaurus-mdx-loader/src/remark/transformLinks/index.ts +++ b/packages/docusaurus-mdx-loader/src/remark/transformLinks/index.ts @@ -5,6 +5,9 @@ * LICENSE file in the root directory of this source tree. */ +import path from 'path'; +import url from 'url'; +import fs from 'fs-extra'; import { toMessageRelativeFilePath, posixPath, @@ -13,19 +16,17 @@ import { findAsyncSequential, } from '@docusaurus/utils'; import visit from 'unist-util-visit'; -import path from 'path'; -import url from 'url'; -import fs from 'fs-extra'; import escapeHtml from 'escape-html'; import {stringifyContent} from '../utils'; import type {Transformer} from 'unified'; +import type {Parent} from 'unist'; import type {Link, Literal} from 'mdast'; const { loaders: {inlineMarkdownLinkFileLoader}, } = getFileLoaderUtils(); -type PluginOptions = { +export type PluginOptions = { staticDirs: string[]; siteDir: string; }; @@ -34,14 +35,20 @@ type Context = PluginOptions & { filePath: string; }; -// transform the link node to a jsx link with a require() call -function toAssetRequireNode(node: Link, assetPath: string, filePath: string) { - const jsxNode = node as Literal & Partial; - let relativeAssetPath = posixPath( - path.relative(path.dirname(filePath), assetPath), - ); +type Target = [node: Link, index: number, parent: Parent]; + +/** + * Transforms the link node to a JSX `` element with a `require()` call. + */ +function toAssetRequireNode( + [node, index, parent]: Target, + assetPath: string, + filePath: string, +) { // require("assets/file.pdf") means requiring from a package called assets - relativeAssetPath = `./${relativeAssetPath}`; + const relativeAssetPath = `./${posixPath( + path.relative(path.dirname(filePath), assetPath), + )}`; const parsedUrl = url.parse(node.url); const hash = parsedUrl.hash ?? ''; @@ -58,12 +65,12 @@ function toAssetRequireNode(node: Link, assetPath: string, filePath: string) { const children = stringifyContent(node); const title = node.title ? ` title="${escapeHtml(node.title)}"` : ''; - Object.keys(jsxNode).forEach( - (key) => delete jsxNode[key as keyof typeof jsxNode], - ); + const jsxNode: Literal = { + type: 'jsx', + value: `${children}`, + }; - (jsxNode as Literal).type = 'jsx'; - jsxNode.value = `${children}`; + parent.children.splice(index, 1, jsxNode); } async function ensureAssetFileExist(assetPath: string, sourceFilePath: string) { @@ -104,12 +111,14 @@ async function getAssetAbsolutePath( return null; } -async function processLinkNode(node: Link, context: Context) { +async function processLinkNode(target: Target, context: Context) { + const [node] = target; if (!node.url) { - // try to improve error feedback + // Try to improve error feedback // see https://github.com/facebook/docusaurus/issues/3309#issuecomment-690371675 - const title = node.title || (node.children[0] as Literal)?.value || '?'; - const line = node?.position?.start?.line || '?'; + const title = + node.title ?? (node.children[0] as Literal | undefined)?.value ?? '?'; + const line = node.position?.start.line ?? '?'; throw new Error( `Markdown link URL is mandatory in "${toMessageRelativeFilePath( context.filePath, @@ -135,15 +144,20 @@ async function processLinkNode(node: Link, context: Context) { context, ); if (assetPath) { - toAssetRequireNode(node, assetPath, context.filePath); + toAssetRequireNode(target, assetPath, context.filePath); } } export default function plugin(options: PluginOptions): Transformer { return async (root, vfile) => { const promises: Promise[] = []; - visit(root, 'link', (node: Link) => { - promises.push(processLinkNode(node, {...options, filePath: vfile.path!})); + visit(root, 'link', (node: Link, index, parent) => { + promises.push( + processLinkNode([node, index, parent!], { + ...options, + filePath: vfile.path!, + }), + ); }); await Promise.all(promises); }; diff --git a/packages/docusaurus-mdx-loader/src/remark/unwrapMdxCodeBlocks/__tests__/__snapshots__/index.test.ts.snap b/packages/docusaurus-mdx-loader/src/remark/unwrapMdxCodeBlocks/__tests__/__snapshots__/index.test.ts.snap index c234d26fe0d1..9b8ed7b0ada3 100644 --- a/packages/docusaurus-mdx-loader/src/remark/unwrapMdxCodeBlocks/__tests__/__snapshots__/index.test.ts.snap +++ b/packages/docusaurus-mdx-loader/src/remark/unwrapMdxCodeBlocks/__tests__/__snapshots__/index.test.ts.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`unwrapMdxCodeBlocks should unwrap the mdx code blocks 1`] = ` +exports[`unwrapMdxCodeBlocks remark plugin unwraps the mdx code blocks 1`] = ` "# MDX code blocks test document ## Some basic markdown @@ -17,7 +17,7 @@ text import XYZ from 'xyz'; - + Test @@ -32,30 +32,30 @@ import Avatar from 'avatar'; ## Some complex MDX with nested code blocks - + \`\`\`bash GIT_USER= yarn deploy \`\`\` - + \`\`\`batch - cmd /C \\"set \\"GIT_USER=\\" && yarn deploy\\" + cmd /C "set "GIT_USER=" && yarn deploy" \`\`\` - + \`\`\`powershell -cmd /C 'set \\"GIT_USER=\\" && yarn deploy' +cmd /C 'set "GIT_USER=" && yarn deploy' \`\`\` @@ -64,30 +64,30 @@ cmd /C 'set \\"GIT_USER=\\" && yarn deploy' ## Some complex MDX code block with nested code blocks - + \`\`\`bash GIT_USER= yarn deploy \`\`\` - + \`\`\`batch -cmd /C \\"set \\"GIT_USER=\\" && yarn deploy\\" +cmd /C "set "GIT_USER=" && yarn deploy" \`\`\` - + \`\`\`powershell -cmd /C 'set \\"GIT_USER=\\" && yarn deploy' +cmd /C 'set "GIT_USER=" && yarn deploy' \`\`\` @@ -95,20 +95,20 @@ cmd /C 'set \\"GIT_USER=\\" && yarn deploy' " `; -exports[`unwrapMdxCodeBlocks should unwrap the mdx code blocks AST 1`] = ` -Object { - "children": Array [ - Object { - "children": Array [ - Object { +exports[`unwrapMdxCodeBlocks remark plugin unwraps the mdx code blocks AST 1`] = ` +{ + "children": [ + { + "children": [ + { "position": Position { - "end": Object { + "end": { "column": 32, "line": 1, "offset": 31, }, - "indent": Array [], - "start": Object { + "indent": [], + "start": { "column": 3, "line": 1, "offset": 2, @@ -120,13 +120,13 @@ Object { ], "depth": 1, "position": Position { - "end": Object { + "end": { "column": 32, "line": 1, "offset": 31, }, - "indent": Array [], - "start": Object { + "indent": [], + "start": { "column": 1, "line": 1, "offset": 0, @@ -134,17 +134,17 @@ Object { }, "type": "heading", }, - Object { - "children": Array [ - Object { + { + "children": [ + { "position": Position { - "end": Object { + "end": { "column": 23, "line": 3, "offset": 55, }, - "indent": Array [], - "start": Object { + "indent": [], + "start": { "column": 4, "line": 3, "offset": 36, @@ -156,13 +156,13 @@ Object { ], "depth": 2, "position": Position { - "end": Object { + "end": { "column": 23, "line": 3, "offset": 55, }, - "indent": Array [], - "start": Object { + "indent": [], + "start": { "column": 1, "line": 3, "offset": 33, @@ -170,17 +170,17 @@ Object { }, "type": "heading", }, - Object { - "children": Array [ - Object { + { + "children": [ + { "position": Position { - "end": Object { + "end": { "column": 5, "line": 5, "offset": 61, }, - "indent": Array [], - "start": Object { + "indent": [], + "start": { "column": 1, "line": 5, "offset": 57, @@ -191,13 +191,13 @@ Object { }, ], "position": Position { - "end": Object { + "end": { "column": 5, "line": 5, "offset": 61, }, - "indent": Array [], - "start": Object { + "indent": [], + "start": { "column": 1, "line": 5, "offset": 57, @@ -205,19 +205,19 @@ Object { }, "type": "paragraph", }, - Object { - "children": Array [ - Object { - "children": Array [ - Object { + { + "children": [ + { + "children": [ + { "position": Position { - "end": Object { + "end": { "column": 6, "line": 7, "offset": 68, }, - "indent": Array [], - "start": Object { + "indent": [], + "start": { "column": 2, "line": 7, "offset": 64, @@ -228,13 +228,13 @@ Object { }, ], "position": Position { - "end": Object { + "end": { "column": 29, "line": 7, "offset": 91, }, - "indent": Array [], - "start": Object { + "indent": [], + "start": { "column": 1, "line": 7, "offset": 63, @@ -246,13 +246,13 @@ Object { }, ], "position": Position { - "end": Object { + "end": { "column": 29, "line": 7, "offset": 91, }, - "indent": Array [], - "start": Object { + "indent": [], + "start": { "column": 1, "line": 7, "offset": 63, @@ -260,19 +260,19 @@ Object { }, "type": "paragraph", }, - Object { - "children": Array [ - Object { - "children": Array [ - Object { + { + "children": [ + { + "children": [ + { "position": Position { - "end": Object { + "end": { "column": 7, "line": 9, "offset": 99, }, - "indent": Array [], - "start": Object { + "indent": [], + "start": { "column": 3, "line": 9, "offset": 95, @@ -283,13 +283,13 @@ Object { }, ], "position": Position { - "end": Object { + "end": { "column": 9, "line": 9, "offset": 101, }, - "indent": Array [], - "start": Object { + "indent": [], + "start": { "column": 1, "line": 9, "offset": 93, @@ -299,13 +299,13 @@ Object { }, ], "position": Position { - "end": Object { + "end": { "column": 9, "line": 9, "offset": 101, }, - "indent": Array [], - "start": Object { + "indent": [], + "start": { "column": 1, "line": 9, "offset": 93, @@ -313,18 +313,18 @@ Object { }, "type": "paragraph", }, - Object { - "children": Array [ - Object { + { + "children": [ + { "alt": "image", "position": Position { - "end": Object { + "end": { "column": 43, "line": 11, "offset": 145, }, - "indent": Array [], - "start": Object { + "indent": [], + "start": { "column": 1, "line": 11, "offset": 103, @@ -336,13 +336,13 @@ Object { }, ], "position": Position { - "end": Object { + "end": { "column": 43, "line": 11, "offset": 145, }, - "indent": Array [], - "start": Object { + "indent": [], + "start": { "column": 1, "line": 11, "offset": 103, @@ -350,17 +350,17 @@ Object { }, "type": "paragraph", }, - Object { - "children": Array [ - Object { + { + "children": [ + { "position": Position { - "end": Object { + "end": { "column": 18, "line": 13, "offset": 164, }, - "indent": Array [], - "start": Object { + "indent": [], + "start": { "column": 4, "line": 13, "offset": 150, @@ -372,13 +372,13 @@ Object { ], "depth": 2, "position": Position { - "end": Object { + "end": { "column": 18, "line": 13, "offset": 164, }, - "indent": Array [], - "start": Object { + "indent": [], + "start": { "column": 1, "line": 13, "offset": 147, @@ -386,15 +386,15 @@ Object { }, "type": "heading", }, - Object { + { "position": Position { - "end": Object { + "end": { "column": 23, "line": 15, "offset": 188, }, - "indent": Array [], - "start": Object { + "indent": [], + "start": { "column": 1, "line": 15, "offset": 166, @@ -403,39 +403,39 @@ Object { "type": "import", "value": "import XYZ from 'xyz';", }, - Object { + { "position": Position { - "end": Object { + "end": { "column": 7, "line": 19, "offset": 287, }, - "indent": Array [ + "indent": [ 1, 1, ], - "start": Object { + "start": { "column": 1, "line": 17, "offset": 190, }, }, "type": "jsx", - "value": " + "value": " Test ", }, - Object { - "children": Array [ - Object { + { + "children": [ + { "position": Position { - "end": Object { + "end": { "column": 29, "line": 21, "offset": 317, }, - "indent": Array [], - "start": Object { + "indent": [], + "start": { "column": 4, "line": 21, "offset": 292, @@ -447,13 +447,13 @@ Object { ], "depth": 2, "position": Position { - "end": Object { + "end": { "column": 29, "line": 21, "offset": 317, }, - "indent": Array [], - "start": Object { + "indent": [], + "start": { "column": 1, "line": 21, "offset": 289, @@ -461,16 +461,16 @@ Object { }, "type": "heading", }, - Object { + { "lang": "mdx-code-block", "meta": null, "position": Position { - "end": Object { + "end": { "column": 4, "line": 29, "offset": 442, }, - "indent": Array [ + "indent": [ 1, 1, 1, @@ -478,7 +478,7 @@ Object { 1, 1, ], - "start": Object { + "start": { "column": 1, "line": 23, "offset": 319, @@ -491,17 +491,17 @@ Object {
Sebastien Lorber
", }, - Object { - "children": Array [ - Object { + { + "children": [ + { "position": Position { - "end": Object { + "end": { "column": 44, "line": 31, "offset": 487, }, - "indent": Array [], - "start": Object { + "indent": [], + "start": { "column": 4, "line": 31, "offset": 447, @@ -513,13 +513,13 @@ Object { ], "depth": 2, "position": Position { - "end": Object { + "end": { "column": 44, "line": 31, "offset": 487, }, - "indent": Array [], - "start": Object { + "indent": [], + "start": { "column": 1, "line": 31, "offset": 444, @@ -527,14 +527,14 @@ Object { }, "type": "heading", }, - Object { + { "position": Position { - "end": Object { + "end": { "column": 25, "line": 40, "offset": 688, }, - "indent": Array [ + "indent": [ 1, 1, 1, @@ -543,7 +543,7 @@ Object { 1, 1, ], - "start": Object { + "start": { "column": 1, "line": 33, "offset": 489, @@ -551,28 +551,28 @@ Object { }, "type": "jsx", "value": " - ", + ", }, - Object { + { "lang": "bash", "meta": null, "position": Position { - "end": Object { + "end": { "column": 4, "line": 44, "offset": 740, }, - "indent": Array [ + "indent": [ 1, 1, ], - "start": Object { + "start": { "column": 1, "line": 42, "offset": 690, @@ -581,17 +581,17 @@ Object { "type": "code", "value": "GIT_USER= yarn deploy", }, - Object { + { "position": Position { - "end": Object { + "end": { "column": 28, "line": 47, "offset": 782, }, - "indent": Array [ + "indent": [ 1, ], - "start": Object { + "start": { "column": 1, "line": 46, "offset": 742, @@ -599,22 +599,22 @@ Object { }, "type": "jsx", "value": " - ", + ", }, - Object { + { "lang": null, "meta": null, "position": Position { - "end": Object { + "end": { "column": 8, "line": 51, "offset": 865, }, - "indent": Array [ + "indent": [ 1, 1, ], - "start": Object { + "start": { "column": 1, "line": 49, "offset": 784, @@ -622,20 +622,20 @@ Object { }, "type": "code", "value": "\`\`\`batch -cmd /C \\"set \\"GIT_USER=\\" && yarn deploy\\" +cmd /C "set "GIT_USER=" && yarn deploy" \`\`\`", }, - Object { + { "position": Position { - "end": Object { + "end": { "column": 31, "line": 54, "offset": 910, }, - "indent": Array [ + "indent": [ 1, ], - "start": Object { + "start": { "column": 1, "line": 53, "offset": 867, @@ -643,41 +643,41 @@ cmd /C \\"set \\"GIT_USER=\\" && yarn deploy\\" }, "type": "jsx", "value": " - ", + ", }, - Object { + { "lang": "powershell", "meta": null, "position": Position { - "end": Object { + "end": { "column": 4, "line": 58, "offset": 986, }, - "indent": Array [ + "indent": [ 1, 1, ], - "start": Object { + "start": { "column": 1, "line": 56, "offset": 912, }, }, "type": "code", - "value": "cmd /C 'set \\"GIT_USER=\\" && yarn deploy'", + "value": "cmd /C 'set "GIT_USER=" && yarn deploy'", }, - Object { + { "position": Position { - "end": Object { + "end": { "column": 8, "line": 61, "offset": 1008, }, - "indent": Array [ + "indent": [ 1, ], - "start": Object { + "start": { "column": 1, "line": 60, "offset": 988, @@ -687,17 +687,17 @@ cmd /C \\"set \\"GIT_USER=\\" && yarn deploy\\" "value": " ", }, - Object { - "children": Array [ - Object { + { + "children": [ + { "position": Position { - "end": Object { + "end": { "column": 55, "line": 63, "offset": 1064, }, - "indent": Array [], - "start": Object { + "indent": [], + "start": { "column": 4, "line": 63, "offset": 1013, @@ -709,13 +709,13 @@ cmd /C \\"set \\"GIT_USER=\\" && yarn deploy\\" ], "depth": 2, "position": Position { - "end": Object { + "end": { "column": 55, "line": 63, "offset": 1064, }, - "indent": Array [], - "start": Object { + "indent": [], + "start": { "column": 1, "line": 63, "offset": 1010, @@ -723,16 +723,16 @@ cmd /C \\"set \\"GIT_USER=\\" && yarn deploy\\" }, "type": "heading", }, - Object { + { "lang": "mdx-code-block", "meta": null, "position": Position { - "end": Object { + "end": { "column": 5, "line": 95, "offset": 1585, }, - "indent": Array [ + "indent": [ 1, 1, 1, @@ -764,7 +764,7 @@ cmd /C \\"set \\"GIT_USER=\\" && yarn deploy\\" 1, 1, ], - "start": Object { + "start": { "column": 1, "line": 65, "offset": 1066, @@ -772,43 +772,43 @@ cmd /C \\"set \\"GIT_USER=\\" && yarn deploy\\" }, "type": "code", "value": " - + \`\`\`bash GIT_USER= yarn deploy \`\`\` - + \`\`\`batch -cmd /C \\"set \\"GIT_USER=\\" && yarn deploy\\" +cmd /C "set "GIT_USER=" && yarn deploy" \`\`\` - + \`\`\`powershell -cmd /C 'set \\"GIT_USER=\\" && yarn deploy' +cmd /C 'set "GIT_USER=" && yarn deploy' \`\`\` ", }, ], - "position": Object { - "end": Object { + "position": { + "end": { "column": 1, "line": 96, "offset": 1586, }, - "start": Object { + "start": { "column": 1, "line": 1, "offset": 0, diff --git a/packages/docusaurus-mdx-loader/src/remark/unwrapMdxCodeBlocks/__tests__/index.test.ts b/packages/docusaurus-mdx-loader/src/remark/unwrapMdxCodeBlocks/__tests__/index.test.ts index fa49602667c5..13fe031f5b84 100644 --- a/packages/docusaurus-mdx-loader/src/remark/unwrapMdxCodeBlocks/__tests__/index.test.ts +++ b/packages/docusaurus-mdx-loader/src/remark/unwrapMdxCodeBlocks/__tests__/index.test.ts @@ -5,33 +5,31 @@ * LICENSE file in the root directory of this source tree. */ -import {join} from 'path'; +import path from 'path'; import remark from 'remark'; import mdx from 'remark-mdx'; import vfile from 'to-vfile'; import plugin from '..'; -const processFixture = async (name) => { - const path = join(__dirname, '__fixtures__', name); - const file = await vfile.read(path); +const processFixture = async (name: string) => { + const file = await vfile.read(path.join(__dirname, '__fixtures__', name)); const result = await remark().use(mdx).use(plugin).process(file); return result.toString(); }; -const processFixtureAST = async (name) => { - const path = join(__dirname, '__fixtures__', name); - const file = await vfile.read(path); +const processFixtureAST = async (name: string) => { + const file = await vfile.read(path.join(__dirname, '__fixtures__', name)); return remark().use(mdx).use(plugin).parse(file); }; -describe('unwrapMdxCodeBlocks', () => { - test('should unwrap the mdx code blocks', async () => { +describe('unwrapMdxCodeBlocks remark plugin', () => { + it('unwraps the mdx code blocks', async () => { const result = await processFixture('has-mdx-code-blocks.mdx'); expect(result).toMatchSnapshot(); }); // The AST output should be parsed correctly or the MDX loader won't work! - test('should unwrap the mdx code blocks AST', async () => { + it('unwraps the mdx code blocks AST', async () => { const result = await processFixtureAST('has-mdx-code-blocks.mdx'); expect(result).toMatchSnapshot(); }); diff --git a/packages/docusaurus-mdx-loader/src/remark/unwrapMdxCodeBlocks/index.ts b/packages/docusaurus-mdx-loader/src/remark/unwrapMdxCodeBlocks/index.ts index 82493e58c4cb..07aee3daeb89 100644 --- a/packages/docusaurus-mdx-loader/src/remark/unwrapMdxCodeBlocks/index.ts +++ b/packages/docusaurus-mdx-loader/src/remark/unwrapMdxCodeBlocks/index.ts @@ -17,7 +17,7 @@ import type {Code, Parent} from 'mdast'; // See https://github.com/facebook/docusaurus/pull/4278 export default function plugin(this: Processor): Transformer { return (root) => { - visit(root, 'code', (node: Code, _index, parent) => { + visit(root, 'code', (node: Code, index, parent) => { if (node.lang === 'mdx-code-block') { const newChildren = (this.parse(node.value) as Parent).children; diff --git a/packages/docusaurus-mdx-loader/src/remark/utils/index.ts b/packages/docusaurus-mdx-loader/src/remark/utils/index.ts index e735eea28e33..3bf275085bf5 100644 --- a/packages/docusaurus-mdx-loader/src/remark/utils/index.ts +++ b/packages/docusaurus-mdx-loader/src/remark/utils/index.ts @@ -15,7 +15,7 @@ export function stringifyContent(node: Parent): string { } export function toValue(node: PhrasingContent | Heading): string { - switch (node?.type) { + switch (node.type) { case 'text': return escapeHtml(node.value); case 'heading': @@ -31,7 +31,6 @@ export function toValue(node: PhrasingContent | Heading): string { case 'link': return stringifyContent(node); default: + return toString(node); } - - return toString(node); } diff --git a/packages/docusaurus-mdx-loader/tsconfig.json b/packages/docusaurus-mdx-loader/tsconfig.json index aee99fc0f38e..3cdfe2a88c91 100644 --- a/packages/docusaurus-mdx-loader/tsconfig.json +++ b/packages/docusaurus-mdx-loader/tsconfig.json @@ -1,11 +1,16 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "noEmit": false, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", "sourceMap": true, "declarationMap": true, + "module": "commonjs", "rootDir": "src", - "outDir": "lib" - } + "outDir": "lib", + "types": [] + }, + "include": ["src"], + "exclude": ["**/__tests__/**"] } diff --git a/packages/docusaurus-migrate/.npmignore b/packages/docusaurus-migrate/.npmignore index ba8304029eb7..e4132af42172 100644 --- a/packages/docusaurus-migrate/.npmignore +++ b/packages/docusaurus-migrate/.npmignore @@ -1,5 +1,4 @@ -copyUntypedFiles.mjs -.tsbuildinfo +.tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-migrate/bin/index.mjs b/packages/docusaurus-migrate/bin/index.mjs index baf72762aeb7..8be0d9d3bc9d 100755 --- a/packages/docusaurus-migrate/bin/index.mjs +++ b/packages/docusaurus-migrate/bin/index.mjs @@ -8,14 +8,16 @@ // @ts-check +import path from 'path'; +import {createRequire} from 'module'; import logger from '@docusaurus/logger'; import semver from 'semver'; import cli from 'commander'; -import path from 'path'; -import {createRequire} from 'module'; const moduleRequire = createRequire(import.meta.url); -const requiredVersion = moduleRequire('../package.json').engines.node; +const requiredVersion = /** @type {import("../package.json")} */ ( + moduleRequire('../package.json') +).engines.node; if (!semver.satisfies(process.version, requiredVersion)) { logger.error('Minimum Node.js version not met :('); @@ -25,26 +27,26 @@ if (!semver.satisfies(process.version, requiredVersion)) { // See https://github.com/facebook/docusaurus/pull/6860 const {migrateDocusaurusProject, migrateMDToMDX} = - moduleRequire('../lib/index.js'); + /** @type {import("../lib/index.js")} */ (moduleRequire('../lib/index.js')); cli .command('migrate [siteDir] [newDir]') .option('--mdx', 'try to migrate MD to MDX too') .option('--page', 'try to migrate pages too') .description('Migrate between versions of Docusaurus website.') - .action((siteDir = '.', newDir = '.', {mdx, page} = {}) => { + .action(async (siteDir = '.', newDir = '.', {mdx, page} = {}) => { const sitePath = path.resolve(siteDir); const newSitePath = path.resolve(newDir); - migrateDocusaurusProject(sitePath, newSitePath, mdx, page); + await migrateDocusaurusProject(sitePath, newSitePath, mdx, page); }); cli .command('mdx [siteDir] [newDir]') .description('Migrate markdown files to MDX.') - .action((siteDir = '.', newDir = '.') => { + .action(async (siteDir = '.', newDir = '.') => { const sitePath = path.resolve(siteDir); const newSitePath = path.resolve(newDir); - migrateMDToMDX(sitePath, newSitePath); + await migrateMDToMDX(sitePath, newSitePath); }); cli.parse(process.argv); diff --git a/packages/docusaurus-migrate/package.json b/packages/docusaurus-migrate/package.json index abf7fc7be3b5..efd00b2b2f2a 100644 --- a/packages/docusaurus-migrate/package.json +++ b/packages/docusaurus-migrate/package.json @@ -1,14 +1,14 @@ { "name": "@docusaurus/migrate", - "version": "2.0.0-beta.17", + "version": "2.0.0-beta.21", "description": "A CLI tool to migrate from older versions of Docusaurus.", "license": "MIT", "engines": { - "node": ">=14" + "node": ">=16.14" }, "scripts": { - "build": "tsc -p tsconfig.build.json", - "watch": "tsc -p tsconfig.build.json --watch" + "build": "tsc --build", + "watch": "tsc --build --watch" }, "repository": { "type": "git", @@ -22,27 +22,28 @@ "docusaurus-migrate": "bin/index.mjs" }, "dependencies": { - "@babel/preset-env": "^7.16.11", - "@docusaurus/logger": "2.0.0-beta.17", - "@docusaurus/utils": "2.0.0-beta.17", + "@babel/core": "^7.18.2", + "@babel/preset-env": "^7.18.2", + "@docusaurus/logger": "2.0.0-beta.21", + "@docusaurus/utils": "2.0.0-beta.21", "@mapbox/hast-util-to-jsx": "^2.0.0", - "color": "^4.0.1", + "color": "^4.2.3", "commander": "^5.1.0", - "fs-extra": "^10.0.1", + "fs-extra": "^10.1.0", "hast-util-to-string": "^1.0.4", - "html-tags": "^3.1.0", + "html-tags": "^3.2.0", "import-fresh": "^3.3.0", - "jscodeshift": "^0.13.0", + "jscodeshift": "^0.13.1", "rehype-parse": "^7.0.1", "remark-parse": "^8.0.2", "remark-stringify": "^8.1.0", - "semver": "^7.3.4", - "tslib": "^2.3.1", - "unified": "^9.2.1", - "unist-util-visit": "^2.0.2" + "semver": "^7.3.7", + "tslib": "^2.4.0", + "unified": "^9.2.2", + "unist-util-visit": "^2.0.3" }, "devDependencies": { "@types/color": "^3.0.3", - "@types/jscodeshift": "^0.11.2" + "@types/jscodeshift": "^0.11.5" } } diff --git a/packages/docusaurus-migrate/src/__tests__/__snapshots__/index.test.ts.snap b/packages/docusaurus-migrate/src/__tests__/__snapshots__/index.test.ts.snap new file mode 100644 index 000000000000..4fd3d63d75ff --- /dev/null +++ b/packages/docusaurus-migrate/src/__tests__/__snapshots__/index.test.ts.snap @@ -0,0 +1,565 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`migration CLI migrates complex website: copy 1`] = ` +[ + [ + "/packages/docusaurus-migrate/src/__tests__/__fixtures__/complex_website/website/blog", + "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_complex_site/blog", + ], + [ + "/packages/docusaurus-migrate/src/__tests__/__fixtures__/complex_website/website/pages/en", + "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_complex_site/src/pages", + ], + [ + "/packages/docusaurus-migrate/src/__tests__/__fixtures__/complex_website/website/static", + "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_complex_site/static", + ], +] +`; + +exports[`migration CLI migrates complex website: mkdirp 1`] = ` +[ + [ + "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_complex_site/src/pages", + ], +] +`; + +exports[`migration CLI migrates complex website: mkdirs 1`] = `[]`; + +exports[`migration CLI migrates complex website: write 1`] = ` +[ + [ + "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_complex_site/docusaurus.config.js", + "module.exports={ + "title": "Docusaurus", + "tagline": "Easy to Maintain Open Source Documentation Websites", + "url": "https://docusaurus.io", + "baseUrl": "/", + "organizationName": "facebook", + "projectName": "docusaurus", + "noIndex": false, + "scripts": [ + "https://buttons.github.io/buttons.js", + "https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js", + "/js/code-blocks-buttons.js" + ], + "favicon": "img/docusaurus.ico", + "customFields": { + "users": { + "caption": "DevSpace", + "image": "/img/users/devspace.svg", + "infoLink": "https://devspace.cloud/docs/", + "fbOpenSource": false, + "pinned": false + }, + "translationRecruitingLink": "https://crowdin.com/project/docusaurus", + "facebookAppId": "199138890728411" + }, + "onBrokenLinks": "log", + "onBrokenMarkdownLinks": "log", + "presets": [ + [ + "@docusaurus/preset-classic", + { + "docs": { + "showLastUpdateAuthor": true, + "showLastUpdateTime": true, + "editUrl": "https://github.com/facebook/docusaurus/edit/main/docs/" + }, + "blog": {}, + "theme": { + "customCss": "../complex_website/src/css/customTheme.css" + }, + "googleAnalytics": { + "trackingID": "UA-44373548-31" + } + } + ] + ], + "plugins": [], + "themeConfig": { + "navbar": { + "title": "Docusaurus", + "logo": { + "src": "img/docusaurus.svg" + }, + "items": [ + { + "to": "docs/installation", + "label": "Docs", + "position": "left" + }, + { + "to": "docs/tutorial-setup", + "label": "Tutorial", + "position": "left" + }, + { + "to": "/users", + "label": "Users", + "position": "left" + }, + { + "href": "https://github.com/facebook/docusaurus", + "label": "GitHub", + "position": "left" + } + ] + }, + "image": "img/docusaurus.png", + "footer": { + "links": [ + { + "title": "Community", + "items": [ + { + "label": "Twitter", + "to": "https://twitter.com/docusaurus" + } + ] + } + ], + "copyright": "Copyright © 2022 Facebook Inc.", + "logo": { + "src": "img/docusaurus_monochrome.svg" + } + }, + "algolia": { + "apiKey": "3eb9507824b8be89e7a199ecaa1a9d2c", + "indexName": "docusaurus", + "algoliaOptions": { + "facetFilters": [ + "language:LANGUAGE", + "version:VERSION" + ] + } + } + } +}", + ], + [ + "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_complex_site/package.json", + "{ + "name": "docusaurus-1-website", + "version": "2.0.0-alpha.58", + "private": true, + "scripts": { + "start": "docusaurus start", + "build": "docusaurus build", + "publish-gh-pages": "docusaurus-publish", + "examples": "docusaurus-examples", + "write-translations": "docusaurus-write-translations", + "docusaurus-version": "docusaurus-version", + "rename-version": "docusaurus-rename-version", + "crowdin-upload": "crowdin --config ../crowdin.yaml upload sources --auto-update -b master", + "crowdin-download": "crowdin --config ../crowdin.yaml download -b master", + "swizzle": "docusaurus swizzle", + "deploy": "docusaurus deploy", + "docusaurus": "docusaurus" + }, + "dependencies": { + "@docusaurus/core": "", + "@docusaurus/preset-classic": "", + "clsx": "^1.1.1", + "react": "^17.0.2", + "react-dom": "^17.0.2" + } +}", + ], + [ + "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_complex_site/src/css/customTheme.css", + ":root{ + --ifm-color-primary-lightest: #3CAD6E; + --ifm-color-primary-lighter: #359962; + --ifm-color-primary-light: #33925D; + --ifm-color-primary: #2E8555; + --ifm-color-primary-dark: #29784C; + --ifm-color-primary-darker: #277148; + --ifm-color-primary-darkest: #205D3B; +} +", + ], +] +`; + +exports[`migration CLI migrates missing versions: copy 1`] = ` +[ + [ + "/packages/docusaurus-migrate/src/__tests__/__fixtures__/missing_version_website/website/blog", + "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_missing_version_site/blog", + ], + [ + "/packages/docusaurus-migrate/src/__tests__/__fixtures__/missing_version_website/website/pages/en", + "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_missing_version_site/src/pages", + ], + [ + "/packages/docusaurus-migrate/src/__tests__/__fixtures__/missing_version_website/website/static", + "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_missing_version_site/static", + ], +] +`; + +exports[`migration CLI migrates missing versions: mkdirp 1`] = ` +[ + [ + "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_missing_version_site/src/pages", + ], +] +`; + +exports[`migration CLI migrates missing versions: mkdirs 1`] = `[]`; + +exports[`migration CLI migrates missing versions: write 1`] = ` +[ + [ + "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_missing_version_site/docusaurus.config.js", + "module.exports={ + "title": "Docusaurus", + "tagline": "Easy to Maintain Open Source Documentation Websites", + "url": "https://docusaurus.io", + "baseUrl": "/", + "organizationName": "facebook", + "projectName": "docusaurus", + "noIndex": false, + "scripts": [ + "https://buttons.github.io/buttons.js", + "https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js", + "/js/code-blocks-buttons.js" + ], + "favicon": "img/docusaurus.ico", + "customFields": { + "users": { + "caption": "DevSpace", + "image": "/img/users/devspace.svg", + "infoLink": "https://devspace.cloud/docs/", + "fbOpenSource": false, + "pinned": false + }, + "translationRecruitingLink": "https://crowdin.com/project/docusaurus", + "facebookAppId": "199138890728411" + }, + "onBrokenLinks": "log", + "onBrokenMarkdownLinks": "log", + "presets": [ + [ + "@docusaurus/preset-classic", + { + "docs": { + "showLastUpdateAuthor": true, + "showLastUpdateTime": true, + "editUrl": "https://github.com/facebook/docusaurus/edit/main/docs/" + }, + "blog": {}, + "theme": { + "customCss": "../missing_version_website/src/css/customTheme.css" + }, + "googleAnalytics": { + "trackingID": "UA-44373548-31" + } + } + ] + ], + "plugins": [], + "themeConfig": { + "navbar": { + "title": "Docusaurus", + "logo": { + "src": "img/docusaurus.svg" + }, + "items": [ + { + "to": "docs/installation", + "label": "Docs", + "position": "left" + }, + { + "to": "docs/tutorial-setup", + "label": "Tutorial", + "position": "left" + }, + { + "to": "/users", + "label": "Users", + "position": "left" + }, + { + "href": "https://github.com/facebook/docusaurus", + "label": "GitHub", + "position": "left" + } + ] + }, + "image": "img/docusaurus.png", + "footer": { + "links": [ + { + "title": "Community", + "items": [ + { + "label": "Twitter", + "to": "https://twitter.com/docusaurus" + } + ] + } + ], + "copyright": "Copyright © 2022 Facebook Inc.", + "logo": { + "src": "img/docusaurus_monochrome.svg" + } + }, + "algolia": { + "apiKey": "3eb9507824b8be89e7a199ecaa1a9d2c", + "indexName": "docusaurus", + "algoliaOptions": { + "facetFilters": [ + "language:LANGUAGE", + "version:VERSION" + ] + } + } + } +}", + ], + [ + "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_missing_version_site/package.json", + "{ + "name": "docusaurus-1-website", + "version": "2.0.0-alpha.58", + "private": true, + "scripts": { + "start": "docusaurus start", + "build": "docusaurus build", + "publish-gh-pages": "docusaurus-publish", + "examples": "docusaurus-examples", + "write-translations": "docusaurus-write-translations", + "docusaurus-version": "docusaurus-version", + "rename-version": "docusaurus-rename-version", + "crowdin-upload": "crowdin --config ../crowdin.yaml upload sources --auto-update -b master", + "crowdin-download": "crowdin --config ../crowdin.yaml download -b master", + "swizzle": "docusaurus swizzle", + "deploy": "docusaurus deploy", + "docusaurus": "docusaurus" + }, + "dependencies": { + "@docusaurus/core": "", + "@docusaurus/preset-classic": "", + "clsx": "^1.1.1", + "react": "^17.0.2", + "react-dom": "^17.0.2" + } +}", + ], + [ + "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_missing_version_site/src/css/customTheme.css", + ":root{ + --ifm-color-primary-lightest: #3CAD6E; + --ifm-color-primary-lighter: #359962; + --ifm-color-primary-light: #33925D; + --ifm-color-primary: #2E8555; + --ifm-color-primary-dark: #29784C; + --ifm-color-primary-darker: #277148; + --ifm-color-primary-darkest: #205D3B; +} +", + ], +] +`; + +exports[`migration CLI migrates simple website: copy 1`] = ` +[ + [ + "/packages/docusaurus-migrate/src/__tests__/__fixtures__/simple_website/website/pages/en", + "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_simple_site/src/pages", + ], + [ + "/packages/docusaurus-migrate/src/__tests__/__fixtures__/simple_website/website/static", + "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_simple_site/static", + ], +] +`; + +exports[`migration CLI migrates simple website: mkdirp 1`] = ` +[ + [ + "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_simple_site/src/pages", + ], +] +`; + +exports[`migration CLI migrates simple website: mkdirs 1`] = `[]`; + +exports[`migration CLI migrates simple website: write 1`] = ` +[ + [ + "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_simple_site/docusaurus.config.js", + "module.exports={ + "title": "Docusaurus", + "tagline": "Easy to Maintain Open Source Documentation Websites", + "url": "https://docusaurus.io", + "baseUrl": "/", + "organizationName": "facebook", + "projectName": "docusaurus", + "noIndex": false, + "scripts": [ + "https://buttons.github.io/buttons.js", + "https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js", + "/js/code-blocks-buttons.js" + ], + "favicon": "img/docusaurus.ico", + "customFields": { + "users": { + "caption": "DevSpace", + "image": "/img/users/devspace.svg", + "infoLink": "https://devspace.cloud/docs/", + "fbOpenSource": false, + "pinned": false + }, + "translationRecruitingLink": "https://crowdin.com/project/docusaurus", + "facebookAppId": "199138890728411" + }, + "onBrokenLinks": "log", + "onBrokenMarkdownLinks": "log", + "presets": [ + [ + "@docusaurus/preset-classic", + { + "docs": { + "showLastUpdateAuthor": true, + "showLastUpdateTime": true, + "editUrl": "https://github.com/facebook/docusaurus/edit/main/docs/", + "path": "../simple_website/docs" + }, + "blog": {}, + "theme": { + "customCss": "../simple_website/src/css/customTheme.css" + }, + "googleAnalytics": { + "trackingID": "UA-44373548-31" + } + } + ] + ], + "plugins": [], + "themeConfig": { + "navbar": { + "title": "Docusaurus", + "logo": { + "src": "img/docusaurus.svg" + }, + "items": [ + { + "to": "docs/installation", + "label": "Docs", + "position": "left" + }, + { + "to": "docs/tutorial-setup", + "label": "Tutorial", + "position": "left" + }, + { + "to": "/users", + "label": "Users", + "position": "left" + }, + { + "href": "https://github.com/facebook/docusaurus", + "label": "GitHub", + "position": "left" + } + ] + }, + "image": "img/docusaurus.png", + "footer": { + "links": [ + { + "title": "Community", + "items": [ + { + "label": "Twitter", + "to": "https://twitter.com/docusaurus" + } + ] + } + ], + "copyright": "Copyright © 2022 Facebook Inc.", + "logo": { + "src": "img/docusaurus_monochrome.svg" + } + }, + "algolia": { + "apiKey": "3eb9507824b8be89e7a199ecaa1a9d2c", + "indexName": "docusaurus", + "algoliaOptions": { + "facetFilters": [ + "language:LANGUAGE", + "version:VERSION" + ] + } + } + } +}", + ], + [ + "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_simple_site/package.json", + "{ + "name": "docusaurus-1-website", + "version": "2.0.0-alpha.58", + "private": true, + "scripts": { + "start": "docusaurus start", + "build": "docusaurus build", + "publish-gh-pages": "docusaurus-publish", + "examples": "docusaurus-examples", + "write-translations": "docusaurus-write-translations", + "docusaurus-version": "docusaurus-version", + "rename-version": "docusaurus-rename-version", + "crowdin-upload": "crowdin --config ../crowdin.yaml upload sources --auto-update -b master", + "crowdin-download": "crowdin --config ../crowdin.yaml download -b master", + "swizzle": "docusaurus swizzle", + "deploy": "docusaurus deploy", + "docusaurus": "docusaurus" + }, + "dependencies": { + "@docusaurus/core": "", + "@docusaurus/preset-classic": "", + "clsx": "^1.1.1", + "react": "^17.0.2", + "react-dom": "^17.0.2" + } +}", + ], + [ + "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_simple_site/src/css/customTheme.css", + ":root{ + --ifm-color-primary-lightest: #3CAD6E; + --ifm-color-primary-lighter: #359962; + --ifm-color-primary-light: #33925D; + --ifm-color-primary: #2E8555; + --ifm-color-primary-dark: #29784C; + --ifm-color-primary-darker: #277148; + --ifm-color-primary-darkest: #205D3B; +} +", + ], + [ + "/packages/docusaurus-migrate/src/__tests__/__fixtures__/simple_website/docs/api-commands.md", + "--- +id: commands +title: CLI Commands +--- +## Doc +", + ], + [ + "/packages/docusaurus-migrate/src/__tests__/__fixtures__/simple_website/docs/api-doc-markdown.md", + "--- +id: doc-markdown +title: Markdown Features +--- +## Doc +", + ], +] +`; diff --git a/packages/docusaurus-migrate/src/__tests__/__snapshots__/migration.test.ts.snap b/packages/docusaurus-migrate/src/__tests__/__snapshots__/migration.test.ts.snap deleted file mode 100644 index b5be0f1ead24..000000000000 --- a/packages/docusaurus-migrate/src/__tests__/__snapshots__/migration.test.ts.snap +++ /dev/null @@ -1,565 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`migration test complex website: copy 1`] = ` -Array [ - Array [ - "/packages/docusaurus-migrate/src/__tests__/__fixtures__/complex_website/website/blog", - "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_complex_site/blog", - ], - Array [ - "/packages/docusaurus-migrate/src/__tests__/__fixtures__/complex_website/website/pages/en", - "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_complex_site/src/pages", - ], - Array [ - "/packages/docusaurus-migrate/src/__tests__/__fixtures__/complex_website/website/static", - "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_complex_site/static", - ], -] -`; - -exports[`migration test complex website: mkdirp 1`] = ` -Array [ - Array [ - "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_complex_site/src/pages", - ], -] -`; - -exports[`migration test complex website: mkdirs 1`] = `Array []`; - -exports[`migration test complex website: write 1`] = ` -Array [ - Array [ - "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_complex_site/docusaurus.config.js", - "module.exports={ - \\"title\\": \\"Docusaurus\\", - \\"tagline\\": \\"Easy to Maintain Open Source Documentation Websites\\", - \\"url\\": \\"https://docusaurus.io\\", - \\"baseUrl\\": \\"/\\", - \\"organizationName\\": \\"facebook\\", - \\"projectName\\": \\"docusaurus\\", - \\"noIndex\\": false, - \\"scripts\\": [ - \\"https://buttons.github.io/buttons.js\\", - \\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js\\", - \\"/js/code-blocks-buttons.js\\" - ], - \\"favicon\\": \\"img/docusaurus.ico\\", - \\"customFields\\": { - \\"users\\": { - \\"caption\\": \\"DevSpace\\", - \\"image\\": \\"/img/users/devspace.svg\\", - \\"infoLink\\": \\"https://devspace.cloud/docs/\\", - \\"fbOpenSource\\": false, - \\"pinned\\": false - }, - \\"translationRecruitingLink\\": \\"https://crowdin.com/project/docusaurus\\", - \\"facebookAppId\\": \\"199138890728411\\" - }, - \\"onBrokenLinks\\": \\"log\\", - \\"onBrokenMarkdownLinks\\": \\"log\\", - \\"presets\\": [ - [ - \\"@docusaurus/preset-classic\\", - { - \\"docs\\": { - \\"showLastUpdateAuthor\\": true, - \\"showLastUpdateTime\\": true, - \\"editUrl\\": \\"https://github.com/facebook/docusaurus/edit/main/docs/\\" - }, - \\"blog\\": {}, - \\"theme\\": { - \\"customCss\\": \\"../complex_website/src/css/customTheme.css\\" - }, - \\"googleAnalytics\\": { - \\"trackingID\\": \\"UA-44373548-31\\" - } - } - ] - ], - \\"plugins\\": [], - \\"themeConfig\\": { - \\"navbar\\": { - \\"title\\": \\"Docusaurus\\", - \\"logo\\": { - \\"src\\": \\"img/docusaurus.svg\\" - }, - \\"items\\": [ - { - \\"to\\": \\"docs/installation\\", - \\"label\\": \\"Docs\\", - \\"position\\": \\"left\\" - }, - { - \\"to\\": \\"docs/tutorial-setup\\", - \\"label\\": \\"Tutorial\\", - \\"position\\": \\"left\\" - }, - { - \\"to\\": \\"/users\\", - \\"label\\": \\"Users\\", - \\"position\\": \\"left\\" - }, - { - \\"href\\": \\"https://github.com/facebook/docusaurus\\", - \\"label\\": \\"GitHub\\", - \\"position\\": \\"left\\" - } - ] - }, - \\"image\\": \\"img/docusaurus.png\\", - \\"footer\\": { - \\"links\\": [ - { - \\"title\\": \\"Community\\", - \\"items\\": [ - { - \\"label\\": \\"Twitter\\", - \\"to\\": \\"https://twitter.com/docusaurus\\" - } - ] - } - ], - \\"copyright\\": \\"Copyright © 2022 Facebook Inc.\\", - \\"logo\\": { - \\"src\\": \\"img/docusaurus_monochrome.svg\\" - } - }, - \\"algolia\\": { - \\"apiKey\\": \\"3eb9507824b8be89e7a199ecaa1a9d2c\\", - \\"indexName\\": \\"docusaurus\\", - \\"algoliaOptions\\": { - \\"facetFilters\\": [ - \\"language:LANGUAGE\\", - \\"version:VERSION\\" - ] - } - } - } -}", - ], - Array [ - "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_complex_site/package.json", - "{ - \\"name\\": \\"docusaurus-1-website\\", - \\"version\\": \\"2.0.0-alpha.58\\", - \\"private\\": true, - \\"scripts\\": { - \\"start\\": \\"docusaurus start\\", - \\"build\\": \\"docusaurus build\\", - \\"publish-gh-pages\\": \\"docusaurus-publish\\", - \\"examples\\": \\"docusaurus-examples\\", - \\"write-translations\\": \\"docusaurus-write-translations\\", - \\"docusaurus-version\\": \\"docusaurus-version\\", - \\"rename-version\\": \\"docusaurus-rename-version\\", - \\"crowdin-upload\\": \\"crowdin --config ../crowdin.yaml upload sources --auto-update -b master\\", - \\"crowdin-download\\": \\"crowdin --config ../crowdin.yaml download -b master\\", - \\"swizzle\\": \\"docusaurus swizzle\\", - \\"deploy\\": \\"docusaurus deploy\\", - \\"docusaurus\\": \\"docusaurus\\" - }, - \\"dependencies\\": { - \\"@docusaurus/core\\": \\"\\", - \\"@docusaurus/preset-classic\\": \\"\\", - \\"clsx\\": \\"^1.1.1\\", - \\"react\\": \\"^17.0.2\\", - \\"react-dom\\": \\"^17.0.2\\" - } -}", - ], - Array [ - "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_complex_site/src/css/customTheme.css", - ":root{ - --ifm-color-primary-lightest: #3CAD6E; - --ifm-color-primary-lighter: #359962; - --ifm-color-primary-light: #33925D; - --ifm-color-primary: #2E8555; - --ifm-color-primary-dark: #29784C; - --ifm-color-primary-darker: #277148; - --ifm-color-primary-darkest: #205D3B; -} -", - ], -] -`; - -exports[`migration test missing versions: copy 1`] = ` -Array [ - Array [ - "/packages/docusaurus-migrate/src/__tests__/__fixtures__/missing_version_website/website/blog", - "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_missing_version_site/blog", - ], - Array [ - "/packages/docusaurus-migrate/src/__tests__/__fixtures__/missing_version_website/website/pages/en", - "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_missing_version_site/src/pages", - ], - Array [ - "/packages/docusaurus-migrate/src/__tests__/__fixtures__/missing_version_website/website/static", - "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_missing_version_site/static", - ], -] -`; - -exports[`migration test missing versions: mkdirp 1`] = ` -Array [ - Array [ - "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_missing_version_site/src/pages", - ], -] -`; - -exports[`migration test missing versions: mkdirs 1`] = `Array []`; - -exports[`migration test missing versions: write 1`] = ` -Array [ - Array [ - "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_missing_version_site/docusaurus.config.js", - "module.exports={ - \\"title\\": \\"Docusaurus\\", - \\"tagline\\": \\"Easy to Maintain Open Source Documentation Websites\\", - \\"url\\": \\"https://docusaurus.io\\", - \\"baseUrl\\": \\"/\\", - \\"organizationName\\": \\"facebook\\", - \\"projectName\\": \\"docusaurus\\", - \\"noIndex\\": false, - \\"scripts\\": [ - \\"https://buttons.github.io/buttons.js\\", - \\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js\\", - \\"/js/code-blocks-buttons.js\\" - ], - \\"favicon\\": \\"img/docusaurus.ico\\", - \\"customFields\\": { - \\"users\\": { - \\"caption\\": \\"DevSpace\\", - \\"image\\": \\"/img/users/devspace.svg\\", - \\"infoLink\\": \\"https://devspace.cloud/docs/\\", - \\"fbOpenSource\\": false, - \\"pinned\\": false - }, - \\"translationRecruitingLink\\": \\"https://crowdin.com/project/docusaurus\\", - \\"facebookAppId\\": \\"199138890728411\\" - }, - \\"onBrokenLinks\\": \\"log\\", - \\"onBrokenMarkdownLinks\\": \\"log\\", - \\"presets\\": [ - [ - \\"@docusaurus/preset-classic\\", - { - \\"docs\\": { - \\"showLastUpdateAuthor\\": true, - \\"showLastUpdateTime\\": true, - \\"editUrl\\": \\"https://github.com/facebook/docusaurus/edit/main/docs/\\" - }, - \\"blog\\": {}, - \\"theme\\": { - \\"customCss\\": \\"../missing_version_website/src/css/customTheme.css\\" - }, - \\"googleAnalytics\\": { - \\"trackingID\\": \\"UA-44373548-31\\" - } - } - ] - ], - \\"plugins\\": [], - \\"themeConfig\\": { - \\"navbar\\": { - \\"title\\": \\"Docusaurus\\", - \\"logo\\": { - \\"src\\": \\"img/docusaurus.svg\\" - }, - \\"items\\": [ - { - \\"to\\": \\"docs/installation\\", - \\"label\\": \\"Docs\\", - \\"position\\": \\"left\\" - }, - { - \\"to\\": \\"docs/tutorial-setup\\", - \\"label\\": \\"Tutorial\\", - \\"position\\": \\"left\\" - }, - { - \\"to\\": \\"/users\\", - \\"label\\": \\"Users\\", - \\"position\\": \\"left\\" - }, - { - \\"href\\": \\"https://github.com/facebook/docusaurus\\", - \\"label\\": \\"GitHub\\", - \\"position\\": \\"left\\" - } - ] - }, - \\"image\\": \\"img/docusaurus.png\\", - \\"footer\\": { - \\"links\\": [ - { - \\"title\\": \\"Community\\", - \\"items\\": [ - { - \\"label\\": \\"Twitter\\", - \\"to\\": \\"https://twitter.com/docusaurus\\" - } - ] - } - ], - \\"copyright\\": \\"Copyright © 2022 Facebook Inc.\\", - \\"logo\\": { - \\"src\\": \\"img/docusaurus_monochrome.svg\\" - } - }, - \\"algolia\\": { - \\"apiKey\\": \\"3eb9507824b8be89e7a199ecaa1a9d2c\\", - \\"indexName\\": \\"docusaurus\\", - \\"algoliaOptions\\": { - \\"facetFilters\\": [ - \\"language:LANGUAGE\\", - \\"version:VERSION\\" - ] - } - } - } -}", - ], - Array [ - "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_missing_version_site/package.json", - "{ - \\"name\\": \\"docusaurus-1-website\\", - \\"version\\": \\"2.0.0-alpha.58\\", - \\"private\\": true, - \\"scripts\\": { - \\"start\\": \\"docusaurus start\\", - \\"build\\": \\"docusaurus build\\", - \\"publish-gh-pages\\": \\"docusaurus-publish\\", - \\"examples\\": \\"docusaurus-examples\\", - \\"write-translations\\": \\"docusaurus-write-translations\\", - \\"docusaurus-version\\": \\"docusaurus-version\\", - \\"rename-version\\": \\"docusaurus-rename-version\\", - \\"crowdin-upload\\": \\"crowdin --config ../crowdin.yaml upload sources --auto-update -b master\\", - \\"crowdin-download\\": \\"crowdin --config ../crowdin.yaml download -b master\\", - \\"swizzle\\": \\"docusaurus swizzle\\", - \\"deploy\\": \\"docusaurus deploy\\", - \\"docusaurus\\": \\"docusaurus\\" - }, - \\"dependencies\\": { - \\"@docusaurus/core\\": \\"\\", - \\"@docusaurus/preset-classic\\": \\"\\", - \\"clsx\\": \\"^1.1.1\\", - \\"react\\": \\"^17.0.2\\", - \\"react-dom\\": \\"^17.0.2\\" - } -}", - ], - Array [ - "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_missing_version_site/src/css/customTheme.css", - ":root{ - --ifm-color-primary-lightest: #3CAD6E; - --ifm-color-primary-lighter: #359962; - --ifm-color-primary-light: #33925D; - --ifm-color-primary: #2E8555; - --ifm-color-primary-dark: #29784C; - --ifm-color-primary-darker: #277148; - --ifm-color-primary-darkest: #205D3B; -} -", - ], -] -`; - -exports[`migration test simple website: copy 1`] = ` -Array [ - Array [ - "/packages/docusaurus-migrate/src/__tests__/__fixtures__/simple_website/website/pages/en", - "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_simple_site/src/pages", - ], - Array [ - "/packages/docusaurus-migrate/src/__tests__/__fixtures__/simple_website/website/static", - "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_simple_site/static", - ], -] -`; - -exports[`migration test simple website: mkdirp 1`] = ` -Array [ - Array [ - "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_simple_site/src/pages", - ], -] -`; - -exports[`migration test simple website: mkdirs 1`] = `Array []`; - -exports[`migration test simple website: write 1`] = ` -Array [ - Array [ - "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_simple_site/docusaurus.config.js", - "module.exports={ - \\"title\\": \\"Docusaurus\\", - \\"tagline\\": \\"Easy to Maintain Open Source Documentation Websites\\", - \\"url\\": \\"https://docusaurus.io\\", - \\"baseUrl\\": \\"/\\", - \\"organizationName\\": \\"facebook\\", - \\"projectName\\": \\"docusaurus\\", - \\"noIndex\\": false, - \\"scripts\\": [ - \\"https://buttons.github.io/buttons.js\\", - \\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js\\", - \\"/js/code-blocks-buttons.js\\" - ], - \\"favicon\\": \\"img/docusaurus.ico\\", - \\"customFields\\": { - \\"users\\": { - \\"caption\\": \\"DevSpace\\", - \\"image\\": \\"/img/users/devspace.svg\\", - \\"infoLink\\": \\"https://devspace.cloud/docs/\\", - \\"fbOpenSource\\": false, - \\"pinned\\": false - }, - \\"translationRecruitingLink\\": \\"https://crowdin.com/project/docusaurus\\", - \\"facebookAppId\\": \\"199138890728411\\" - }, - \\"onBrokenLinks\\": \\"log\\", - \\"onBrokenMarkdownLinks\\": \\"log\\", - \\"presets\\": [ - [ - \\"@docusaurus/preset-classic\\", - { - \\"docs\\": { - \\"showLastUpdateAuthor\\": true, - \\"showLastUpdateTime\\": true, - \\"editUrl\\": \\"https://github.com/facebook/docusaurus/edit/main/docs/\\", - \\"path\\": \\"../simple_website/docs\\" - }, - \\"blog\\": {}, - \\"theme\\": { - \\"customCss\\": \\"../simple_website/src/css/customTheme.css\\" - }, - \\"googleAnalytics\\": { - \\"trackingID\\": \\"UA-44373548-31\\" - } - } - ] - ], - \\"plugins\\": [], - \\"themeConfig\\": { - \\"navbar\\": { - \\"title\\": \\"Docusaurus\\", - \\"logo\\": { - \\"src\\": \\"img/docusaurus.svg\\" - }, - \\"items\\": [ - { - \\"to\\": \\"docs/installation\\", - \\"label\\": \\"Docs\\", - \\"position\\": \\"left\\" - }, - { - \\"to\\": \\"docs/tutorial-setup\\", - \\"label\\": \\"Tutorial\\", - \\"position\\": \\"left\\" - }, - { - \\"to\\": \\"/users\\", - \\"label\\": \\"Users\\", - \\"position\\": \\"left\\" - }, - { - \\"href\\": \\"https://github.com/facebook/docusaurus\\", - \\"label\\": \\"GitHub\\", - \\"position\\": \\"left\\" - } - ] - }, - \\"image\\": \\"img/docusaurus.png\\", - \\"footer\\": { - \\"links\\": [ - { - \\"title\\": \\"Community\\", - \\"items\\": [ - { - \\"label\\": \\"Twitter\\", - \\"to\\": \\"https://twitter.com/docusaurus\\" - } - ] - } - ], - \\"copyright\\": \\"Copyright © 2022 Facebook Inc.\\", - \\"logo\\": { - \\"src\\": \\"img/docusaurus_monochrome.svg\\" - } - }, - \\"algolia\\": { - \\"apiKey\\": \\"3eb9507824b8be89e7a199ecaa1a9d2c\\", - \\"indexName\\": \\"docusaurus\\", - \\"algoliaOptions\\": { - \\"facetFilters\\": [ - \\"language:LANGUAGE\\", - \\"version:VERSION\\" - ] - } - } - } -}", - ], - Array [ - "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_simple_site/package.json", - "{ - \\"name\\": \\"docusaurus-1-website\\", - \\"version\\": \\"2.0.0-alpha.58\\", - \\"private\\": true, - \\"scripts\\": { - \\"start\\": \\"docusaurus start\\", - \\"build\\": \\"docusaurus build\\", - \\"publish-gh-pages\\": \\"docusaurus-publish\\", - \\"examples\\": \\"docusaurus-examples\\", - \\"write-translations\\": \\"docusaurus-write-translations\\", - \\"docusaurus-version\\": \\"docusaurus-version\\", - \\"rename-version\\": \\"docusaurus-rename-version\\", - \\"crowdin-upload\\": \\"crowdin --config ../crowdin.yaml upload sources --auto-update -b master\\", - \\"crowdin-download\\": \\"crowdin --config ../crowdin.yaml download -b master\\", - \\"swizzle\\": \\"docusaurus swizzle\\", - \\"deploy\\": \\"docusaurus deploy\\", - \\"docusaurus\\": \\"docusaurus\\" - }, - \\"dependencies\\": { - \\"@docusaurus/core\\": \\"\\", - \\"@docusaurus/preset-classic\\": \\"\\", - \\"clsx\\": \\"^1.1.1\\", - \\"react\\": \\"^17.0.2\\", - \\"react-dom\\": \\"^17.0.2\\" - } -}", - ], - Array [ - "/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_simple_site/src/css/customTheme.css", - ":root{ - --ifm-color-primary-lightest: #3CAD6E; - --ifm-color-primary-lighter: #359962; - --ifm-color-primary-light: #33925D; - --ifm-color-primary: #2E8555; - --ifm-color-primary-dark: #29784C; - --ifm-color-primary-darker: #277148; - --ifm-color-primary-darkest: #205D3B; -} -", - ], - Array [ - "/packages/docusaurus-migrate/src/__tests__/__fixtures__/simple_website/docs/api-commands.md", - "--- -id: commands -title: CLI Commands ---- -## Doc -", - ], - Array [ - "/packages/docusaurus-migrate/src/__tests__/__fixtures__/simple_website/docs/api-doc-markdown.md", - "--- -id: doc-markdown -title: Markdown Features ---- -## Doc -", - ], -] -`; diff --git a/packages/docusaurus-migrate/src/__tests__/frontMatter.test.ts b/packages/docusaurus-migrate/src/__tests__/frontMatter.test.ts index 1359b2b574ab..c75d885f34e5 100644 --- a/packages/docusaurus-migrate/src/__tests__/frontMatter.test.ts +++ b/packages/docusaurus-migrate/src/__tests__/frontMatter.test.ts @@ -7,21 +7,22 @@ import {shouldQuotifyFrontMatter} from '../frontMatter'; -describe('frontMatter', () => { - test('shouldQuotifyFrontMatter', () => { - expect(shouldQuotifyFrontMatter(['id', 'value'])).toEqual(false); +describe('shouldQuotifyFrontMatter', () => { + it('works', () => { + expect(shouldQuotifyFrontMatter(['id', 'value'])).toBe(false); expect( shouldQuotifyFrontMatter([ 'title', + // cSpell:ignore sàáâãäåçèéêëìíîïðòóôõöùúûüýÿ "Some title front matter with allowed special chars like sàáâãäåçèéêëìíîïðòóôõöùúûüýÿ!;,=+-_?'`&#()[]§%€$", ]), - ).toEqual(false); + ).toBe(false); - expect(shouldQuotifyFrontMatter(['title', 'Special char :'])).toEqual(true); + expect(shouldQuotifyFrontMatter(['title', 'Special char :'])).toBe(true); - expect(shouldQuotifyFrontMatter(['title', 'value!'])).toEqual(false); - expect(shouldQuotifyFrontMatter(['title', '!value'])).toEqual(true); + expect(shouldQuotifyFrontMatter(['title', 'value!'])).toBe(false); + expect(shouldQuotifyFrontMatter(['title', '!value'])).toBe(true); - expect(shouldQuotifyFrontMatter(['tags', '[tag1, tag2]'])).toEqual(false); + expect(shouldQuotifyFrontMatter(['tags', '[tag1, tag2]'])).toBe(false); }); }); diff --git a/packages/docusaurus-migrate/src/__tests__/migration.test.ts b/packages/docusaurus-migrate/src/__tests__/index.test.ts similarity index 76% rename from packages/docusaurus-migrate/src/__tests__/migration.test.ts rename to packages/docusaurus-migrate/src/__tests__/index.test.ts index d3b6bd631554..306f7e394a12 100644 --- a/packages/docusaurus-migrate/src/__tests__/migration.test.ts +++ b/packages/docusaurus-migrate/src/__tests__/index.test.ts @@ -5,35 +5,36 @@ * LICENSE file in the root directory of this source tree. */ -import {migrateDocusaurusProject} from '../index'; +import {jest} from '@jest/globals'; import path from 'path'; import fs from 'fs-extra'; import {posixPath} from '@docusaurus/utils'; +import {migrateDocusaurusProject} from '../index'; async function testMigration(siteDir: string, newDir: string) { - const writeMock = jest.spyOn(fs, 'outputFile').mockImplementation(); - const mkdirpMock = jest.spyOn(fs, 'mkdirp').mockImplementation(); - const mkdirsMock = jest.spyOn(fs, 'mkdirs').mockImplementation(); - const copyMock = jest.spyOn(fs, 'copy').mockImplementation(); + const writeMock = jest.spyOn(fs, 'outputFile').mockImplementation(() => {}); + const mkdirpMock = jest.spyOn(fs, 'mkdirp').mockImplementation(() => {}); + const mkdirsMock = jest.spyOn(fs, 'mkdirs').mockImplementation(() => {}); + const copyMock = jest.spyOn(fs, 'copy').mockImplementation(() => {}); await migrateDocusaurusProject(siteDir, newDir, true, true); expect( writeMock.mock.calls.sort((a, b) => - posixPath(a[0] as string).localeCompare(posixPath(b[0] as string)), + posixPath(a[0]).localeCompare(posixPath(b[0])), ), ).toMatchSnapshot('write'); expect( mkdirpMock.mock.calls.sort((a, b) => - posixPath(a[0] as string).localeCompare(posixPath(b[0] as string)), + posixPath(a[0]).localeCompare(posixPath(b[0])), ), ).toMatchSnapshot('mkdirp'); expect( mkdirsMock.mock.calls.sort((a, b) => - posixPath(a[0] as string).localeCompare(posixPath(b[0] as string)), + posixPath(a[0]).localeCompare(posixPath(b[0])), ), ).toMatchSnapshot('mkdirs'); expect( copyMock.mock.calls.sort((a, b) => - posixPath(a[0] as string).localeCompare(posixPath(b[0] as string)), + posixPath(a[0]).localeCompare(posixPath(b[0])), ), ).toMatchSnapshot('copy'); writeMock.mockRestore(); @@ -42,20 +43,21 @@ async function testMigration(siteDir: string, newDir: string) { copyMock.mockRestore(); } -describe('migration test', () => { +describe('migration CLI', () => { const fixtureDir = path.join(__dirname, '__fixtures__'); - test('simple website', async () => { + it('migrates simple website', async () => { const siteDir = path.join(fixtureDir, 'simple_website', 'website'); const newDir = path.join(fixtureDir, 'migrated_simple_site'); await testMigration(siteDir, newDir); }); - test('complex website', async () => { + + it('migrates complex website', async () => { const siteDir = path.join(fixtureDir, 'complex_website', 'website'); const newDir = path.join(fixtureDir, 'migrated_complex_site'); await testMigration(siteDir, newDir); }); - test('missing versions', async () => { + it('migrates missing versions', async () => { const siteDir = path.join(fixtureDir, 'missing_version_website', 'website'); const newDir = path.join(fixtureDir, 'migrated_missing_version_site'); await testMigration(siteDir, newDir); diff --git a/packages/docusaurus-migrate/src/__tests__/migrationConfig.test.ts b/packages/docusaurus-migrate/src/__tests__/migrationConfig.test.ts index 2f57bb7cb207..6e77e277e042 100644 --- a/packages/docusaurus-migrate/src/__tests__/migrationConfig.test.ts +++ b/packages/docusaurus-migrate/src/__tests__/migrationConfig.test.ts @@ -10,7 +10,7 @@ import {createConfigFile} from '../index'; import type {VersionOneConfig} from '../types'; describe('create config', () => { - test('simple test', () => { + it('simple test', () => { const v1Config: VersionOneConfig = importFresh( `${__dirname}/__fixtures__/sourceSiteConfig.js`, ); diff --git a/packages/docusaurus-migrate/src/deps.d.ts b/packages/docusaurus-migrate/src/deps.d.ts index ca55197f76d4..cab75c696fa2 100644 --- a/packages/docusaurus-migrate/src/deps.d.ts +++ b/packages/docusaurus-migrate/src/deps.d.ts @@ -5,6 +5,14 @@ * LICENSE file in the root directory of this source tree. */ -declare module '@mapbox/hast-util-to-jsx'; +declare module '@mapbox/hast-util-to-jsx' { + import type {Node} from 'unist'; -declare module 'hast-util-to-string'; + export default function toJsx(node: Node): string; +} + +declare module 'hast-util-to-string' { + import type {Node} from 'unist'; + + export default function toString(node: Node): string; +} diff --git a/packages/docusaurus-migrate/src/frontMatter.ts b/packages/docusaurus-migrate/src/frontMatter.ts index 4905863cf5c0..6ec040296d74 100644 --- a/packages/docusaurus-migrate/src/frontMatter.ts +++ b/packages/docusaurus-migrate/src/frontMatter.ts @@ -40,12 +40,7 @@ export default function extractMetadata(content: string): Data { lines.slice(0, -1).forEach((line) => { const keyValue = line.split(':') as [string, ...string[]]; const key = keyValue[0].trim(); - let value = keyValue.slice(1).join(':').trim(); - try { - value = JSON.parse(value); - } catch (err) { - // Ignore the error as it means it's not a JSON value. - } + const value = keyValue.slice(1).join(':').trim(); metadata[key] = value; }); return {metadata, rawContent: both.content}; @@ -69,7 +64,7 @@ export function shouldQuotifyFrontMatter([key, value]: [ // TODO this is not ideal to have to maintain such a list of allowed chars // maybe we should quotify if gray-matter throws instead? return !String(value).match( - // cSpell:ignore sàáâãäåçèéêëìíîïðòóôõöùúûüýÿ - /^[\w .\-sàáâãäåçèéêëìíîïðòóôõöùúûüýÿ!;,=+_?'`&#()[\]§%€$]+$/, + // cSpell:ignore àáâãäåçèéêëìíîïðòóôõöùúûüýÿ + /^[\w .\-àáâãäåçèéêëìíîïðòóôõöùúûüýÿ!;,=+?'`&#()[\]§%€$]+$/, ); } diff --git a/packages/docusaurus-migrate/src/index.ts b/packages/docusaurus-migrate/src/index.ts index 6d527e44db31..bab7fd688222 100644 --- a/packages/docusaurus-migrate/src/index.ts +++ b/packages/docusaurus-migrate/src/index.ts @@ -5,25 +5,23 @@ * LICENSE file in the root directory of this source tree. */ +import path from 'path'; import fs from 'fs-extra'; -import importFresh from 'import-fresh'; import logger from '@docusaurus/logger'; -import {Globby} from '@docusaurus/utils'; +import {Globby, DOCUSAURUS_VERSION} from '@docusaurus/utils'; +import importFresh from 'import-fresh'; import Color from 'color'; +import extractMetadata, {shouldQuotifyFrontMatter} from './frontMatter'; +import migratePage from './transform'; +import sanitizeMD from './sanitizeMD'; + import type { SidebarEntry, SidebarEntries, VersionOneConfig, VersionTwoConfig, } from './types'; -import extractMetadata, {shouldQuotifyFrontMatter} from './frontMatter'; -import migratePage from './transform'; -import sanitizeMD from './sanitizeMD'; -import path from 'path'; - -const DOCUSAURUS_VERSION = (importFresh('../package.json') as {version: string}) - .version; async function walk(dir: string): Promise { const results: string[] = []; @@ -31,7 +29,7 @@ async function walk(dir: string): Promise { for (const file of list) { const fullPath = `${dir}/${file}`; const stat = await fs.stat(fullPath); - if (stat && stat.isDirectory()) { + if (stat.isDirectory()) { results.push(...(await walk(fullPath))); } else { results.push(fullPath); @@ -67,7 +65,7 @@ ${ type MigrationContext = { siteDir: string; newDir: string; - deps: Record; + deps: {[key: string]: string}; shouldMigrateMdFiles: boolean; shouldMigratePages: boolean; v1Config: VersionOneConfig; @@ -81,9 +79,10 @@ export async function migrateDocusaurusProject( shouldMigratePages: boolean = false, ): Promise { async function createMigrationContext(): Promise { - const v1Config = importFresh(`${siteDir}/siteConfig`) as VersionOneConfig; + const v1Config = (await import(`${siteDir}/siteConfig`)) + .default as VersionOneConfig; logger.info('Starting migration from v1 to v2...'); - const deps: Record = { + const deps = { '@docusaurus/core': DOCUSAURUS_VERSION, '@docusaurus/preset-classic': DOCUSAURUS_VERSION, clsx: '^1.1.1', @@ -206,8 +205,8 @@ export function createConfigFile({ 'v1Config' | 'siteDir' | 'newDir' >): VersionTwoConfig { const siteConfig = v1Config; - const customConfigFields: Record = {}; - // add fields that are unknown to v2 to customConfigFields + const customConfigFields: {[key: string]: unknown} = {}; + // Add fields that are unknown to v2 to customConfigFields Object.keys(siteConfig).forEach((key) => { const knownFields = [ 'title', @@ -443,15 +442,15 @@ async function migrateBlogFiles(context: MigrationContext) { async function handleVersioning(context: MigrationContext) { const {siteDir, newDir} = context; if (await fs.pathExists(path.join(siteDir, 'versions.json'))) { - const loadedVersions: string[] = JSON.parse( - await fs.readFile(path.join(siteDir, 'versions.json'), 'utf-8'), - ); + const loadedVersions = (await fs.readJSON( + path.join(siteDir, 'versions.json'), + )) as string[]; await fs.copyFile( path.join(siteDir, 'versions.json'), path.join(newDir, 'versions.json'), ); const versions = loadedVersions.reverse(); - const versionRegex = new RegExp(`version-(${versions.join('|')})-`, 'mgi'); + const versionRegex = new RegExp(`version-(${versions.join('|')})-`, 'gim'); await migrateVersionedSidebar(context, versions, versionRegex); await fs.mkdirp(path.join(newDir, 'versioned_docs')); await migrateVersionedDocs(context, versions, versionRegex); @@ -473,7 +472,7 @@ async function migrateVersionedDocs( versions.reverse().map(async (version, index) => { if (index === 0) { await fs.copy( - path.join(siteDir, '..', context.v1Config.customDocsPath || 'docs'), + path.join(siteDir, '..', context.v1Config.customDocsPath ?? 'docs'), path.join(newDir, 'versioned_docs', `version-${version}`), ); await fs.copy( @@ -487,7 +486,11 @@ async function migrateVersionedDocs( path.join(newDir, 'versioned_docs', `version-${version}`), ); await fs.copy( - path.join(newDir, 'versioned_docs', `version-${versions[index - 1]}`), + path.join( + newDir, + 'versioned_docs', + `version-${versions[index - 1]!}`, + ), path.join(newDir, 'versioned_docs', `version-${version}`), ); await fs.copy( @@ -496,7 +499,11 @@ async function migrateVersionedDocs( ); } catch { await fs.copy( - path.join(newDir, 'versioned_docs', `version-${versions[index - 1]}`), + path.join( + newDir, + 'versioned_docs', + `version-${versions[index - 1]!}`, + ), path.join(newDir, 'versioned_docs', `version-${version}`), ); } @@ -542,7 +549,7 @@ async function migrateVersionedSidebar( `version-${version}-sidebars.json`, ); try { - sidebarEntries = JSON.parse(await fs.readFile(sidebarPath, 'utf-8')); + sidebarEntries = (await fs.readJSON(sidebarPath)) as SidebarEntries; } catch { sidebars.push({version, entries: sidebars[i - 1]!.entries}); return; @@ -550,7 +557,9 @@ async function migrateVersionedSidebar( const newSidebar = Object.entries(sidebarEntries).reduce( (topLevel: SidebarEntries, value) => { const key = value[0].replace(versionRegex, ''); - topLevel[key] = Object.entries(value[1]).reduce((acc, val) => { + topLevel[key] = Object.entries(value[1]).reduce<{ + [key: string]: (string | {[key: string]: unknown})[]; + }>((acc, val) => { acc[val[0].replace(versionRegex, '')] = ( val[1] as SidebarEntry[] ).map((item) => { @@ -564,7 +573,7 @@ async function migrateVersionedSidebar( }; }); return acc; - }, {} as Record>>); + }, {}); return topLevel; }, {}, @@ -573,33 +582,32 @@ async function migrateVersionedSidebar( } await Promise.all( sidebars.map(async (sidebar) => { - const newSidebar = Object.entries(sidebar.entries).reduce( - (acc, val) => { - const key = `version-${sidebar.version}/${val[0]}`; - acc[key] = Object.entries(val[1]).map((value) => ({ - type: 'category', - label: value[0], - items: (value[1] as SidebarEntry[]).map((sidebarItem) => { - if (typeof sidebarItem === 'string') { - return { - type: 'doc', - id: `version-${sidebar.version}/${sidebarItem}`, - }; - } + const newSidebar = Object.entries( + sidebar.entries, + ).reduce((acc, val) => { + const key = `version-${sidebar.version}/${val[0]}`; + acc[key] = Object.entries(val[1]).map((value) => ({ + type: 'category', + label: value[0], + items: (value[1] as SidebarEntry[]).map((sidebarItem) => { + if (typeof sidebarItem === 'string') { return { - type: 'category', - label: sidebarItem.label, - items: sidebarItem.ids.map((id) => ({ - type: 'doc', - id: `version-${sidebar.version}/${id}`, - })), + type: 'doc', + id: `version-${sidebar.version}/${sidebarItem}`, }; - }), - })); - return acc; - }, - {} as SidebarEntries, - ); + } + return { + type: 'category', + label: sidebarItem.label, + items: sidebarItem.ids.map((id) => ({ + type: 'doc', + id: `version-${sidebar.version}/${id}`, + })), + }; + }), + })); + return acc; + }, {}); await fs.outputFile( path.join( newDir, @@ -701,12 +709,12 @@ async function migrateLatestDocs(context: MigrationContext) { async function migratePackageFile(context: MigrationContext): Promise { const {deps, siteDir, newDir} = context; - const packageFile = importFresh(`${siteDir}/package.json`) as { - scripts?: Record; - dependencies?: Record; - devDependencies?: Record; + const packageFile = importFresh<{ + scripts?: {[key: string]: string}; + dependencies?: {[key: string]: string}; + devDependencies?: {[key: string]: string}; [otherKey: string]: unknown; - }; + }>(`${siteDir}/package.json`); packageFile.scripts = { ...packageFile.scripts, start: 'docusaurus start', diff --git a/packages/docusaurus-migrate/src/sanitizeMD.ts b/packages/docusaurus-migrate/src/sanitizeMD.ts index 55bd803aea51..61e3904cb0aa 100644 --- a/packages/docusaurus-migrate/src/sanitizeMD.ts +++ b/packages/docusaurus-migrate/src/sanitizeMD.ts @@ -37,7 +37,7 @@ export default function sanitizeMD(code: string): string { const htmlTree = unified().use(parse).parse(markdownString); visit(htmlTree, 'element', (node: Element) => { - if (!tags[node.tagName as string]) { + if (!tags[node.tagName]) { (node as Element | Text).type = 'text'; (node as Element & Partial>).value = node.tagName + toText(node); diff --git a/packages/docusaurus-migrate/src/types.ts b/packages/docusaurus-migrate/src/types.ts index 1da33918953c..39b5fc2d53ae 100644 --- a/packages/docusaurus-migrate/src/types.ts +++ b/packages/docusaurus-migrate/src/types.ts @@ -33,11 +33,11 @@ export type SidebarEntry = export type SidebarEntries = { [key: string]: - | Record - | Array | string>; + | {[key: string]: unknown} + | ({[key: string]: unknown} | string)[]; }; -export interface VersionTwoConfig { +export type VersionTwoConfig = { baseUrl: string; favicon: string; tagline?: string; @@ -49,7 +49,7 @@ export interface VersionTwoConfig { githubHost?: string; onBrokenLinks: string; onBrokenMarkdownLinks: string; - plugins: Array<[string, {[key: string]: unknown}]>; + plugins: [string, {[key: string]: unknown}][]; themes?: []; presets: [[string, ClassicPresetEntries]]; themeConfig: { @@ -58,23 +58,20 @@ export interface VersionTwoConfig { logo?: { src?: string; }; - items: Array | null>; + items: ({[key: string]: unknown} | null)[]; }; image?: string; footer: { - links: Array<{ + links: { title: string; - items: Array<{ - label: string; - to: string; - }>; - }>; + items: {label: string; to: string}[]; + }[]; copyright?: string; logo: { src?: string; }; }; - algolia?: Record; + algolia?: {[key: string]: unknown}; }; customFields: { [key: string]: unknown; @@ -93,7 +90,7 @@ export interface VersionTwoConfig { [key: string]: unknown; } )[]; -} +}; export type VersionOneConfig = { title?: string; @@ -104,26 +101,26 @@ export type VersionOneConfig = { organizationName?: string; projectName?: string; noIndex?: boolean; - headerLinks?: Array<{doc: string; href: string; label: string; page: string}>; + headerLinks?: {doc: string; href: string; label: string; page: string}[]; headerIcon?: string; favicon?: string; colors?: {primaryColor: string}; copyright?: string; editUrl?: string; customDocsPath?: string; - users?: Array>; + users?: {[key: string]: unknown}[]; disableHeaderTitle?: string; disableTitleTagline?: string; - separateCss?: Array>; + separateCss?: {[key: string]: unknown}[]; footerIcon?: string; translationRecruitingLink?: string; - algolia?: Record; + algolia?: {[key: string]: unknown}; gaTrackingId?: string; gaGtag?: boolean; - highlight?: Record; - markdownPlugins?: Array<() => void>; - scripts?: Array<{src: string; [key: string]: unknown} | string>; - stylesheets?: Array<{href: string; [key: string]: unknown} | string>; + highlight?: {[key: string]: unknown}; + markdownPlugins?: (() => void)[]; + scripts?: ({src: string; [key: string]: unknown} | string)[]; + stylesheets?: ({href: string; [key: string]: unknown} | string)[]; facebookAppId?: string; facebookComments?: true; facebookPixelId?: string; @@ -133,5 +130,5 @@ export type VersionOneConfig = { ogImage?: string; cleanUrl?: boolean; scrollToTop?: boolean; - scrollToTopOptions?: Record; + scrollToTopOptions?: {[key: string]: unknown}; }; diff --git a/packages/docusaurus-migrate/tsconfig.build.json b/packages/docusaurus-migrate/tsconfig.build.json index 358fdb6f6e60..e43e58accad2 100644 --- a/packages/docusaurus-migrate/tsconfig.build.json +++ b/packages/docusaurus-migrate/tsconfig.build.json @@ -1,10 +1,14 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "noEmit": false, + "composite": true, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", + "module": "commonjs", "rootDir": "src", "outDir": "lib" }, - "include": ["src"] + "include": ["src"], + "exclude": ["**/__tests__/**"] } diff --git a/packages/docusaurus-migrate/tsconfig.json b/packages/docusaurus-migrate/tsconfig.json index 419de04867a2..5c73d3ac4eca 100644 --- a/packages/docusaurus-migrate/tsconfig.json +++ b/packages/docusaurus-migrate/tsconfig.json @@ -1,11 +1,11 @@ -// For editor typechecking; includes bin { - "extends": "./tsconfig.build.json", + "extends": "../../tsconfig.json", + "references": [{"path": "./tsconfig.build.json"}], "compilerOptions": { "noEmit": true, "module": "esnext", - "allowJs": true, "rootDir": "." }, - "include": ["src", "bin"] + "include": ["bin"], + "exclude": ["**/__tests__/**"] } diff --git a/packages/docusaurus-module-type-aliases/package.json b/packages/docusaurus-module-type-aliases/package.json index 44cb25e3a571..26d08a22247a 100644 --- a/packages/docusaurus-module-type-aliases/package.json +++ b/packages/docusaurus-module-type-aliases/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/module-type-aliases", - "version": "2.0.0-beta.17", + "version": "2.0.0-beta.21", "description": "Docusaurus module type aliases.", "types": "./src/index.d.ts", "publishConfig": { @@ -12,11 +12,14 @@ "directory": "packages/docusaurus-module-type-aliases" }, "dependencies": { - "@docusaurus/types": "2.0.0-beta.17", + "@docusaurus/react-loadable": "5.5.2", + "@docusaurus/types": "2.0.0-beta.21", + "@types/history": "^4.7.11", "@types/react": "*", "@types/react-router-config": "*", "@types/react-router-dom": "*", - "react-helmet-async": "*" + "react-helmet-async": "*", + "react-loadable": "npm:@docusaurus/react-loadable@5.5.2" }, "peerDependencies": { "react": "*", diff --git a/packages/docusaurus-module-type-aliases/src/index.d.ts b/packages/docusaurus-module-type-aliases/src/index.d.ts index 80291f92f409..c8f2c995f012 100644 --- a/packages/docusaurus-module-type-aliases/src/index.d.ts +++ b/packages/docusaurus-module-type-aliases/src/index.d.ts @@ -8,7 +8,7 @@ declare module '@generated/client-modules' { import type {ClientModule} from '@docusaurus/types'; - const clientModules: readonly (ClientModule & {default: ClientModule})[]; + const clientModules: readonly (ClientModule & {default?: ClientModule})[]; export default clientModules; } @@ -20,65 +20,56 @@ declare module '@generated/docusaurus.config' { } declare module '@generated/site-metadata' { - import type {DocusaurusSiteMetadata} from '@docusaurus/types'; + import type {SiteMetadata} from '@docusaurus/types'; - const siteMetadata: DocusaurusSiteMetadata; + const siteMetadata: SiteMetadata; export = siteMetadata; } declare module '@generated/registry' { - const registry: { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - readonly [key: string]: [() => Promise, string, string]; - }; + import type {Registry} from '@docusaurus/types'; + + const registry: Registry; export default registry; } declare module '@generated/routes' { - import type {RouteConfig} from 'react-router-config'; + import type {RouteConfig as RRRouteConfig} from 'react-router-config'; + import type Loadable from 'react-loadable'; - export type Route = { - readonly path: string; - readonly component: RouteConfig['component']; - readonly exact?: boolean; - readonly routes?: Route[]; + type RouteConfig = RRRouteConfig & { + path: string; + component: ReturnType; }; - const routes: Route[]; + const routes: RouteConfig[]; export default routes; } declare module '@generated/routesChunkNames' { - import type {RouteChunksTree} from '@docusaurus/types'; + import type {RouteChunkNames} from '@docusaurus/types'; - const routesChunkNames: Record; + const routesChunkNames: RouteChunkNames; export = routesChunkNames; } declare module '@generated/globalData' { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const globalData: Record; + import type {GlobalData} from '@docusaurus/types'; + + const globalData: GlobalData; export = globalData; } declare module '@generated/i18n' { - const i18n: { - defaultLocale: string; - locales: [string, ...string[]]; - currentLocale: string; - localeConfigs: Record< - string, - { - label: string; - direction: string; - htmlLang: string; - } - >; - }; + import type {I18n} from '@docusaurus/types'; + + const i18n: I18n; export = i18n; } declare module '@generated/codeTranslations' { - const codeTranslations: Record; + import type {CodeTranslations} from '@docusaurus/types'; + + const codeTranslations: CodeTranslations; export = codeTranslations; } @@ -86,10 +77,9 @@ declare module '@theme-original/*'; declare module '@theme-init/*'; declare module '@theme/Error' { - export interface Props { - readonly error: Error; - readonly tryAgain: () => void; - } + import type {FallbackParams} from '@docusaurus/ErrorBoundary'; + + export interface Props extends FallbackParams {} export default function Error(props: Props): JSX.Element; } @@ -98,8 +88,6 @@ declare module '@theme/Layout' { export interface Props { readonly children?: ReactNode; - readonly title?: string; - readonly description?: string; } export default function Layout(props: Props): JSX.Element; } @@ -123,24 +111,34 @@ declare module '@theme/Root' { export default function Root({children}: Props): JSX.Element; } +declare module '@theme/SiteMetadata' { + export default function SiteMetadata(): JSX.Element; +} + declare module '@docusaurus/constants' { export const DEFAULT_PLUGIN_ID: 'default'; } declare module '@docusaurus/ErrorBoundary' { import type {ReactNode} from 'react'; - import type ErrorComponent from '@theme/Error'; + + export type FallbackParams = { + readonly error: Error; + readonly tryAgain: () => void; + }; + + export type FallbackFunction = (params: FallbackParams) => JSX.Element; export interface Props { - readonly fallback?: typeof ErrorComponent; + readonly fallback?: FallbackFunction; readonly children: ReactNode; } export default function ErrorBoundary(props: Props): JSX.Element; } declare module '@docusaurus/Head' { - import type {HelmetProps} from 'react-helmet-async'; import type {ReactNode} from 'react'; + import type {HelmetProps} from 'react-helmet-async'; export type Props = HelmetProps & {children: ReactNode}; @@ -149,8 +147,9 @@ declare module '@docusaurus/Head' { declare module '@docusaurus/Link' { import type {CSSProperties, ComponentProps} from 'react'; + import type {NavLinkProps as RRNavLinkProps} from 'react-router-dom'; - type NavLinkProps = Partial; + type NavLinkProps = Partial; export type Props = NavLinkProps & ComponentProps<'a'> & { readonly className?: string; @@ -160,7 +159,7 @@ declare module '@docusaurus/Link' { readonly href?: string; readonly autoAddBaseUrl?: boolean; - // escape hatch in case broken links check is annoying for a specific link + /** Escape hatch in case broken links check doesn't make sense. */ readonly 'data-noBrokenLinkCheck'?: boolean; }; export default function Link(props: Props): JSX.Element; @@ -174,10 +173,9 @@ declare module '@docusaurus/Interpolate' { ? Key | ExtractInterpolatePlaceholders : never; - export type InterpolateValues< - Str extends string, - Value extends ReactNode, - > = Record, Value>; + export type InterpolateValues = { + [key in ExtractInterpolatePlaceholders]: Value; + }; // If all the values are plain strings, interpolate returns a simple string export function interpolate( @@ -250,6 +248,12 @@ declare module '@docusaurus/useDocusaurusContext' { export default function useDocusaurusContext(): DocusaurusContext; } +declare module '@docusaurus/useRouteContext' { + import type {PluginRouteContext} from '@docusaurus/types'; + + export default function useRouteContext(): PluginRouteContext; +} + declare module '@docusaurus/useIsBrowser' { export default function useIsBrowser(): boolean; } @@ -316,17 +320,31 @@ declare module '@docusaurus/renderRoutes' { } declare module '@docusaurus/useGlobalData' { - export function useAllPluginInstancesData( + import type {GlobalData, UseDataOptions} from '@docusaurus/types'; + + export function useAllPluginInstancesData( + pluginName: string, + options: {failfast: true}, + ): GlobalData[string]; + + export function useAllPluginInstancesData( + pluginName: string, + options?: UseDataOptions, + ): GlobalData[string] | undefined; + + export function usePluginData( pluginName: string, - ): Record; + pluginId: string | undefined, + options: {failfast: true}, + ): NonNullable; - export function usePluginData( + export function usePluginData( pluginName: string, pluginId?: string, - ): T; + options?: UseDataOptions, + ): GlobalData[string][string]; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - export default function useGlobalData(): Record; + export default function useGlobalData(): GlobalData; } declare module '*.svg' { @@ -346,3 +364,10 @@ declare module '*.css' { const src: string; export default src; } + +interface Window { + docusaurus: { + prefetch: (url: string) => false | Promise; + preload: (url: string) => false | Promise; + }; +} diff --git a/packages/docusaurus-plugin-client-redirects/.npmignore b/packages/docusaurus-plugin-client-redirects/.npmignore index f2b994d4e359..03c9ae1e1b54 100644 --- a/packages/docusaurus-plugin-client-redirects/.npmignore +++ b/packages/docusaurus-plugin-client-redirects/.npmignore @@ -1,4 +1,3 @@ -copyUntypedFiles.mjs -.tsbuildinfo +.tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-plugin-client-redirects/package.json b/packages/docusaurus-plugin-client-redirects/package.json index 20b2aedbcf38..57f3e138b7cb 100644 --- a/packages/docusaurus-plugin-client-redirects/package.json +++ b/packages/docusaurus-plugin-client-redirects/package.json @@ -1,9 +1,9 @@ { "name": "@docusaurus/plugin-client-redirects", - "version": "2.0.0-beta.17", + "version": "2.0.0-beta.21", "description": "Client redirects plugin for Docusaurus.", "main": "lib/index.js", - "types": "src/plugin-client-redirects.d.ts", + "types": "lib/index.d.ts", "scripts": { "build": "tsc", "watch": "tsc --watch" @@ -18,24 +18,24 @@ }, "license": "MIT", "dependencies": { - "@docusaurus/core": "2.0.0-beta.17", - "@docusaurus/logger": "2.0.0-beta.17", - "@docusaurus/utils": "2.0.0-beta.17", - "@docusaurus/utils-common": "2.0.0-beta.17", - "@docusaurus/utils-validation": "2.0.0-beta.17", + "@docusaurus/core": "2.0.0-beta.21", + "@docusaurus/logger": "2.0.0-beta.21", + "@docusaurus/utils": "2.0.0-beta.21", + "@docusaurus/utils-common": "2.0.0-beta.21", + "@docusaurus/utils-validation": "2.0.0-beta.21", "eta": "^1.12.3", - "fs-extra": "^10.0.1", + "fs-extra": "^10.1.0", "lodash": "^4.17.21", - "tslib": "^2.3.1" + "tslib": "^2.4.0" }, "devDependencies": { - "@docusaurus/types": "2.0.0-beta.17" + "@docusaurus/types": "2.0.0-beta.21" }, "peerDependencies": { "react": "^16.8.4 || ^17.0.0", "react-dom": "^16.8.4 || ^17.0.0" }, "engines": { - "node": ">=14" + "node": ">=16.14" } } diff --git a/packages/docusaurus-plugin-client-redirects/src/__tests__/__snapshots__/collectRedirects.test.ts.snap b/packages/docusaurus-plugin-client-redirects/src/__tests__/__snapshots__/collectRedirects.test.ts.snap index 785f7e3478dc..a9ce789f9861 100644 --- a/packages/docusaurus-plugin-client-redirects/src/__tests__/__snapshots__/collectRedirects.test.ts.snap +++ b/packages/docusaurus-plugin-client-redirects/src/__tests__/__snapshots__/collectRedirects.test.ts.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`collectRedirects should throw if plugin option redirects contain invalid to paths 1`] = ` +exports[`collectRedirects throw if plugin option redirects contain invalid to paths 1`] = ` "You are trying to create client-side redirections to paths that do not exist: - /this/path/does/not/exist2 - /this/path/does/not/exist2 @@ -12,16 +12,16 @@ Valid paths you can redirect to: " `; -exports[`collectRedirects should throw if redirect creator creates array of array redirect 1`] = ` +exports[`collectRedirects throws if redirect creator creates array of array redirect 1`] = ` "Some created redirects are invalid: -- {\\"from\\":[\\"/fromPath\\"],\\"to\\":\\"/\\"} => Validation error: \\"from\\" must be a string +- {"from":["/fromPath"],"to":"/"} => Validation error: "from" must be a string " `; -exports[`collectRedirects should throw if redirect creator creates invalid redirects 1`] = ` +exports[`collectRedirects throws if redirect creator creates invalid redirects 1`] = ` "Some created redirects are invalid: -- {\\"from\\":\\"https://google.com/\\",\\"to\\":\\"/\\"} => Validation error: \\"from\\" is not a valid pathname. Pathname should start with slash and not contain any domain or query string. -- {\\"from\\":\\"//abc\\",\\"to\\":\\"/\\"} => Validation error: \\"from\\" is not a valid pathname. Pathname should start with slash and not contain any domain or query string. -- {\\"from\\":\\"/def?queryString=toto\\",\\"to\\":\\"/\\"} => Validation error: \\"from\\" is not a valid pathname. Pathname should start with slash and not contain any domain or query string. +- {"from":"https://google.com/","to":"/"} => Validation error: "from" is not a valid pathname. Pathname should start with slash and not contain any domain or query string. +- {"from":"//abc","to":"/"} => Validation error: "from" is not a valid pathname. Pathname should start with slash and not contain any domain or query string. +- {"from":"/def?queryString=toto","to":"/"} => Validation error: "from" is not a valid pathname. Pathname should start with slash and not contain any domain or query string. " `; diff --git a/packages/docusaurus-plugin-client-redirects/src/__tests__/__snapshots__/createRedirectPageContent.test.ts.snap b/packages/docusaurus-plugin-client-redirects/src/__tests__/__snapshots__/createRedirectPageContent.test.ts.snap index 7fa3afa57de0..a98e1c3f7ed7 100644 --- a/packages/docusaurus-plugin-client-redirects/src/__tests__/__snapshots__/createRedirectPageContent.test.ts.snap +++ b/packages/docusaurus-plugin-client-redirects/src/__tests__/__snapshots__/createRedirectPageContent.test.ts.snap @@ -1,12 +1,12 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`createRedirectPageContent should encode uri special chars 1`] = ` +exports[`createRedirectPageContent encodes uri special chars 1`] = ` " - - - + + + @@ -103,22 +105,21 @@ function BaseUrlIssueBannerEnabled() { /** * We want to help the users with a bad baseUrl configuration (very common - * error) Help message is inlined, and hidden if JS or CSS is able to load + * error). Help message is inlined, and hidden if JS or CSS is able to load. + * + * This component only inserts the base URL banner for the homepage, to avoid + * polluting every statically rendered page. + * * Note: it might create false positives (ie network failures): not a big deal - * Note: we only inline this for the homepage to avoid polluting all the site's - * pages + * * @see https://github.com/facebook/docusaurus/pull/3621 */ -export default function BaseUrlIssueBanner(): JSX.Element | null { +export default function MaybeBaseUrlIssueBanner(): JSX.Element | null { const { siteConfig: {baseUrl, baseUrlIssueBanner}, } = useDocusaurusContext(); const {pathname} = useLocation(); - - // returns true for the homepage during SRR const isHomePage = pathname === baseUrl; - const enabled = baseUrlIssueBanner && isHomePage; - - return enabled ? : null; + return enabled ? : null; } diff --git a/packages/docusaurus/src/client/baseUrlIssueBanner/styles.module.css b/packages/docusaurus/src/client/BaseUrlIssueBanner/styles.module.css similarity index 100% rename from packages/docusaurus/src/client/baseUrlIssueBanner/styles.module.css rename to packages/docusaurus/src/client/BaseUrlIssueBanner/styles.module.css diff --git a/packages/docusaurus/src/client/ClientLifecyclesDispatcher.tsx b/packages/docusaurus/src/client/ClientLifecyclesDispatcher.tsx new file mode 100644 index 000000000000..e9cb7f8d5f5a --- /dev/null +++ b/packages/docusaurus/src/client/ClientLifecyclesDispatcher.tsx @@ -0,0 +1,61 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import {useLayoutEffect, type ReactElement} from 'react'; +import clientModules from '@generated/client-modules'; +import type {ClientModule} from '@docusaurus/types'; +import type {Location} from 'history'; + +export function dispatchLifecycleAction( + lifecycleAction: K, + ...args: Parameters> +): () => void { + const callbacks = clientModules.map((clientModule) => { + const lifecycleFunction = (clientModule.default?.[lifecycleAction] ?? + clientModule[lifecycleAction]) as + | (( + ...a: Parameters> + ) => (() => void) | void) + | undefined; + + return lifecycleFunction?.(...args); + }); + return () => callbacks.forEach((cb) => cb?.()); +} + +function scrollAfterNavigation(location: Location) { + const {hash} = location; + if (!hash) { + window.scrollTo(0, 0); + } else { + const id = decodeURIComponent(hash.substring(1)); + const element = document.getElementById(id); + element?.scrollIntoView(); + } +} + +function ClientLifecyclesDispatcher({ + children, + location, + previousLocation, +}: { + children: ReactElement; + location: Location; + previousLocation: Location | null; +}): JSX.Element { + useLayoutEffect(() => { + if (previousLocation !== location) { + if (previousLocation) { + scrollAfterNavigation(location); + } + dispatchLifecycleAction('onRouteDidUpdate', {previousLocation, location}); + } + }, [previousLocation, location]); + return children; +} + +export default ClientLifecyclesDispatcher; diff --git a/packages/docusaurus/src/client/LinksCollector.tsx b/packages/docusaurus/src/client/LinksCollector.tsx index 70009f093c9a..d0fb33b9ec03 100644 --- a/packages/docusaurus/src/client/LinksCollector.tsx +++ b/packages/docusaurus/src/client/LinksCollector.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import React, {type ReactNode, useContext, createContext} from 'react'; +import React, {type ReactNode, useContext} from 'react'; type LinksCollector = { collectLink: (link: string) => void; @@ -26,16 +26,15 @@ export const createStatefulLinksCollector = (): StatefulLinksCollector => { }; }; -const Context = createContext({ +const Context = React.createContext({ collectLink: () => { - // noop by default for client - // we only use the broken links checker server-side + // No-op for client. We only use the broken links checker server-side. }, }); export const useLinksCollector = (): LinksCollector => useContext(Context); -export function ProvideLinksCollector({ +export function LinksCollectorProvider({ children, linksCollector, }: { diff --git a/packages/docusaurus/src/client/PendingNavigation.tsx b/packages/docusaurus/src/client/PendingNavigation.tsx index 56e7e9c062b5..e1e38f40f817 100644 --- a/packages/docusaurus/src/client/PendingNavigation.tsx +++ b/packages/docusaurus/src/client/PendingNavigation.tsx @@ -6,38 +6,37 @@ */ import React from 'react'; -import {Route, withRouter, type RouteComponentProps} from 'react-router-dom'; -import type {RouteConfig} from 'react-router-config'; -import nprogress from 'nprogress'; - -import clientLifecyclesDispatcher from './client-lifecycles-dispatcher'; +import {Route} from 'react-router-dom'; +import ClientLifecyclesDispatcher, { + dispatchLifecycleAction, +} from './ClientLifecyclesDispatcher'; +import ExecutionEnvironment from './exports/ExecutionEnvironment'; import preload from './preload'; -import normalizeLocation from './normalizeLocation'; import type {Location} from 'history'; -import './nprogress.css'; - -nprogress.configure({showSpinner: false}); - -interface Props extends RouteComponentProps { - readonly routes: RouteConfig[]; - readonly delay: number; +type Props = { readonly location: Location; -} -interface State { + readonly children: JSX.Element; +}; +type State = { nextRouteHasLoaded: boolean; -} +}; class PendingNavigation extends React.Component { - previousLocation: Location | null; - progressBarTimeout: NodeJS.Timeout | null; + private previousLocation: Location | null; + private routeUpdateCleanupCb: () => void; constructor(props: Props) { super(props); // previousLocation doesn't affect rendering, hence not stored in state. this.previousLocation = null; - this.progressBarTimeout = null; + this.routeUpdateCleanupCb = ExecutionEnvironment.canUseDOM + ? dispatchLifecycleAction('onRouteUpdate', { + previousLocation: null, + location: this.props.location, + }) + : () => {}; this.state = { nextRouteHasLoaded: true, }; @@ -45,83 +44,48 @@ class PendingNavigation extends React.Component { // Intercept location update and still show current route until next route // is done loading. - override shouldComponentUpdate(nextProps: Props, nextState: State) { - const routeDidChange = nextProps.location !== this.props.location; - const {routes, delay} = this.props; - - // If `routeDidChange` is true, means the router is trying to navigate to a - // new route. We will preload the new route. - if (routeDidChange) { - const nextLocation = normalizeLocation(nextProps.location); - this.startProgressBar(delay); - // Save the location first. - this.previousLocation = normalizeLocation(this.props.location); - this.setState({ - nextRouteHasLoaded: false, - }); - - // Load data while the old screen remains. - preload(routes, nextLocation.pathname) - .then(() => { - clientLifecyclesDispatcher.onRouteUpdate({ - previousLocation: this.previousLocation, - location: nextLocation, - }); - // Route has loaded, we can reset previousLocation. - this.previousLocation = null; - this.setState({nextRouteHasLoaded: true}, this.stopProgressBar); - const {hash} = nextLocation; - if (!hash) { - window.scrollTo(0, 0); - } else { - const id = decodeURIComponent(hash.substring(1)); - const element = document.getElementById(id); - if (element) { - element.scrollIntoView(); - } - } - }) - .catch((e) => console.warn(e)); - return false; + override shouldComponentUpdate(nextProps: Props, nextState: State): boolean { + if (nextProps.location === this.props.location) { + // `nextRouteHasLoaded` is false means there's a pending route transition. + // Don't update until it's done. + return nextState.nextRouteHasLoaded; } - // There's a pending route transition. Don't update until it's done. - if (!nextState.nextRouteHasLoaded) { - return false; - } - - // Route has loaded, we can update now. - return true; - } - - private clearProgressBarTimeout() { - if (this.progressBarTimeout) { - clearTimeout(this.progressBarTimeout); - this.progressBarTimeout = null; - } - } - - private startProgressBar(delay: number) { - this.clearProgressBarTimeout(); - this.progressBarTimeout = setTimeout(() => { - clientLifecyclesDispatcher.onRouteUpdateDelayed({ - location: normalizeLocation(this.props.location), - }); - nprogress.start(); - }, delay); - } - - private stopProgressBar() { - this.clearProgressBarTimeout(); - nprogress.done(); + // props.location being different means the router is trying to navigate to + // a new route. We will preload the new route. + const nextLocation = nextProps.location; + // Save the location first. + this.previousLocation = this.props.location; + this.setState({nextRouteHasLoaded: false}); + this.routeUpdateCleanupCb = dispatchLifecycleAction('onRouteUpdate', { + previousLocation: this.previousLocation, + location: nextLocation, + }); + + // Load data while the old screen remains. Force preload instead of using + // `window.docusaurus`, because we want to avoid loading screen even when + // user is on saveData + preload(nextLocation.pathname) + .then(() => { + this.routeUpdateCleanupCb(); + this.setState({nextRouteHasLoaded: true}); + }) + .catch((e: unknown) => console.warn(e)); + return false; } - override render() { + override render(): JSX.Element { const {children, location} = this.props; + // Use a controlled to trick all descendants into rendering the old + // location. return ( - children} /> + + children} /> + ); } } -export default withRouter(PendingNavigation); +export default PendingNavigation; diff --git a/packages/docusaurus/src/client/SiteMetadataDefaults.tsx b/packages/docusaurus/src/client/SiteMetadataDefaults.tsx new file mode 100644 index 000000000000..e3ba631fbbe5 --- /dev/null +++ b/packages/docusaurus/src/client/SiteMetadataDefaults.tsx @@ -0,0 +1,29 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import React from 'react'; +import Head from '@docusaurus/Head'; +import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; +import useBaseUrl from '@docusaurus/useBaseUrl'; + +export default function SiteMetadataDefaults(): JSX.Element { + const { + siteConfig: {favicon, title}, + i18n: {currentLocale, localeConfigs}, + } = useDocusaurusContext(); + const faviconUrl = useBaseUrl(favicon); + const {htmlLang, direction: htmlDir} = localeConfigs[currentLocale]!; + + return ( + + + {title} + + {favicon && } + + ); +} diff --git a/packages/docusaurus/src/client/__tests__/__mocks__/@generated/routes.ts b/packages/docusaurus/src/client/__tests__/__mocks__/@generated/routes.ts new file mode 100644 index 000000000000..ce2206070e1d --- /dev/null +++ b/packages/docusaurus/src/client/__tests__/__mocks__/@generated/routes.ts @@ -0,0 +1,30 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +export default [ + { + path: '/page.html', + exact: true, + component: '', + }, + { + path: '/docs', + exact: false, + component: '', + routes: [ + { + path: '/docs/installation', + exact: true, + component: '', + }, + ], + }, + { + path: '*', + component: '', + }, +]; diff --git a/packages/docusaurus/src/client/__tests__/browserContext.test.tsx b/packages/docusaurus/src/client/__tests__/browserContext.test.tsx new file mode 100644 index 000000000000..bfb8c211cf03 --- /dev/null +++ b/packages/docusaurus/src/client/__tests__/browserContext.test.tsx @@ -0,0 +1,30 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @jest-environment jsdom + */ + +// Jest doesn't allow pragma below other comments. https://github.com/facebook/jest/issues/12573 +// eslint-disable-next-line header/header +import React from 'react'; +import {renderHook} from '@testing-library/react-hooks/server'; +import {BrowserContextProvider} from '../browserContext'; +import useIsBrowser from '../exports/useIsBrowser'; + +describe('BrowserContextProvider', () => { + const {result, hydrate} = renderHook(() => useIsBrowser(), { + wrapper: ({children}) => ( + {children} + ), + }); + it('has value false on first render', () => { + expect(result.current).toBe(false); + }); + it('has value true on hydration', () => { + hydrate(); + expect(result.current).toBe(true); + }); +}); diff --git a/packages/docusaurus/src/client/__tests__/docusaurusContext.test.tsx b/packages/docusaurus/src/client/__tests__/docusaurusContext.test.tsx new file mode 100644 index 000000000000..d11bb52a68aa --- /dev/null +++ b/packages/docusaurus/src/client/__tests__/docusaurusContext.test.tsx @@ -0,0 +1,41 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @jest-environment jsdom + */ + +// Jest doesn't allow pragma below other comments. https://github.com/facebook/jest/issues/12573 +// eslint-disable-next-line header/header +import React from 'react'; +import {renderHook} from '@testing-library/react-hooks/server'; +import {DocusaurusContextProvider} from '../docusaurusContext'; +import useDocusaurusContext from '../exports/useDocusaurusContext'; + +// This test currently isn't quite useful because the @generated aliases point +// to the empty modules. Maybe we can point that to fixtures in the future. +describe('DocusaurusContextProvider', () => { + const {result, hydrate} = renderHook(() => useDocusaurusContext(), { + wrapper: ({children}) => ( + {children} + ), + }); + const value = result.current; + it('returns right value', () => { + expect(value).toMatchInlineSnapshot(` + { + "codeTranslations": {}, + "globalData": {}, + "i18n": {}, + "siteConfig": {}, + "siteMetadata": {}, + } + `); + }); + it('has reference-equal value on hydration', () => { + hydrate(); + expect(result.current).toBe(value); + }); +}); diff --git a/packages/docusaurus/src/client/__tests__/flat.test.ts b/packages/docusaurus/src/client/__tests__/flat.test.ts index 4d176c008643..358a0c547d16 100644 --- a/packages/docusaurus/src/client/__tests__/flat.test.ts +++ b/packages/docusaurus/src/client/__tests__/flat.test.ts @@ -8,7 +8,7 @@ import flat from '../flat'; describe('flat', () => { - test('nested', () => { + it('nested', () => { expect( flat({ foo: { @@ -32,7 +32,7 @@ describe('flat', () => { }); }); - test('primitives', () => { + it('primitives', () => { const primitives = { String: 'good morning', Number: 1234.99, @@ -41,12 +41,12 @@ describe('flat', () => { null: null, undefined, }; - Object.keys(primitives).forEach((key) => { + (Object.keys(primitives) as (keyof typeof primitives)[]).forEach((key) => { const value = primitives[key]; expect( flat({ foo: { - bar: value, + bar: value as string, }, }), ).toEqual({ @@ -55,7 +55,7 @@ describe('flat', () => { }); }); - test('multiple keys', () => { + it('multiple keys', () => { expect( flat({ foo: { @@ -69,7 +69,7 @@ describe('flat', () => { }); }); - test('empty object', () => { + it('empty object', () => { expect( flat({ foo: { @@ -81,7 +81,7 @@ describe('flat', () => { }); }); - test('array', () => { + it('array', () => { expect( flat({ hello: [{world: {again: 'foo'}}, {lorem: 'ipsum'}], diff --git a/packages/docusaurus/src/client/__tests__/normalizeLocation.test.ts b/packages/docusaurus/src/client/__tests__/normalizeLocation.test.ts index bb6e92738921..fcc23ba63cd3 100644 --- a/packages/docusaurus/src/client/__tests__/normalizeLocation.test.ts +++ b/packages/docusaurus/src/client/__tests__/normalizeLocation.test.ts @@ -5,16 +5,26 @@ * LICENSE file in the root directory of this source tree. */ +import {jest} from '@jest/globals'; import normalizeLocation from '../normalizeLocation'; +import type {Location} from 'history'; describe('normalizeLocation', () => { - test('rewrite locations with index.html', () => { + it('rewrites locations with index.html', () => { + expect( + normalizeLocation({ + pathname: '/index.html', + } as Location), + ).toEqual({ + pathname: '/', + }); + expect( normalizeLocation({ pathname: '/docs/introduction/index.html', search: '?search=foo', hash: '#features', - }), + } as Location), ).toEqual({ pathname: '/docs/introduction', search: '?search=foo', @@ -26,7 +36,7 @@ describe('normalizeLocation', () => { pathname: '/index.html', search: '', hash: '#features', - }), + } as Location), ).toEqual({ pathname: '/', search: '', @@ -34,7 +44,34 @@ describe('normalizeLocation', () => { }); }); - test('untouched pathnames', () => { + it('removes html extension', () => { + expect( + normalizeLocation({ + pathname: '/docs/installation.html', + } as Location), + ).toEqual({ + pathname: '/docs/installation', + }); + expect( + normalizeLocation({ + pathname: '/docs/introduction/foo.html', + search: '', + hash: '#bar', + } as Location), + ).toEqual({ + pathname: '/docs/introduction/foo', + search: '', + hash: '#bar', + }); + }); + + it('does not strip extension if the route location has one', () => { + expect(normalizeLocation({pathname: '/page.html'} as Location)).toEqual({ + pathname: '/page.html', + }); + }); + + it('leaves pathnames untouched', () => { const replaceMock = jest.spyOn(String.prototype, 'replace'); expect( @@ -42,7 +79,7 @@ describe('normalizeLocation', () => { pathname: '/docs/introduction', search: '', hash: '#features', - }), + } as Location), ).toEqual({ pathname: '/docs/introduction', search: '', @@ -55,7 +92,7 @@ describe('normalizeLocation', () => { pathname: '/docs/introduction', search: '', hash: '#features', - }), + } as Location), ).toEqual({ pathname: '/docs/introduction', search: '', @@ -63,22 +100,10 @@ describe('normalizeLocation', () => { }); expect(replaceMock).toBeCalledTimes(1); - expect( - normalizeLocation({ - pathname: '/docs/introduction/foo.html', - search: '', - hash: '#bar', - }), - ).toEqual({ - pathname: '/docs/introduction/foo.html', - search: '', - hash: '#bar', - }); - expect( normalizeLocation({ pathname: '/', - }), + } as Location), ).toEqual({ pathname: '/', }); diff --git a/packages/docusaurus/src/client/__tests__/routeContext.test.tsx b/packages/docusaurus/src/client/__tests__/routeContext.test.tsx new file mode 100644 index 000000000000..558cf157a66f --- /dev/null +++ b/packages/docusaurus/src/client/__tests__/routeContext.test.tsx @@ -0,0 +1,89 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import React from 'react'; +import {renderHook} from '@testing-library/react-hooks/server'; +import {RouteContextProvider} from '../routeContext'; +import useRouteContext from '../exports/useRouteContext'; + +describe('RouteContextProvider', () => { + it('creates root route context registered by plugin', () => { + expect( + renderHook(() => useRouteContext(), { + wrapper: ({children}) => ( + + {children} + + ), + }).result.current, + ).toEqual({plugin: {id: 'test', name: 'test'}}); + }); + it('throws if there is no route context at all', () => { + expect( + () => + renderHook(() => useRouteContext(), { + wrapper: ({children}) => ( + {children} + ), + }).result.current, + ).toThrowErrorMatchingInlineSnapshot( + `"Unexpected: no Docusaurus route context found"`, + ); + }); + it('throws if there is no parent context created by plugin', () => { + expect( + () => + renderHook(() => useRouteContext(), { + wrapper: ({children}) => ( + + {children} + + ), + }).result.current, + ).toThrowErrorMatchingInlineSnapshot( + `"Unexpected: Docusaurus topmost route context has no \`plugin\` attribute"`, + ); + }); + it('merges route context created by parent', () => { + expect( + renderHook(() => useRouteContext(), { + wrapper: ({children}) => ( + + + {children} + + + ), + }).result.current, + ).toEqual({ + data: {some: 'data', someMore: 'data'}, + plugin: {id: 'test', name: 'test'}, + }); + }); + it('never overrides the plugin attribute', () => { + expect( + renderHook(() => useRouteContext(), { + wrapper: ({children}) => ( + + + {children} + + + ), + }).result.current, + ).toEqual({ + data: {some: 'data', someMore: 'data'}, + plugin: {id: 'test', name: 'test'}, + }); + }); +}); diff --git a/packages/docusaurus/src/client/exports/browserContext.tsx b/packages/docusaurus/src/client/browserContext.tsx similarity index 100% rename from packages/docusaurus/src/client/exports/browserContext.tsx rename to packages/docusaurus/src/client/browserContext.tsx diff --git a/packages/docusaurus/src/client/client-lifecycles-dispatcher.ts b/packages/docusaurus/src/client/client-lifecycles-dispatcher.ts deleted file mode 100644 index 57982c394313..000000000000 --- a/packages/docusaurus/src/client/client-lifecycles-dispatcher.ts +++ /dev/null @@ -1,34 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -import clientModules from '@generated/client-modules'; -import type {ClientModule} from '@docusaurus/types'; - -function dispatchLifecycleAction( - lifecycleAction: K, - args: Parameters>, -) { - clientModules.forEach((clientModule) => { - const lifecycleFunction = (clientModule?.default?.[lifecycleAction] ?? - clientModule[lifecycleAction]) as - | ((...a: Parameters>) => void) - | undefined; - - lifecycleFunction?.(...args); - }); -} - -const clientLifecyclesDispatchers: Required = { - onRouteUpdate(...args) { - dispatchLifecycleAction('onRouteUpdate', args); - }, - onRouteUpdateDelayed(...args) { - dispatchLifecycleAction('onRouteUpdateDelayed', args); - }, -}; - -export default clientLifecyclesDispatchers; diff --git a/packages/docusaurus/src/client/clientEntry.tsx b/packages/docusaurus/src/client/clientEntry.tsx index db766906b996..8e53d92e1021 100644 --- a/packages/docusaurus/src/client/clientEntry.tsx +++ b/packages/docusaurus/src/client/clientEntry.tsx @@ -6,11 +6,10 @@ */ import React from 'react'; -import {hydrate, render} from 'react-dom'; +import ReactDOM from 'react-dom'; import {BrowserRouter} from 'react-router-dom'; import {HelmetProvider} from 'react-helmet-async'; -import routes from '@generated/routes'; import ExecutionEnvironment from './exports/ExecutionEnvironment'; import App from './App'; import preload from './preload'; @@ -30,8 +29,9 @@ if (ExecutionEnvironment.canUseDOM) { // first-load experience. // For development, there is no existing markup so we had to render it. // We also preload async component to avoid first-load loading screen. - const renderMethod = process.env.NODE_ENV === 'production' ? hydrate : render; - preload(routes, window.location.pathname).then(() => { + const renderMethod = + process.env.NODE_ENV === 'production' ? ReactDOM.hydrate : ReactDOM.render; + preload(window.location.pathname).then(() => { renderMethod( diff --git a/packages/docusaurus/src/client/docusaurus.ts b/packages/docusaurus/src/client/docusaurus.ts index 0c024c0fc43b..da1236cacede 100644 --- a/packages/docusaurus/src/client/docusaurus.ts +++ b/packages/docusaurus/src/client/docusaurus.ts @@ -12,50 +12,45 @@ import prefetchHelper from './prefetch'; import preloadHelper from './preload'; import flat from './flat'; -const fetched: Record = {}; -const loaded: Record = {}; +const fetched = new Set(); +const loaded = new Set(); declare global { // eslint-disable-next-line camelcase, no-underscore-dangle const __webpack_require__: {gca: (name: string) => string}; interface Navigator { - connection: {effectiveType: string; saveData: boolean}; + connection?: {effectiveType: string; saveData: boolean}; } } // If user is on slow or constrained connection. const isSlowConnection = () => - navigator.connection?.effectiveType.includes('2g') && + navigator.connection?.effectiveType.includes('2g') || navigator.connection?.saveData; const canPrefetch = (routePath: string) => - !isSlowConnection() && !loaded[routePath] && !fetched[routePath]; + !isSlowConnection() && !loaded.has(routePath) && !fetched.has(routePath); const canPreload = (routePath: string) => - !isSlowConnection() && !loaded[routePath]; - -// Remove the last part containing the route hash -// input: /blog/2018/12/14/Happy-First-Birthday-Slash-fe9 -// output: /blog/2018/12/14/Happy-First-Birthday-Slash -const removeRouteNameHash = (str: string) => str.replace(/-[^-]+$/, ''); + !isSlowConnection() && !loaded.has(routePath); const getChunkNamesToLoad = (path: string): string[] => Object.entries(routesChunkNames) .filter( - ([routeNameWithHash]) => removeRouteNameHash(routeNameWithHash) === path, + // Remove the last part containing the route hash + // input: /blog/2018/12/14/Happy-First-Birthday-Slash-fe9 + // output: /blog/2018/12/14/Happy-First-Birthday-Slash + ([routeNameWithHash]) => + routeNameWithHash.replace(/-[^-]+$/, '') === path, ) - .flatMap(([, routeChunks]) => - // flat() is useful for nested chunk names, it's not like array.flat() - Object.values(flat(routeChunks)), - ); + .flatMap(([, routeChunks]) => Object.values(flat(routeChunks))); const docusaurus = { - prefetch: (routePath: string): boolean => { + prefetch(routePath: string): false | Promise { if (!canPrefetch(routePath)) { return false; } - // Prevent future duplicate prefetch of routePath. - fetched[routePath] = true; + fetched.add(routePath); // Find all webpack chunk names needed. const matches = matchRoutes(routes, routePath); @@ -65,33 +60,32 @@ const docusaurus = { ); // Prefetch all webpack chunk assets file needed. - chunkNamesNeeded.forEach((chunkName) => { - // "__webpack_require__.gca" is a custom function provided by - // ChunkAssetPlugin. Pass it the chunkName or chunkId you want to load and - // it will return the URL for that chunk. - // eslint-disable-next-line camelcase - const chunkAsset = __webpack_require__.gca(chunkName); - - // In some cases, webpack might decide to optimize further & hence the - // chunk assets are merged to another chunk/previous chunk. - // Hence, we can safely filter it out/don't need to load it. - if (chunkAsset && !/undefined/.test(chunkAsset)) { - prefetchHelper(chunkAsset); - } - }); - - return true; + return Promise.all( + chunkNamesNeeded.map((chunkName) => { + // "__webpack_require__.gca" is injected by ChunkAssetPlugin. Pass it + // the name of the chunk you want to load and it will return its URL. + // eslint-disable-next-line camelcase + const chunkAsset = __webpack_require__.gca(chunkName); + + // In some cases, webpack might decide to optimize further, leading to + // the chunk assets being merged to another chunk. In this case, we can + // safely filter it out and don't need to load it. + if (chunkAsset && !chunkAsset.includes('undefined')) { + return prefetchHelper(chunkAsset); + } + return Promise.resolve(); + }), + ); }, - preload: (routePath: string): boolean => { + preload(routePath: string): false | Promise { if (!canPreload(routePath)) { return false; } - - loaded[routePath] = true; - preloadHelper(routes, routePath); - return true; + loaded.add(routePath); + return preloadHelper(routePath); }, }; -export default docusaurus; +// This object is directly mounted onto window, better freeze it +export default Object.freeze(docusaurus); diff --git a/packages/docusaurus/src/client/exports/docusaurusContext.tsx b/packages/docusaurus/src/client/docusaurusContext.tsx similarity index 99% rename from packages/docusaurus/src/client/exports/docusaurusContext.tsx rename to packages/docusaurus/src/client/docusaurusContext.tsx index 5023b1eced70..5bed42737f37 100644 --- a/packages/docusaurus/src/client/exports/docusaurusContext.tsx +++ b/packages/docusaurus/src/client/docusaurusContext.tsx @@ -6,13 +6,12 @@ */ import React, {type ReactNode} from 'react'; -import type {DocusaurusContext} from '@docusaurus/types'; - import siteConfig from '@generated/docusaurus.config'; import globalData from '@generated/globalData'; import i18n from '@generated/i18n'; import codeTranslations from '@generated/codeTranslations'; import siteMetadata from '@generated/site-metadata'; +import type {DocusaurusContext} from '@docusaurus/types'; // Static value on purpose: don't make it dynamic! // Using context is still useful for testability reasons. diff --git a/packages/docusaurus/src/client/exports/BrowserOnly.tsx b/packages/docusaurus/src/client/exports/BrowserOnly.tsx index 025049b782de..16e64ef06d01 100644 --- a/packages/docusaurus/src/client/exports/BrowserOnly.tsx +++ b/packages/docusaurus/src/client/exports/BrowserOnly.tsx @@ -7,16 +7,14 @@ import React, {isValidElement} from 'react'; import useIsBrowser from '@docusaurus/useIsBrowser'; +import type {Props} from '@docusaurus/BrowserOnly'; // Similar comp to the one described here: // https://www.joshwcomeau.com/react/the-perils-of-rehydration/#abstractions export default function BrowserOnly({ children, fallback, -}: { - children: () => JSX.Element; - fallback?: JSX.Element; -}): JSX.Element | null { +}: Props): JSX.Element | null { const isBrowser = useIsBrowser(); if (isBrowser) { @@ -27,7 +25,7 @@ export default function BrowserOnly({ throw new Error(`Docusaurus error: The children of must be a "render function", e.g. {() => {window.location.href}}. Current type: ${isValidElement(children) ? 'React element' : typeof children}`); } - return <>{children()}; + return <>{children?.()}; } return fallback ?? null; diff --git a/packages/docusaurus/src/client/exports/ComponentCreator.tsx b/packages/docusaurus/src/client/exports/ComponentCreator.tsx index 8dc312b8d92e..476d73febcf9 100644 --- a/packages/docusaurus/src/client/exports/ComponentCreator.tsx +++ b/packages/docusaurus/src/client/exports/ComponentCreator.tsx @@ -7,12 +7,18 @@ import React from 'react'; import Loadable from 'react-loadable'; -import Loading from '@theme/Loading'; import routesChunkNames from '@generated/routesChunkNames'; import registry from '@generated/registry'; +import Loading from '@theme/Loading'; import flat from '../flat'; +import {RouteContextProvider} from '../routeContext'; +import type {RouteContext} from '@docusaurus/types'; -type OptsLoader = Record; +declare global { + interface NodeRequire { + resolveWeak: (name: string) => number; + } +} export default function ComponentCreator( path: string, @@ -23,69 +29,112 @@ export default function ComponentCreator( return Loadable({ loading: Loading, loader: () => import('@theme/NotFound'), + modules: ['@theme/NotFound'], + webpack: () => [require.resolveWeak('@theme/NotFound')], + render(loaded, props) { + const NotFound = loaded.default; + return ( + + + + ); + }, }); } - const chunkNamesKey = `${path}-${hash}`; - const chunkNames = routesChunkNames[chunkNamesKey]!; - const optsModules: string[] = []; + const chunkNames = routesChunkNames[`${path}-${hash}`]!; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const loader: {[key: string]: () => Promise} = {}; + const modules: string[] = []; const optsWebpack: string[] = []; - const optsLoader: OptsLoader = {}; - /* Prepare opts data that react-loadable needs - https://github.com/jamiebuilds/react-loadable#declaring-which-modules-are-being-loaded - Example: - - optsLoader: - { - component: () => import('./Pages.js'), - content.foo: () => import('./doc1.md'), - } - - optsModules: ['./Pages.js', './doc1.md'] - - optsWebpack: [ - require.resolveWeak('./Pages.js'), - require.resolveWeak('./doc1.md'), - ] - */ + // A map from prop names to chunk names. + // e.g. Suppose the plugin added this as route: + // { __comp: "...", prop: { foo: "..." }, items: ["...", "..."] } + // It will become: + // { __comp: "...", "prop.foo": "...", "items.0": "...", "items.1": ... } + // Loadable.Map will _map_ over `loader` and load each key. const flatChunkNames = flat(chunkNames); - Object.entries(flatChunkNames).forEach(([key, chunkName]) => { + Object.entries(flatChunkNames).forEach(([keyPath, chunkName]) => { const chunkRegistry = registry[chunkName]; if (chunkRegistry) { // eslint-disable-next-line prefer-destructuring - optsLoader[key] = chunkRegistry[0]; - optsModules.push(chunkRegistry[1]); + loader[keyPath] = chunkRegistry[0]; + modules.push(chunkRegistry[1]); optsWebpack.push(chunkRegistry[2]); } }); return Loadable.Map({ loading: Loading, - loader: optsLoader, - modules: optsModules, + loader, + modules, webpack: () => optsWebpack, - render: (loaded, props) => { - // Clone the original object since we don't want to alter the original. - const loadedModules = JSON.parse(JSON.stringify(chunkNames)); - Object.keys(loaded).forEach((key) => { + render( + loaded: {[keyPath: string]: {[exportedName: string]: unknown}}, + props, + ) { + // `loaded` will be a map from key path (as returned from the flattened + // chunk names) to the modules loaded from the loaders. We now have to + // restore the chunk names' previous shape from this flat record. + // We do so by taking advantage of the existing `chunkNames` and replacing + // each chunk name with its loaded module, so we don't create another + // object from scratch. + const loadedModules = JSON.parse(JSON.stringify(chunkNames)) as { + __comp?: React.ComponentType; + __context?: RouteContext; + [propName: string]: unknown; + }; + Object.entries(loaded).forEach(([keyPath, loadedModule]) => { + // JSON modules are also loaded as `{ default: ... }` (`import()` + // semantics) but we just want to pass the actual value to props. + const chunk = loadedModule.default; + // One loaded chunk can only be one of two things: a module (props) or a + // component. Modules are always JSON, so `default` always exists. This + // could only happen with a user-defined component. + if (!chunk) { + throw new Error( + `The page component at ${path} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`, + ); + } + // A module can be a primitive, for example, if the user stored a string + // as a prop. However, there seems to be a bug with swc-loader's CJS + // logic, in that it would load a JSON module with content "foo" as + // `{ default: "foo", 0: "f", 1: "o", 2: "o" }`. Just to be safe, we + // first make sure that the chunk is non-primitive. + if (typeof chunk === 'object' || typeof chunk === 'function') { + Object.keys(loadedModule) + .filter((k) => k !== 'default') + .forEach((nonDefaultKey) => { + (chunk as {[key: string]: unknown})[nonDefaultKey] = + loadedModule[nonDefaultKey]; + }); + } + // We now have this chunk prepared. Go down the key path and replace the + // chunk name with the actual chunk. let val = loadedModules; - const keyPath = key.split('.'); - keyPath.slice(0, -1).forEach((k) => { - val = val[k]; + const keyPaths = keyPath.split('.'); + keyPaths.slice(0, -1).forEach((k) => { + val = val[k] as {[propName: string]: unknown}; }); - val[keyPath[keyPath.length - 1]!] = loaded[key].default; - const nonDefaultKeys = Object.keys(loaded[key]).filter( - (k) => k !== 'default', - ); - if (nonDefaultKeys && nonDefaultKeys.length) { - nonDefaultKeys.forEach((nonDefaultKey) => { - val[keyPath[keyPath.length - 1]!][nonDefaultKey] = - loaded[key][nonDefaultKey]; - }); - } + val[keyPaths[keyPaths.length - 1]!] = chunk; }); - const Component = loadedModules.component; - delete loadedModules.component; - return ; + /* eslint-disable no-underscore-dangle */ + const Component = loadedModules.__comp!; + delete loadedModules.__comp; + const routeContext = loadedModules.__context!; + delete loadedModules.__context; + /* eslint-enable no-underscore-dangle */ + + // Is there any way to put this RouteContextProvider upper in the tree? + return ( + + + + ); }, }); } diff --git a/packages/docusaurus/src/client/exports/ErrorBoundary.tsx b/packages/docusaurus/src/client/exports/ErrorBoundary.tsx index 9b9515898a84..c29a33a9ca32 100644 --- a/packages/docusaurus/src/client/exports/ErrorBoundary.tsx +++ b/packages/docusaurus/src/client/exports/ErrorBoundary.tsx @@ -6,14 +6,22 @@ */ import React, {type ReactNode} from 'react'; - import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment'; -import type {Props} from '@docusaurus/ErrorBoundary'; -import DefaultFallback from '@theme/Error'; - -interface State { +import ThemeError from '@theme/Error'; +import type { + FallbackFunction, + FallbackParams, + Props, +} from '@docusaurus/ErrorBoundary'; + +type State = { error: Error | null; -} +}; + +// eslint-disable-next-line react/function-component-definition +const DefaultFallback: FallbackFunction = (params) => ( + +); export default class ErrorBoundary extends React.Component { constructor(props: Props) { @@ -33,17 +41,15 @@ export default class ErrorBoundary extends React.Component { const {error} = this.state; if (error) { - const fallback = this.props.fallback ?? DefaultFallback; - return fallback({ + const fallbackParams: FallbackParams = { error, tryAgain: () => this.setState({error: null}), - }); + }; + const fallback: FallbackFunction = this.props.fallback ?? DefaultFallback; + return fallback(fallbackParams); } - return ( - children ?? - // See https://github.com/facebook/docusaurus/issues/6337#issuecomment-1012913647 - null - ); + // See https://github.com/facebook/docusaurus/issues/6337#issuecomment-1012913647 + return children ?? null; } } diff --git a/packages/docusaurus/src/client/exports/Interpolate.tsx b/packages/docusaurus/src/client/exports/Interpolate.tsx index 323369b3bac4..dbb7a14c7768 100644 --- a/packages/docusaurus/src/client/exports/Interpolate.tsx +++ b/packages/docusaurus/src/client/exports/Interpolate.tsx @@ -5,11 +5,10 @@ * LICENSE file in the root directory of this source tree. */ -import React, {type ReactNode} from 'react'; +import React, {isValidElement, type ReactNode} from 'react'; import type { InterpolateProps, InterpolateValues, - ExtractInterpolatePlaceholders, } from '@docusaurus/Interpolate'; /* @@ -18,9 +17,6 @@ We don't ship a markdown parser nor a feature-complete i18n library on purpose. More details here: https://github.com/facebook/docusaurus/pull/4295 */ -const ValueRegexp = /{\w+}/g; -const ValueFoundMarker = '{}'; // does not care much - // If all the values are plain strings, then interpolate returns a simple string export function interpolate( text: Str, @@ -37,64 +33,38 @@ export function interpolate( text: Str, values?: InterpolateValues, ): ReactNode { - const elements: (Value | string)[] = []; - - const processedText = text.replace(ValueRegexp, (match: string) => { - // remove {{ and }} around the placeholder - const key = match.substring( - 1, - match.length - 1, - ) as ExtractInterpolatePlaceholders; - - const value = values?.[key]; - - if (typeof value !== 'undefined') { - const element = React.isValidElement(value) - ? value - : // For non-React elements: basic primitive->string conversion - String(value); - elements.push(element); - return ValueFoundMarker; + // eslint-disable-next-line prefer-named-capture-group + const segments = text.split(/(\{\w+\})/).map((seg, index) => { + // Odd indices (1, 3, 5...) of the segments are (potentially) interpolatable + if (index % 2 === 1) { + const value = values?.[seg.slice(1, -1) as keyof typeof values]; + if (value !== undefined) { + return value; + } + // No match: add warning? There's no way to "escape" interpolation though } - return match; // no match? add warning? + return seg; }); - - // No interpolation to be done: just return the text - if (elements.length === 0) { - return text; - } - // Basic string interpolation: returns interpolated string - if (elements.every((el) => typeof el === 'string')) { - return processedText - .split(ValueFoundMarker) - .reduce( - (str, value, index) => - str.concat(value).concat((elements[index] as string) ?? ''), - '', - ); + if (segments.some((seg) => isValidElement(seg))) { + return segments + .map((seg, index) => + isValidElement(seg) ? React.cloneElement(seg, {key: index}) : seg, + ) + .filter((seg) => seg !== ''); } - // JSX interpolation: returns ReactNode - return processedText.split(ValueFoundMarker).reduce( - (array, value, index) => [ - ...array, - - {value} - {elements[index]} - , - ], - [], - ); + return segments.join(''); } export default function Interpolate({ children, values, -}: InterpolateProps): ReactNode { +}: InterpolateProps): JSX.Element { if (typeof children !== 'string') { - console.warn('Illegal children', children); throw new Error( - 'The Docusaurus component only accept simple string values', + `The Docusaurus component only accept simple string values. Received: ${ + isValidElement(children) ? 'React element' : typeof children + }`, ); } - return interpolate(children, values); + return <>{interpolate(children, values)}; } diff --git a/packages/docusaurus/src/client/exports/Link.tsx b/packages/docusaurus/src/client/exports/Link.tsx index 6850f237611f..614c608c3faf 100644 --- a/packages/docusaurus/src/client/exports/Link.tsx +++ b/packages/docusaurus/src/client/exports/Link.tsx @@ -11,23 +11,14 @@ import React, { useRef, type ComponentType, } from 'react'; - import {NavLink, Link as RRLink} from 'react-router-dom'; +import {applyTrailingSlash} from '@docusaurus/utils-common'; import useDocusaurusContext from './useDocusaurusContext'; import isInternalUrl from './isInternalUrl'; import ExecutionEnvironment from './ExecutionEnvironment'; import {useLinksCollector} from '../LinksCollector'; import {useBaseUrlUtils} from './useBaseUrl'; -import {applyTrailingSlash} from '@docusaurus/utils-common'; - import type {Props} from '@docusaurus/Link'; -import type docusaurus from '../docusaurus'; - -declare global { - interface Window { - docusaurus: typeof docusaurus; - } -} // TODO all this wouldn't be necessary if we used ReactRouter basename feature // We don't automatically add base urls to all links, @@ -56,10 +47,7 @@ function Link( const linksCollector = useLinksCollector(); const innerRef = useRef(null); - useImperativeHandle( - forwardedRef, - () => innerRef.current as HTMLAnchorElement, - ); + useImperativeHandle(forwardedRef, () => innerRef.current!); // IMPORTANT: using to or href should not change anything // For example, MDX links will ALWAYS give us the href props @@ -103,35 +91,29 @@ function Link( const IOSupported = ExecutionEnvironment.canUseIntersectionObserver; const ioRef = useRef(); - const handleIntersection = (el: HTMLAnchorElement, cb: () => void) => { - ioRef.current = new window.IntersectionObserver((entries) => { - entries.forEach((entry) => { - if (el === entry.target) { - // If element is in viewport, stop observing and run callback. - // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API - if (entry.isIntersecting || entry.intersectionRatio > 0) { - ioRef.current!.unobserve(el); - ioRef.current!.disconnect(); - cb(); - } - } - }); - }); - // Add element to the observer. - ioRef.current!.observe(el); - }; - - const handleRef = (ref: HTMLAnchorElement | null) => { - innerRef.current = ref; + const handleRef = (el: HTMLAnchorElement | null) => { + innerRef.current = el; - if (IOSupported && ref && isInternal) { + if (IOSupported && el && isInternal) { // If IO supported and element reference found, set up Observer. - handleIntersection(ref, () => { - if (targetLink != null) { - window.docusaurus.prefetch(targetLink); - } + ioRef.current = new window.IntersectionObserver((entries) => { + entries.forEach((entry) => { + if (el === entry.target) { + // If element is in viewport, stop observing and run callback. + // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API + if (entry.isIntersecting || entry.intersectionRatio > 0) { + ioRef.current!.unobserve(el); + ioRef.current!.disconnect(); + if (targetLink != null) { + window.docusaurus.prefetch(targetLink); + } + } + } + }); }); + // Add element to the observer. + ioRef.current.observe(el); } }; @@ -161,8 +143,8 @@ function Link( const isAnchorLink = targetLink?.startsWith('#') ?? false; const isRegularHtmlLink = !targetLink || !isInternal || isAnchorLink; - if (targetLink && isInternal && !isAnchorLink && !noBrokenLinkCheck) { - linksCollector.collectLink(targetLink); + if (!isRegularHtmlLink && !noBrokenLinkCheck) { + linksCollector.collectLink(targetLink!); } return isRegularHtmlLink ? ( @@ -180,7 +162,7 @@ function Link( onMouseEnter={onMouseEnter} innerRef={handleRef} to={targetLink} - // avoid "React does not recognize the `activeClassName` prop on a DOM + // Avoid "React does not recognize the `activeClassName` prop on a DOM // element" {...(isNavLink && {isActive, activeClassName})} /> diff --git a/packages/docusaurus/src/client/exports/Translate.tsx b/packages/docusaurus/src/client/exports/Translate.tsx index 8e9c0f8fccdc..b88606563871 100644 --- a/packages/docusaurus/src/client/exports/Translate.tsx +++ b/packages/docusaurus/src/client/exports/Translate.tsx @@ -5,12 +5,11 @@ * LICENSE file in the root directory of this source tree. */ -import type {ReactNode} from 'react'; +import React from 'react'; import {interpolate, type InterpolateValues} from '@docusaurus/Interpolate'; -import type {TranslateParam, TranslateProps} from '@docusaurus/Translate'; - // Can't read it from context, due to exposing imperative API import codeTranslations from '@generated/codeTranslations'; +import type {TranslateParam, TranslateProps} from '@docusaurus/Translate'; function getLocalizedMessage({ id, @@ -46,7 +45,7 @@ export default function Translate({ children, id, values, -}: TranslateProps): ReactNode { +}: TranslateProps): JSX.Element { if (children && typeof children !== 'string') { console.warn('Illegal children', children); throw new Error( @@ -55,5 +54,5 @@ export default function Translate({ } const localizedMessage: string = getLocalizedMessage({message: children, id}); - return interpolate(localizedMessage, values); + return <>{interpolate(localizedMessage, values)}; } diff --git a/packages/docusaurus/src/client/exports/__tests__/BrowserOnly.test.tsx b/packages/docusaurus/src/client/exports/__tests__/BrowserOnly.test.tsx index 89161383b5ed..989bdbc7b3ac 100644 --- a/packages/docusaurus/src/client/exports/__tests__/BrowserOnly.test.tsx +++ b/packages/docusaurus/src/client/exports/__tests__/BrowserOnly.test.tsx @@ -3,53 +3,110 @@ * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. + * + * @jest-environment jsdom */ +// Jest doesn't allow pragma below other comments. https://github.com/facebook/jest/issues/12573 +// eslint-disable-next-line header/header import React from 'react'; import renderer from 'react-test-renderer'; import BrowserOnly from '../BrowserOnly'; +import {Context} from '../../browserContext'; + +describe('', () => { + const originalEnv = process.env; -jest.mock('@docusaurus/useIsBrowser', () => () => true); + beforeEach(() => { + jest.resetModules(); + process.env = {...originalEnv}; + }); + + afterAll(() => { + process.env = originalEnv; + }); -describe('BrowserOnly', () => { - test('Should reject react element children', () => { + it('rejects react element children', () => { process.env.NODE_ENV = 'development'; - expect(() => { - renderer.create( - - {/* @ts-expect-error test */} - {window.location.href} - , - ); - }).toThrowErrorMatchingInlineSnapshot(` - "Docusaurus error: The children of must be a \\"render function\\", e.g. {() => {window.location.href}}. + expect(() => + renderer + .create( + + + {/* @ts-expect-error test */} + {window.location.href} + + , + ) + .toJSON(), + ).toThrowErrorMatchingInlineSnapshot(` + "Docusaurus error: The children of must be a "render function", e.g. {() => {window.location.href}}. Current type: React element" `); }); - test('Should reject string children', () => { + + it('rejects string children', () => { + process.env.NODE_ENV = 'development'; expect(() => { renderer.create( - // @ts-expect-error test - , + + {/* @ts-expect-error test */} + + , ); }).toThrowErrorMatchingInlineSnapshot(` - "Docusaurus error: The children of must be a \\"render function\\", e.g. {() => {window.location.href}}. + "Docusaurus error: The children of must be a "render function", e.g. {() => {window.location.href}}. Current type: string" `); }); - test('Should accept valid children', () => { + + it('accepts valid children', () => { + expect( + renderer + .create( + + Loading}> + {() => {window.location.href}} + + , + ) + .toJSON(), + ).toMatchInlineSnapshot(` + + https://docusaurus.io/ + + `); + }); + + it('returns fallback when not in browser', () => { expect( renderer .create( - Loading}> - {() => {window.location.href}} - , + + Loading}> + {() => {window.location.href}} + + , ) .toJSON(), ).toMatchInlineSnapshot(` - https://docusaurus.io + Loading `); }); + + it('gracefully falls back', () => { + expect( + renderer + .create( + + + {() => {window.location.href}} + + , + ) + .toJSON(), + ).toMatchInlineSnapshot(`null`); + }); }); diff --git a/packages/docusaurus/src/client/exports/__tests__/Head.test.tsx b/packages/docusaurus/src/client/exports/__tests__/Head.test.tsx new file mode 100644 index 000000000000..067fc9ea25ee --- /dev/null +++ b/packages/docusaurus/src/client/exports/__tests__/Head.test.tsx @@ -0,0 +1,44 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import React from 'react'; +import {type FilledContext, HelmetProvider} from 'react-helmet-async'; +import renderer from 'react-test-renderer'; +import Head from '../Head'; + +describe('Head', () => { + it('does exactly what Helmet does', () => { + const context = {}; + expect( + renderer + .create( + + + + + + + + + + + + +
Content
+
, + ) + .toJSON(), + ).toMatchSnapshot(); + expect((context as FilledContext).helmet).toMatchSnapshot(); + }); +}); diff --git a/packages/docusaurus/src/client/exports/__tests__/Interpolate.test.tsx b/packages/docusaurus/src/client/exports/__tests__/Interpolate.test.tsx index 3a3b4ec046d2..d21b296f1253 100644 --- a/packages/docusaurus/src/client/exports/__tests__/Interpolate.test.tsx +++ b/packages/docusaurus/src/client/exports/__tests__/Interpolate.test.tsx @@ -6,15 +6,16 @@ */ import React from 'react'; -import {interpolate} from '../Interpolate'; +import renderer from 'react-test-renderer'; +import Interpolate, {interpolate} from '../Interpolate'; -describe('Interpolate', () => { - test('without placeholders', () => { +describe('interpolate', () => { + it('without placeholders', () => { const text = 'Hello how are you?'; expect(interpolate(text)).toEqual(text); }); - test('placeholders with string values', () => { + it('placeholders with string values', () => { const text = 'Hello {name} how are you {day}?'; const values = {name: 'Sébastien', day: 'today'}; expect(interpolate(text, values)).toMatchInlineSnapshot( @@ -22,7 +23,7 @@ describe('Interpolate', () => { ); }); - test('placeholders with string values 2', () => { + it('placeholders with string values 2', () => { const text = '{number} {string} {object} {array}'; const values = { number: 42, @@ -30,13 +31,13 @@ describe('Interpolate', () => { object: {hello: 'world'}, array: ['Hello'], }; - // Do we need to improve the JS type -> String conversion logic here? + // @ts-expect-error: test expect(interpolate(text, values)).toMatchInlineSnapshot( `"42 Hello [object Object] Hello"`, ); }); - test('placeholders with falsy values', () => { + it('placeholders with falsy values', () => { const text = '{number} {string} {boolean}'; const values = { number: 0, @@ -47,35 +48,37 @@ describe('Interpolate', () => { expect(interpolate(text, values)).toMatchInlineSnapshot(`"0 false"`); }); - test('placeholders with string values mismatch', () => { + it('placeholders with string values mismatch', () => { // Should we emit warnings in such case? const text = 'Hello {name} how are you {unprovidedValue}?'; const values = {name: 'Sébastien', extraValue: 'today'}; + // @ts-expect-error: test expect(interpolate(text, values)).toMatchInlineSnapshot( `"Hello Sébastien how are you {unprovidedValue}?"`, ); }); - test('placeholders with values not provided', () => { + it('placeholders with values not provided', () => { // Should we emit warnings in such case? const text = 'Hello {name} how are you {day}?'; expect(interpolate(text)).toEqual(text); + // @ts-expect-error: test expect(interpolate(text, {})).toEqual(text); }); - test('placeholders with JSX values', () => { + it('placeholders with JSX values', () => { const text = 'Hello {name} how are you {day}?'; const values = {name: Sébastien, day: today}; expect(interpolate(text, values)).toMatchSnapshot(); }); - test('placeholders with mixed vales', () => { + it('placeholders with mixed vales', () => { const text = 'Hello {name} how are you {day}?'; const values = {name: 'Sébastien', day: today}; expect(interpolate(text, values)).toMatchSnapshot(); }); - test('acceptance test', () => { + it('acceptance test', () => { const text = 'Hello {name} how are you {day}? Another {unprovidedValue}!'; const values = { name: 'Sébastien', @@ -83,6 +86,60 @@ describe('Interpolate', () => { extraUselessValue1:
test
, extraUselessValue2: 'hi', }; + // @ts-expect-error: test expect(interpolate(text, values)).toMatchSnapshot(); }); }); + +describe('', () => { + it('without placeholders', () => { + const text = 'Hello how are you?'; + expect(renderer.create({text}).toJSON()).toEqual( + text, + ); + }); + + it('placeholders with string values', () => { + const text = 'Hello {name} how are you {day}?'; + const values = {name: 'Sébastien', day: 'today'}; + expect( + renderer + .create({text}) + .toJSON(), + ).toMatchInlineSnapshot(`"Hello Sébastien how are you today?"`); + }); + + it('acceptance test', () => { + const text = 'Hello {name} how are you {day}? Another {unprovidedValue}!'; + const values = { + name: 'Sébastien', + day: today, + extraUselessValue1:
test
, + extraUselessValue2: 'hi', + }; + expect( + renderer + .create({text}) + .toJSON(), + ).toMatchSnapshot(); + }); + + it('rejects when children is not string', () => { + expect(() => + renderer.create( + + {/* @ts-expect-error: for test */} + aaa + , + ), + ).toThrowErrorMatchingInlineSnapshot( + `"The Docusaurus component only accept simple string values. Received: React element"`, + ); + expect(() => + // @ts-expect-error: test + renderer.create({null}), + ).toThrowErrorMatchingInlineSnapshot( + `"The Docusaurus component only accept simple string values. Received: object"`, + ); + }); +}); diff --git a/packages/docusaurus/src/client/exports/__tests__/Translate.test.tsx b/packages/docusaurus/src/client/exports/__tests__/Translate.test.tsx index 24e20d745440..9c164ae36739 100644 --- a/packages/docusaurus/src/client/exports/__tests__/Translate.test.tsx +++ b/packages/docusaurus/src/client/exports/__tests__/Translate.test.tsx @@ -5,28 +5,76 @@ * LICENSE file in the root directory of this source tree. */ -import {translate} from '../Translate'; +import React from 'react'; +import renderer from 'react-test-renderer'; +import Translate, {translate} from '../Translate'; describe('translate', () => { - test('accept id and use it as fallback', () => { - expect(translate({id: 'some-id'})).toEqual('some-id'); + it('accepts id and uses it as fallback', () => { + expect(translate({id: 'some-id'})).toBe('some-id'); }); - test('accept message and use it as fallback', () => { - expect(translate({message: 'some-message'})).toEqual('some-message'); + it('accepts message and uses it as fallback', () => { + expect(translate({message: 'some-message'})).toBe('some-message'); }); - test('accept id+message and use message as fallback', () => { - expect(translate({id: 'some-id', message: 'some-message'})).toEqual( + it('accepts id+message and uses message as fallback', () => { + expect(translate({id: 'some-id', message: 'some-message'})).toBe( 'some-message', ); }); - test('reject when no id or message', () => { - // TODO tests are not resolving type defs correctly + it('rejects when no id or message', () => { + // TODO tests are not resolving type defs correctly. We need to include test + // files in a tsconfig file // @ts-expect-error: TS should protect when both id/message are missing expect(() => translate({})).toThrowErrorMatchingInlineSnapshot( `"Docusaurus translation declarations must have at least a translation id or a default translation message"`, ); }); }); + +describe('', () => { + it('accepts id and uses it as fallback', () => { + expect(renderer.create().toJSON()).toBe( + 'some-id', + ); + }); + + it('accepts message and uses it as fallback', () => { + expect(renderer.create(some-message).toJSON()).toBe( + 'some-message', + ); + }); + + it('accepts id+message and uses message as fallback', () => { + expect( + renderer + .create(some-message) + .toJSON(), + ).toBe('some-message'); + }); + + it('rejects when no id or message', () => { + expect(() => + // @ts-expect-error: TS should protect when both id/message are missing + renderer.create(), + ).toThrowErrorMatchingInlineSnapshot( + `"Docusaurus translation declarations must have at least a translation id or a default translation message"`, + ); + }); + + it('rejects when children is not a string', () => { + expect(() => + renderer.create( + // eslint-disable-next-line @docusaurus/string-literal-i18n-messages + + {/* @ts-expect-error: for test */} + aaa + , + ), + ).toThrowErrorMatchingInlineSnapshot( + `"The Docusaurus component only accept simple string values"`, + ); + }); +}); diff --git a/packages/docusaurus/src/client/exports/__tests__/__snapshots__/Head.test.tsx.snap b/packages/docusaurus/src/client/exports/__tests__/__snapshots__/Head.test.tsx.snap new file mode 100644 index 000000000000..419daccd48d6 --- /dev/null +++ b/packages/docusaurus/src/client/exports/__tests__/__snapshots__/Head.test.tsx.snap @@ -0,0 +1,40 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Head does exactly what Helmet does 1`] = ` +
+ Content +
+`; + +exports[`Head does exactly what Helmet does 2`] = ` + + + + + + + + + + + + +`; diff --git a/packages/docusaurus/src/client/exports/__tests__/__snapshots__/Interpolate.test.tsx.snap b/packages/docusaurus/src/client/exports/__tests__/__snapshots__/Interpolate.test.tsx.snap index a42c4388ab6e..0674ed24de49 100644 --- a/packages/docusaurus/src/client/exports/__tests__/__snapshots__/Interpolate.test.tsx.snap +++ b/packages/docusaurus/src/client/exports/__tests__/__snapshots__/Interpolate.test.tsx.snap @@ -1,57 +1,55 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`Interpolate acceptance test 1`] = ` -Array [ - - Hello - Sébastien - , - - how are you - - today - - , - - ? Another {unprovidedValue}! - , +exports[` acceptance test 1`] = ` +[ + "Hello ", + "Sébastien", + " how are you ", + + today + , + "? Another ", + "{unprovidedValue}", + "!", ] `; -exports[`Interpolate placeholders with JSX values 1`] = ` -Array [ - - Hello - - Sébastien - - , - - how are you - - today - - , - - ? - , +exports[`interpolate acceptance test 1`] = ` +[ + "Hello ", + "Sébastien", + " how are you ", + + today + , + "? Another ", + "{unprovidedValue}", + "!", ] `; -exports[`Interpolate placeholders with mixed vales 1`] = ` -Array [ - - Hello +exports[`interpolate placeholders with JSX values 1`] = ` +[ + "Hello ", + Sébastien - , - - how are you - - today - - , - - ? - , + , + " how are you ", + + today + , + "?", +] +`; + +exports[`interpolate placeholders with mixed vales 1`] = ` +[ + "Hello ", + "Sébastien", + " how are you ", + + today + , + "?", ] `; diff --git a/packages/docusaurus/src/client/exports/__tests__/isInternalUrl.test.ts b/packages/docusaurus/src/client/exports/__tests__/isInternalUrl.test.ts index cbb52102aeab..a91476457447 100644 --- a/packages/docusaurus/src/client/exports/__tests__/isInternalUrl.test.ts +++ b/packages/docusaurus/src/client/exports/__tests__/isInternalUrl.test.ts @@ -8,39 +8,39 @@ import isInternalUrl from '../isInternalUrl'; describe('isInternalUrl', () => { - test('should be true for empty links', () => { + it('returns true for empty links', () => { expect(isInternalUrl('')).toBeTruthy(); }); - test('should be true for root relative links', () => { + it('returns true for root relative links', () => { expect(isInternalUrl('/foo/bar')).toBeTruthy(); }); - test('should be true for relative links', () => { + it('returns true for relative links', () => { expect(isInternalUrl('foo/bar')).toBeTruthy(); }); - test('should be false for HTTP links', () => { + it('returns false for HTTP links', () => { expect(isInternalUrl('http://foo.com')).toBeFalsy(); }); - test('should be false for HTTPS links', () => { + it('returns false for HTTPS links', () => { expect(isInternalUrl('https://foo.com')).toBeFalsy(); }); - test('should be false for whatever protocol links', () => { + it('returns false for whatever protocol links', () => { expect(isInternalUrl('//foo.com')).toBeFalsy(); }); - test('should be false for telephone links', () => { + it('returns false for telephone links', () => { expect(isInternalUrl('tel:+1234567890')).toBeFalsy(); }); - test('should be false for mailto links', () => { + it('returns false for mailto links', () => { expect(isInternalUrl('mailto:someone@example.com')).toBeFalsy(); }); - test('should be false for undefined links', () => { + it('returns false for undefined links', () => { expect(isInternalUrl(undefined)).toBeFalsy(); }); }); diff --git a/packages/docusaurus/src/client/exports/__tests__/useBaseUrl.test.ts b/packages/docusaurus/src/client/exports/__tests__/useBaseUrl.test.ts deleted file mode 100644 index 2aec76be8ad9..000000000000 --- a/packages/docusaurus/src/client/exports/__tests__/useBaseUrl.test.ts +++ /dev/null @@ -1,139 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -import useBaseUrl, {useBaseUrlUtils} from '../useBaseUrl'; -import useDocusaurusContext from '../useDocusaurusContext'; - -jest.mock('../useDocusaurusContext', () => jest.fn(), {virtual: true}); - -const mockedContext = useDocusaurusContext; - -const forcePrepend = {forcePrependBaseUrl: true}; - -describe('useBaseUrl', () => { - test('empty base URL', () => { - mockedContext.mockImplementation(() => ({ - siteConfig: { - baseUrl: '/', - url: 'https://docusaurus.io', - }, - })); - - expect(useBaseUrl('hello')).toEqual('/hello'); - expect(useBaseUrl('/hello')).toEqual('/hello'); - expect(useBaseUrl('hello/')).toEqual('/hello/'); - expect(useBaseUrl('/hello/')).toEqual('/hello/'); - expect(useBaseUrl('hello/byebye')).toEqual('/hello/byebye'); - expect(useBaseUrl('/hello/byebye')).toEqual('/hello/byebye'); - expect(useBaseUrl('hello/byebye/')).toEqual('/hello/byebye/'); - expect(useBaseUrl('/hello/byebye/')).toEqual('/hello/byebye/'); - expect(useBaseUrl('https://github.com')).toEqual('https://github.com'); - expect(useBaseUrl('//reactjs.org')).toEqual('//reactjs.org'); - expect(useBaseUrl('//reactjs.org', forcePrepend)).toEqual('//reactjs.org'); - expect(useBaseUrl('https://site.com', forcePrepend)).toEqual( - 'https://site.com', - ); - expect(useBaseUrl('/hello/byebye', {absolute: true})).toEqual( - 'https://docusaurus.io/hello/byebye', - ); - expect(useBaseUrl('#hello')).toEqual('#hello'); - }); - - test('non-empty base URL', () => { - mockedContext.mockImplementation(() => ({ - siteConfig: { - baseUrl: '/docusaurus/', - url: 'https://docusaurus.io', - }, - })); - - expect(useBaseUrl('')).toEqual(''); - expect(useBaseUrl('hello')).toEqual('/docusaurus/hello'); - expect(useBaseUrl('/hello')).toEqual('/docusaurus/hello'); - expect(useBaseUrl('hello/')).toEqual('/docusaurus/hello/'); - expect(useBaseUrl('/hello/')).toEqual('/docusaurus/hello/'); - expect(useBaseUrl('hello/byebye')).toEqual('/docusaurus/hello/byebye'); - expect(useBaseUrl('/hello/byebye')).toEqual('/docusaurus/hello/byebye'); - expect(useBaseUrl('hello/byebye/')).toEqual('/docusaurus/hello/byebye/'); - expect(useBaseUrl('/hello/byebye/')).toEqual('/docusaurus/hello/byebye/'); - expect(useBaseUrl('https://github.com')).toEqual('https://github.com'); - expect(useBaseUrl('//reactjs.org')).toEqual('//reactjs.org'); - expect(useBaseUrl('//reactjs.org', forcePrepend)).toEqual('//reactjs.org'); - expect(useBaseUrl('/hello', forcePrepend)).toEqual('/docusaurus/hello'); - expect(useBaseUrl('https://site.com', forcePrepend)).toEqual( - 'https://site.com', - ); - expect(useBaseUrl('/hello/byebye', {absolute: true})).toEqual( - 'https://docusaurus.io/docusaurus/hello/byebye', - ); - expect(useBaseUrl('/docusaurus/')).toEqual('/docusaurus/'); - expect(useBaseUrl('/docusaurus/hello')).toEqual('/docusaurus/hello'); - expect(useBaseUrl('#hello')).toEqual('#hello'); - }); -}); - -describe('useBaseUrlUtils().withBaseUrl()', () => { - test('empty base URL', () => { - mockedContext.mockImplementation(() => ({ - siteConfig: { - baseUrl: '/', - url: 'https://docusaurus.io', - }, - })); - const {withBaseUrl} = useBaseUrlUtils(); - - expect(withBaseUrl('hello')).toEqual('/hello'); - expect(withBaseUrl('/hello')).toEqual('/hello'); - expect(withBaseUrl('hello/')).toEqual('/hello/'); - expect(withBaseUrl('/hello/')).toEqual('/hello/'); - expect(withBaseUrl('hello/byebye')).toEqual('/hello/byebye'); - expect(withBaseUrl('/hello/byebye')).toEqual('/hello/byebye'); - expect(withBaseUrl('hello/byebye/')).toEqual('/hello/byebye/'); - expect(withBaseUrl('/hello/byebye/')).toEqual('/hello/byebye/'); - expect(withBaseUrl('https://github.com')).toEqual('https://github.com'); - expect(withBaseUrl('//reactjs.org')).toEqual('//reactjs.org'); - expect(withBaseUrl('//reactjs.org', forcePrepend)).toEqual('//reactjs.org'); - expect(withBaseUrl('https://site.com', forcePrepend)).toEqual( - 'https://site.com', - ); - expect(withBaseUrl('/hello/byebye', {absolute: true})).toEqual( - 'https://docusaurus.io/hello/byebye', - ); - expect(withBaseUrl('#hello')).toEqual('#hello'); - }); - - test('non-empty base URL', () => { - mockedContext.mockImplementation(() => ({ - siteConfig: { - baseUrl: '/docusaurus/', - url: 'https://docusaurus.io', - }, - })); - const {withBaseUrl} = useBaseUrlUtils(); - - expect(withBaseUrl('hello')).toEqual('/docusaurus/hello'); - expect(withBaseUrl('/hello')).toEqual('/docusaurus/hello'); - expect(withBaseUrl('hello/')).toEqual('/docusaurus/hello/'); - expect(withBaseUrl('/hello/')).toEqual('/docusaurus/hello/'); - expect(withBaseUrl('hello/byebye')).toEqual('/docusaurus/hello/byebye'); - expect(withBaseUrl('/hello/byebye')).toEqual('/docusaurus/hello/byebye'); - expect(withBaseUrl('hello/byebye/')).toEqual('/docusaurus/hello/byebye/'); - expect(withBaseUrl('/hello/byebye/')).toEqual('/docusaurus/hello/byebye/'); - expect(withBaseUrl('https://github.com')).toEqual('https://github.com'); - expect(withBaseUrl('//reactjs.org')).toEqual('//reactjs.org'); - expect(withBaseUrl('//reactjs.org', forcePrepend)).toEqual('//reactjs.org'); - expect(withBaseUrl('https://site.com', forcePrepend)).toEqual( - 'https://site.com', - ); - expect(withBaseUrl('/hello/byebye', {absolute: true})).toEqual( - 'https://docusaurus.io/docusaurus/hello/byebye', - ); - expect(withBaseUrl('/docusaurus/')).toEqual('/docusaurus/'); - expect(withBaseUrl('/docusaurus/hello')).toEqual('/docusaurus/hello'); - expect(withBaseUrl('#hello')).toEqual('#hello'); - }); -}); diff --git a/packages/docusaurus/src/client/exports/__tests__/useBaseUrl.test.tsx b/packages/docusaurus/src/client/exports/__tests__/useBaseUrl.test.tsx new file mode 100644 index 000000000000..1c6724da3069 --- /dev/null +++ b/packages/docusaurus/src/client/exports/__tests__/useBaseUrl.test.tsx @@ -0,0 +1,152 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import React from 'react'; +import {renderHook} from '@testing-library/react-hooks'; +import useBaseUrl, {useBaseUrlUtils} from '../useBaseUrl'; +import {Context} from '../../docusaurusContext'; +import type {DocusaurusContext} from '@docusaurus/types'; +import type {BaseUrlOptions} from '@docusaurus/useBaseUrl'; + +const forcePrepend = {forcePrependBaseUrl: true}; + +describe('useBaseUrl', () => { + const createUseBaseUrlMock = + (context: DocusaurusContext) => (url: string, options?: BaseUrlOptions) => + renderHook(() => useBaseUrl(url, options), { + wrapper: ({children}) => ( + {children} + ), + }).result.current; + it('works with empty base URL', () => { + const mockUseBaseUrl = createUseBaseUrlMock({ + siteConfig: { + baseUrl: '/', + url: 'https://docusaurus.io', + }, + } as DocusaurusContext); + + expect(mockUseBaseUrl('hello')).toBe('/hello'); + expect(mockUseBaseUrl('/hello')).toBe('/hello'); + expect(mockUseBaseUrl('hello/')).toBe('/hello/'); + expect(mockUseBaseUrl('/hello/')).toBe('/hello/'); + expect(mockUseBaseUrl('hello/foo')).toBe('/hello/foo'); + expect(mockUseBaseUrl('/hello/foo')).toBe('/hello/foo'); + expect(mockUseBaseUrl('hello/foo/')).toBe('/hello/foo/'); + expect(mockUseBaseUrl('/hello/foo/')).toBe('/hello/foo/'); + expect(mockUseBaseUrl('https://github.com')).toBe('https://github.com'); + expect(mockUseBaseUrl('//reactjs.org')).toBe('//reactjs.org'); + expect(mockUseBaseUrl('//reactjs.org', forcePrepend)).toBe('//reactjs.org'); + expect(mockUseBaseUrl('https://site.com', forcePrepend)).toBe( + 'https://site.com', + ); + expect(mockUseBaseUrl('/hello/foo', {absolute: true})).toBe( + 'https://docusaurus.io/hello/foo', + ); + expect(mockUseBaseUrl('#hello')).toBe('#hello'); + }); + + it('works with non-empty base URL', () => { + const mockUseBaseUrl = createUseBaseUrlMock({ + siteConfig: { + baseUrl: '/docusaurus/', + url: 'https://docusaurus.io', + }, + } as DocusaurusContext); + + expect(mockUseBaseUrl('')).toBe(''); + expect(mockUseBaseUrl('hello')).toBe('/docusaurus/hello'); + expect(mockUseBaseUrl('/hello')).toBe('/docusaurus/hello'); + expect(mockUseBaseUrl('hello/')).toBe('/docusaurus/hello/'); + expect(mockUseBaseUrl('/hello/')).toBe('/docusaurus/hello/'); + expect(mockUseBaseUrl('hello/foo')).toBe('/docusaurus/hello/foo'); + expect(mockUseBaseUrl('/hello/foo')).toBe('/docusaurus/hello/foo'); + expect(mockUseBaseUrl('hello/foo/')).toBe('/docusaurus/hello/foo/'); + expect(mockUseBaseUrl('/hello/foo/')).toBe('/docusaurus/hello/foo/'); + expect(mockUseBaseUrl('https://github.com')).toBe('https://github.com'); + expect(mockUseBaseUrl('//reactjs.org')).toBe('//reactjs.org'); + expect(mockUseBaseUrl('//reactjs.org', forcePrepend)).toBe('//reactjs.org'); + expect(mockUseBaseUrl('/hello', forcePrepend)).toBe('/docusaurus/hello'); + expect(mockUseBaseUrl('https://site.com', forcePrepend)).toBe( + 'https://site.com', + ); + expect(mockUseBaseUrl('/hello/foo', {absolute: true})).toBe( + 'https://docusaurus.io/docusaurus/hello/foo', + ); + expect(mockUseBaseUrl('/docusaurus')).toBe('/docusaurus/'); + expect(mockUseBaseUrl('/docusaurus/')).toBe('/docusaurus/'); + expect(mockUseBaseUrl('/docusaurus/hello')).toBe('/docusaurus/hello'); + expect(mockUseBaseUrl('#hello')).toBe('#hello'); + }); +}); + +describe('useBaseUrlUtils().withBaseUrl()', () => { + const mockUseBaseUrlUtils = (context: DocusaurusContext) => + renderHook(() => useBaseUrlUtils(), { + wrapper: ({children}) => ( + {children} + ), + }).result.current; + it('empty base URL', () => { + const {withBaseUrl} = mockUseBaseUrlUtils({ + siteConfig: { + baseUrl: '/', + url: 'https://docusaurus.io', + }, + } as DocusaurusContext); + + expect(withBaseUrl('hello')).toBe('/hello'); + expect(withBaseUrl('/hello')).toBe('/hello'); + expect(withBaseUrl('hello/')).toBe('/hello/'); + expect(withBaseUrl('/hello/')).toBe('/hello/'); + expect(withBaseUrl('hello/foo')).toBe('/hello/foo'); + expect(withBaseUrl('/hello/foo')).toBe('/hello/foo'); + expect(withBaseUrl('hello/foo/')).toBe('/hello/foo/'); + expect(withBaseUrl('/hello/foo/')).toBe('/hello/foo/'); + expect(withBaseUrl('https://github.com')).toBe('https://github.com'); + expect(withBaseUrl('//reactjs.org')).toBe('//reactjs.org'); + expect(withBaseUrl('//reactjs.org', forcePrepend)).toBe('//reactjs.org'); + expect(withBaseUrl('https://site.com', forcePrepend)).toBe( + 'https://site.com', + ); + expect(withBaseUrl('/hello/foo', {absolute: true})).toBe( + 'https://docusaurus.io/hello/foo', + ); + expect(withBaseUrl('#hello')).toBe('#hello'); + }); + + it('non-empty base URL', () => { + const {withBaseUrl} = mockUseBaseUrlUtils({ + siteConfig: { + baseUrl: '/docusaurus/', + url: 'https://docusaurus.io', + }, + } as DocusaurusContext); + + expect(withBaseUrl('hello')).toBe('/docusaurus/hello'); + expect(withBaseUrl('/hello')).toBe('/docusaurus/hello'); + expect(withBaseUrl('hello/')).toBe('/docusaurus/hello/'); + expect(withBaseUrl('/hello/')).toBe('/docusaurus/hello/'); + expect(withBaseUrl('hello/foo')).toBe('/docusaurus/hello/foo'); + expect(withBaseUrl('/hello/foo')).toBe('/docusaurus/hello/foo'); + expect(withBaseUrl('hello/foo/')).toBe('/docusaurus/hello/foo/'); + expect(withBaseUrl('/hello/foo/')).toBe('/docusaurus/hello/foo/'); + expect(withBaseUrl('https://github.com')).toBe('https://github.com'); + expect(withBaseUrl('//reactjs.org')).toBe('//reactjs.org'); + expect(withBaseUrl('//reactjs.org', forcePrepend)).toBe('//reactjs.org'); + expect(withBaseUrl('https://site.com', forcePrepend)).toBe( + 'https://site.com', + ); + expect(withBaseUrl('/hello/foo', {absolute: true})).toBe( + 'https://docusaurus.io/docusaurus/hello/foo', + ); + expect(withBaseUrl('/docusaurus')).toBe('/docusaurus/'); + expect(withBaseUrl('/docusaurus/')).toBe('/docusaurus/'); + expect(withBaseUrl('/docusaurus/hello')).toBe('/docusaurus/hello'); + expect(withBaseUrl('#hello')).toBe('#hello'); + }); +}); diff --git a/packages/docusaurus/src/client/exports/__tests__/useGlobalData.test.tsx b/packages/docusaurus/src/client/exports/__tests__/useGlobalData.test.tsx new file mode 100644 index 000000000000..e3f1c52abc31 --- /dev/null +++ b/packages/docusaurus/src/client/exports/__tests__/useGlobalData.test.tsx @@ -0,0 +1,131 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import React from 'react'; +import {renderHook} from '@testing-library/react-hooks'; +import useGlobalData, { + useAllPluginInstancesData, + usePluginData, +} from '../useGlobalData'; +import {Context} from '../../docusaurusContext'; +import type {DocusaurusContext} from '@docusaurus/types'; + +describe('useGlobalData', () => { + it('returns global data from context', () => { + expect( + renderHook(() => useGlobalData(), { + wrapper: ({children}) => ( + + {children} + + ), + }).result.current, + ).toEqual({foo: 'bar'}); + }); +}); + +describe('useAllPluginInstancesData', () => { + it('returns plugin data namespace', () => { + expect( + renderHook(() => useAllPluginInstancesData('foo'), { + wrapper: ({children}) => ( + + {children} + + ), + }).result.current, + ).toEqual({default: 'default', bar: 'bar'}); + }); + + it('throws when plugin data not found', () => { + expect( + () => + renderHook(() => useAllPluginInstancesData('bar', {failfast: true}), { + wrapper: ({children}) => ( + + {children} + + ), + }).result.current, + ).toThrowErrorMatchingInlineSnapshot( + `"Docusaurus plugin global data not found for "bar" plugin."`, + ); + }); +}); + +describe('usePluginData', () => { + it('returns plugin instance data', () => { + expect( + renderHook(() => usePluginData('foo', 'bar'), { + wrapper: ({children}) => ( + + {children} + + ), + }).result.current, + ).toBe('bar'); + }); + + it('defaults to default ID', () => { + expect( + renderHook(() => usePluginData('foo'), { + wrapper: ({children}) => ( + + {children} + + ), + }).result.current, + ).toBe('default'); + }); + + it('throws when plugin instance data not found', () => { + expect( + () => + renderHook(() => usePluginData('foo', 'baz', {failfast: true}), { + wrapper: ({children}) => ( + + {children} + + ), + }).result.current, + ).toThrowErrorMatchingInlineSnapshot( + `"Docusaurus plugin global data not found for "foo" plugin with id "baz"."`, + ); + }); +}); diff --git a/packages/docusaurus/src/client/exports/__tests__/useRouteContext.test.tsx b/packages/docusaurus/src/client/exports/__tests__/useRouteContext.test.tsx new file mode 100644 index 000000000000..d1c469cdc0ed --- /dev/null +++ b/packages/docusaurus/src/client/exports/__tests__/useRouteContext.test.tsx @@ -0,0 +1,38 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import React from 'react'; +import {renderHook} from '@testing-library/react-hooks/server'; +import {RouteContextProvider} from '../../routeContext'; +import useRouteContext from '../useRouteContext'; + +describe('useRouteContext', () => { + it('throws when there is no route context at all', () => { + expect( + () => renderHook(() => useRouteContext()).result.current, + ).toThrowErrorMatchingInlineSnapshot( + `"Unexpected: no Docusaurus route context found"`, + ); + }); + it('returns merged route contexts', () => { + expect( + renderHook(() => useRouteContext(), { + wrapper: ({children}) => ( + + + {children} + + + ), + }).result.current, + ).toEqual({ + data: {some: 'data', someMore: 'data'}, + plugin: {id: 'test', name: 'test'}, + }); + }); +}); diff --git a/packages/docusaurus/src/client/exports/isInternalUrl.ts b/packages/docusaurus/src/client/exports/isInternalUrl.ts index f3158e6e9859..489aff74bc0d 100644 --- a/packages/docusaurus/src/client/exports/isInternalUrl.ts +++ b/packages/docusaurus/src/client/exports/isInternalUrl.ts @@ -6,7 +6,7 @@ */ export function hasProtocol(url: string): boolean { - return /^(?:\w*:|\/\/)/.test(url) === true; + return /^(?:\w*:|\/\/)/.test(url); } export default function isInternalUrl(url?: string): boolean { diff --git a/packages/docusaurus/src/client/exports/useBaseUrl.ts b/packages/docusaurus/src/client/exports/useBaseUrl.ts index a709e293809f..c5481e57670f 100644 --- a/packages/docusaurus/src/client/exports/useBaseUrl.ts +++ b/packages/docusaurus/src/client/exports/useBaseUrl.ts @@ -10,22 +10,14 @@ import {hasProtocol} from './isInternalUrl'; import type {BaseUrlOptions, BaseUrlUtils} from '@docusaurus/useBaseUrl'; function addBaseUrl( - siteUrl: string | undefined, + siteUrl: string, baseUrl: string, url: string, {forcePrependBaseUrl = false, absolute = false}: BaseUrlOptions = {}, ): string { - if (!url) { - return url; - } - - // it never makes sense to add a base url to a local anchor url - if (url.startsWith('#')) { - return url; - } - - // it never makes sense to add a base url to an url with a protocol - if (hasProtocol(url)) { + // It never makes sense to add base url to a local anchor url, or one with a + // protocol + if (!url || url.startsWith('#') || hasProtocol(url)) { return url; } @@ -33,6 +25,12 @@ function addBaseUrl( return baseUrl + url.replace(/^\//, ''); } + // /baseUrl -> /baseUrl/ + // https://github.com/facebook/docusaurus/issues/6315 + if (url === baseUrl.replace(/\/$/, '')) { + return baseUrl; + } + // We should avoid adding the baseurl twice if it's already there const shouldAddBaseUrl = !url.startsWith(baseUrl); diff --git a/packages/docusaurus/src/client/exports/useDocusaurusContext.ts b/packages/docusaurus/src/client/exports/useDocusaurusContext.ts index 132d8c0b4fe2..0f1cb4b3af9b 100644 --- a/packages/docusaurus/src/client/exports/useDocusaurusContext.ts +++ b/packages/docusaurus/src/client/exports/useDocusaurusContext.ts @@ -6,7 +6,7 @@ */ import {useContext} from 'react'; -import {Context} from './docusaurusContext'; +import {Context} from '../docusaurusContext'; import type {DocusaurusContext} from '@docusaurus/types'; export default function useDocusaurusContext(): DocusaurusContext { diff --git a/packages/docusaurus/src/client/exports/useGlobalData.ts b/packages/docusaurus/src/client/exports/useGlobalData.ts index 155ee22e6fe6..7036878568bd 100644 --- a/packages/docusaurus/src/client/exports/useGlobalData.ts +++ b/packages/docusaurus/src/client/exports/useGlobalData.ts @@ -7,38 +7,38 @@ import useDocusaurusContext from './useDocusaurusContext'; import {DEFAULT_PLUGIN_ID} from './constants'; +import type {GlobalData, UseDataOptions} from '@docusaurus/types'; -export default function useGlobalData(): Record { +export default function useGlobalData(): GlobalData { const {globalData} = useDocusaurusContext(); - if (!globalData) { - throw new Error('Docusaurus global data not found.'); - } return globalData; } -export function useAllPluginInstancesData( +export function useAllPluginInstancesData( pluginName: string, -): Record { + options: UseDataOptions = {}, +): GlobalData[string] | undefined { const globalData = useGlobalData(); const pluginGlobalData = globalData[pluginName]; - if (!pluginGlobalData) { + if (!pluginGlobalData && options.failfast) { throw new Error( `Docusaurus plugin global data not found for "${pluginName}" plugin.`, ); } - return pluginGlobalData as Record; + return pluginGlobalData; } -export function usePluginData( +export function usePluginData( pluginName: string, pluginId: string = DEFAULT_PLUGIN_ID, -): T { + options: UseDataOptions = {}, +): GlobalData[string][string] { const pluginGlobalData = useAllPluginInstancesData(pluginName); - const pluginInstanceGlobalData = pluginGlobalData[pluginId]; - if (!pluginInstanceGlobalData) { + const pluginInstanceGlobalData = pluginGlobalData?.[pluginId]; + if (!pluginInstanceGlobalData && options.failfast) { throw new Error( `Docusaurus plugin global data not found for "${pluginName}" plugin with id "${pluginId}".`, ); } - return pluginInstanceGlobalData as T; + return pluginInstanceGlobalData; } diff --git a/packages/docusaurus/src/client/exports/useIsBrowser.ts b/packages/docusaurus/src/client/exports/useIsBrowser.ts index e1e7caff51ed..ce1ebb739296 100644 --- a/packages/docusaurus/src/client/exports/useIsBrowser.ts +++ b/packages/docusaurus/src/client/exports/useIsBrowser.ts @@ -6,7 +6,7 @@ */ import {useContext} from 'react'; -import {Context} from './browserContext'; +import {Context} from '../browserContext'; export default function useIsBrowser(): boolean { return useContext(Context); diff --git a/packages/docusaurus/src/client/exports/useRouteContext.tsx b/packages/docusaurus/src/client/exports/useRouteContext.tsx new file mode 100644 index 000000000000..ea80925c3208 --- /dev/null +++ b/packages/docusaurus/src/client/exports/useRouteContext.tsx @@ -0,0 +1,18 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import React from 'react'; +import {Context} from '../routeContext'; +import type {PluginRouteContext} from '@docusaurus/types'; + +export default function useRouteContext(): PluginRouteContext { + const context = React.useContext(Context); + if (!context) { + throw new Error('Unexpected: no Docusaurus route context found'); + } + return context; +} diff --git a/packages/docusaurus/src/client/flat.ts b/packages/docusaurus/src/client/flat.ts index d1c7fe5fea46..3ef06a2d38e6 100644 --- a/packages/docusaurus/src/client/flat.ts +++ b/packages/docusaurus/src/client/flat.ts @@ -5,27 +5,38 @@ * LICENSE file in the root directory of this source tree. */ -import type {RouteChunksTree} from '@docusaurus/types'; +import type {ChunkNames} from '@docusaurus/types'; -const isTree = (x: string | RouteChunksTree): x is RouteChunksTree => +type Chunk = ChunkNames[string]; +type Tree = Exclude; + +const isTree = (x: unknown): x is Tree => typeof x === 'object' && !!x && Object.keys(x).length > 0; -export default function flat(target: RouteChunksTree): Record { +/** + * Takes a tree, and flattens it into a map of keyPath -> value. + * + * ```js + * flat({ a: { b: 1 } }) === { "a.b": 1 }; + * flat({ a: [1, 2] }) === { "a.0": 1, "a.1": 2 }; + * ``` + */ +export default function flat(target: ChunkNames): {[keyPath: string]: string} { const delimiter = '.'; - const output: Record = {}; + const output: {[keyPath: string]: string} = {}; - function step(object: RouteChunksTree, prefix?: string | number) { + function dfs(object: Tree, prefix?: string | number) { Object.entries(object).forEach(([key, value]) => { const newKey = prefix ? `${prefix}${delimiter}${key}` : key; if (isTree(value)) { - step(value, newKey); + dfs(value, newKey); } else { output[newKey] = value; } }); } - step(target); + dfs(target); return output; } diff --git a/packages/docusaurus/src/client/normalizeLocation.ts b/packages/docusaurus/src/client/normalizeLocation.ts index 18b408c33b45..74192a451c08 100644 --- a/packages/docusaurus/src/client/normalizeLocation.ts +++ b/packages/docusaurus/src/client/normalizeLocation.ts @@ -5,27 +5,33 @@ * LICENSE file in the root directory of this source tree. */ +import {matchRoutes} from 'react-router-config'; +import routes from '@generated/routes'; import type {Location} from 'history'; // Memoize previously normalized pathnames. -const pathnames: Record = {}; +const pathnames = new Map(); export default function normalizeLocation(location: T): T { - if (pathnames[location.pathname]) { + if (pathnames.has(location.pathname)) { return { ...location, - pathname: pathnames[location.pathname], + pathname: pathnames.get(location.pathname), }; } - let pathname = location.pathname || '/'; - pathname = pathname.trim().replace(/\/index\.html$/, ''); - - if (pathname === '') { - pathname = '/'; + // If the location was registered with an `.html` extension, we don't strip it + // away, or it will render to a 404 page. + const matchedRoutes = matchRoutes(routes, location.pathname); + if (matchedRoutes.some(({route}) => route.exact === true)) { + pathnames.set(location.pathname, location.pathname); + return location; } - pathnames[location.pathname] = pathname; + const pathname = + location.pathname.trim().replace(/(?:\/index)?\.html$/, '') || '/'; + + pathnames.set(location.pathname, pathname); return { ...location, diff --git a/packages/docusaurus/src/client/prefetch.ts b/packages/docusaurus/src/client/prefetch.ts index 338f1b14fbf2..4b84c7e884a0 100644 --- a/packages/docusaurus/src/client/prefetch.ts +++ b/packages/docusaurus/src/client/prefetch.ts @@ -5,24 +5,16 @@ * LICENSE file in the root directory of this source tree. */ -function support(feature: string) { - if (typeof document === 'undefined') { - return false; - } - - const fakeLink = document.createElement('link'); +function supports(feature: string) { try { - if (fakeLink.relList && typeof fakeLink.relList.supports === 'function') { - return fakeLink.relList.supports(feature); - } - } catch (err) { + const fakeLink = document.createElement('link'); + return fakeLink.relList.supports(feature); + } catch { return false; } - - return false; } -function linkPrefetchStrategy(url: string) { +function linkPrefetchStrategy(url: string): Promise { return new Promise((resolve, reject) => { if (typeof document === 'undefined') { reject(); @@ -33,8 +25,8 @@ function linkPrefetchStrategy(url: string) { link.setAttribute('rel', 'prefetch'); link.setAttribute('href', url); - link.onload = resolve; - link.onerror = reject; + link.onload = () => resolve(); + link.onerror = () => reject(); const parentElement = document.getElementsByTagName('head')[0] ?? @@ -61,24 +53,10 @@ function xhrPrefetchStrategy(url: string): Promise { }); } -const supportedPrefetchStrategy = support('prefetch') +const supportedPrefetchStrategy = supports('prefetch') ? linkPrefetchStrategy : xhrPrefetchStrategy; -const preFetched: Record = {}; - export default function prefetch(url: string): Promise { - return new Promise((resolve) => { - if (preFetched[url]) { - resolve(); - return; - } - - supportedPrefetchStrategy(url) - .then(() => { - resolve(); - preFetched[url] = true; - }) - .catch(() => {}); // 404s are logged to the console anyway. - }); + return supportedPrefetchStrategy(url).catch(() => {}); // 404s are logged to the console anyway. } diff --git a/packages/docusaurus/src/client/preload.ts b/packages/docusaurus/src/client/preload.ts index 09405b4524f2..fec374ad4b6b 100644 --- a/packages/docusaurus/src/client/preload.ts +++ b/packages/docusaurus/src/client/preload.ts @@ -5,25 +5,19 @@ * LICENSE file in the root directory of this source tree. */ -import {matchRoutes, type RouteConfig} from 'react-router-config'; +import routes from '@generated/routes'; +import {matchRoutes} from 'react-router-config'; /** * Helper function to make sure all async components for that particular route * is preloaded before rendering. This is especially useful to avoid loading * screens. * - * @param routes react-router-config * @param pathname the route pathname, example: /docs/installation * @returns Promise object represents whether pathname has been preloaded */ -export default function preload( - routes: RouteConfig[], - pathname: string, -): Promise { +export default function preload(pathname: string): Promise { const matches = matchRoutes(routes, pathname); - return Promise.all( - // @ts-expect-error: ComponentCreator injected this method. - matches.map((match) => match.route.component?.preload?.()), - ); + return Promise.all(matches.map((match) => match.route.component.preload?.())); } diff --git a/packages/docusaurus/src/client/routeContext.tsx b/packages/docusaurus/src/client/routeContext.tsx new file mode 100644 index 000000000000..2738eba7c502 --- /dev/null +++ b/packages/docusaurus/src/client/routeContext.tsx @@ -0,0 +1,57 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import React, {useMemo, type ReactNode} from 'react'; +import type {PluginRouteContext, RouteContext} from '@docusaurus/types'; + +export const Context = React.createContext(null); + +function mergeContexts({ + parent, + value, +}: { + parent: PluginRouteContext | null; + value: RouteContext | null; +}): PluginRouteContext { + if (!parent) { + if (!value) { + throw new Error('Unexpected: no Docusaurus route context found'); + } else if (!('plugin' in value)) { + throw new Error( + 'Unexpected: Docusaurus topmost route context has no `plugin` attribute', + ); + } + return value; + } + + // TODO deep merge this + const data = {...parent.data, ...value?.data}; + + return { + // Nested routes are not supposed to override plugin attribute + plugin: parent.plugin, + data, + }; +} + +export function RouteContextProvider({ + children, + value, +}: { + children: ReactNode; + // Only topmost route has the `plugin` attribute + value: PluginRouteContext | RouteContext | null; +}): JSX.Element { + const parent = React.useContext(Context); + + const mergedValue = useMemo( + () => mergeContexts({parent, value}), + [parent, value], + ); + + return {children}; +} diff --git a/packages/docusaurus/src/client/serverEntry.tsx b/packages/docusaurus/src/client/serverEntry.tsx index f35df05ca5bb..528a0a96e3a8 100644 --- a/packages/docusaurus/src/client/serverEntry.tsx +++ b/packages/docusaurus/src/client/serverEntry.tsx @@ -5,32 +5,27 @@ * LICENSE file in the root directory of this source tree. */ -import * as eta from 'eta'; import React from 'react'; +import path from 'path'; +import fs from 'fs-extra'; +// eslint-disable-next-line no-restricted-imports +import _ from 'lodash'; +import chalk from 'chalk'; +import * as eta from 'eta'; import {StaticRouter} from 'react-router-dom'; import ReactDOMServer from 'react-dom/server'; import {HelmetProvider, type FilledContext} from 'react-helmet-async'; import {getBundles, type Manifest} from 'react-loadable-ssr-addon-v5-slorber'; import Loadable from 'react-loadable'; - import {minify} from 'html-minifier-terser'; -import path from 'path'; -import fs from 'fs-extra'; -import routes from '@generated/routes'; import preload from './preload'; import App from './App'; import { createStatefulLinksCollector, - ProvideLinksCollector, + LinksCollectorProvider, } from './LinksCollector'; -import logger from '@docusaurus/logger'; -// eslint-disable-next-line no-restricted-imports -import _ from 'lodash'; import type {Locals} from '@slorber/static-site-generator-webpack-plugin'; -// eslint-disable-next-line @typescript-eslint/no-var-requires -const packageJson = require('../../package.json'); - const getCompiledSSRTemplate = _.memoize((template: string) => eta.compile(template.trim(), { rmWhitespace: true, @@ -48,15 +43,20 @@ export default async function render( try { return await doRender(locals); } catch (err) { - logger.error`Docusaurus server-side rendering could not render static page with path path=${locals.path}.`; + // We are not using logger in this file, because it seems to fail with some + // compilers / some polyfill methods. This is very likely a bug, but in the + // long term, when we output native ES modules in SSR, the bug will be gone. + // prettier-ignore + console.error(chalk.red(`${chalk.bold('[ERROR]')} Docusaurus server-side rendering could not render static page with path ${chalk.cyan.underline(locals.path)}.`)); const isNotDefinedErrorRegex = /(?:window|document|localStorage|navigator|alert|location|buffer|self) is not defined/i; if (isNotDefinedErrorRegex.test((err as Error).message)) { - logger.info`It looks like you are using code that should run on the client-side only. -To get around it, try using code=${''} (path=${'https://docusaurus.io/docs/docusaurus-core/#browseronly'}) or code=${'ExecutionEnvironment'} (path=${'https://docusaurus.io/docs/docusaurus-core/#executionenvironment'}). -It might also require to wrap your client code in code=${'useEffect'} hook and/or import a third-party library dynamically (if any).`; + // prettier-ignore + console.info(`${chalk.cyan.bold('[INFO]')} It looks like you are using code that should run on the client-side only. +To get around it, try using ${chalk.cyan('``')} (${chalk.cyan.underline('https://docusaurus.io/docs/docusaurus-core/#browseronly')}) or ${chalk.cyan('`ExecutionEnvironment`')} (${chalk.cyan.underline('https://docusaurus.io/docs/docusaurus-core/#executionenvironment')}). +It might also require to wrap your client code in ${chalk.cyan('`useEffect`')} hook and/or import a third-party library dynamically (if any).`); } throw err; @@ -71,24 +71,27 @@ async function doRender(locals: Locals & {path: string}) { preBodyTags, postBodyTags, onLinksCollected, + onHeadTagsCollected, baseUrl, ssrTemplate, noIndex, + DOCUSAURUS_VERSION, } = locals; const location = routesLocation[locals.path]!; - await preload(routes, location); + await preload(location); const modules = new Set(); - const context = {}; + const routerContext = {}; const helmetContext = {}; const linksCollector = createStatefulLinksCollector(); const appHtml = ReactDOMServer.renderToString( + // @ts-expect-error: we are migrating away from react-loadable anyways modules.add(moduleName)}> - - + + - + , @@ -104,13 +107,17 @@ async function doRender(locals: Locals & {path: string}) { helmet.link.toString(), helmet.script.toString(), ]; + onHeadTagsCollected(location, helmet); const metaAttributes = metaStrings.filter(Boolean); const {generatedFilesDir} = locals; const manifestPath = path.join(generatedFilesDir, 'client-manifest.json'); - const manifest: Manifest = JSON.parse( - await fs.readFile(manifestPath, 'utf8'), - ); + // Using readJSON seems to fail for users of some plugins, possibly because of + // the eval sandbox having a different `Buffer` instance (native one instead + // of polyfilled one) + const manifest = (await fs + .readFile(manifestPath, 'utf-8') + .then(JSON.parse)) as Manifest; // Get all required assets for this particular page based on client // manifest information. @@ -131,7 +138,7 @@ async function doRender(locals: Locals & {path: string}) { scripts, stylesheets, noIndex, - version: packageJson.version, + version: DOCUSAURUS_VERSION, }); try { @@ -146,7 +153,8 @@ async function doRender(locals: Locals & {path: string}) { minifyJS: true, }); } catch (err) { - logger.error`Minification of page path=${locals.path} failed.`; + // prettier-ignore + console.error(chalk.red(`${chalk.bold('[ERROR]')} Minification of page ${chalk.cyan.underline(locals.path)} failed.`)); throw err; } } diff --git a/packages/docusaurus/src/client/theme-fallback/Error/index.tsx b/packages/docusaurus/src/client/theme-fallback/Error/index.tsx index 858e42c4de37..513348cce4d7 100644 --- a/packages/docusaurus/src/client/theme-fallback/Error/index.tsx +++ b/packages/docusaurus/src/client/theme-fallback/Error/index.tsx @@ -5,9 +5,13 @@ * LICENSE file in the root directory of this source tree. */ +// Should we translate theme-fallback? +/* eslint-disable @docusaurus/no-untranslated-text */ + import React from 'react'; -import Layout from '@theme/Layout'; +import Head from '@docusaurus/Head'; import ErrorBoundary from '@docusaurus/ErrorBoundary'; +import Layout from '@theme/Layout'; import type {Props} from '@theme/Error'; function ErrorDisplay({error, tryAgain}: Props): JSX.Element { @@ -40,7 +44,10 @@ export default function Error({error, tryAgain}: Props): JSX.Element { // Note: we display the original error here, not the error that we // captured in this extra error boundary fallback={() => }> - + + Page Error + + diff --git a/packages/docusaurus/src/client/theme-fallback/Layout/index.tsx b/packages/docusaurus/src/client/theme-fallback/Layout/index.tsx index 1c3de03a6053..e897396623b4 100644 --- a/packages/docusaurus/src/client/theme-fallback/Layout/index.tsx +++ b/packages/docusaurus/src/client/theme-fallback/Layout/index.tsx @@ -6,31 +6,8 @@ */ import React from 'react'; -import Head from '@docusaurus/Head'; -import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; -import useBaseUrl from '@docusaurus/useBaseUrl'; import type {Props} from '@theme/Layout'; -export default function Layout({ - children, - title, - description, -}: Props): JSX.Element { - const context = useDocusaurusContext(); - const {siteConfig} = context; - const {favicon, tagline, title: defaultTitle} = siteConfig; - const faviconUrl = useBaseUrl(favicon); - return ( - <> - - {title && {`${title} · ${tagline}`}} - {favicon && } - {description && } - {description && ( - - )} - - {children} - - ); +export default function Layout({children}: Props): JSX.Element { + return <>{children}; } diff --git a/packages/docusaurus/src/client/theme-fallback/Loading/index.tsx b/packages/docusaurus/src/client/theme-fallback/Loading/index.tsx index 761c9c3a77b5..7d47419bb7b3 100644 --- a/packages/docusaurus/src/client/theme-fallback/Loading/index.tsx +++ b/packages/docusaurus/src/client/theme-fallback/Loading/index.tsx @@ -5,6 +5,9 @@ * LICENSE file in the root directory of this source tree. */ +// Should we translate theme-fallback? +/* eslint-disable @docusaurus/no-untranslated-text */ + import React from 'react'; import type {LoadingComponentProps} from 'react-loadable'; @@ -34,7 +37,7 @@ export default function Loading({ maxWidth: '50%', width: '100%', }}> -

{error.message}

+

{String(error)}

+ FooFoo, bar: BarBar}}> + {'{foo} is {bar}'} +
diff --git a/website/_dogfooding/_pages tests/link-tests.tsx b/website/_dogfooding/_pages tests/link-tests.tsx index bfd7364fd18e..d1c7c448079c 100644 --- a/website/_dogfooding/_pages tests/link-tests.tsx +++ b/website/_dogfooding/_pages tests/link-tests.tsx @@ -5,12 +5,12 @@ * LICENSE file in the root directory of this source tree. */ -import React from 'react'; -import Layout from '@theme/Layout'; +import React, {useRef} from 'react'; import Link from '@docusaurus/Link'; +import Layout from '@theme/Layout'; export default function LinkTest(): JSX.Element { - const anchorRef = React.useRef(null); + const anchorRef = useRef(null); return (
diff --git a/website/_dogfooding/_pages tests/markdownPageTests.md b/website/_dogfooding/_pages tests/markdownPageTests.md index 2f7ecdcb8f78..604f60087ced 100644 --- a/website/_dogfooding/_pages tests/markdownPageTests.md +++ b/website/_dogfooding/_pages tests/markdownPageTests.md @@ -102,7 +102,7 @@ import MyComponentSource from '!!raw-loader!@site/src/pages/examples/\_myCompone ```jsx live function Demo() { - React.useEffect(() => console.log('mount'), []); + useEffect(() => console.log('mount'), []); return null; } ``` @@ -175,3 +175,57 @@ Code tag + double pipe: || ![](/4/图片.png) ![](/4/docu.png) + +## Details + +
+ +Details without a summary + +
+ +This is a fragment: + +<>Hello + +It should work :) + +## Task list + +A list: + +- [ ] Simple +- [x] Tasks +- [ ] Has simple +- [ ] Styles + +Another list: + +- Nested + - [ ] Tasks + - [ ] Should be well-formatted +- [ ] No matter +- [ ] How weird + +Can be arbitrarily nested: + +- Level + - [ ] Task + - [ ] Task + - Another level + - [ ] Task + - [ ] Task + - Deeper + - [ ] Task + - [ ] Task + - [ ] Task + - [ ] Task +- [ ] Task + +## Admonitions + +:::caution Interpolated `title` with a + +Admonition body + +::: diff --git a/website/_dogfooding/clientModuleExample.ts b/website/_dogfooding/clientModuleExample.ts index e730f3f3a74e..e7b673e74e94 100644 --- a/website/_dogfooding/clientModuleExample.ts +++ b/website/_dogfooding/clientModuleExample.ts @@ -5,13 +5,54 @@ * LICENSE file in the root directory of this source tree. */ -import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment'; +import siteConfig from '@generated/docusaurus.config'; +import type {Location} from 'history'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars -export function onRouteUpdate({location}: {location: Location}): void { - // console.log('onRouteUpdate', {location}); +function logPage( + event: string, + location: Location, + previousLocation: Location | null, +): void { + console.log(event, location.pathname, { + location, + prevLocation: previousLocation, + heading: document.getElementsByTagName('h1')[0]?.innerText, + title: document.title, + description: document.querySelector( + 'meta[name="description"]', + )?.content, + htmlClassName: document.getElementsByTagName('html')[0]?.className, + }); } -if (ExecutionEnvironment.canUseDOM) { - // console.log('client module example log'); +export function onRouteUpdate({ + location, + previousLocation, +}: { + location: Location; + previousLocation: Location | null; +}): (() => void) | void { + if ( + process.env.NODE_ENV === 'development' || + siteConfig.customFields!.isDeployPreview + ) { + logPage('onRouteUpdate', location, previousLocation); + return () => logPage('onRouteUpdate cleanup', location, previousLocation); + } + return undefined; +} + +export function onRouteDidUpdate({ + location, + previousLocation, +}: { + location: Location; + previousLocation: Location | null; +}): void { + if ( + process.env.NODE_ENV === 'development' || + siteConfig.customFields!.isDeployPreview + ) { + logPage('onRouteDidUpdate', location, previousLocation); + } } diff --git a/website/_dogfooding/docs-tests-sidebars.js b/website/_dogfooding/docs-tests-sidebars.js index 804301319943..0c2783feeda3 100644 --- a/website/_dogfooding/docs-tests-sidebars.js +++ b/website/_dogfooding/docs-tests-sidebars.js @@ -5,7 +5,12 @@ * LICENSE file in the root directory of this source tree. */ -/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ +/** + * @typedef {import('@docusaurus/plugin-content-docs').SidebarsConfig} SidebarsConfig + * @typedef {import('@docusaurus/plugin-content-docs/lib/sidebars/types').SidebarItemConfig} SidebarItemConfig + */ + +/** @type {SidebarsConfig} */ const sidebars = { sidebar: [ { @@ -14,8 +19,10 @@ const sidebars = { className: 'red', label: 'Index', }, + 'test-draft', 'doc-without-sidebar', 'doc-with-another-sidebar', + 'doc-with-last-update', { type: 'category', label: 'Tests', @@ -86,7 +93,7 @@ const sidebars = { collapsed: false, collapsible: false, items: [ - // title + // Title { type: 'html', value: 'Some Text', @@ -118,6 +125,11 @@ function generateHugeSidebarItems() { const linksCount = 8; const categoriesCount = 8; + /** + * @param {number} maxLevel + * @param {number} currentLevel + * @returns {SidebarItemConfig[]} + */ function generateRecursive(maxLevel, currentLevel = 0) { if (currentLevel === maxLevel) { return [ @@ -129,17 +141,19 @@ function generateHugeSidebarItems() { ]; } - const linkItems = [...Array(linksCount).keys()].map((index) => ({ + const linkItems = Array.from(Array(linksCount).keys()).map((index) => ({ type: 'link', href: '/', label: `Link ${index} (level ${currentLevel + 1})`, })); - const categoryItems = [...Array(categoriesCount).keys()].map((index) => ({ - type: 'category', - label: `Category ${index} (level ${currentLevel + 1})`, - items: generateRecursive(maxLevel, currentLevel + 1), - })); + const categoryItems = Array.from(Array(categoriesCount).keys()).map( + (index) => ({ + type: 'category', + label: `Category ${index} (level ${currentLevel + 1})`, + items: generateRecursive(maxLevel, currentLevel + 1), + }), + ); return [...linkItems, ...categoryItems]; } diff --git a/website/_dogfooding/docs-tests-symlink b/website/_dogfooding/docs-tests-symlink deleted file mode 120000 index 4a3222e9fd36..000000000000 --- a/website/_dogfooding/docs-tests-symlink +++ /dev/null @@ -1 +0,0 @@ -_docs tests \ No newline at end of file diff --git a/website/_dogfooding/dogfooding.config.js b/website/_dogfooding/dogfooding.config.js index 5b58c9aaa91d..f8a4e7007f0e 100644 --- a/website/_dogfooding/dogfooding.config.js +++ b/website/_dogfooding/dogfooding.config.js @@ -5,17 +5,13 @@ * LICENSE file in the root directory of this source tree. */ -const fs = require('fs'); -const path = require('path'); - /** @type {import('@docusaurus/types').PluginConfig[]} */ const dogfoodingThemeInstances = [ /** @type {import('@docusaurus/types').PluginModule} */ function swizzleThemeTests() { return { name: 'swizzle-theme-tests', - getThemePath: () => - path.join(__dirname, '_swizzle_theme_tests/src/theme'), + getThemePath: () => './_swizzle_theme_tests/src/theme', }; }, ]; @@ -24,18 +20,17 @@ exports.dogfoodingThemeInstances = dogfoodingThemeInstances; /** @type {import('@docusaurus/types').PluginConfig[]} */ const dogfoodingPluginInstances = [ [ - 'content-docs', // dogfood shorthand + 'content-docs', // Shorthand /** @type {import('@docusaurus/plugin-content-docs').Options} */ ({ id: 'docs-tests', routeBasePath: '/tests/docs', sidebarPath: '_dogfooding/docs-tests-sidebars.js', - // Using a symlinked folder as source, test for use-case https://github.com/facebook/docusaurus/issues/3272 - // The target folder uses a _ prefix to test against an edge case regarding MDX partials: https://github.com/facebook/docusaurus/discussions/5181#discussioncomment-1018079 - // eslint-disable-next-line no-restricted-properties - path: fs.realpathSync('_dogfooding/docs-tests-symlink'), + // Using a _ prefix to test against an edge case regarding MDX partials: https://github.com/facebook/docusaurus/discussions/5181#discussioncomment-1018079 + path: '_dogfooding/_docs tests', showLastUpdateTime: true, + showLastUpdateAuthor: true, sidebarItemsGenerator(args) { return args.defaultSidebarItemsGenerator({ ...args, @@ -54,7 +49,7 @@ const dogfoodingPluginInstances = [ ], [ - '@docusaurus/plugin-content-blog', // dogfood longhand + '@docusaurus/plugin-content-blog', // Longhand /** @type {import('@docusaurus/plugin-content-blog').Options} */ ({ id: 'blog-tests', @@ -77,7 +72,7 @@ const dogfoodingPluginInstances = [ ], [ - require.resolve('@docusaurus/plugin-content-pages'), // dogfood longhand resolve + require.resolve('@docusaurus/plugin-content-pages'), // Full path /** @type {import('@docusaurus/plugin-content-pages').Options} */ ({ id: 'pages-tests', diff --git a/website/_dogfooding/dogfooding.css b/website/_dogfooding/dogfooding.css new file mode 100644 index 000000000000..be6cf970b6f9 --- /dev/null +++ b/website/_dogfooding/dogfooding.css @@ -0,0 +1,22 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +html.plugin-docs.plugin-id-docs-tests .red > a { + color: red; +} + +html.plugin-docs.plugin-id-docs-tests .navbar { + border-bottom: solid thin cyan; +} + +html.plugin-blog.plugin-id-blog-tests .navbar { + border-bottom: solid thin lime; +} + +html.plugin-pages.plugin-id-pages-tests .navbar { + border-bottom: solid thin yellow; +} diff --git a/website/_dogfooding/testSwizzleThemeClassic.mjs b/website/_dogfooding/testSwizzleThemeClassic.mjs index 44fbe20bc58a..6f635bea5718 100644 --- a/website/_dogfooding/testSwizzleThemeClassic.mjs +++ b/website/_dogfooding/testSwizzleThemeClassic.mjs @@ -10,15 +10,16 @@ import fs from 'fs-extra'; import {fileURLToPath} from 'url'; import logger from '@docusaurus/logger'; -import ClassicTheme from '@docusaurus/theme-classic'; +import classicTheme from '@docusaurus/theme-classic'; // Unsafe imports import {readComponentNames} from '@docusaurus/core/lib/commands/swizzle/components.js'; import {normalizeSwizzleConfig} from '@docusaurus/core/lib/commands/swizzle/config.js'; import {wrap, eject} from '@docusaurus/core/lib/commands/swizzle/actions.js'; -const swizzleConfig = normalizeSwizzleConfig(ClassicTheme.getSwizzleConfig()); +const swizzleConfig = normalizeSwizzleConfig(classicTheme.getSwizzleConfig()); +/** @type {"eject" | "wrap"} */ const action = process.env.SWIZZLE_ACTION ?? 'eject'; const typescript = process.env.SWIZZLE_TYPESCRIPT === 'true'; @@ -31,7 +32,7 @@ const classicThemePathBase = path.join( const themePath = swizzleConfig ? path.join(classicThemePathBase, 'src/theme') - : path.join(classicThemePathBase, 'lib-next/theme'); + : path.join(classicThemePathBase, 'lib/theme'); const toPath = path.join(dirname, '_swizzle_theme_tests'); @@ -68,27 +69,25 @@ Please double-check or clean up these components from the config: // TODO temp workaround: non-comps should be forbidden to wrap if (action === 'wrap') { - const WrapBlacklist = [ - 'Layout', // due to theme-fallback? + const WrapBlocklist = [ + 'Layout', // Due to theme-fallback? ]; componentNames = componentNames.filter((componentName) => { - const blacklisted = WrapBlacklist.includes(componentName); - if (!WrapBlacklist) { - logger.warn(`${componentName} is blacklisted and will not be wrapped`); + const blocked = WrapBlocklist.includes(componentName); + if (blocked) { + logger.warn(`${componentName} is blocked and will not be wrapped`); } - return !blacklisted; + return !blocked; }); } +/** + * @param {string} componentName + */ function getActionStatus(componentName) { const actionStatus = swizzleConfig.components[componentName]?.actions[action] ?? 'unsafe'; - if (!actionStatus) { - throw new Error( - `Unexpected: missing action ${action} for ${componentName}`, - ); - } return actionStatus; } @@ -120,7 +119,6 @@ for (const componentName of componentNames) { logger.warn( `${componentName} is marked as forbidden for action ${action} => skipping`, ); - // eslint-disable-next-line no-continue continue; } diff --git a/website/blog/2021-03-09-releasing-docusaurus-i18n.md b/website/blog/2021-03-09-releasing-docusaurus-i18n.md index 8cb0b14116f7..a7efa79d1280 100644 --- a/website/blog/2021-03-09-releasing-docusaurus-i18n.md +++ b/website/blog/2021-03-09-releasing-docusaurus-i18n.md @@ -87,7 +87,7 @@ This feature has not been an easy one, and we would like to thank everyone that - [Claire](https://github.com/clairefro) for adopting Docusaurus 2 on the new Redwood platform and providing many feedbacks - [Massoud](https://github.com/massoudmaboudi) for reviewing my work on LTR and adopting it on Datagit - [Crowdin](https://crowdin.com/) for their support and willingness to improve their translation SaaS -- The Docusaurus community for their patience, and providing many useful feedbacks on Github +- The Docusaurus community for their patience, and providing many useful feedbacks on GitHub Thanks for reading. diff --git a/website/blog/2022-01-24-docusaurus-2021-recap/index.md b/website/blog/2022-01-24-docusaurus-2021-recap/index.md index 7059860326ab..6c4c29800af4 100644 --- a/website/blog/2022-01-24-docusaurus-2021-recap/index.md +++ b/website/blog/2022-01-24-docusaurus-2021-recap/index.md @@ -34,11 +34,11 @@ Our codebase has been polished over time as well. We have improved test coverage ## Trends -### NPM +### npm Docusaurus v2 continues to grow steadily. V2 installation is now 8 times more than v1. In terms of weekly downloads, we have witnessed another three-fold increase (+209.4%), growing from 28,066 in early January to a peak of 86,846 in mid-December. -[![NPM download trend](./img/npm-trend.png)](https://www.npmtrends.com/docusaurus-vs-@docusaurus/core) +[![npm download trend](./img/npm-trend.png)](https://www.npmtrends.com/docusaurus-vs-@docusaurus/core) (Ah, the classic Christmas dip...) diff --git a/website/community/2-resources.md b/website/community/2-resources.md index 37176ac4adc1..fb0507049eed 100644 --- a/website/community/2-resources.md +++ b/website/community/2-resources.md @@ -29,6 +29,7 @@ See the showcase - [docusaurus2-dotenv](https://github.com/jonnynabors/docusaurus2-dotenv) - A Docusaurus 2 plugin that supports dotenv and other environment variables - [posthog-docusaurus](https://github.com/PostHog/posthog-docusaurus) - Integrate [PostHog](https://posthog.com/) product analytics with Docusaurus v2 - [docusaurus-plugin-moesif](https://github.com/Moesif/docusaurus-plugin-moesif) - Adds [Moesif API Analytics](https://www.moesif.com/) to track user behavior and pinpoint where developers drop off in your activation funnel. +- [docusaurus-plugin-yandex-metrica](https://github.com/sgromkov/docusaurus-plugin-yandex-metrica) - Adds [Yandex Metrika](https://metrika.yandex.ru/) counter for evaluating site traffic and analyzing user behavior. ### Features {#features} @@ -46,6 +47,7 @@ See the showcase - [mdx-mermaid](https://github.com/sjwall/mdx-mermaid) - A Docusaurus v2 compatible MDX plugin for displaying [Mermaid](https://mermaid-js.github.io/mermaid) diagrams - [redocusaurus](https://github.com/rohit-gohri/redocusaurus) - A Docusaurus preset for integrating OpenAPI documentation into your docs with [Redoc](https://github.com/redocly/redoc) - [plugin-image-zoom](https://github.com/flexanalytics/plugin-image-zoom) - An Image Zoom plugin for Docusaurus 2 +- [docusaurus-plugin-typedoc](https://github.com/tgreyuk/typedoc-plugin-markdown/tree/master/packages/docusaurus-plugin-typedoc) - A Docusaurus 2 plugin to build documentation with [TypeDoc](https://typedoc.org/) ## Enterprise usage {#enterprise-usage} diff --git a/website/community/4-canary.md b/website/community/4-canary.md index b81c11ea90fd..07e092907f6e 100644 --- a/website/community/4-canary.md +++ b/website/community/4-canary.md @@ -1,5 +1,19 @@ # Canary releases +```mdx-code-block +import { + VersionsProvider, + CanaryVersion, + StableVersion, + InsertIfCanaryVersionUnknown, + InsertIfCanaryVersionKnown, + PackageJSONDiff, + PublishTime, +} from "@site/src/components/Versions"; + + +``` + Docusaurus has a canary releases system. It permits you to **test new unreleased features** as soon as the pull requests are merged. @@ -14,18 +28,43 @@ A canary release passes all automated tests and is used in production by the Doc ::: +```mdx-code-block + +``` + +:::caution + +The canary version shown below **may not be up-to-date**. Please go to the [npm page](https://www.npmjs.com/package/@docusaurus/core?activeTab=versions) to find the actual version name. + +::: + +```mdx-code-block + + +``` + +:::tip + +The canary version shown below is directly fetched from npm and **is up-to-date**. You can directly use these numbers in your package.json. + +::: + +```mdx-code-block + +``` + ## Canary npm dist tag For any code-related commit on `main`, the continuous integration will publish a canary release under the `@canary` npm dist tag. It generally takes up to 10 minutes. You can see on [npm](https://www.npmjs.com/package/@docusaurus/core?activeTab=versions) the current dist tags: -- `latest`: stable releases (example: `2.0.0-beta.9`) -- `canary`: canary releases (example: `0.0.0-4222`) +- `latest`: stable releases (Current: ) +- `canary`: canary releases () :::tip -Make sure to use the latest canary release and check the publication date (sometimes the publish process fails). +Make sure to use the latest canary release and check the publication date (sometimes the publish process fails). ::: @@ -37,15 +76,12 @@ Canary versions follow the naming convention `0.0.0-commitNumber`. ## Using a canary release -Take the latest version published under the [canary npm dist tag](https://www.npmjs.com/package/@docusaurus/core?activeTab=versions) (for example: `0.0.0-4222`). +Take the latest version published under the [canary npm dist tag](https://www.npmjs.com/package/@docusaurus/core?activeTab=versions) (). Use it for all the `@docusaurus/*` dependencies in your `package.json`: -```diff -- "@docusaurus/core": "^2.0.0-beta.9", -- "@docusaurus/preset-classic": "^2.0.0-beta.9", -+ "@docusaurus/core": "0.0.0-4222", -+ "@docusaurus/preset-classic": "0.0.0-4222", +```mdx-code-block + ``` Then, install the dependencies again and start your site: @@ -68,3 +104,7 @@ Make sure to include all the `@docusaurus/*` packages. For canary releases, prefer using an exact version instead of a semver range (avoid the `^` prefix). ::: + +```mdx-code-block + +``` diff --git a/website/delayCrowdin.mjs b/website/delayCrowdin.mjs index d212e0e7c9a0..2fbb232c2f47 100644 --- a/website/delayCrowdin.mjs +++ b/website/delayCrowdin.mjs @@ -13,6 +13,9 @@ And then both try to dl the translations at the same time, and then we have a Used in conjunction with waitForCrowdin.js (which is not enough) */ +/** + * @param {number} ms + */ async function delay(ms) { return new Promise((resolve) => { setTimeout(resolve, ms); diff --git a/website/docs/advanced/client.md b/website/docs/advanced/client.md index ef4c4d220c60..6019e7328997 100644 --- a/website/docs/advanced/client.md +++ b/website/docs/advanced/client.md @@ -86,7 +86,7 @@ Client modules are part of your site's bundle, just like theme components. Howev These modules are imported globally before React even renders the initial UI. -```js title="App.tsx" +```js title="@docusaurus/core/App.tsx" // How it works under the hood import '@generated/client-modules'; ``` @@ -117,5 +117,70 @@ CSS stylesheets imported as client modules are [global](../styling-layout.md#glo } ``` - - +### Client module lifecycles {#client-module-lifecycles} + +Besides introducing side-effects, client modules can optionally export two lifecycle functions: `onRouteUpdate` and `onRouteDidUpdate`. + +Because Docusaurus builds a single-page application, `script` tags will only be executed the first time the page loads, but will not re-execute on page transitions. These lifecycles are useful if you have some imperative JS logic that should execute every time a new page has loaded, e.g., to manipulate DOM elements, to send analytics data, etc. + +For every route transition, there will be several important timings: + +1. The user clicks a link, which causes the router to change its current location. +2. Docusaurus preloads the next route's assets, while keeping displaying the current page's content. +3. The next route's assets have loaded. +4. The new location's route component gets rendered to DOM. + +`onRouteUpdate` will be called at event (2), and `onRouteDidUpdate` will be called at (4). They both receive the current location and the previous location (which can be `null`, if this is the first screen). + +`onRouteUpdate` can optionally return a "cleanup" callback, which will be called at (3). For example, if you want to display a progress bar, you can start a timeout in `onRouteUpdate`, and clear the timeout in the callback. (The classic theme already provides an `nprogress` integration this way.) + +Note that the new page's DOM is only available during event (4). If you need to manipulate the new page's DOM, you'll likely want to use `onRouteDidUpdate`, which will be fired as soon as the DOM on the new page has mounted. + +```js title="myClientModule.js" +import type {Location} from 'history'; + +export function onRouteDidUpdate({location, previousLocation}) { + // Don't execute if we are still on the same page; the lifecycle may be fired + // because the hash changes (e.g. when navigating between headings) + if (location.pathname !== previousLocation?.pathname) { + const title = document.getElementsByTagName('h1')[0]; + if (title) { + title.innerText += '❤️'; + } + } +} + +export function onRouteUpdate({location, previousLocation}) { + if (location.pathname !== previousLocation?.pathname) { + const progressBarTimeout = window.setTimeout(() => { + nprogress.start(); + }, delay); + return () => window.clearTimeout(progressBarTimeout); + } + return undefined; +} +``` + +Or, if you are using TypeScript and you want to leverage contextual typing: + +```ts title="myClientModule.ts" +import type {ClientModule} from '@docusaurus/types'; + +const module: ClientModule = { + onRouteUpdate({location, previousLocation}) { + // ... + }, + onRouteDidUpdate({location, previousLocation}) { + // ... + }, +}; +export default module; +``` + +Both lifecycles will fire on first render, but they will not fire on server-side, so you can safely access browser globals in them. + +:::tip Prefer using React + +Client module lifecycles are purely imperative, and you can't use React hooks or access React contexts within them. If your operations are state-driven or involve complicated DOM manipulations, you should consider [swizzling components](../swizzling.md) instead. + +::: diff --git a/website/docs/advanced/plugins.md b/website/docs/advanced/plugins.md index 3e6e9f969f46..29910ff0e2f9 100644 --- a/website/docs/advanced/plugins.md +++ b/website/docs/advanced/plugins.md @@ -4,7 +4,7 @@ Plugins are the building blocks of features in a Docusaurus 2 site. Each plugin ## Creating plugins {#creating-plugins} -A plugin is a function that takes two parameters: `context` and `options`. It returns a plugin instance object (or a promise). You can create plugins as functions or modules. For more information, refer to the [plugin method references section](./api/plugin-methods/README.md). +A plugin is a function that takes two parameters: `context` and `options`. It returns a plugin instance object (or a promise). You can create plugins as functions or modules. For more information, refer to the [plugin method references section](../api/plugin-methods/README.md). ### Function definition {#function-definition} @@ -35,7 +35,7 @@ module.exports = { ### Module definition {#module-definition} -You can use a plugin as a module path referencing a separate file or NPM package: +You can use a plugin as a module path referencing a separate file or npm package: ```js title="docusaurus.config.js" module.exports = { @@ -51,7 +51,7 @@ module.exports = { Then in the folder `my-plugin`, you can create an `index.js` such as this: -```js title="my-plugin.js" +```js title="my-plugin/index.js" module.exports = async function myPlugin(context, options) { // ... return { diff --git a/website/docs/advanced/routing.md b/website/docs/advanced/routing.md index 9aca36f249bb..82c85b7aae12 100644 --- a/website/docs/advanced/routing.md +++ b/website/docs/advanced/routing.md @@ -257,14 +257,14 @@ If you put some HTML pages under the `static` folder, they will be copied to the -- /pure-html +- [/pure-html](/pure-html) - [pathname:///pure-html](pathname:///pure-html) :::tip -The first link will trigger a "broken links detected" check during the production build. +The first link will **not** trigger a "broken links detected" check during the production build, because the respective file actually exists. Nevertheless, when you click on the link, a "page not found" will be displayed until you refresh. ::: diff --git a/website/docs/advanced/ssg.md b/website/docs/advanced/ssg.md index b5b4e81f9f58..09fb981e6dfc 100644 --- a/website/docs/advanced/ssg.md +++ b/website/docs/advanced/ssg.md @@ -8,12 +8,14 @@ description: Docusaurus statically renders your React code into HTML, allowing f In [architecture](architecture.md), we mentioned that the theme is run in Webpack. But beware: that doesn't mean it always has access to browser globals! The theme is built twice: - During **server-side rendering**, the theme is compiled in a sandbox called [React DOM Server](https://reactjs.org/docs/react-dom-server.html). You can see this as a "headless browser", where there is no `window` or `document`, only React. SSR produces static HTML pages. -- During **client-side rendering**, the theme is compiled with standard React DOM, and has access to browser variables. CSR produces dynamic JavaScript. +- During **client-side rendering**, the theme is compiled to JavaScript that gets eventually executed in the browser, so it has access to browser variables. :::info SSR or SSG? _Server-side rendering_ and _static site generation_ can be different concepts, but we use them interchangeably. +Strictly speaking, Docusaurus is a static site generator, because there's no server-side runtime—we statically render to HTML files that are deployed on a CDN, instead of dynamically pre-rendering on each request. This differs from the working model of [Next.js](https://nextjs.org/). + ::: Therefore, while you probably know not to access Node globals like `process` ([or can we?](#node-env)) or the `'fs'` module, you can't freely access browser globals either. @@ -34,9 +36,10 @@ ReferenceError: window is not defined This is because during server-side rendering, the Docusaurus app isn't actually run in browser, and it doesn't know what `window` is. +```mdx-code-block
- What about process.env.NODE_ENV? +``` One exception to the "no Node globals" rule is `process.env.NODE_ENV`. In fact, you can use it in React, because Webpack injects this variable as a global: @@ -56,8 +59,10 @@ During Webpack build, the `process.env.NODE_ENV` will be replaced with the value import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; +```mdx-code-block +``` ```diff import React from 'react'; @@ -72,8 +77,10 @@ export default function expensiveComp() { } ``` +```mdx-code-block +``` ```diff import React from 'react'; @@ -88,9 +95,11 @@ export default function expensiveComp() { } ``` +```mdx-code-block
+``` ## Understanding SSR {#understanding-ssr} @@ -100,6 +109,8 @@ These HTML files are the first to arrive at the user's browser screen when a URL In CSR-only apps, all DOM elements are generated on client side with React, and the HTML file only ever contains one root element for React to mount DOM to; in SSR, React is already facing a fully built HTML page, and it only needs to correlate the DOM elements with the virtual DOM in its model. This step is called "hydration". After React has hydrated the static markup, the app starts to work as any normal React app. +Note that Docusaurus is ultimately a single-page application, so static site generation is only an optimization (_progressive enhancement_, as it's called), but our functionality does not fully depend on those HTML files. This is contrary to site generators like [Jekyll](https://jekyllrb.com/) and [Docusaurus v1](https://v1.docusaurus.io/), where all files are statically transformed to markup, and interactiveness is added through external JavaScript linked with `