From f219a2ac90a8254105af10615eae96bde5349d6c Mon Sep 17 00:00:00 2001 From: Joshua Chen Date: Sat, 16 Apr 2022 16:35:40 +0800 Subject: [PATCH 01/13] test: improve test coverage (#7181) --- packages/docusaurus-logger/src/index.ts | 16 ++++++++-------- .../src/__tests__/globUtils.test.ts | 11 +++++++++-- .../exports/__tests__/Interpolate.test.tsx | 5 +++++ .../__tests__/__snapshots__/index.test.ts.snap | 16 +++++++++++++++- .../src/server/plugins/__tests__/index.test.ts | 6 ++++++ .../src/server/plugins/__tests__/presets.test.ts | 3 +++ packages/docusaurus/src/server/routes.ts | 5 ++--- 7 files changed, 48 insertions(+), 14 deletions(-) diff --git a/packages/docusaurus-logger/src/index.ts b/packages/docusaurus-logger/src/index.ts index 08e985e77ed4..7d5b577dff26 100644 --- a/packages/docusaurus-logger/src/index.ts +++ b/packages/docusaurus-logger/src/index.ts @@ -5,16 +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 url = (msg: unknown): string => chalk.cyan(chalk.underline(msg)); -const name = (msg: unknown): string => chalk.blue(chalk.bold(msg)); +const path = (msg: unknown): string => chalk.cyan.underline(`"${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(`\`${msg}\``); -const subdue: Chalk = chalk.gray; -const num: Chalk = chalk.yellow; +const subdue = (msg: unknown): string => chalk.gray(msg); +const num = (msg: unknown): string => chalk.yellow(msg); function interpolate( msgs: TemplateStringsArray, @@ -69,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) @@ -115,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) diff --git a/packages/docusaurus-utils/src/__tests__/globUtils.test.ts b/packages/docusaurus-utils/src/__tests__/globUtils.test.ts index e2f3d52f2c1f..c35e164920ba 100644 --- a/packages/docusaurus-utils/src/__tests__/globUtils.test.ts +++ b/packages/docusaurus-utils/src/__tests__/globUtils.test.ts @@ -12,9 +12,8 @@ import { } from '../globUtils'; describe('createMatcher', () => { - const matcher = createMatcher(GlobExcludeDefault); - it('match default exclude MD/MDX partials correctly', () => { + const matcher = createMatcher(GlobExcludeDefault); expect(matcher('doc.md')).toBe(false); expect(matcher('category/doc.md')).toBe(false); expect(matcher('category/subcategory/doc.md')).toBe(false); @@ -32,6 +31,7 @@ describe('createMatcher', () => { }); it('match default exclude tests correctly', () => { + const matcher = createMatcher(GlobExcludeDefault); expect(matcher('xyz.js')).toBe(false); expect(matcher('xyz.ts')).toBe(false); expect(matcher('xyz.jsx')).toBe(false); @@ -63,6 +63,13 @@ describe('createMatcher', () => { expect(matcher('folder/__tests__/xyz.jsx')).toBe(true); expect(matcher('folder/__tests__/xyz.tsx')).toBe(true); }); + + it('matches nothing given nothing', () => { + const matcher = createMatcher([]); + expect(matcher('foo')).toBe(false); + expect(matcher('')).toBe(false); + expect(matcher('we/are/the/champions')).toBe(false); + }); }); describe('createAbsoluteFilePathMatcher', () => { diff --git a/packages/docusaurus/src/client/exports/__tests__/Interpolate.test.tsx b/packages/docusaurus/src/client/exports/__tests__/Interpolate.test.tsx index ac9d430955c7..57f944d58b8f 100644 --- a/packages/docusaurus/src/client/exports/__tests__/Interpolate.test.tsx +++ b/packages/docusaurus/src/client/exports/__tests__/Interpolate.test.tsx @@ -132,5 +132,10 @@ describe('', () => { ).toThrowErrorMatchingInlineSnapshot( `"The Docusaurus component only accept simple string values. Received: React element"`, ); + expect(() => + renderer.create({null}), + ).toThrowErrorMatchingInlineSnapshot( + `"The Docusaurus component only accept simple string values. Received: object"`, + ); }); }); diff --git a/packages/docusaurus/src/server/plugins/__tests__/__snapshots__/index.test.ts.snap b/packages/docusaurus/src/server/plugins/__tests__/__snapshots__/index.test.ts.snap index 688eaa837af2..76e6a9bee903 100644 --- a/packages/docusaurus/src/server/plugins/__tests__/__snapshots__/index.test.ts.snap +++ b/packages/docusaurus/src/server/plugins/__tests__/__snapshots__/index.test.ts.snap @@ -63,6 +63,20 @@ exports[`loadPlugins loads plugins 1`] = ` }, }, ], - "pluginsRouteConfigs": [], + "pluginsRouteConfigs": [ + { + "component": "Comp", + "context": { + "data": { + "content": "path", + }, + "plugin": "/packages/docusaurus/src/server/plugins/__tests__/__fixtures__/site-with-plugin/.docusaurus/test1/default/plugin-route-context-module-100.json", + }, + "modules": { + "content": "path", + }, + "path": "foo/", + }, + ], } `; diff --git a/packages/docusaurus/src/server/plugins/__tests__/index.test.ts b/packages/docusaurus/src/server/plugins/__tests__/index.test.ts index d585d644c4af..7e3ae0f428e2 100644 --- a/packages/docusaurus/src/server/plugins/__tests__/index.test.ts +++ b/packages/docusaurus/src/server/plugins/__tests__/index.test.ts @@ -31,6 +31,12 @@ describe('loadPlugins', () => { return this.prop; }, async contentLoaded({content, actions}) { + actions.addRoute({ + path: 'foo', + component: 'Comp', + modules: {content: 'path'}, + context: {content: 'path'}, + }); actions.setGlobalData({content, prop: this.prop}); }, }), diff --git a/packages/docusaurus/src/server/plugins/__tests__/presets.test.ts b/packages/docusaurus/src/server/plugins/__tests__/presets.test.ts index a50117e371c6..10d50a29506a 100644 --- a/packages/docusaurus/src/server/plugins/__tests__/presets.test.ts +++ b/packages/docusaurus/src/server/plugins/__tests__/presets.test.ts @@ -129,6 +129,9 @@ describe('loadPresets', () => { path.join(__dirname, '__fixtures__/presets/preset-plugins.js'), {docs: {path: '../'}}, ], + false, + null, + undefined, path.join(__dirname, '__fixtures__/presets/preset-themes.js'), path.join(__dirname, '__fixtures__/presets/preset-mixed.js'), ], diff --git a/packages/docusaurus/src/server/routes.ts b/packages/docusaurus/src/server/routes.ts index 733bf0bc2f51..87cfedf87a82 100644 --- a/packages/docusaurus/src/server/routes.ts +++ b/packages/docusaurus/src/server/routes.ts @@ -272,9 +272,8 @@ ${JSON.stringify(routeConfig)}`, res.routesChunkNames[`${routePath}-${routeHash}`] = { // Avoid clash with a prop called "component" ...genChunkNames({__comp: component}, 'component', component, res), - ...(context - ? genChunkNames({__context: context}, 'context', routePath, res) - : {}), + ...(context && + genChunkNames({__context: context}, 'context', routePath, res)), ...genChunkNames(modules, 'module', routePath, res), }; From 674a77f02db6d39b090803460102eb2ce594751c Mon Sep 17 00:00:00 2001 From: Zac A <41454557+sandypockets@users.noreply.github.com> Date: Sat, 16 Apr 2022 23:38:53 -0400 Subject: [PATCH 02/13] docs: add easy-dates to showcase (#7185) * docs: add easy-dates to showcase * optimize image Co-authored-by: Joshua Chen --- website/src/data/showcase/easy-dates.png | Bin 0 -> 29127 bytes website/src/data/users.tsx | 8 ++++++++ 2 files changed, 8 insertions(+) create mode 100644 website/src/data/showcase/easy-dates.png diff --git a/website/src/data/showcase/easy-dates.png b/website/src/data/showcase/easy-dates.png new file mode 100644 index 0000000000000000000000000000000000000000..cd33387dc2354a8a7819611023c9556d1d83ccb7 GIT binary patch literal 29127 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≪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 Date: Sun, 17 Apr 2022 12:50:09 +0800 Subject: [PATCH 03/13] refactor: prefer fs.readJSON over readFile.then(JSON.parse) (#7186) * refactor: prefer fs.readJSON over readFile.then(JSON.parse) * refactor: use promises --- __tests__/validate-package-json.test.ts | 6 +--- admin/scripts/generateExamples.mjs | 4 +-- packages/create-docusaurus/src/index.ts | 3 +- packages/docusaurus-migrate/src/index.ts | 6 ++-- .../locales/__tests__/locales.test.ts | 30 ++++++++++--------- .../src/index.ts | 3 +- .../docusaurus-theme-translations/update.mjs | 2 +- .../docusaurus/src/client/serverEntry.tsx | 4 +-- .../src/server/translations/translations.ts | 2 +- 9 files changed, 27 insertions(+), 33 deletions(-) diff --git a/__tests__/validate-package-json.test.ts b/__tests__/validate-package-json.test.ts index 5f3d605d5a35..8598d7b89247 100644 --- a/__tests__/validate-package-json.test.ts +++ b/__tests__/validate-package-json.test.ts @@ -27,12 +27,8 @@ type PackageJsonFile = { 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) => ({file, content}))), ); } diff --git a/admin/scripts/generateExamples.mjs b/admin/scripts/generateExamples.mjs index 748640ae0dcb..edf56f4b423f 100644 --- a/admin/scripts/generateExamples.mjs +++ b/admin/scripts/generateExamples.mjs @@ -37,8 +37,8 @@ async function generateTemplateExample(template) { ); // read the content of the package.json - const templatePackageJson = JSON.parse( - await fs.readFile(`examples/${template}/package.json`, 'utf8'), + const templatePackageJson = await fs.readJSON( + `examples/${template}/package.json`, ); // attach the dev script which would be used in code sandbox by default diff --git a/packages/create-docusaurus/src/index.ts b/packages/create-docusaurus/src/index.ts index 4358ee020303..e913de7ef3da 100755 --- a/packages/create-docusaurus/src/index.ts +++ b/packages/create-docusaurus/src/index.ts @@ -103,8 +103,7 @@ function isValidGitRepoUrl(gitRepoUrl: string) { } async function updatePkg(pkgPath: string, obj: {[key: string]: unknown}) { - const content = await fs.readFile(pkgPath, 'utf-8'); - const pkg = JSON.parse(content); + const pkg = await fs.readJSON(pkgPath); const newPkg = Object.assign(pkg, obj); await fs.outputFile(pkgPath, `${JSON.stringify(newPkg, null, 2)}\n`); diff --git a/packages/docusaurus-migrate/src/index.ts b/packages/docusaurus-migrate/src/index.ts index 764718fc5441..b4798285a60a 100644 --- a/packages/docusaurus-migrate/src/index.ts +++ b/packages/docusaurus-migrate/src/index.ts @@ -443,8 +443,8 @@ 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: string[] = await fs.readJSON( + path.join(siteDir, 'versions.json'), ); await fs.copyFile( path.join(siteDir, 'versions.json'), @@ -542,7 +542,7 @@ async function migrateVersionedSidebar( `version-${version}-sidebars.json`, ); try { - sidebarEntries = JSON.parse(await fs.readFile(sidebarPath, 'utf-8')); + sidebarEntries = await fs.readJSON(sidebarPath); } catch { sidebars.push({version, entries: sidebars[i - 1]!.entries}); return; diff --git a/packages/docusaurus-theme-translations/locales/__tests__/locales.test.ts b/packages/docusaurus-theme-translations/locales/__tests__/locales.test.ts index 0dc8db25977f..7bf0bf22a430 100644 --- a/packages/docusaurus-theme-translations/locales/__tests__/locales.test.ts +++ b/packages/docusaurus-theme-translations/locales/__tests__/locales.test.ts @@ -17,22 +17,24 @@ jest.setTimeout(15000); describe('theme translations', () => { it('has base messages files contain EXACTLY all the translations extracted from the theme. Please run "yarn workspace @docusaurus/theme-translations update" to keep base messages files up-to-date', async () => { const baseMessagesDirPath = path.join(__dirname, '../base'); - const baseMessages = Object.fromEntries( - await Promise.all( - ( - await fs.readdir(baseMessagesDirPath) - ).map(async (baseMessagesFile) => - Object.entries( - (await fs.readJSON( - path.join(baseMessagesDirPath, baseMessagesFile), - 'utf-8', - )) as {[key: string]: string}, + const baseMessages = await fs + .readdir(baseMessagesDirPath) + .then((files) => + Promise.all( + files.map( + (baseMessagesFile): Promise<{[key: string]: string}> => + fs.readJSON(path.join(baseMessagesDirPath, baseMessagesFile)), ), ), - ).then((translations) => - translations.flat().filter(([key]) => !key.endsWith('___DESCRIPTION')), - ), - ); + ) + .then((translations) => + Object.fromEntries( + translations + .map(Object.entries) + .flat() + .filter(([key]) => !key.endsWith('___DESCRIPTION')), + ), + ); const codeMessages = _.mapValues( await extractThemeCodeMessages(), (translation) => translation.message, diff --git a/packages/docusaurus-theme-translations/src/index.ts b/packages/docusaurus-theme-translations/src/index.ts index 3f75c3d22ec2..068e5be46418 100644 --- a/packages/docusaurus-theme-translations/src/index.ts +++ b/packages/docusaurus-theme-translations/src/index.ts @@ -50,8 +50,7 @@ export async function readDefaultCodeTranslationMessages({ const filePath = path.resolve(dirPath, localeToTry, `${name}.json`); if (await fs.pathExists(filePath)) { - const fileContent = await fs.readFile(filePath, 'utf8'); - return JSON.parse(fileContent); + return fs.readJSON(filePath); } } diff --git a/packages/docusaurus-theme-translations/update.mjs b/packages/docusaurus-theme-translations/update.mjs index de7a0960ad7f..85736bf696e4 100644 --- a/packages/docusaurus-theme-translations/update.mjs +++ b/packages/docusaurus-theme-translations/update.mjs @@ -55,7 +55,7 @@ async function readMessagesFile(filePath) { logger.info`File path=${filePath} not found. Creating new translation base file.`; await fs.outputFile(filePath, '{}\n'); } - return JSON.parse((await fs.readFile(filePath)).toString()); + return fs.readJSON(filePath); } /** diff --git a/packages/docusaurus/src/client/serverEntry.tsx b/packages/docusaurus/src/client/serverEntry.tsx index c2c57e9348aa..4ff192881b5f 100644 --- a/packages/docusaurus/src/client/serverEntry.tsx +++ b/packages/docusaurus/src/client/serverEntry.tsx @@ -111,9 +111,7 @@ async function doRender(locals: Locals & {path: string}) { const {generatedFilesDir} = locals; const manifestPath = path.join(generatedFilesDir, 'client-manifest.json'); - const manifest: Manifest = JSON.parse( - await fs.readFile(manifestPath, 'utf8'), - ); + const manifest: Manifest = await fs.readJSON(manifestPath); // Get all required assets for this particular page based on client // manifest information. diff --git a/packages/docusaurus/src/server/translations/translations.ts b/packages/docusaurus/src/server/translations/translations.ts index 4d0bcb24740f..160e9a6bd06b 100644 --- a/packages/docusaurus/src/server/translations/translations.ts +++ b/packages/docusaurus/src/server/translations/translations.ts @@ -58,7 +58,7 @@ async function readTranslationFileContent( ): Promise { if (await fs.pathExists(filePath)) { try { - const content = JSON.parse(await fs.readFile(filePath, 'utf8')); + const content = await fs.readJSON(filePath); ensureTranslationFileContent(content); return content; } catch (err) { From fa1ce230eacdba34b235c19d992aebcb80bf4f57 Mon Sep 17 00:00:00 2001 From: Joshua Chen Date: Sun, 17 Apr 2022 16:39:11 +0800 Subject: [PATCH 04/13] refactor: capitalize comments (#7188) * refactor: capitalize comments * revert... --- .../functionUtils/playgroundUtils.ts | 9 ++- admin/scripts/generateExamples.mjs | 24 ++++---- jest/snapshotPathNormalizer.ts | 7 +-- .../src/remark/toc/index.ts | 2 +- .../src/remark/transformImage/index.ts | 4 +- .../src/remark/transformLinks/index.ts | 6 +- packages/docusaurus-migrate/src/index.ts | 2 +- .../src/index.d.ts | 4 +- .../src/collectRedirects.ts | 4 +- .../src/__tests__/index.test.ts | 3 +- .../src/__tests__/options.test.ts | 2 +- .../src/index.ts | 2 +- .../src/options.ts | 2 +- .../src/__tests__/docs.test.ts | 1 - .../src/__tests__/index.test.ts | 4 +- .../src/__tests__/numberPrefix.test.ts | 6 +- .../src/__tests__/options.test.ts | 2 +- .../src/__tests__/props.test.ts | 2 +- .../client/__tests__/docsClientUtils.test.ts | 6 +- .../src/docs.ts | 10 ++-- .../src/frontMatter.ts | 6 +- .../src/plugin-content-docs.d.ts | 6 +- .../src/routes.ts | 4 +- .../src/sidebars/generator.ts | 4 +- .../src/sidebars/postProcessor.ts | 2 +- .../src/sidebars/types.ts | 3 +- .../src/translations.ts | 54 +----------------- .../src/types.ts | 2 +- .../src/theme/DebugContent/index.tsx | 4 +- .../src/theme/DebugJsonView/index.tsx | 2 +- .../src/index.ts | 3 +- .../src/theme/IdealImage/index.tsx | 2 +- packages/docusaurus-plugin-pwa/src/index.ts | 7 ++- .../docusaurus-plugin-pwa/src/plugin-pwa.d.ts | 2 + .../docusaurus-plugin-pwa/src/registerSw.js | 4 +- packages/docusaurus-plugin-pwa/src/sw.js | 5 +- .../src/__tests__/index.test.ts | 2 +- .../src/__tests__/translations.test.ts | 2 +- .../src/getSwizzleConfig.ts | 4 +- .../src/theme-classic.d.ts | 4 +- .../src/theme/DocSidebarItem/Category.tsx | 4 +- .../src/theme/DocSidebarItems/index.tsx | 7 +-- .../src/theme/DocVersionBanner/index.tsx | 4 +- .../src/theme/Heading/index.tsx | 22 ++------ .../src/theme/Layout/index.tsx | 2 +- .../src/theme/SiteMetadata/index.tsx | 16 +++--- .../src/validateThemeConfig.ts | 3 +- .../src/components/Collapsible/index.tsx | 4 +- .../src/components/Details/index.tsx | 3 +- .../src/contexts/announcementBar.tsx | 2 +- .../src/contexts/navbarMobileSidebar.tsx | 4 +- .../src/hooks/useTOCHighlight.ts | 6 +- .../src/utils/codeBlockUtils.ts | 11 ++-- .../src/utils/docsUtils.tsx | 9 +-- .../src/utils/tocUtils.ts | 6 +- .../useAlgoliaContextualFacetFilters.ts | 2 +- .../src/theme/SearchBar/index.tsx | 2 +- .../src/validateThemeConfig.ts | 2 +- .../src/index.ts | 13 +++-- packages/docusaurus-types/src/index.d.ts | 4 +- .../src/__tests__/i18nUtils.test.ts | 2 - .../src/__tests__/markdownUtils.test.ts | 6 +- packages/docusaurus-utils/src/gitUtils.ts | 2 +- packages/docusaurus-utils/src/i18nUtils.ts | 2 +- packages/docusaurus-utils/src/pathUtils.ts | 6 +- packages/docusaurus-utils/src/tags.ts | 2 +- packages/docusaurus-utils/src/urlUtils.ts | 1 - packages/docusaurus-utils/src/webpackUtils.ts | 3 +- packages/docusaurus/bin/beforeCli.mjs | 3 +- packages/docusaurus/src/client/.eslintrc.js | 5 +- .../src/client/BaseUrlIssueBanner/index.tsx | 3 +- .../docusaurus/src/client/LinksCollector.tsx | 3 +- .../docusaurus/src/client/exports/Link.tsx | 2 +- .../src/client/exports/useBaseUrl.ts | 14 +---- .../docusaurus/src/client/routeContext.tsx | 2 +- packages/docusaurus/src/commands/deploy.ts | 5 +- packages/docusaurus/src/commands/start.ts | 2 +- .../swizzle/__tests__/actions.test.ts | 2 +- .../src/commands/swizzle/actions.ts | 2 +- .../src/server/__tests__/brokenLinks.test.ts | 12 ++-- .../server/__tests__/configValidation.test.ts | 17 +++--- packages/docusaurus/src/server/brokenLinks.ts | 1 - packages/docusaurus/src/server/choosePort.ts | 56 ++++++------------- packages/docusaurus/src/server/index.ts | 4 +- .../docusaurus/src/server/plugins/index.ts | 2 +- .../docusaurus/src/server/plugins/init.ts | 5 +- .../src/server/translations/translations.ts | 6 +- .../src/webpack/__tests__/utils.test.ts | 2 +- packages/docusaurus/src/webpack/base.ts | 12 ++-- packages/docusaurus/src/webpack/client.ts | 2 +- packages/docusaurus/src/webpack/utils.ts | 6 +- packages/lqip-loader/src/lqip.ts | 4 +- project-words.txt | 1 + website/_dogfooding/docs-tests-sidebars.js | 2 +- website/_dogfooding/dogfooding.config.js | 6 +- .../_dogfooding/testSwizzleThemeClassic.mjs | 12 ++-- website/docusaurus.config.js | 20 ++++--- website/testCSSOrder.mjs | 2 +- website/waitForCrowdin.mjs | 2 +- 99 files changed, 241 insertions(+), 350 deletions(-) diff --git a/admin/new.docusaurus.io/functionUtils/playgroundUtils.ts b/admin/new.docusaurus.io/functionUtils/playgroundUtils.ts index 85bd7ef4bd81..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'; diff --git a/admin/scripts/generateExamples.mjs b/admin/scripts/generateExamples.mjs index edf56f4b423f..0c29c39bba31 100644 --- a/admin/scripts/generateExamples.mjs +++ b/admin/scripts/generateExamples.mjs @@ -24,27 +24,26 @@ async function generateTemplateExample(template) { `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 = await 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 @@ -58,13 +57,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, @@ -162,7 +160,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... `); @@ -170,7 +168,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... @@ -187,7 +185,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/jest/snapshotPathNormalizer.ts b/jest/snapshotPathNormalizer.ts index 084abc14a6cc..485c70b4b1b2 100644 --- a/jest/snapshotPathNormalizer.ts +++ b/jest/snapshotPathNormalizer.ts @@ -90,7 +90,7 @@ function normalizePaths(value: T): T { (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}`) @@ -98,7 +98,7 @@ function normalizePaths(value: T): T { (val) => val .split(`${path.sep + homeRelativeToTempReal}`) - .join(''), // untested + .join(''), (val) => val .split(`${path.sep + homeRealRelativeToTempReal}`) @@ -106,7 +106,7 @@ function normalizePaths(value: T): T { (val) => val .split(`${path.sep + homeRealRelativeToTemp}`) - .join(''), // untested + .join(''), // Replace the Docusaurus version with a stub (val) => val.split(version).join(''), @@ -134,7 +134,6 @@ function normalizePaths(value: T): T { } function shouldUpdate(value: unknown) { - // return true if value is different from normalized value return typeof value === 'string' && normalizePaths(value) !== value; } diff --git a/packages/docusaurus-mdx-loader/src/remark/toc/index.ts b/packages/docusaurus-mdx-loader/src/remark/toc/index.ts index e10dbe70a3f3..8f5626de5abb 100644 --- a/packages/docusaurus-mdx-loader/src/remark/toc/index.ts +++ b/packages/docusaurus-mdx-loader/src/remark/toc/index.ts @@ -79,7 +79,7 @@ export default function plugin(options: PluginOptions = {}): Transformer { 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; } diff --git a/packages/docusaurus-mdx-loader/src/remark/transformImage/index.ts b/packages/docusaurus-mdx-loader/src/remark/transformImage/index.ts index 8dc6bbca3e50..691c42703922 100644 --- a/packages/docusaurus-mdx-loader/src/remark/transformImage/index.ts +++ b/packages/docusaurus-mdx-loader/src/remark/transformImage/index.ts @@ -103,7 +103,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 +120,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), diff --git a/packages/docusaurus-mdx-loader/src/remark/transformLinks/index.ts b/packages/docusaurus-mdx-loader/src/remark/transformLinks/index.ts index b1e7d1467ed9..24a04805a89b 100644 --- a/packages/docusaurus-mdx-loader/src/remark/transformLinks/index.ts +++ b/packages/docusaurus-mdx-loader/src/remark/transformLinks/index.ts @@ -34,7 +34,9 @@ type Context = PluginOptions & { filePath: string; }; -// transform the link node to a jsx link with a require() call +/** + * Transforms the link node to a JSX `` element with a `require()` call. + */ function toAssetRequireNode(node: Link, assetPath: string, filePath: string) { const jsxNode = node as Literal & Partial; let relativeAssetPath = posixPath( @@ -106,7 +108,7 @@ async function getAssetAbsolutePath( async function processLinkNode(node: Link, context: Context) { 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 || '?'; diff --git a/packages/docusaurus-migrate/src/index.ts b/packages/docusaurus-migrate/src/index.ts index b4798285a60a..e1e0bcf4d665 100644 --- a/packages/docusaurus-migrate/src/index.ts +++ b/packages/docusaurus-migrate/src/index.ts @@ -207,7 +207,7 @@ export function createConfigFile({ >): VersionTwoConfig { const siteConfig = v1Config; const customConfigFields: {[key: string]: unknown} = {}; - // add fields that are unknown to v2 to customConfigFields + // Add fields that are unknown to v2 to customConfigFields Object.keys(siteConfig).forEach((key) => { const knownFields = [ 'title', diff --git a/packages/docusaurus-module-type-aliases/src/index.d.ts b/packages/docusaurus-module-type-aliases/src/index.d.ts index dc196b86f210..b4a243ee96fb 100644 --- a/packages/docusaurus-module-type-aliases/src/index.d.ts +++ b/packages/docusaurus-module-type-aliases/src/index.d.ts @@ -152,9 +152,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; diff --git a/packages/docusaurus-plugin-client-redirects/src/collectRedirects.ts b/packages/docusaurus-plugin-client-redirects/src/collectRedirects.ts index 1ffb8e568eca..9fb14e85a239 100644 --- a/packages/docusaurus-plugin-client-redirects/src/collectRedirects.ts +++ b/packages/docusaurus-plugin-client-redirects/src/collectRedirects.ts @@ -96,8 +96,8 @@ function filterUnwantedRedirects( redirects: RedirectMetadata[], pluginContext: PluginContext, ): RedirectMetadata[] { - // we don't want to create twice the same redirect - // that would lead to writing twice the same html redirection file + // We don't want to create the same redirect twice, since that would lead to + // writing the same html redirection file twice. Object.entries(_.groupBy(redirects, (redirect) => redirect.from)).forEach( ([from, groupedFromRedirects]) => { if (groupedFromRedirects.length > 1) { diff --git a/packages/docusaurus-plugin-content-blog/src/__tests__/index.test.ts b/packages/docusaurus-plugin-content-blog/src/__tests__/index.test.ts index 79ec1bb2b010..7d47e0027ab6 100644 --- a/packages/docusaurus-plugin-content-blog/src/__tests__/index.test.ts +++ b/packages/docusaurus-plugin-content-blog/src/__tests__/index.test.ts @@ -158,7 +158,6 @@ describe('blog plugin', () => { readingTime: 0.015, source: path.posix.join( '@site', - // pluginPath, path.posix.join('i18n', 'en', 'docusaurus-plugin-content-blog'), '2018-12-14-Happy-First-Birthday-Slash.md', ), @@ -421,7 +420,7 @@ describe('blog plugin', () => { const blogPosts = await getBlogPosts(siteDir); const noDateSource = path.posix.join('@site', PluginPath, 'no date.md'); const noDateSourceFile = path.posix.join(siteDir, PluginPath, 'no date.md'); - // we know the file exist and we know we have git + // We know the file exists and we know we have git const result = getFileCommitDate(noDateSourceFile, {age: 'oldest'}); const noDateSourceTime = result.date; const formattedDate = Intl.DateTimeFormat('en', { diff --git a/packages/docusaurus-plugin-content-blog/src/__tests__/options.test.ts b/packages/docusaurus-plugin-content-blog/src/__tests__/options.test.ts index 2b375f7cee52..8c8cbf92172c 100644 --- a/packages/docusaurus-plugin-content-blog/src/__tests__/options.test.ts +++ b/packages/docusaurus-plugin-content-blog/src/__tests__/options.test.ts @@ -13,7 +13,7 @@ function testValidate(options: Options) { return validateOptions({validate: normalizePluginOptions, options}); } -// the type of remark/rehype plugins can be either function, object or array +// The type of remark/rehype plugins can be either function, object or array const markdownPluginsFunctionStub = () => {}; const markdownPluginsObjectStub = {}; diff --git a/packages/docusaurus-plugin-content-blog/src/index.ts b/packages/docusaurus-plugin-content-blog/src/index.ts index c5538be08235..1bcfb028261b 100644 --- a/packages/docusaurus-plugin-content-blog/src/index.ts +++ b/packages/docusaurus-plugin-content-blog/src/index.ts @@ -218,7 +218,7 @@ export default async function pluginContentBlog( routeBasePath, archiveBasePath, ]); - // creates a blog archive route + // Create a blog archive route const archiveProp = await createData( `${docuHash(archiveUrl)}.json`, JSON.stringify({blogPosts}, null, 2), diff --git a/packages/docusaurus-plugin-content-blog/src/options.ts b/packages/docusaurus-plugin-content-blog/src/options.ts index c4c344116324..baf927b8c671 100644 --- a/packages/docusaurus-plugin-content-blog/src/options.ts +++ b/packages/docusaurus-plugin-content-blog/src/options.ts @@ -111,7 +111,7 @@ const PluginOptionSchema = Joi.object({ .default(DEFAULT_OPTIONS.feedOptions.type), title: Joi.string().allow(''), description: Joi.string().allow(''), - // only add default value when user actually wants a feed (type is not null) + // Only add default value when user actually wants a feed (type is not null) copyright: Joi.when('type', { is: Joi.any().valid(null), then: Joi.string().optional(), diff --git a/packages/docusaurus-plugin-content-docs/src/__tests__/docs.test.ts b/packages/docusaurus-plugin-content-docs/src/__tests__/docs.test.ts index 5eee85412c4d..bceca516cbfc 100644 --- a/packages/docusaurus-plugin-content-docs/src/__tests__/docs.test.ts +++ b/packages/docusaurus-plugin-content-docs/src/__tests__/docs.test.ts @@ -849,7 +849,6 @@ describe('versioned site', () => { const {siteDir, context, options, version100} = await loadSite({ options: { editUrl: 'https://github.com/facebook/docusaurus/edit/main/website', - // editCurrentVersion: true, }, }); diff --git a/packages/docusaurus-plugin-content-docs/src/__tests__/index.test.ts b/packages/docusaurus-plugin-content-docs/src/__tests__/index.test.ts index 46d87d936ef9..0a0627c735a2 100644 --- a/packages/docusaurus-plugin-content-docs/src/__tests__/index.test.ts +++ b/packages/docusaurus-plugin-content-docs/src/__tests__/index.test.ts @@ -68,8 +68,8 @@ const createFakeActions = (contentDir: string) => { }, }; - // query by prefix, because files have a hash at the end - // so it's not convenient to query by full filename + // Query by prefix, because files have a hash at the end so it's not + // convenient to query by full filename const getCreatedDataByPrefix = (prefix: string) => { const entry = Object.entries(dataContainer).find(([key]) => key.startsWith(prefix), diff --git a/packages/docusaurus-plugin-content-docs/src/__tests__/numberPrefix.test.ts b/packages/docusaurus-plugin-content-docs/src/__tests__/numberPrefix.test.ts index e1b7afd4c8a5..cf8b7e0ca7bb 100644 --- a/packages/docusaurus-plugin-content-docs/src/__tests__/numberPrefix.test.ts +++ b/packages/docusaurus-plugin-content-docs/src/__tests__/numberPrefix.test.ts @@ -23,7 +23,7 @@ const IgnoredNumberPrefixPatterns = [ '00abc01-My Doc', 'My 001- Doc', 'My -001 Doc', - // ignore common date-like patterns: https://github.com/facebook/docusaurus/issues/4640 + // Ignore common date-like patterns: https://github.com/facebook/docusaurus/issues/4640 '2021-01-31 - Doc', '31-01-2021 - Doc', '2021_01_31 - Doc', @@ -36,7 +36,7 @@ const IgnoredNumberPrefixPatterns = [ '01-2021 - Doc', '01_2021 - Doc', '01.2021 - Doc', - // date patterns without suffix + // Date patterns without suffix '2021-01-31', '2021-01', '21-01-31', @@ -49,7 +49,7 @@ const IgnoredNumberPrefixPatterns = [ '01', '2021', '01', - // ignore common versioning patterns: https://github.com/facebook/docusaurus/issues/4653 + // Ignore common versioning patterns: https://github.com/facebook/docusaurus/issues/4653 '8.0', '8.0.0', '14.2.16', diff --git a/packages/docusaurus-plugin-content-docs/src/__tests__/options.test.ts b/packages/docusaurus-plugin-content-docs/src/__tests__/options.test.ts index eec906acb515..5d5e330c50c8 100644 --- a/packages/docusaurus-plugin-content-docs/src/__tests__/options.test.ts +++ b/packages/docusaurus-plugin-content-docs/src/__tests__/options.test.ts @@ -15,7 +15,7 @@ import { import {GlobExcludeDefault} from '@docusaurus/utils'; import type {Options} from '@docusaurus/plugin-content-docs'; -// the type of remark/rehype plugins is function +// The type of remark/rehype plugins can be function/object const markdownPluginsFunctionStub = () => {}; const markdownPluginsObjectStub = {}; diff --git a/packages/docusaurus-plugin-content-docs/src/__tests__/props.test.ts b/packages/docusaurus-plugin-content-docs/src/__tests__/props.test.ts index db2648c5e5d7..9db11b7cdddb 100644 --- a/packages/docusaurus-plugin-content-docs/src/__tests__/props.test.ts +++ b/packages/docusaurus-plugin-content-docs/src/__tests__/props.test.ts @@ -57,7 +57,7 @@ describe('toTagDocListProp', () => { count: 2, label: tag.label, permalink: tag.permalink, - items: [doc3, doc1], // docs sorted by title, ignore "id5" absence + items: [doc3, doc1], // Docs sorted by title, ignore "id5" absence }); }); }); diff --git a/packages/docusaurus-plugin-content-docs/src/client/__tests__/docsClientUtils.test.ts b/packages/docusaurus-plugin-content-docs/src/client/__tests__/docsClientUtils.test.ts index 5ca427b76621..e663dbd43349 100644 --- a/packages/docusaurus-plugin-content-docs/src/client/__tests__/docsClientUtils.test.ts +++ b/packages/docusaurus-plugin-content-docs/src/client/__tests__/docsClientUtils.test.ts @@ -226,7 +226,7 @@ describe('docsClientUtils', () => { ], }; - // shuffle, because order shouldn't matter + // Shuffle, because order shouldn't matter const versions: GlobalVersion[] = _.shuffle([ versionNext, version2, @@ -355,7 +355,7 @@ describe('docsClientUtils', () => { ], }; - // shuffle, because order shouldn't matter + // Shuffle, because order shouldn't matter const versions: GlobalVersion[] = _.shuffle([ versionNext, version2, @@ -395,7 +395,7 @@ describe('docsClientUtils', () => { latestVersionSuggestion: version2, }); expect(getDocVersionSuggestions(data, '/docs/version1/doc2')).toEqual({ - latestDocSuggestion: undefined, // because /docs/version1/doc2 does not exist + latestDocSuggestion: undefined, // Because /docs/version1/doc2 does not exist latestVersionSuggestion: version2, }); }); diff --git a/packages/docusaurus-plugin-content-docs/src/docs.ts b/packages/docusaurus-plugin-content-docs/src/docs.ts index d7eae5bd74d9..1c04edc05efe 100644 --- a/packages/docusaurus-plugin-content-docs/src/docs.ts +++ b/packages/docusaurus-plugin-content-docs/src/docs.ts @@ -156,15 +156,13 @@ function doProcessDocMetadata({ parse_number_prefixes: parseNumberPrefixes = true, } = frontMatter; - // ex: api/plugins/myDoc -> myDoc - // ex: myDoc -> myDoc + // E.g. api/plugins/myDoc -> myDoc; myDoc -> myDoc const sourceFileNameWithoutExtension = path.basename( source, path.extname(source), ); - // ex: api/plugins/myDoc -> api/plugins - // ex: myDoc -> . + // E.g. api/plugins/myDoc -> api/plugins; myDoc -> . const sourceDirName = path.dirname(source); const {filename: unprefixedFileName, numberPrefix} = parseNumberPrefixes @@ -347,7 +345,7 @@ export function addDocNavigation( } const docsWithNavigation = docsBase.map(addNavData); - // sort to ensure consistent output for tests + // Sort to ensure consistent output for tests docsWithNavigation.sort((a, b) => a.id.localeCompare(b.id)); return docsWithNavigation; } @@ -434,7 +432,7 @@ export function getDocIds(doc: DocMetadataBase): [string, string] { return [doc.unversionedId, doc.id]; } -// docs are indexed by both versioned and unversioned ids at the same time +// Docs are indexed by both versioned and unversioned ids at the same time // TODO legacy retro-compatibility due to old versioned sidebars using // versioned doc ids ("id" should be removed & "versionedId" should be renamed // to "id") diff --git a/packages/docusaurus-plugin-content-docs/src/frontMatter.ts b/packages/docusaurus-plugin-content-docs/src/frontMatter.ts index 5c7d3bc97dba..de944a6b1716 100644 --- a/packages/docusaurus-plugin-content-docs/src/frontMatter.ts +++ b/packages/docusaurus-plugin-content-docs/src/frontMatter.ts @@ -20,12 +20,14 @@ import type {DocFrontMatter} from '@docusaurus/plugin-content-docs'; // We use default values in code instead const DocFrontMatterSchema = Joi.object({ id: Joi.string(), - title: Joi.string().allow(''), // see https://github.com/facebook/docusaurus/issues/4591#issuecomment-822372398 + // See https://github.com/facebook/docusaurus/issues/4591#issuecomment-822372398 + title: Joi.string().allow(''), hide_title: Joi.boolean(), hide_table_of_contents: Joi.boolean(), keywords: Joi.array().items(Joi.string().required()), image: URISchema, - description: Joi.string().allow(''), // see https://github.com/facebook/docusaurus/issues/4591#issuecomment-822372398 + // See https://github.com/facebook/docusaurus/issues/4591#issuecomment-822372398 + description: Joi.string().allow(''), slug: Joi.string(), sidebar_label: Joi.string(), sidebar_position: Joi.number(), diff --git a/packages/docusaurus-plugin-content-docs/src/plugin-content-docs.d.ts b/packages/docusaurus-plugin-content-docs/src/plugin-content-docs.d.ts index 2d23b7d51a90..97e8c46b0ea7 100644 --- a/packages/docusaurus-plugin-content-docs/src/plugin-content-docs.d.ts +++ b/packages/docusaurus-plugin-content-docs/src/plugin-content-docs.d.ts @@ -19,7 +19,7 @@ declare module '@docusaurus/plugin-content-docs' { * Custom callback for parsing number prefixes from file/folder names. */ export type NumberPrefixParser = (filename: string) => { - /** file name without number prefix, without any other modification. */ + /** File name without number prefix, without any other modification. */ filename: string; /** The number prefix. Can be float, integer, negative, or anything. */ numberPrefix?: number; @@ -621,9 +621,9 @@ declare module '@docusaurus/plugin-content-docs/client' { breadcrumbs: boolean; }; export type DocVersionSuggestions = { - /** suggest the latest version */ + /** Suggest the latest version */ latestVersionSuggestion: GlobalVersion; - /** suggest the same doc, in latest version (if exist) */ + /** Suggest the same doc, in latest version (if one exists) */ latestDocSuggestion?: GlobalDoc; }; diff --git a/packages/docusaurus-plugin-content-docs/src/routes.ts b/packages/docusaurus-plugin-content-docs/src/routes.ts index 3ef6e60ba146..739003737f32 100644 --- a/packages/docusaurus-plugin-content-docs/src/routes.ts +++ b/packages/docusaurus-plugin-content-docs/src/routes.ts @@ -139,11 +139,9 @@ export async function createVersionRoutes({ actions.addRoute({ path: version.path, - // allow matching /docs/* as well + // Allow matching /docs/* since this is the wrapping route exact: false, - // main docs component (DocPage) component: docLayoutComponent, - // sub-routes for each doc routes: await createVersionSubRoutes(), modules: { versionMetadata: aliasedSource(versionMetadataPropPath), diff --git a/packages/docusaurus-plugin-content-docs/src/sidebars/generator.ts b/packages/docusaurus-plugin-content-docs/src/sidebars/generator.ts index 4642897f3df4..67320e7888d5 100644 --- a/packages/docusaurus-plugin-content-docs/src/sidebars/generator.ts +++ b/packages/docusaurus-plugin-content-docs/src/sidebars/generator.ts @@ -76,9 +76,9 @@ Available doc IDs: return ( // Doc at the root of the autogenerated sidebar dir doc.sourceDirName === autogenDir || - // autogen dir is . and doc is in subfolder + // Autogen dir is . and doc is in subfolder autogenDir === '.' || - // autogen dir is not . and doc is in subfolder + // Autogen dir is not . and doc is in subfolder // "api/myDoc" startsWith "api/" (note "api2/myDoc" is not included) doc.sourceDirName.startsWith(addTrailingSlash(autogenDir)) ); diff --git a/packages/docusaurus-plugin-content-docs/src/sidebars/postProcessor.ts b/packages/docusaurus-plugin-content-docs/src/sidebars/postProcessor.ts index 363c731696b9..ac662291d343 100644 --- a/packages/docusaurus-plugin-content-docs/src/sidebars/postProcessor.ts +++ b/packages/docusaurus-plugin-content-docs/src/sidebars/postProcessor.ts @@ -22,7 +22,7 @@ function normalizeCategoryLink( params: SidebarProcessorParams, ): SidebarItemCategoryLink | undefined { if (category.link?.type === 'generated-index') { - // default slug logic can be improved + // Default slug logic can be improved const getDefaultSlug = () => `/category/${params.categoryLabelSlugger.slug(category.label)}`; const slug = category.link.slug ?? getDefaultSlug(); diff --git a/packages/docusaurus-plugin-content-docs/src/sidebars/types.ts b/packages/docusaurus-plugin-content-docs/src/sidebars/types.ts index 17d94b8ca3b7..8284f09048ee 100644 --- a/packages/docusaurus-plugin-content-docs/src/sidebars/types.ts +++ b/packages/docusaurus-plugin-content-docs/src/sidebars/types.ts @@ -180,7 +180,6 @@ export type PropSidebarItemCategory = Expand< } >; -// we may want to use a union type in props instead of this generic link? export type PropSidebarItemLink = SidebarItemLink & { docId?: string; }; @@ -245,7 +244,7 @@ export type SidebarItemsGeneratorArgs = { /** The default category index matcher which you can override. */ isCategoryIndex: CategoryIndexMatcher; /** - * key is the path relative to the doc content directory, value is the + * Key is the path relative to the doc content directory, value is the * category metadata file's content. */ categoriesMetadata: {[filePath: string]: CategoryMetadataFile}; diff --git a/packages/docusaurus-plugin-content-docs/src/translations.ts b/packages/docusaurus-plugin-content-docs/src/translations.ts index 4289f3579adf..10b058defa57 100644 --- a/packages/docusaurus-plugin-content-docs/src/translations.ts +++ b/packages/docusaurus-plugin-content-docs/src/translations.ts @@ -53,50 +53,6 @@ function getNormalizedSidebarName({ return rest.join('/'); } -/* -// Do we need to translate doc metadata? -// It seems translating front matter labels is good enough -function getDocTranslations(doc: DocMetadata): TranslationFileContent { - return { - [`${doc.unversionedId}.title`]: { - message: doc.title, - description: `The title for doc with id=${doc.unversionedId}`, - }, - ...(doc.sidebar_label - ? { - [`${doc.unversionedId}.sidebar_label`]: { - message: doc.sidebar_label, - description: - `The sidebar label for doc with id=${doc.unversionedId}`, - }, - } - : undefined), - }; -} -function translateDoc( - doc: DocMetadata, - docsTranslations: TranslationFileContent, -): DocMetadata { - return { - ...doc, - title: docsTranslations[`${doc.unversionedId}.title`]?.message ?? doc.title, - sidebar_label: - docsTranslations[`${doc.unversionedId}.sidebar_label`]?.message ?? - doc.sidebar_label, - }; -} - -function getDocsTranslations(version: LoadedVersion): TranslationFileContent { - return mergeTranslations(version.docs.map(getDocTranslations)); -} -function translateDocs( - docs: DocMetadata[], - docsTranslations: TranslationFileContent, -): DocMetadata[] { - return docs.map((doc) => translateDoc(doc, docsTranslations)); -} - */ - function getSidebarTranslationFileContent( sidebar: Sidebar, sidebarName: string, @@ -252,17 +208,10 @@ function getVersionTranslationFiles(version: LoadedVersion): TranslationFile[] { const sidebarsTranslations: TranslationFileContent = getSidebarsTranslations(version); - // const docsTranslations: TranslationFileContent = - // getDocsTranslations(version); - return [ { path: getVersionFileName(version.versionName), - content: mergeTranslations([ - versionTranslations, - sidebarsTranslations, - // docsTranslations, - ]), + content: mergeTranslations([versionTranslations, sidebarsTranslations]), }, ]; } @@ -276,7 +225,6 @@ function translateVersion( ...version, label: versionTranslations['version.label']?.message ?? version.label, sidebars: translateSidebars(version, versionTranslations), - // docs: translateDocs(version.docs, versionTranslations), }; } diff --git a/packages/docusaurus-plugin-content-docs/src/types.ts b/packages/docusaurus-plugin-content-docs/src/types.ts index 49156b2514ac..713b8a9a35c7 100644 --- a/packages/docusaurus-plugin-content-docs/src/types.ts +++ b/packages/docusaurus-plugin-content-docs/src/types.ts @@ -30,7 +30,7 @@ export type SourceToPermalink = { }; export type VersionTag = Tag & { - /** all doc ids having this tag. */ + /** All doc ids having this tag. */ docIds: string[]; }; export type VersionTags = { diff --git a/packages/docusaurus-plugin-debug/src/theme/DebugContent/index.tsx b/packages/docusaurus-plugin-debug/src/theme/DebugContent/index.tsx index ceac7dea5d19..185c453d7cba 100644 --- a/packages/docusaurus-plugin-debug/src/theme/DebugContent/index.tsx +++ b/packages/docusaurus-plugin-debug/src/theme/DebugContent/index.tsx @@ -38,7 +38,7 @@ function PluginContent({

{pluginName}

{Object.entries(pluginContent) - // filter plugin instances with no content + // Filter plugin instances with no content .filter(([, pluginInstanceContent]) => !!pluginInstanceContent) .map(([pluginId, pluginInstanceContent]) => ( Plugin content
{Object.entries(allContent) - // filter plugins with no content + // Filter plugins with no content .filter(([, pluginContent]) => Object.values(pluginContent).some( (instanceContent) => !!instanceContent, diff --git a/packages/docusaurus-plugin-debug/src/theme/DebugJsonView/index.tsx b/packages/docusaurus-plugin-debug/src/theme/DebugJsonView/index.tsx index 783928cb7afc..5724365b5f2b 100644 --- a/packages/docusaurus-plugin-debug/src/theme/DebugJsonView/index.tsx +++ b/packages/docusaurus-plugin-debug/src/theme/DebugJsonView/index.tsx @@ -10,7 +10,7 @@ import BrowserOnly from '@docusaurus/BrowserOnly'; import type {Props} from '@theme/DebugJsonView'; import type {ReactJsonViewProps} from 'react-json-view'; -// avoids "react-json-view" to display "root" +// Avoids "react-json-view" to display "root" const RootName = null; // Seems ReactJson does not work with SSR diff --git a/packages/docusaurus-plugin-ideal-image/src/index.ts b/packages/docusaurus-plugin-ideal-image/src/index.ts index 4ea9fa4675c7..727eb1adc51c 100644 --- a/packages/docusaurus-plugin-ideal-image/src/index.ts +++ b/packages/docusaurus-plugin-ideal-image/src/index.ts @@ -59,7 +59,8 @@ export default function pluginIdealImage( { loader: require.resolve('@docusaurus/responsive-loader'), options: { - emitFile: !isServer, // don't emit for server-side rendering + // Don't emit for server-side rendering + emitFile: !isServer, // eslint-disable-next-line global-require adapter: require('@docusaurus/responsive-loader/sharp'), name: 'assets/ideal-img/[name].[hash:hex:7].[width].[ext]', diff --git a/packages/docusaurus-plugin-ideal-image/src/theme/IdealImage/index.tsx b/packages/docusaurus-plugin-ideal-image/src/theme/IdealImage/index.tsx index 6bc259b2b1ba..ff8ea85f6f2b 100644 --- a/packages/docusaurus-plugin-ideal-image/src/theme/IdealImage/index.tsx +++ b/packages/docusaurus-plugin-ideal-image/src/theme/IdealImage/index.tsx @@ -40,7 +40,7 @@ function getMessage(icon: IconKey, state: State) { description: 'When the full-scale image is loading', }); case 'load': { - // we can show `alt` here + // We can show `alt` here const {pickedSrc} = state; const {size} = pickedSrc; const sizeMessage = size ? ` (${bytesToSize(size)})` : ''; diff --git a/packages/docusaurus-plugin-pwa/src/index.ts b/packages/docusaurus-plugin-pwa/src/index.ts index 044f05c5492d..7150eae5f609 100644 --- a/packages/docusaurus-plugin-pwa/src/index.ts +++ b/packages/docusaurus-plugin-pwa/src/index.ts @@ -150,7 +150,7 @@ export default function pluginPWA( optimization: { splitChunks: false, minimize: !debug, - // see https://developers.google.com/web/tools/workbox/guides/using-bundlers#webpack + // See https://developers.google.com/web/tools/workbox/guides/using-bundlers#webpack minimizer: debug ? [] : [ @@ -161,7 +161,8 @@ export default function pluginPWA( }, plugins: [ new webpack.EnvironmentPlugin({ - PWA_SW_CUSTOM: swCustom || '', // fallback value required with Webpack 5 + // Fallback value required with Webpack 5 + PWA_SW_CUSTOM: swCustom || '', }), new LogPlugin({ name: 'Service Worker', @@ -192,7 +193,7 @@ export default function pluginPWA( // @ts-expect-error: internal API? ...(injectManifest.globPatterns ?? []), ], - // those attributes are not overrideable + // Those attributes are not overrideable swDest, swSrc: swDest, globDirectory: props.outDir, diff --git a/packages/docusaurus-plugin-pwa/src/plugin-pwa.d.ts b/packages/docusaurus-plugin-pwa/src/plugin-pwa.d.ts index 1e0128331039..51cdf63f2c7a 100644 --- a/packages/docusaurus-plugin-pwa/src/plugin-pwa.d.ts +++ b/packages/docusaurus-plugin-pwa/src/plugin-pwa.d.ts @@ -81,6 +81,8 @@ declare module '@docusaurus/plugin-pwa' { */ swRegister: string | false; }; + + export type Options = Partial; } declare module '@theme/PwaReloadPopup' { diff --git a/packages/docusaurus-plugin-pwa/src/registerSw.js b/packages/docusaurus-plugin-pwa/src/registerSw.js index 36fc55c5a857..9226d9a6f054 100644 --- a/packages/docusaurus-plugin-pwa/src/registerSw.js +++ b/packages/docusaurus-plugin-pwa/src/registerSw.js @@ -16,7 +16,7 @@ const PWA_OFFLINE_MODE_ACTIVATION_STRATEGIES = const PWA_DEBUG = process.env.PWA_DEBUG; /* eslint-enable prefer-destructuring */ -const debug = PWA_DEBUG; // shortcut +const debug = PWA_DEBUG; // Shortcut const MAX_MOBILE_WIDTH = 940; @@ -101,7 +101,7 @@ async function getActiveStrategies() { return isActive ? strategyName : undefined; }), ); - return activeStrategies.filter(Boolean); // remove undefined values + return activeStrategies.filter(Boolean); } async function isOfflineModeEnabled() { diff --git a/packages/docusaurus-plugin-pwa/src/sw.js b/packages/docusaurus-plugin-pwa/src/sw.js index 6c30f239616f..de5d83e6317d 100644 --- a/packages/docusaurus-plugin-pwa/src/sw.js +++ b/packages/docusaurus-plugin-pwa/src/sw.js @@ -18,7 +18,7 @@ function parseSwParams() { return params; } -// doc advises against dynamic imports in SW +// Doc advises against dynamic imports in SW // https://developers.google.com/web/tools/workbox/guides/using-bundlers#code_splitting_and_dynamic_imports // https://twitter.com/sebastienlorber/status/1280155204575518720 // but looks it's working fine as it's inlined by webpack, need to double check @@ -73,7 +73,8 @@ function getPossibleURLs(url) { // eslint-disable-next-line no-underscore-dangle const precacheManifest = self.__WB_MANIFEST; const controller = new PrecacheController({ - fallbackToNetwork: true, // safer to turn this true? + // Safer to turn this true? + fallbackToNetwork: true, }); if (params.offlineMode) { diff --git a/packages/docusaurus-remark-plugin-npm2yarn/src/__tests__/index.test.ts b/packages/docusaurus-remark-plugin-npm2yarn/src/__tests__/index.test.ts index 4887b0ac9d23..6b6ff1ada900 100644 --- a/packages/docusaurus-remark-plugin-npm2yarn/src/__tests__/index.test.ts +++ b/packages/docusaurus-remark-plugin-npm2yarn/src/__tests__/index.test.ts @@ -6,7 +6,7 @@ */ import remark from 'remark'; -// import from the transpiled lib because Babel can't transpile `export =` +// Import from the transpiled lib because Babel can't transpile `export =` // TODO change to `../index` after migrating to ESM import npm2yarn from '../../lib/index'; import vfile from 'to-vfile'; diff --git a/packages/docusaurus-theme-classic/src/__tests__/translations.test.ts b/packages/docusaurus-theme-classic/src/__tests__/translations.test.ts index 66d738519e1e..ebb3040de540 100644 --- a/packages/docusaurus-theme-classic/src/__tests__/translations.test.ts +++ b/packages/docusaurus-theme-classic/src/__tests__/translations.test.ts @@ -125,7 +125,7 @@ describe('getTranslationFiles and translateThemeConfig isomorphism', () => { verifyIsomorphism(ThemeConfigSampleSimpleFooter); }); - // undefined footer should not make the translation code crash + // Undefined footer should not make the translation code crash // See https://github.com/facebook/docusaurus/issues/3936 it('is verified for sample without footer', () => { verifyIsomorphism({...ThemeConfigSample, footer: undefined}); diff --git a/packages/docusaurus-theme-classic/src/getSwizzleConfig.ts b/packages/docusaurus-theme-classic/src/getSwizzleConfig.ts index 13b9fde846f9..9e73ef9a17e4 100644 --- a/packages/docusaurus-theme-classic/src/getSwizzleConfig.ts +++ b/packages/docusaurus-theme-classic/src/getSwizzleConfig.ts @@ -30,7 +30,7 @@ export default function getSwizzleConfig(): SwizzleConfig { }, DocSidebar: { actions: { - eject: 'unsafe', // too much technical code in sidebar, not very safe atm + eject: 'unsafe', // Too much technical code in sidebar, not very safe atm wrap: 'safe', }, description: 'The sidebar component on docs pages', @@ -234,7 +234,7 @@ export default function getSwizzleConfig(): SwizzleConfig { 'prism-include-languages': { actions: { eject: 'safe', - wrap: 'forbidden', // not a component! + wrap: 'forbidden', // Not a component! }, description: 'The Prism languages to include for code block syntax highlighting. Meant to be ejected.', diff --git a/packages/docusaurus-theme-classic/src/theme-classic.d.ts b/packages/docusaurus-theme-classic/src/theme-classic.d.ts index d9462dfee076..4e9f0d995551 100644 --- a/packages/docusaurus-theme-classic/src/theme-classic.d.ts +++ b/packages/docusaurus-theme-classic/src/theme-classic.d.ts @@ -1022,8 +1022,8 @@ declare module '@theme/TOCItems' { declare module '@theme/TOC' { import type {TOCItem} from '@docusaurus/types'; - // minHeadingLevel only exists as a per-doc option, and won't have a default - // set by Joi. See TOC, TOCInline, TOCCollapsible for examples + // `minHeadingLevel` only comes from doc/post front matter, and won't have a + // default set by Joi. See TOC, TOCInline, TOCCollapsible for examples. export interface Props { readonly toc: readonly TOCItem[]; readonly minHeadingLevel?: number; diff --git a/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Category.tsx b/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Category.tsx index 202a9dae09c3..c3d5ed9fc41c 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Category.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Category.tsx @@ -111,8 +111,8 @@ export default function DocSidebarItemCategory({ const isCurrentPage = isSamePath(href, activePath); const {collapsed, setCollapsed} = useCollapsible({ - // active categories are always initialized as expanded - // the default (item.collapsed) is only used for non-active categories + // Active categories are always initialized as expanded. The default + // (`item.collapsed`) is only used for non-active categories. initialState: () => { if (!collapsible) { return false; diff --git a/packages/docusaurus-theme-classic/src/theme/DocSidebarItems/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocSidebarItems/index.tsx index 9d611912642c..fbced08e1416 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocSidebarItems/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocSidebarItems/index.tsx @@ -17,12 +17,7 @@ function DocSidebarItems({items, ...props}: Props): JSX.Element { return ( {items.map((item, index) => ( - + ))} ); diff --git a/packages/docusaurus-theme-classic/src/theme/DocVersionBanner/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocVersionBanner/index.tsx index daadce8000be..dd87a4d3673b 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocVersionBanner/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocVersionBanner/index.tsx @@ -136,8 +136,8 @@ function DocVersionBannerEnabled({ const {latestDocSuggestion, latestVersionSuggestion} = useDocVersionSuggestions(pluginId); - // try to link to same doc in latest version (not always possible) - // fallback to main doc of latest version + // Try to link to same doc in latest version (not always possible), falling + // back to main doc of latest version const latestVersionSuggestedDoc = latestDocSuggestion ?? getVersionMainDoc(latestVersionSuggestion); diff --git a/packages/docusaurus-theme-classic/src/theme/Heading/index.tsx b/packages/docusaurus-theme-classic/src/theme/Heading/index.tsx index 51e1ee7d9377..7f8f80876475 100644 --- a/packages/docusaurus-theme-classic/src/theme/Heading/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Heading/index.tsx @@ -13,13 +13,13 @@ import {useThemeConfig} from '@docusaurus/theme-common'; import styles from './styles.module.css'; -function AnchorHeading({as: As, id, ...props}: Props) { +export default function Heading({as: As, id, ...props}: Props): JSX.Element { const { navbar: {hideOnScroll}, } = useThemeConfig(); - - if (!id) { - return ; + // H1 headings do not need an id because they don't appear in the TOC. + if (As === 'h1' || !id) { + return ; } return ( @@ -46,17 +46,3 @@ function AnchorHeading({as: As, id, ...props}: Props) { ); } - -export default function Heading({as, ...props}: Props): JSX.Element { - if (as === 'h1') { - return ( -

- {props.children} -

- ); - } - return ; -} diff --git a/packages/docusaurus-theme-classic/src/theme/Layout/index.tsx b/packages/docusaurus-theme-classic/src/theme/Layout/index.tsx index 35592ef869f7..47ed451b55d9 100644 --- a/packages/docusaurus-theme-classic/src/theme/Layout/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Layout/index.tsx @@ -27,7 +27,7 @@ export default function Layout(props: Props): JSX.Element { children, noFooter, wrapperClassName, - // not really layout-related, but kept for convenience/retro-compatibility + // Not really layout-related, but kept for convenience/retro-compatibility title, description, } = props; diff --git a/packages/docusaurus-theme-classic/src/theme/SiteMetadata/index.tsx b/packages/docusaurus-theme-classic/src/theme/SiteMetadata/index.tsx index e21668aa90f2..ce53ddf1d9e5 100644 --- a/packages/docusaurus-theme-classic/src/theme/SiteMetadata/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/SiteMetadata/index.tsx @@ -109,16 +109,16 @@ export default function SiteMetadata(): JSX.Element { - element here, - // as it allows react-helmet to override values set in previous - // ie we can override default metadata such as "twitter:card" - // In same Head, the same meta would appear twice instead of overriding - // See react-helmet doc - > + {/* + It's important to have an additional element here, as it allows + react-helmet to override default metadata values set in previous + like "twitter:card". In same Head, the same meta would appear twice + instead of overriding. + */} + {/* Yes, "metadatum" is the grammatically correct term */} {metadata.map((metadatum, i) => ( - + ))} diff --git a/packages/docusaurus-theme-classic/src/validateThemeConfig.ts b/packages/docusaurus-theme-classic/src/validateThemeConfig.ts index 6708539c2730..9a5cd826cc43 100644 --- a/packages/docusaurus-theme-classic/src/validateThemeConfig.ts +++ b/packages/docusaurus-theme-classic/src/validateThemeConfig.ts @@ -100,7 +100,7 @@ const HtmlNavbarItemSchema = Joi.object({ }); const itemWithType = (type: string | undefined) => { - // because equal(undefined) is not supported :/ + // Because equal(undefined) is not supported :/ const typeSchema = type ? Joi.string().required().equal(type) : Joi.string().forbidden(); @@ -241,7 +241,6 @@ const ColorModeSchema = Joi.object({ }), }).default(DEFAULT_COLOR_MODE_CONFIG); -// schema can probably be improved const HtmlMetadataSchema = Joi.object({ id: Joi.string(), name: Joi.string(), diff --git a/packages/docusaurus-theme-common/src/components/Collapsible/index.tsx b/packages/docusaurus-theme-common/src/components/Collapsible/index.tsx index 9185ac91c16f..48ff620fbab7 100644 --- a/packages/docusaurus-theme-common/src/components/Collapsible/index.tsx +++ b/packages/docusaurus-theme-common/src/components/Collapsible/index.tsx @@ -224,6 +224,8 @@ function CollapsibleBase({ function CollapsibleLazy({collapsed, ...props}: CollapsibleBaseProps) { const [mounted, setMounted] = useState(!collapsed); + // Updated in effect so that first expansion transition can work + const [lazyCollapsed, setLazyCollapsed] = useState(collapsed); useLayoutEffect(() => { if (!collapsed) { @@ -231,8 +233,6 @@ function CollapsibleLazy({collapsed, ...props}: CollapsibleBaseProps) { } }, [collapsed]); - // lazyCollapsed updated in effect so that first expansion transition can work - const [lazyCollapsed, setLazyCollapsed] = useState(collapsed); useLayoutEffect(() => { if (mounted) { setLazyCollapsed(collapsed); diff --git a/packages/docusaurus-theme-common/src/components/Details/index.tsx b/packages/docusaurus-theme-common/src/components/Details/index.tsx index ccf7e10b7fb4..1f330edec9a7 100644 --- a/packages/docusaurus-theme-common/src/components/Details/index.tsx +++ b/packages/docusaurus-theme-common/src/components/Details/index.tsx @@ -87,7 +87,8 @@ export function Details({ setOpen(true); } else { setCollapsed(true); - // setOpen(false); // Don't do this, it breaks close animation! + // Don't do this, it breaks close animation! + // setOpen(false); } }}> {summary} diff --git a/packages/docusaurus-theme-common/src/contexts/announcementBar.tsx b/packages/docusaurus-theme-common/src/contexts/announcementBar.tsx index f244be2bee2e..1adf70b3f279 100644 --- a/packages/docusaurus-theme-common/src/contexts/announcementBar.tsx +++ b/packages/docusaurus-theme-common/src/contexts/announcementBar.tsx @@ -72,7 +72,7 @@ function useContextValue(): ContextValue { let viewedId = IdStorage.get(); - // retrocompatibility due to spelling mistake of default id + // Retrocompatibility due to spelling mistake of default id // see https://github.com/facebook/docusaurus/issues/3338 // cSpell:ignore annoucement if (viewedId === 'annoucement-bar') { diff --git a/packages/docusaurus-theme-common/src/contexts/navbarMobileSidebar.tsx b/packages/docusaurus-theme-common/src/contexts/navbarMobileSidebar.tsx index c798605edb6c..d6e717564986 100644 --- a/packages/docusaurus-theme-common/src/contexts/navbarMobileSidebar.tsx +++ b/packages/docusaurus-theme-common/src/contexts/navbarMobileSidebar.tsx @@ -58,9 +58,9 @@ function useContextValue(): ContextValue { useHistoryPopHandler(() => { if (shown) { setShown(false); - // Should we prevent the navigation here? + // Prevent pop navigation; seems desirable enough // See https://github.com/facebook/docusaurus/pull/5462#issuecomment-911699846 - return false; // prevent pop navigation + return false; } return undefined; }); diff --git a/packages/docusaurus-theme-common/src/hooks/useTOCHighlight.ts b/packages/docusaurus-theme-common/src/hooks/useTOCHighlight.ts index afd6a12b173f..fca0174fe644 100644 --- a/packages/docusaurus-theme-common/src/hooks/useTOCHighlight.ts +++ b/packages/docusaurus-theme-common/src/hooks/useTOCHighlight.ts @@ -81,8 +81,8 @@ function getActiveAnchor( // https://github.com/facebook/docusaurus/issues/5318 return anchors[anchors.indexOf(nextVisibleAnchor) - 1] ?? null; } - // no anchor under viewport top? (ie we are at the bottom of the page) - // => highlight the last anchor found + // No anchor under viewport top (i.e. we are at the bottom of the page), + // highlight the last anchor found return anchors[anchors.length - 1] ?? null; } @@ -140,7 +140,7 @@ export function useTOCHighlight(config: TOCHighlightConfig | undefined): void { useEffect(() => { if (!config) { - // no-op, highlighting is disabled + // No-op, highlighting is disabled return () => {}; } diff --git a/packages/docusaurus-theme-common/src/utils/codeBlockUtils.ts b/packages/docusaurus-theme-common/src/utils/codeBlockUtils.ts index 8dd5108d93f1..f542f1386555 100644 --- a/packages/docusaurus-theme-common/src/utils/codeBlockUtils.ts +++ b/packages/docusaurus-theme-common/src/utils/codeBlockUtils.ts @@ -30,14 +30,14 @@ const magicCommentDirectives = [ ]; function getCommentPattern(languages: CommentType[]) { - // to be more reliable, the opening and closing comment must match + // To be more reliable, the opening and closing comment must match const commentPattern = languages .map((lang) => { const {start, end} = commentPatterns[lang]; return `(?:${start}\\s*(${magicCommentDirectives.join('|')})\\s*${end})`; }) .join('|'); - // white space is allowed, but otherwise it should be on it's own line + // White space is allowed, but otherwise it should be on it's own line return new RegExp(`^\\s*(?:${commentPattern})\\s*$`); } @@ -70,7 +70,7 @@ function getAllMagicCommentDirectiveStyles(lang: string) { return getCommentPattern(['html', 'jsx', 'bash']); default: - // all comment types + // All comment types return getCommentPattern(Object.keys(commentPatterns) as CommentType[]); } } @@ -139,16 +139,15 @@ export function parseLines( return {highlightLines: [], code}; } const directiveRegex = getAllMagicCommentDirectiveStyles(language); - // go through line by line + // Go through line by line const lines = code.split('\n'); let highlightBlockStart: number; let highlightRange = ''; - // loop through lines for (let lineNumber = 0; lineNumber < lines.length; ) { const line = lines[lineNumber]!; const match = line.match(directiveRegex); if (!match) { - // lines without directives are unchanged + // Lines without directives are unchanged lineNumber += 1; continue; } diff --git a/packages/docusaurus-theme-common/src/utils/docsUtils.tsx b/packages/docusaurus-theme-common/src/utils/docsUtils.tsx index c3d169c3e836..8ee82d5eb2e4 100644 --- a/packages/docusaurus-theme-common/src/utils/docsUtils.tsx +++ b/packages/docusaurus-theme-common/src/utils/docsUtils.tsx @@ -92,13 +92,8 @@ export function findFirstCategoryLink( if (categoryLink) { return categoryLink; } - } else if (subItem.type === 'html') { - // skip - } else { - throw new Error( - `Unexpected category item type for ${JSON.stringify(subItem)}`, - ); } + // Could be "html" items } return undefined; } @@ -271,7 +266,7 @@ export function useLayoutDoc( const isDraft = versions .flatMap((version) => version.draftIds) .includes(docId); - // drafts should be silently filtered instead of throwing + // Drafts should be silently filtered instead of throwing if (isDraft) { return null; } diff --git a/packages/docusaurus-theme-common/src/utils/tocUtils.ts b/packages/docusaurus-theme-common/src/utils/tocUtils.ts index 2b83f1a2f920..0d1ee35df1f9 100644 --- a/packages/docusaurus-theme-common/src/utils/tocUtils.ts +++ b/packages/docusaurus-theme-common/src/utils/tocUtils.ts @@ -30,11 +30,11 @@ function treeifyTOC(flatTOC: readonly TOCItem[]): TOCTreeNode[] { const prevIndexForLevel = Array(7).fill(-1); headings.forEach((curr, currIndex) => { - // take the last seen index for each ancestor level. the highest - // index will be the direct ancestor of the current heading. + // Take the last seen index for each ancestor level. the highest index will + // be the direct ancestor of the current heading. const ancestorLevelIndexes = prevIndexForLevel.slice(2, curr.level); curr.parentIndex = Math.max(...ancestorLevelIndexes); - // mark that curr.level was last seen at the current index + // Mark that curr.level was last seen at the current index. prevIndexForLevel[curr.level] = currIndex; }); diff --git a/packages/docusaurus-theme-search-algolia/src/client/useAlgoliaContextualFacetFilters.ts b/packages/docusaurus-theme-search-algolia/src/client/useAlgoliaContextualFacetFilters.ts index 343f613145c1..212c03b4321b 100644 --- a/packages/docusaurus-theme-search-algolia/src/client/useAlgoliaContextualFacetFilters.ts +++ b/packages/docusaurus-theme-search-algolia/src/client/useAlgoliaContextualFacetFilters.ts @@ -11,7 +11,7 @@ import {useContextualSearchFilters} from '@docusaurus/theme-common'; export function useAlgoliaContextualFacetFilters(): [string, string[]] { const {locale, tags} = useContextualSearchFilters(); - // seems safe to convert locale->language, see AlgoliaSearchMetadata comment + // Seems safe to convert locale->language, see AlgoliaSearchMetadata comment const languageFilter = `language:${locale}`; const tagsFilter = tags.map((tag) => `docusaurus_tag:${tag}`); diff --git a/packages/docusaurus-theme-search-algolia/src/theme/SearchBar/index.tsx b/packages/docusaurus-theme-search-algolia/src/theme/SearchBar/index.tsx index 864bac42add3..6217dbf50b41 100644 --- a/packages/docusaurus-theme-search-algolia/src/theme/SearchBar/index.tsx +++ b/packages/docusaurus-theme-search-algolia/src/theme/SearchBar/index.tsx @@ -99,7 +99,7 @@ function DocSearch({ : // ... or use config facetFilters configFacetFilters; - // we let user override default searchParameters if he wants to + // We let user override default searchParameters if she wants to const searchParameters: DocSearchProps['searchParameters'] = { ...props.searchParameters, facetFilters, diff --git a/packages/docusaurus-theme-search-algolia/src/validateThemeConfig.ts b/packages/docusaurus-theme-search-algolia/src/validateThemeConfig.ts index 95ff9e9f7cb4..68bd60d163a1 100644 --- a/packages/docusaurus-theme-search-algolia/src/validateThemeConfig.ts +++ b/packages/docusaurus-theme-search-algolia/src/validateThemeConfig.ts @@ -12,7 +12,7 @@ import type { } from '@docusaurus/types'; export const DEFAULT_CONFIG = { - // enabled by default, as it makes sense in most cases + // Enabled by default, as it makes sense in most cases // see also https://github.com/facebook/docusaurus/issues/5880 contextualSearch: true, diff --git a/packages/docusaurus-theme-translations/src/index.ts b/packages/docusaurus-theme-translations/src/index.ts index 068e5be46418..f6b7e7303e19 100644 --- a/packages/docusaurus-theme-translations/src/index.ts +++ b/packages/docusaurus-theme-translations/src/index.ts @@ -16,18 +16,19 @@ function getDefaultLocalesDirPath(): string { // Return an ordered list of locales we should try export function codeTranslationLocalesToTry(locale: string): string[] { const intlLocale = new Intl.Locale(locale); - // if locale is just a simple language like "pt", we want to fallback to pt-BR - // (not pt-PT!) See https://github.com/facebook/docusaurus/pull/4536#issuecomment-810088783 - const maximizedLocale = intlLocale.maximize(); // pt-Latn-BR + // If locale is just a simple language like "pt", we want to fallback to + // "pt-BR" (not "pt-PT"!) + // See https://github.com/facebook/docusaurus/pull/4536#issuecomment-810088783 + const maximizedLocale = intlLocale.maximize(); // "pt-Latn-BR" return [ // May be "zh", "zh-CN", "zh-Hans", "zh-cn", or anything: very likely to be // unresolved except for simply locales locale, - // zh-CN / pt-BR + // "zh-CN" / "pt-BR" `${maximizedLocale.language}-${maximizedLocale.region}`, - // zh-Hans / pt-Latn + // "zh-Hans" / "pt-Latn" `${maximizedLocale.language}-${maximizedLocale.script}`, - // zh / pt + // "zh" / "pt" maximizedLocale.language!, ]; } diff --git a/packages/docusaurus-types/src/index.d.ts b/packages/docusaurus-types/src/index.d.ts index 189c5ef3ebeb..a3663572b9e0 100644 --- a/packages/docusaurus-types/src/index.d.ts +++ b/packages/docusaurus-types/src/index.d.ts @@ -313,9 +313,9 @@ export type Plugin = { name: string; loadContent?: () => Promise | Content; contentLoaded?: (args: { - /** the content loaded by this plugin instance */ + /** The content loaded by this plugin instance */ content: Content; // - /** content loaded by ALL the plugins */ + /** Content loaded by ALL the plugins */ allContent: AllContent; actions: PluginContentLoadedActions; }) => Promise | void; diff --git a/packages/docusaurus-utils/src/__tests__/i18nUtils.test.ts b/packages/docusaurus-utils/src/__tests__/i18nUtils.test.ts index 6e66d7e4a056..c0a458d3a8ec 100644 --- a/packages/docusaurus-utils/src/__tests__/i18nUtils.test.ts +++ b/packages/docusaurus-utils/src/__tests__/i18nUtils.test.ts @@ -156,7 +156,6 @@ describe('localizePath', () => { currentLocale: 'en', localeConfigs: {}, }, - // options: {localizePath: true}, }), ).toBe('/baseUrl/'); }); @@ -172,7 +171,6 @@ describe('localizePath', () => { currentLocale: 'en', localeConfigs: {}, }, - // options: {localizePath: true}, }), ).toBe('/baseUrl/'); }); diff --git a/packages/docusaurus-utils/src/__tests__/markdownUtils.test.ts b/packages/docusaurus-utils/src/__tests__/markdownUtils.test.ts index 5d32b07f1702..09488bc4a6c0 100644 --- a/packages/docusaurus-utils/src/__tests__/markdownUtils.test.ts +++ b/packages/docusaurus-utils/src/__tests__/markdownUtils.test.ts @@ -38,7 +38,7 @@ describe('createExcerpt', () => { Nunc porttitor libero nec vulputate venenatis. Nam nec rhoncus mauris. Morbi tempus est et nibh maximus, tempus venenatis arcu lobortis. `), ).toBe( - // h1 title is skipped on purpose, because we don't want the page to have + // H1 title is skipped on purpose, because we don't want the page to have // SEO metadata title === description 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ex urna, molestie et sagittis ut, varius ac justo.', ); @@ -56,7 +56,7 @@ describe('createExcerpt', () => { Nunc porttitor libero nec vulputate venenatis. Nam nec rhoncus mauris. Morbi tempus est et nibh maximus, tempus venenatis arcu lobortis. `), ).toBe( - // h1 title is skipped on purpose, because we don't want the page to have + // H1 title is skipped on purpose, because we don't want the page to have // SEO metadata title === description 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ex urna, molestie et sagittis ut, varius ac justo.', ); @@ -377,7 +377,7 @@ Lorem Ipsum `; - // remove the useless line breaks? Does not matter too much + // Remove the useless line breaks? Does not matter too much expect(parseMarkdownContentTitle(markdown)).toEqual({ content: markdown, contentTitle: 'Markdown Title', diff --git a/packages/docusaurus-utils/src/gitUtils.ts b/packages/docusaurus-utils/src/gitUtils.ts index e2f155bb3e05..2c7d73768d82 100644 --- a/packages/docusaurus-utils/src/gitUtils.ts +++ b/packages/docusaurus-utils/src/gitUtils.ts @@ -112,7 +112,7 @@ export function getFileCommitDate( const result = shell.exec( `git log ${extraArgs} ${formatArg} -- "${path.basename(file)}"`, { - // cwd is important, see: https://github.com/facebook/docusaurus/pull/5048 + // Setting cwd is important, see: https://github.com/facebook/docusaurus/pull/5048 cwd: path.dirname(file), silent: true, }, diff --git a/packages/docusaurus-utils/src/i18nUtils.ts b/packages/docusaurus-utils/src/i18nUtils.ts index 950f3719a7b0..e7e29815beb2 100644 --- a/packages/docusaurus-utils/src/i18nUtils.ts +++ b/packages/docusaurus-utils/src/i18nUtils.ts @@ -61,7 +61,7 @@ export function getPluginI18nPath({ return path.join( siteDir, I18N_DIR_NAME, - // namespace first by locale: convenient to work in a single folder for a + // Namespace first by locale: convenient to work in a single folder for a // translator locale, // Make it convenient to use for single-instance diff --git a/packages/docusaurus-utils/src/pathUtils.ts b/packages/docusaurus-utils/src/pathUtils.ts index 30db78bd7bfb..a9fbb0bd98f7 100644 --- a/packages/docusaurus-utils/src/pathUtils.ts +++ b/packages/docusaurus-utils/src/pathUtils.ts @@ -21,8 +21,10 @@ const isWindows = () => process.platform === 'win32'; export const isNameTooLong = (str: string): boolean => // Not entirely correct: we can't assume FS from OS. But good enough? isMacOs() || isWindows() - ? str.length + SPACE_FOR_APPENDING > MAX_PATH_SEGMENT_CHARS // macOS (APFS) and Windows (NTFS) filename length limit (255 chars) - : Buffer.from(str).length + SPACE_FOR_APPENDING > MAX_PATH_SEGMENT_BYTES; // Other (255 bytes) + ? // Windows (NTFS) and macOS (APFS) filename length limit (255 chars) + str.length + SPACE_FOR_APPENDING > MAX_PATH_SEGMENT_CHARS + : // Other (255 bytes) + Buffer.from(str).length + SPACE_FOR_APPENDING > MAX_PATH_SEGMENT_BYTES; export function shortName(str: string): string { if (isMacOs() || isWindows()) { diff --git a/packages/docusaurus-utils/src/tags.ts b/packages/docusaurus-utils/src/tags.ts index e3eb2933e6f0..88408ef110a4 100644 --- a/packages/docusaurus-utils/src/tags.ts +++ b/packages/docusaurus-utils/src/tags.ts @@ -24,7 +24,7 @@ function normalizeFrontMatterTag( // TODO maybe make ensure the permalink is valid url path? function normalizeTagPermalink(permalink: string): string { - // note: we always apply tagsPath on purpose. For versioned docs, v1/doc.md + // Note: we always apply tagsPath on purpose. For versioned docs, v1/doc.md // and v2/doc.md tags with custom permalinks don't lead to the same created // page. tagsPath is different for each doc version return normalizeUrl([tagsPath, permalink]); diff --git a/packages/docusaurus-utils/src/urlUtils.ts b/packages/docusaurus-utils/src/urlUtils.ts index 1c6f6f5c8591..c6ad13d2d88e 100644 --- a/packages/docusaurus-utils/src/urlUtils.ts +++ b/packages/docusaurus-utils/src/urlUtils.ts @@ -158,7 +158,6 @@ export function isValidPathname(str: string): boolean { return false; } try { - // weird, but is there a better way? const parsedPathname = new URL(str, 'https://domain.com').pathname; return parsedPathname === str || parsedPathname === encodeURI(str); } catch { diff --git a/packages/docusaurus-utils/src/webpackUtils.ts b/packages/docusaurus-utils/src/webpackUtils.ts index 608e384d50d0..4116867c9dff 100644 --- a/packages/docusaurus-utils/src/webpackUtils.ts +++ b/packages/docusaurus-utils/src/webpackUtils.ts @@ -37,11 +37,10 @@ type FileLoaderUtils = { * Inspired by https://github.com/gatsbyjs/gatsby/blob/8e6e021014da310b9cc7d02e58c9b3efe938c665/packages/gatsby/src/utils/webpack-utils.ts#L447 */ export function getFileLoaderUtils(): FileLoaderUtils { - // files/images < urlLoaderLimit will be inlined as base64 strings directly in + // Files/images < urlLoaderLimit will be inlined as base64 strings directly in // the html const urlLoaderLimit = WEBPACK_URL_LOADER_LIMIT; - // defines the path/pattern of the assets handled by webpack const fileLoaderFileName = (folder: AssetFolder) => path.posix.join( OUTPUT_STATIC_ASSETS_DIR_NAME, diff --git a/packages/docusaurus/bin/beforeCli.mjs b/packages/docusaurus/bin/beforeCli.mjs index 53c5ee9e84d3..522867ec1b55 100644 --- a/packages/docusaurus/bin/beforeCli.mjs +++ b/packages/docusaurus/bin/beforeCli.mjs @@ -45,7 +45,6 @@ export default async function beforeCli() { // Check is in background so it's fine to use a small value like 1h // Use 0 for debugging updateCheckInterval: 1000 * 60 * 60, - // updateCheckInterval: 0 }); // Hacky way to ensure we check for updates on first run @@ -124,7 +123,7 @@ export default async function beforeCli() { console.log(docusaurusUpdateMessage); } - // notify user if node version needs to be updated + // Notify user if node version needs to be updated if (!semver.satisfies(process.version, requiredVersion)) { logger.error('Minimum Node.js version not met :('); logger.info`You are using Node.js number=${process.version}, Requirement: Node.js number=${requiredVersion}.`; diff --git a/packages/docusaurus/src/client/.eslintrc.js b/packages/docusaurus/src/client/.eslintrc.js index 5dce52424e15..cbef5af73663 100644 --- a/packages/docusaurus/src/client/.eslintrc.js +++ b/packages/docusaurus/src/client/.eslintrc.js @@ -11,12 +11,11 @@ module.exports = { 'error', { patterns: [ - // prevent importing lodash in client bundle - // prefer shipping vanilla JS + // Prevent importing lodash in client bundle for bundle size 'lodash', 'lodash.**', 'lodash/**', - // prevent importing server code in client bundle + // Prevent importing server code in client bundle '**/../babel/**', '**/../server/**', '**/../commands/**', diff --git a/packages/docusaurus/src/client/BaseUrlIssueBanner/index.tsx b/packages/docusaurus/src/client/BaseUrlIssueBanner/index.tsx index 3ddfaa5ed9d7..3b0621cfc029 100644 --- a/packages/docusaurus/src/client/BaseUrlIssueBanner/index.tsx +++ b/packages/docusaurus/src/client/BaseUrlIssueBanner/index.tsx @@ -41,7 +41,7 @@ function createInlineHtmlBanner(baseUrl: string) { `; } -// fn needs to work for older browsers! +// Needs to work for older browsers! function createInlineScript(baseUrl: string) { return ` window['${InsertBannerWindowAttribute}'] = true; @@ -119,7 +119,6 @@ export default function MaybeBaseUrlIssueBanner(): JSX.Element | null { siteConfig: {baseUrl, baseUrlIssueBanner}, } = useDocusaurusContext(); const {pathname} = useLocation(); - // returns true for the homepage during SSR const isHomePage = pathname === baseUrl; const enabled = baseUrlIssueBanner && isHomePage; return enabled ? : null; diff --git a/packages/docusaurus/src/client/LinksCollector.tsx b/packages/docusaurus/src/client/LinksCollector.tsx index 2df9a8618a2a..d0fb33b9ec03 100644 --- a/packages/docusaurus/src/client/LinksCollector.tsx +++ b/packages/docusaurus/src/client/LinksCollector.tsx @@ -28,8 +28,7 @@ export const createStatefulLinksCollector = (): StatefulLinksCollector => { 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. }, }); diff --git a/packages/docusaurus/src/client/exports/Link.tsx b/packages/docusaurus/src/client/exports/Link.tsx index 53da88a7913d..a6760e7fdfce 100644 --- a/packages/docusaurus/src/client/exports/Link.tsx +++ b/packages/docusaurus/src/client/exports/Link.tsx @@ -174,7 +174,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/useBaseUrl.ts b/packages/docusaurus/src/client/exports/useBaseUrl.ts index 5ae4640a150c..174ea539c1b7 100644 --- a/packages/docusaurus/src/client/exports/useBaseUrl.ts +++ b/packages/docusaurus/src/client/exports/useBaseUrl.ts @@ -15,17 +15,9 @@ function addBaseUrl( 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; } diff --git a/packages/docusaurus/src/client/routeContext.tsx b/packages/docusaurus/src/client/routeContext.tsx index 1b285859b841..2738eba7c502 100644 --- a/packages/docusaurus/src/client/routeContext.tsx +++ b/packages/docusaurus/src/client/routeContext.tsx @@ -32,7 +32,7 @@ function mergeContexts({ const data = {...parent.data, ...value?.data}; return { - // nested routes are not supposed to override plugin attribute + // Nested routes are not supposed to override plugin attribute plugin: parent.plugin, data, }; diff --git a/packages/docusaurus/src/commands/deploy.ts b/packages/docusaurus/src/commands/deploy.ts index 2de40addb16e..a632fe245be8 100644 --- a/packages/docusaurus/src/commands/deploy.ts +++ b/packages/docusaurus/src/commands/deploy.ts @@ -113,8 +113,9 @@ This behavior can have SEO impacts and create relative link issues. shell.exit(0); } - // github.io indicates organization repos that deploy via default branch. - // All others use gh-pages. Organization deploys looks like: + // github.io indicates organization repos that deploy via default branch. All + // others use gh-pages (either case can be configured actually, but we can + // make educated guesses). Organization deploys look like: // - Git repo: https://github.com//.github.io // - Site url: https://.github.io const isGitHubPagesOrganizationDeploy = projectName.includes('.github.io'); diff --git a/packages/docusaurus/src/commands/start.ts b/packages/docusaurus/src/commands/start.ts index 39da01713433..0b9b8f2e179f 100644 --- a/packages/docusaurus/src/commands/start.ts +++ b/packages/docusaurus/src/commands/start.ts @@ -41,7 +41,7 @@ export async function start( siteDir, customConfigFilePath: cliOptions.config, locale: cliOptions.locale, - localizePath: undefined, // should this be configurable? + localizePath: undefined, // Should this be configurable? }); } diff --git a/packages/docusaurus/src/commands/swizzle/__tests__/actions.test.ts b/packages/docusaurus/src/commands/swizzle/__tests__/actions.test.ts index 90ef17ba783e..159318f62395 100644 --- a/packages/docusaurus/src/commands/swizzle/__tests__/actions.test.ts +++ b/packages/docusaurus/src/commands/swizzle/__tests__/actions.test.ts @@ -13,7 +13,7 @@ import tree from 'tree-node-cli'; import {eject, wrap} from '../actions'; import {posixPath} from '@docusaurus/utils'; -// use relative paths and sort files for tests +// Use relative paths and sort files for tests function stableCreatedFiles( siteThemePath: string, createdFiles: string[], diff --git a/packages/docusaurus/src/commands/swizzle/actions.ts b/packages/docusaurus/src/commands/swizzle/actions.ts index 5e4592ff544f..8bff8fc92873 100644 --- a/packages/docusaurus/src/commands/swizzle/actions.ts +++ b/packages/docusaurus/src/commands/swizzle/actions.ts @@ -53,7 +53,7 @@ export async function eject({ const fromPath = path.join(themePath, componentName); const isDirectory = await isDir(fromPath); const globPattern = isDirectory - ? // do we really want to copy all components? + ? // Do we really want to copy all components? path.join(fromPath, '*') : `${fromPath}.*`; diff --git a/packages/docusaurus/src/server/__tests__/brokenLinks.test.ts b/packages/docusaurus/src/server/__tests__/brokenLinks.test.ts index d1e29b619faf..1226142f972a 100644 --- a/packages/docusaurus/src/server/__tests__/brokenLinks.test.ts +++ b/packages/docusaurus/src/server/__tests__/brokenLinks.test.ts @@ -51,13 +51,13 @@ describe('handleBrokenLinks', () => { const linkToEmptyFolder2 = '/emptyFolder/'; const allCollectedLinks = { '/docs/good doc with space': [ - // good - valid file with spaces in name + // Good - valid file with spaces in name './another%20good%20doc%20with%20space', - // good - valid file with percent-20 in its name + // Good - valid file with percent-20 in its name './weird%20but%20good', - // bad - non-existent file with spaces in name + // Bad - non-existent file with spaces in name './some%20other%20non-existent%20doc1', - // evil - trying to use ../../ but '/' won't get decoded + // Evil - trying to use ../../ but '/' won't get decoded // cSpell:ignore Fout './break%2F..%2F..%2Fout2', ], @@ -91,11 +91,11 @@ describe('handleBrokenLinks', () => { linkToHtmlFile2, linkToJavadoc3, linkToJavadoc4, - linkToEmptyFolder1, // not filtered! + linkToEmptyFolder1, // Not filtered! ], '/page2': [ link2, - linkToEmptyFolder2, // not filtered! + linkToEmptyFolder2, // Not filtered! linkToJavadoc2, link3, linkToJavadoc3, diff --git a/packages/docusaurus/src/server/__tests__/configValidation.test.ts b/packages/docusaurus/src/server/__tests__/configValidation.test.ts index 3a564f9ce3f3..008f71c71588 100644 --- a/packages/docusaurus/src/server/__tests__/configValidation.test.ts +++ b/packages/docusaurus/src/server/__tests__/configValidation.test.ts @@ -287,15 +287,14 @@ describe('normalizeConfig', () => { }); it('throws error for required fields', () => { - expect( - () => - validateConfig({ - invalidField: true, - presets: {}, - stylesheets: {}, - themes: {}, - scripts: {}, - } as unknown as DocusaurusConfig), // to fields not in the type + expect(() => + validateConfig({ + invalidField: true, + presets: {}, + stylesheets: {}, + themes: {}, + scripts: {}, + }), ).toThrowErrorMatchingSnapshot(); }); }); diff --git a/packages/docusaurus/src/server/brokenLinks.ts b/packages/docusaurus/src/server/brokenLinks.ts index c8806fa842af..4ce32b2deaf5 100644 --- a/packages/docusaurus/src/server/brokenLinks.ts +++ b/packages/docusaurus/src/server/brokenLinks.ts @@ -84,7 +84,6 @@ function getAllBrokenLinks({ getPageBrokenLinks({pageLinks, pagePath, routes: filteredRoutes}), ); - // remove pages without any broken link return _.pickBy(allBrokenLinks, (brokenLinks) => brokenLinks.length > 0); } diff --git a/packages/docusaurus/src/server/choosePort.ts b/packages/docusaurus/src/server/choosePort.ts index 11f06ea0c9e2..53a5b5c3cf84 100644 --- a/packages/docusaurus/src/server/choosePort.ts +++ b/packages/docusaurus/src/server/choosePort.ts @@ -5,58 +5,38 @@ * LICENSE file in the root directory of this source tree. */ -import {execSync} from 'child_process'; +import {execSync, type ExecSyncOptionsWithStringEncoding} from 'child_process'; import detect from 'detect-port'; import logger from '@docusaurus/logger'; import prompts from 'prompts'; -const execOptions = { - encoding: 'utf8' as const, - stdio: [ - 'pipe' as const, // stdin (default) - 'pipe' as const, // stdout (default) - 'ignore' as const, // stderr - ], +const execOptions: ExecSyncOptionsWithStringEncoding = { + encoding: 'utf8', + stdio: [/* stdin */ 'pipe', /* stdout */ 'pipe', /* stderr */ 'ignore'], }; -// Clears console function clearConsole(): void { process.stdout.write( process.platform === 'win32' ? '\x1B[2J\x1B[0f' : '\x1B[2J\x1B[3J\x1B[H', ); } -// Gets process id of what is on port -function getProcessIdOnPort(port: number): string { - return execSync(`lsof -i:${port} -P -t -sTCP:LISTEN`, execOptions) - .split('\n')[0]! - .trim(); -} - -// Gets process command -function getProcessCommand(processId: string): string { - const command = execSync( - `ps -o command -p ${processId} | sed -n 2p`, - execOptions, - ); - - return command.replace(/\n$/, ''); -} - -// Gets directory of a process from its process id -function getDirectoryOfProcessById(processId: string): string { - return execSync( - `lsof -p ${processId} | awk '$4=="cwd" {for (i=9; i<=NF; i++) printf "%s ", $i}'`, - execOptions, - ).trim(); -} - -// Gets process on port function getProcessForPort(port: number): string | null { try { - const processId = getProcessIdOnPort(port); - const directory = getDirectoryOfProcessById(processId); - const command = getProcessCommand(processId); + const processId = execSync( + `lsof -i:${port} -P -t -sTCP:LISTEN`, + execOptions, + ) + .split('\n')[0]! + .trim(); + const directory = execSync( + `lsof -p ${processId} | awk '$4=="cwd" {for (i=9; i<=NF; i++) printf "%s ", $i}'`, + execOptions, + ).trim(); + const command = execSync( + `ps -o command -p ${processId} | sed -n 2p`, + execOptions, + ).replace(/\n$/, ''); return logger.interpolate`code=${command} subdue=${`(pid ${processId})`} in path=${directory}`; } catch { return null; diff --git a/packages/docusaurus/src/server/index.ts b/packages/docusaurus/src/server/index.ts index e971d1326313..0ada575f811f 100644 --- a/packages/docusaurus/src/server/index.ts +++ b/packages/docusaurus/src/server/index.ts @@ -166,8 +166,8 @@ export default ${JSON.stringify(siteConfig, null, 2)}; 'client-modules.js', `export default [ ${clientModules - // import() is async so we use require() because client modules can have - // CSS and the order matters for loading CSS. + // Use `require()` because `import()` is async but client modules can have CSS + // and the order matters for loading CSS. .map((clientModule) => ` require('${escapePath(clientModule)}'),`) .join('\n')} ]; diff --git a/packages/docusaurus/src/server/plugins/index.ts b/packages/docusaurus/src/server/plugins/index.ts index c87c99dc9ef0..82c3a53c89fe 100644 --- a/packages/docusaurus/src/server/plugins/index.ts +++ b/packages/docusaurus/src/server/plugins/index.ts @@ -98,7 +98,7 @@ export async function loadPlugins(context: LoadContext): Promise<{ return; } const pluginId = plugin.options.id; - // plugins data files are namespaced by pluginName/pluginId + // Plugins data files are namespaced by pluginName/pluginId const dataDir = path.join( context.generatedFilesDir, plugin.name, diff --git a/packages/docusaurus/src/server/plugins/init.ts b/packages/docusaurus/src/server/plugins/init.ts index 14c01f2ace20..46a010324c2f 100644 --- a/packages/docusaurus/src/server/plugins/init.ts +++ b/packages/docusaurus/src/server/plugins/init.ts @@ -28,7 +28,7 @@ function getOptionValidationFunction( normalizedPluginConfig: NormalizedPluginConfig, ): PluginModule['validateOptions'] { if (normalizedPluginConfig.pluginModule) { - // support both commonjs and ES modules + // Support both CommonJS and ES modules return ( normalizedPluginConfig.pluginModule.module?.default?.validateOptions ?? normalizedPluginConfig.pluginModule.module?.validateOptions @@ -41,7 +41,7 @@ function getThemeValidationFunction( normalizedPluginConfig: NormalizedPluginConfig, ): PluginModule['validateThemeConfig'] { if (normalizedPluginConfig.pluginModule) { - // support both commonjs and ES modules + // Support both CommonJS and ES modules return ( normalizedPluginConfig.pluginModule.module.default?.validateThemeConfig ?? normalizedPluginConfig.pluginModule.module.validateThemeConfig @@ -65,7 +65,6 @@ export async function initPlugins( async function doGetPluginVersion( normalizedPluginConfig: NormalizedPluginConfig, ): Promise { - // get plugin version if (normalizedPluginConfig.pluginModule?.path) { const pluginPath = pluginRequire.resolve( normalizedPluginConfig.pluginModule?.path, diff --git a/packages/docusaurus/src/server/translations/translations.ts b/packages/docusaurus/src/server/translations/translations.ts index 160e9a6bd06b..3e768b8a9041 100644 --- a/packages/docusaurus/src/server/translations/translations.ts +++ b/packages/docusaurus/src/server/translations/translations.ts @@ -94,7 +94,7 @@ function mergeTranslationFileContent({ message: options.override ? message : existingContent[key]?.message ?? message, - description, // description + description, }; }, ); @@ -143,7 +143,7 @@ Maybe you should remove them? ${unknownKeys}`; } } -// should we make this configurable? +// Should we make this configurable? export function getTranslationsLocaleDirPath( context: TranslationContext, ): string { @@ -248,7 +248,7 @@ export async function localizePluginTranslationFile({ const localizedContent = await readTranslationFileContent(filePath); if (localizedContent) { - // localized messages "override" default unlocalized messages + // Localized messages "override" default unlocalized messages return { path: translationFile.path, content: { diff --git a/packages/docusaurus/src/webpack/__tests__/utils.test.ts b/packages/docusaurus/src/webpack/__tests__/utils.test.ts index afcc1477f782..410824ec6584 100644 --- a/packages/docusaurus/src/webpack/__tests__/utils.test.ts +++ b/packages/docusaurus/src/webpack/__tests__/utils.test.ts @@ -52,7 +52,7 @@ describe('customize JS loader', () => { describe('extending generated webpack config', () => { it('direct mutation on generated webpack config object', async () => { - // fake generated webpack config + // Fake generated webpack config let config: Configuration = { output: { path: __dirname, diff --git a/packages/docusaurus/src/webpack/base.ts b/packages/docusaurus/src/webpack/base.ts index 2c59b7d6a873..45a81c1031a4 100644 --- a/packages/docusaurus/src/webpack/base.ts +++ b/packages/docusaurus/src/webpack/base.ts @@ -24,7 +24,7 @@ const CSS_MODULE_REGEX = /\.module\.css$/i; export const clientDir = path.join(__dirname, '..', 'client'); const LibrariesToTranspile = [ - 'copy-text-to-clipboard', // contains optional catch binding, incompatible with recent versions of Edge + 'copy-text-to-clipboard', // Contains optional catch binding, incompatible with recent versions of Edge ]; const LibrariesToTranspileRegex = new RegExp( @@ -32,7 +32,7 @@ const LibrariesToTranspileRegex = new RegExp( ); export function excludeJS(modulePath: string): boolean { - // always transpile client dir + // Always transpile client dir if (modulePath.startsWith(clientDir)) { return false; } @@ -118,9 +118,9 @@ export async function createBaseConfig( }, devtool: isProd ? undefined : 'eval-cheap-module-source-map', resolve: { - unsafeCache: false, // not enabled, does not seem to improve perf much + unsafeCache: false, // Not enabled, does not seem to improve perf much extensions: ['.wasm', '.mjs', '.js', '.jsx', '.ts', '.tsx', '.json'], - symlinks: true, // see https://github.com/facebook/docusaurus/issues/3272 + symlinks: true, // See https://github.com/facebook/docusaurus/issues/3272 roots: [ // Allow resolution of url("/fonts/xyz.ttf") by webpack // See https://webpack.js.org/configuration/resolve/#resolveroots @@ -167,7 +167,7 @@ export async function createBaseConfig( // include [name] in the filenames name: false, cacheGroups: { - // disable the built-in cacheGroups + // Disable the built-in cacheGroups default: false, common: { name: 'common', @@ -238,7 +238,7 @@ export async function createBaseConfig( chunkFilename: isProd ? 'assets/css/[name].[contenthash:8].css' : '[name].css', - // remove css order warnings if css imports are not sorted + // Remove css order warnings if css imports are not sorted // alphabetically. See https://github.com/webpack-contrib/mini-css-extract-plugin/pull/422 // for more reasoning ignoreOrder: true, diff --git a/packages/docusaurus/src/webpack/client.ts b/packages/docusaurus/src/webpack/client.ts index ffe0a704eb95..f7ca7de770b2 100644 --- a/packages/docusaurus/src/webpack/client.ts +++ b/packages/docusaurus/src/webpack/client.ts @@ -23,7 +23,7 @@ export default async function createClientConfig( const config = await createBaseConfig(props, false, minify); const clientConfig = merge(config, { - // useless, disabled on purpose (errors on existing sites with no + // Useless, disabled on purpose (errors on existing sites with no // browserslist config) // target: 'browserslist', entry: path.resolve(__dirname, '../client/clientEntry.js'), diff --git a/packages/docusaurus/src/webpack/utils.ts b/packages/docusaurus/src/webpack/utils.ts index 85345c201b0a..1e823c6943fb 100644 --- a/packages/docusaurus/src/webpack/utils.ts +++ b/packages/docusaurus/src/webpack/utils.ts @@ -204,7 +204,7 @@ export function applyConfigurePostCss( options: {postcssOptions: PostCssOptions}; }; - // not ideal heuristic but good enough for our use-case? + // Not ideal heuristic but good enough for our use-case? function isPostCssLoader(loader: unknown): loader is LocalPostCSSLoader { return !!(loader as LocalPostCSSLoader)?.options?.postcssOptions; } @@ -249,7 +249,7 @@ export function compile(config: Configuration[]): Promise { } reject(err); } - // let plugins consume all the stats + // Let plugins consume all the stats const errorsWarnings = stats?.toJson('errors-warnings'); if (stats?.hasErrors()) { reject(new Error('Failed to compile with errors.')); @@ -363,7 +363,7 @@ export function getMinimizer( parallel: getTerserParallel(), terserOptions: { parse: { - // we want uglify-js to parse ecma 8 code. However, we don't want it + // We want uglify-js to parse ecma 8 code. However, we don't want it // to apply any minification steps that turns valid ecma 5 code // into invalid ecma 5 code. This is why the 'compress' and 'output' // sections only apply transformations that are ecma 5 safe diff --git a/packages/lqip-loader/src/lqip.ts b/packages/lqip-loader/src/lqip.ts index f6ab095a1868..b6286872b44d 100644 --- a/packages/lqip-loader/src/lqip.ts +++ b/packages/lqip-loader/src/lqip.ts @@ -21,8 +21,8 @@ const SUPPORTED_MIMES: {[ext: string]: string} = { }; /** - * it returns a Base64 image string with required formatting - * to work on the web ( or in CSS url('..')) + * It returns a Base64 image string with required formatting to work on the web + * ( or in CSS url('..')) */ const toBase64 = (extMimeType: string, data: Buffer): string => `data:${extMimeType};base64,${data.toString('base64')}`; diff --git a/project-words.txt b/project-words.txt index 1c730dc2c574..5bd78cccc06e 100644 --- a/project-words.txt +++ b/project-words.txt @@ -21,6 +21,7 @@ backticks bartosz beforeinstallprompt bhatt +blocklist blockquotes browserslist browserstack diff --git a/website/_dogfooding/docs-tests-sidebars.js b/website/_dogfooding/docs-tests-sidebars.js index 0143596f80a1..6b8b8f9c4365 100644 --- a/website/_dogfooding/docs-tests-sidebars.js +++ b/website/_dogfooding/docs-tests-sidebars.js @@ -87,7 +87,7 @@ const sidebars = { collapsed: false, collapsible: false, items: [ - // title + // Title { type: 'html', value: 'Some Text', diff --git a/website/_dogfooding/dogfooding.config.js b/website/_dogfooding/dogfooding.config.js index 5d7cea7670ee..95c1d5161843 100644 --- a/website/_dogfooding/dogfooding.config.js +++ b/website/_dogfooding/dogfooding.config.js @@ -22,7 +22,7 @@ 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', @@ -52,7 +52,7 @@ const dogfoodingPluginInstances = [ ], [ - '@docusaurus/plugin-content-blog', // dogfood longhand + '@docusaurus/plugin-content-blog', // Longhand /** @type {import('@docusaurus/plugin-content-blog').Options} */ ({ id: 'blog-tests', @@ -75,7 +75,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/testSwizzleThemeClassic.mjs b/website/_dogfooding/testSwizzleThemeClassic.mjs index 61f1162b9848..b8b4a4cb1a76 100644 --- a/website/_dogfooding/testSwizzleThemeClassic.mjs +++ b/website/_dogfooding/testSwizzleThemeClassic.mjs @@ -68,16 +68,16 @@ 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; }); } diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js index 8e396e641b41..df57e09ac88c 100644 --- a/website/docusaurus.config.js +++ b/website/docusaurus.config.js @@ -170,8 +170,8 @@ const config = { ({ fromExtensions: ['html'], createRedirects(routePath) { - // redirect to /docs from /docs/introduction, - // as introduction has been made the home doc + // Redirect to /docs from /docs/introduction, as introduction has been + // made the home doc if (allDocHomesPaths.includes(routePath)) { return [`${routePath}/introduction`]; } @@ -195,13 +195,15 @@ const config = { ], [ 'ideal-image', - { + /** @type {import('@docusaurus/plugin-ideal-image').PluginOptions} */ + ({ quality: 70, - max: 1030, // max resized image's size. - min: 640, // min resized image's size. if original is lower, use that size. - steps: 2, // the max number of images generated between min and max (inclusive) - // disableInDev: false, - }, + max: 1030, + min: 640, + steps: 2, + // Use false to debug, but it incurs huge perf costs + disableInDev: true, + }), ], [ 'pwa', @@ -413,7 +415,7 @@ const config = { label: 'Tests', docsPluginId: 'docs-tests', }, - // right + // Right { type: 'docsVersionDropdown', position: 'right', diff --git a/website/testCSSOrder.mjs b/website/testCSSOrder.mjs index e177eef75d93..0b1aaa7129a7 100644 --- a/website/testCSSOrder.mjs +++ b/website/testCSSOrder.mjs @@ -47,7 +47,7 @@ const EXPECTED_CSS_MARKERS = [ '.test-marker-theme-layout', '.test-marker-site-index-page', - // lazy loaded lib + // Lazy-loaded lib '.DocSearch-Modal', ]; diff --git a/website/waitForCrowdin.mjs b/website/waitForCrowdin.mjs index 577abf38cc3a..d8e2823b5008 100644 --- a/website/waitForCrowdin.mjs +++ b/website/waitForCrowdin.mjs @@ -24,7 +24,7 @@ const pollInterval = 5000; const timeout = 5 * 60 * 1000; const projectId = 428890; -const token = process.env.CROWDIN_PERSONAL_TOKEN; // set on Netlify +const token = process.env.CROWDIN_PERSONAL_TOKEN; // Set on Netlify const translations = new Translations({token}); From 9df4874cffcaa3ed4c67276dc8582788e80a340b Mon Sep 17 00:00:00 2001 From: Joshua Chen Date: Sun, 17 Apr 2022 16:54:01 +0800 Subject: [PATCH 05/13] misc: add a name to each GH action step (#7189) --- .github/workflows/build-blog-only.yml | 6 ++++-- .github/workflows/build-perf.yml | 9 ++++++--- .github/workflows/canary-release.yml | 3 ++- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/dependency-review.yml | 7 ++++--- .github/workflows/lighthouse-report.yml | 3 ++- .github/workflows/lint.yml | 6 ++++-- .github/workflows/showcase-test.yml | 3 ++- .github/workflows/tests-e2e.yml | 12 ++++++++---- .github/workflows/tests-swizzle.yml | 7 ++++--- .github/workflows/tests-windows.yml | 3 ++- .github/workflows/tests.yml | 3 ++- 12 files changed, 41 insertions(+), 23 deletions(-) diff --git a/.github/workflows/build-blog-only.yml b/.github/workflows/build-blog-only.yml index 3e28728c85aa..5cfe15af0848 100644 --- a/.github/workflows/build-blog-only.yml +++ b/.github/workflows/build-blog-only.yml @@ -16,8 +16,10 @@ jobs: timeout-minutes: 30 runs-on: ubuntu-latest steps: - - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 - - uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 + - name: Checkout + uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 + - name: Set up Node + uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 with: node-version: '16' cache: yarn diff --git a/.github/workflows/build-perf.yml b/.github/workflows/build-perf.yml index a5838cd7b858..785b6cbd4b2b 100644 --- a/.github/workflows/build-perf.yml +++ b/.github/workflows/build-perf.yml @@ -26,12 +26,15 @@ jobs: timeout-minutes: 30 runs-on: ubuntu-latest steps: - - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 - - uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 + - name: Checkout + uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 + - name: Set up Node + uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 with: node-version: '16' cache: yarn - - uses: preactjs/compressed-size-action@8119d3d31b6e57b167e09c81dfa877eada3bcb35 # v2 + - name: Track build size changes + uses: preactjs/compressed-size-action@8119d3d31b6e57b167e09c81dfa877eada3bcb35 # v2 with: repo-token: ${{ secrets.GITHUB_TOKEN }} build-script: build:website:en diff --git a/.github/workflows/canary-release.yml b/.github/workflows/canary-release.yml index 9b6b8829ea22..cb35ef589b02 100644 --- a/.github/workflows/canary-release.yml +++ b/.github/workflows/canary-release.yml @@ -15,7 +15,8 @@ jobs: name: Publish Canary runs-on: ubuntu-latest steps: - - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 + - name: Checkout + uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 with: fetch-depth: 0 # Needed to get the commit number with "git rev-list --count HEAD" - name: Set up Node diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 0958cf4ebca1..f4de6eb44655 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -26,7 +26,7 @@ jobs: - javascript steps: - - name: Checkout repository + - name: Checkout uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 - name: Initialize CodeQL diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml index dcd2a1dfcc0a..8f1b96d08058 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -1,4 +1,4 @@ -name: 'Dependency Review' +name: Dependency Review on: [pull_request] permissions: @@ -8,6 +8,7 @@ jobs: dependency-review: runs-on: ubuntu-latest steps: - - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 #v3 - - name: 'Dependency Review' + - name: Checkout + uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 #v3 + - name: Dependency Review uses: actions/dependency-review-action@3f943b86c9a289f4e632c632695e2e0898d9d67d # v1 diff --git a/.github/workflows/lighthouse-report.yml b/.github/workflows/lighthouse-report.yml index c4c0eb830380..fdef85796630 100644 --- a/.github/workflows/lighthouse-report.yml +++ b/.github/workflows/lighthouse-report.yml @@ -10,7 +10,8 @@ jobs: name: Lighthouse Report runs-on: ubuntu-latest steps: - - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 + - name: Checkout + uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 - name: Wait for the Netlify Preview uses: jakepartusch/wait-for-netlify-action@7dcdeb40c6bc3710a8099702a1fa1ce2c5e322a6 # v1 id: netlify diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 1622d0f8e0ad..e2f19dce1710 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -14,8 +14,10 @@ jobs: timeout-minutes: 30 runs-on: ubuntu-latest steps: - - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 - - uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 + - name: Checkout + uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 + - name: Set up Node + uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 with: node-version: '16' cache: yarn diff --git a/.github/workflows/showcase-test.yml b/.github/workflows/showcase-test.yml index b019e67cbd01..0e91d37bf79e 100644 --- a/.github/workflows/showcase-test.yml +++ b/.github/workflows/showcase-test.yml @@ -16,7 +16,8 @@ jobs: timeout-minutes: 30 runs-on: ubuntu-latest steps: - - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 + - name: Checkout + uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 - name: Set up Node uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 with: diff --git a/.github/workflows/tests-e2e.yml b/.github/workflows/tests-e2e.yml index 8ba4f0500ca2..e9b07247a553 100644 --- a/.github/workflows/tests-e2e.yml +++ b/.github/workflows/tests-e2e.yml @@ -24,7 +24,8 @@ jobs: matrix: node: ['14', '16', '17'] steps: - - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 + - name: Checkout + uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 - name: Use Node.js ${{ matrix.node }} uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 with: @@ -62,7 +63,8 @@ jobs: - variant: -st nodeLinker: pnp steps: - - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 + - name: Checkout + uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 - name: Use Node.js 16 uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 with: @@ -107,7 +109,8 @@ jobs: timeout-minutes: 30 runs-on: ubuntu-latest steps: - - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 #v3 + - name: Checkout + uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 #v3 - name: Use Node.js 16 uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 with: @@ -136,7 +139,8 @@ jobs: timeout-minutes: 30 runs-on: ubuntu-latest steps: - - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 #v3 + - name: Checkout + uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 #v3 - name: Use Node.js 16 uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 with: diff --git a/.github/workflows/tests-swizzle.yml b/.github/workflows/tests-swizzle.yml index 058b927b7cae..2805e26121ac 100644 --- a/.github/workflows/tests-swizzle.yml +++ b/.github/workflows/tests-swizzle.yml @@ -20,11 +20,12 @@ jobs: action: ['eject', 'wrap'] variant: ['js', 'ts'] steps: - - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 - - name: Use Node.js + - name: Checkout + uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 + - name: Set up Node uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # 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 96a3969876e4..56f7922e5d12 100644 --- a/.github/workflows/tests-windows.yml +++ b/.github/workflows/tests-windows.yml @@ -21,7 +21,8 @@ jobs: steps: - name: Support longpaths run: git config --system core.longpaths true - - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 + - name: Checkout + uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 - name: Use Node.js ${{ matrix.node }} uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 with: diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index a8dbafc13bb5..d2764dc5e1f4 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -19,7 +19,8 @@ jobs: matrix: node: ['14', '16', '17'] steps: - - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 + - name: Checkout + uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 - name: Use Node.js ${{ matrix.node }} uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 with: From b154318c28572c1cb774d5728073ccead92c358d Mon Sep 17 00:00:00 2001 From: Joshua Chen Date: Sun, 17 Apr 2022 17:32:41 +0800 Subject: [PATCH 06/13] chore: upgrade dependencies (#7193) --- admin/new.docusaurus.io/package.json | 2 +- package.json | 20 +- packages/create-docusaurus/package.json | 4 +- .../templates/facebook/package.json | 2 +- packages/docusaurus-mdx-loader/package.json | 4 +- packages/docusaurus-migrate/package.json | 6 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- packages/docusaurus-plugin-debug/package.json | 2 +- .../package.json | 2 +- packages/docusaurus-plugin-pwa/package.json | 10 +- .../docusaurus-plugin-sitemap/package.json | 2 +- .../docusaurus-theme-classic/package.json | 4 +- packages/docusaurus-theme-common/package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- packages/docusaurus-types/package.json | 2 +- packages/docusaurus-utils/package.json | 4 +- packages/docusaurus/package.json | 14 +- .../docusaurus/src/client/clientEntry.tsx | 1 - .../docusaurus/src/client/serverEntry.tsx | 1 - packages/lqip-loader/package.json | 2 +- packages/stylelint-copyright/package.json | 2 +- website/package.json | 12 +- yarn.lock | 993 +++++++++--------- 28 files changed, 558 insertions(+), 547 deletions(-) diff --git a/admin/new.docusaurus.io/package.json b/admin/new.docusaurus.io/package.json index 296c5f981db3..eebe7ceebd64 100644 --- a/admin/new.docusaurus.io/package.json +++ b/admin/new.docusaurus.io/package.json @@ -9,6 +9,6 @@ "@netlify/functions": "^1.0.0" }, "devDependencies": { - "netlify-cli": "^9.16.4" + "netlify-cli": "^9.16.6" } } diff --git a/package.json b/package.json index dfe748669349..bfdd2febe924 100644 --- a/package.json +++ b/package.json @@ -61,24 +61,24 @@ }, "devDependencies": { "@crowdin/cli": "^3.7.8", - "@swc/core": "^1.2.164", + "@swc/core": "^1.2.167", "@swc/jest": "^0.2.20", - "@testing-library/react-hooks": "^7.0.2", + "@testing-library/react-hooks": "^8.0.0", "@types/fs-extra": "^9.0.13", "@types/jest": "^27.4.1", "@types/lodash": "^4.14.181", - "@types/node": "^17.0.23", + "@types/node": "^17.0.24", "@types/prompts": "^2.0.14", - "@types/react": "^18.0.0", + "@types/react": "^18.0.5", "@types/react-dev-utils": "^9.0.10", - "@types/react-test-renderer": "^17.0.1", + "@types/react-test-renderer": "^18.0.0", "@types/semver": "^7.3.9", "@types/shelljs": "^0.8.11", - "@typescript-eslint/eslint-plugin": "^5.18.0", - "@typescript-eslint/parser": "^5.18.0", + "@typescript-eslint/eslint-plugin": "^5.19.0", + "@typescript-eslint/parser": "^5.19.0", "concurrently": "^7.1.0", "cross-env": "^7.0.3", - "cspell": "^5.19.6", + "cspell": "^5.19.7", "eslint": "^8.13.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-prettier": "^8.5.0", @@ -95,8 +95,8 @@ "jest-serializer-react-helmet-async": "^1.0.21", "lerna": "^4.0.0", "lerna-changelog": "^2.2.0", - "lint-staged": "^12.3.7", - "netlify-cli": "^9.16.4", + "lint-staged": "^12.3.8", + "netlify-cli": "^9.16.6", "nodemon": "^2.0.15", "prettier": "^2.6.2", "react": "^17.0.2", diff --git a/packages/create-docusaurus/package.json b/packages/create-docusaurus/package.json index e38f4f51cdec..7773671b8cd5 100755 --- a/packages/create-docusaurus/package.json +++ b/packages/create-docusaurus/package.json @@ -24,10 +24,10 @@ "dependencies": { "@docusaurus/logger": "2.0.0-beta.18", "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.6", + "semver": "^7.3.7", "shelljs": "^0.8.5", "supports-color": "^9.2.2", "tslib": "^2.3.1" diff --git a/packages/create-docusaurus/templates/facebook/package.json b/packages/create-docusaurus/templates/facebook/package.json index 73ccac8dda3e..1263e547c870 100644 --- a/packages/create-docusaurus/templates/facebook/package.json +++ b/packages/create-docusaurus/templates/facebook/package.json @@ -36,7 +36,7 @@ "eslint-plugin-react": "^7.29.4", "eslint-plugin-react-hooks": "^4.4.0", "prettier": "^2.6.2", - "stylelint": "^14.6.1" + "stylelint": "^14.7.0" }, "browserslist": { "production": [ diff --git a/packages/docusaurus-mdx-loader/package.json b/packages/docusaurus-mdx-loader/package.json index f4d0e25a4af8..9e54ef6633d1 100644 --- a/packages/docusaurus-mdx-loader/package.json +++ b/packages/docusaurus-mdx-loader/package.json @@ -25,7 +25,7 @@ "@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.2.0", @@ -37,7 +37,7 @@ }, "devDependencies": { "@docusaurus/types": "2.0.0-beta.18", - "@types/escape-html": "^1.0.1", + "@types/escape-html": "^1.0.2", "@types/mdast": "^3.0.10", "@types/stringify-object": "^3.3.1", "@types/unist": "^2.0.6", diff --git a/packages/docusaurus-migrate/package.json b/packages/docusaurus-migrate/package.json index 6cda40d3bcd6..8a54c2aa68d3 100644 --- a/packages/docusaurus-migrate/package.json +++ b/packages/docusaurus-migrate/package.json @@ -28,7 +28,7 @@ "@mapbox/hast-util-to-jsx": "^2.0.0", "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.2.0", "import-fresh": "^3.3.0", @@ -36,13 +36,13 @@ "rehype-parse": "^7.0.1", "remark-parse": "^8.0.2", "remark-stringify": "^8.1.0", - "semver": "^7.3.6", + "semver": "^7.3.7", "tslib": "^2.3.1", "unified": "^9.2.2", "unist-util-visit": "^2.0.3" }, "devDependencies": { "@types/color": "^3.0.3", - "@types/jscodeshift": "^0.11.3" + "@types/jscodeshift": "^0.11.4" } } diff --git a/packages/docusaurus-plugin-client-redirects/package.json b/packages/docusaurus-plugin-client-redirects/package.json index 3bee353ebe93..32ec18590e1e 100644 --- a/packages/docusaurus-plugin-client-redirects/package.json +++ b/packages/docusaurus-plugin-client-redirects/package.json @@ -24,7 +24,7 @@ "@docusaurus/utils-common": "2.0.0-beta.18", "@docusaurus/utils-validation": "2.0.0-beta.18", "eta": "^1.12.3", - "fs-extra": "^10.0.1", + "fs-extra": "^10.1.0", "lodash": "^4.17.21", "tslib": "^2.3.1" }, diff --git a/packages/docusaurus-plugin-content-blog/package.json b/packages/docusaurus-plugin-content-blog/package.json index ae003bb574b8..8ab159fa48fa 100644 --- a/packages/docusaurus-plugin-content-blog/package.json +++ b/packages/docusaurus-plugin-content-blog/package.json @@ -26,7 +26,7 @@ "@docusaurus/utils-validation": "2.0.0-beta.18", "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", diff --git a/packages/docusaurus-plugin-content-docs/package.json b/packages/docusaurus-plugin-content-docs/package.json index 2d75a9561f43..b36a12eff49c 100644 --- a/packages/docusaurus-plugin-content-docs/package.json +++ b/packages/docusaurus-plugin-content-docs/package.json @@ -30,7 +30,7 @@ "@docusaurus/utils": "2.0.0-beta.18", "@docusaurus/utils-validation": "2.0.0-beta.18", "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", diff --git a/packages/docusaurus-plugin-content-pages/package.json b/packages/docusaurus-plugin-content-pages/package.json index b19cd4bca9b8..1f00a1a007fd 100644 --- a/packages/docusaurus-plugin-content-pages/package.json +++ b/packages/docusaurus-plugin-content-pages/package.json @@ -22,7 +22,7 @@ "@docusaurus/mdx-loader": "2.0.0-beta.18", "@docusaurus/utils": "2.0.0-beta.18", "@docusaurus/utils-validation": "2.0.0-beta.18", - "fs-extra": "^10.0.1", + "fs-extra": "^10.1.0", "remark-admonitions": "^1.2.1", "tslib": "^2.3.1", "webpack": "^5.72.0" diff --git a/packages/docusaurus-plugin-debug/package.json b/packages/docusaurus-plugin-debug/package.json index 3a99d1b859a3..601a277439f6 100644 --- a/packages/docusaurus-plugin-debug/package.json +++ b/packages/docusaurus-plugin-debug/package.json @@ -20,7 +20,7 @@ "dependencies": { "@docusaurus/core": "2.0.0-beta.18", "@docusaurus/utils": "2.0.0-beta.18", - "fs-extra": "^10.0.1", + "fs-extra": "^10.1.0", "react-json-view": "^1.21.3", "tslib": "^2.3.1" }, diff --git a/packages/docusaurus-plugin-ideal-image/package.json b/packages/docusaurus-plugin-ideal-image/package.json index a532cee6ccf6..52cfbc752cb5 100644 --- a/packages/docusaurus-plugin-ideal-image/package.json +++ b/packages/docusaurus-plugin-ideal-image/package.json @@ -35,7 +35,7 @@ "devDependencies": { "@docusaurus/module-type-aliases": "2.0.0-beta.18", "@docusaurus/types": "2.0.0-beta.18", - "fs-extra": "^10.0.1" + "fs-extra": "^10.1.0" }, "peerDependencies": { "jimp": "*", diff --git a/packages/docusaurus-plugin-pwa/package.json b/packages/docusaurus-plugin-pwa/package.json index 678358193247..ccdb0630fa90 100644 --- a/packages/docusaurus-plugin-pwa/package.json +++ b/packages/docusaurus-plugin-pwa/package.json @@ -29,18 +29,18 @@ "@docusaurus/utils-validation": "2.0.0-beta.18", "babel-loader": "^8.2.4", "clsx": "^1.1.1", - "core-js": "^3.21.1", + "core-js": "^3.22.0", "terser-webpack-plugin": "^5.3.1", "tslib": "^2.3.1", "webpack": "^5.72.0", "webpack-merge": "^5.8.0", - "workbox-build": "^6.5.2", - "workbox-precaching": "^6.5.2", - "workbox-window": "^6.5.2" + "workbox-build": "^6.5.3", + "workbox-precaching": "^6.5.3", + "workbox-window": "^6.5.3" }, "devDependencies": { "@docusaurus/module-type-aliases": "2.0.0-beta.18", - "fs-extra": "^10.0.1" + "fs-extra": "^10.1.0" }, "peerDependencies": { "react": "^16.8.4 || ^17.0.0", diff --git a/packages/docusaurus-plugin-sitemap/package.json b/packages/docusaurus-plugin-sitemap/package.json index 9eb611ed0126..155fab17366a 100644 --- a/packages/docusaurus-plugin-sitemap/package.json +++ b/packages/docusaurus-plugin-sitemap/package.json @@ -22,7 +22,7 @@ "@docusaurus/utils": "2.0.0-beta.18", "@docusaurus/utils-common": "2.0.0-beta.18", "@docusaurus/utils-validation": "2.0.0-beta.18", - "fs-extra": "^10.0.1", + "fs-extra": "^10.1.0", "sitemap": "^7.1.1", "tslib": "^2.3.1" }, diff --git a/packages/docusaurus-theme-classic/package.json b/packages/docusaurus-theme-classic/package.json index b89e7965815b..d5215a7d6df0 100644 --- a/packages/docusaurus-theme-classic/package.json +++ b/packages/docusaurus-theme-classic/package.json @@ -49,9 +49,9 @@ "@docusaurus/types": "2.0.0-beta.18", "@types/mdx-js__react": "^1.5.5", "@types/prismjs": "^1.26.0", - "@types/rtlcss": "^3.1.3", + "@types/rtlcss": "^3.1.4", "cross-env": "^7.0.3", - "fs-extra": "^10.0.1", + "fs-extra": "^10.1.0", "react-test-renderer": "^17.0.2", "utility-types": "^3.10.0" }, diff --git a/packages/docusaurus-theme-common/package.json b/packages/docusaurus-theme-common/package.json index 23e0625a1e31..eee0fb55d112 100644 --- a/packages/docusaurus-theme-common/package.json +++ b/packages/docusaurus-theme-common/package.json @@ -39,7 +39,7 @@ "devDependencies": { "@docusaurus/core": "2.0.0-beta.18", "@docusaurus/types": "2.0.0-beta.18", - "fs-extra": "^10.0.1", + "fs-extra": "^10.1.0", "lodash": "^4.17.21" }, "peerDependencies": { diff --git a/packages/docusaurus-theme-live-codeblock/package.json b/packages/docusaurus-theme-live-codeblock/package.json index 04f9125977a9..96d2f941dee8 100644 --- a/packages/docusaurus-theme-live-codeblock/package.json +++ b/packages/docusaurus-theme-live-codeblock/package.json @@ -30,7 +30,7 @@ "@docusaurus/utils-validation": "2.0.0-beta.18", "@philpl/buble": "^0.19.7", "clsx": "^1.1.1", - "fs-extra": "^10.0.1", + "fs-extra": "^10.1.0", "react-live": "2.2.3", "tslib": "^2.3.1" }, diff --git a/packages/docusaurus-theme-search-algolia/package.json b/packages/docusaurus-theme-search-algolia/package.json index 296bd35a51c6..2ecd58700a61 100644 --- a/packages/docusaurus-theme-search-algolia/package.json +++ b/packages/docusaurus-theme-search-algolia/package.json @@ -40,7 +40,7 @@ "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", "utility-types": "^3.10.0" diff --git a/packages/docusaurus-theme-translations/package.json b/packages/docusaurus-theme-translations/package.json index 64b10648c7a5..e0f41532a05a 100644 --- a/packages/docusaurus-theme-translations/package.json +++ b/packages/docusaurus-theme-translations/package.json @@ -19,7 +19,7 @@ "update": "node ./update.mjs" }, "dependencies": { - "fs-extra": "^10.0.1", + "fs-extra": "^10.1.0", "tslib": "^2.3.1" }, "devDependencies": { diff --git a/packages/docusaurus-types/package.json b/packages/docusaurus-types/package.json index 1fc67b649de6..3beb093c882d 100644 --- a/packages/docusaurus-types/package.json +++ b/packages/docusaurus-types/package.json @@ -19,7 +19,7 @@ "commander": "^5.1.0", "history": "^4.9.0", "joi": "^17.6.0", - "react-helmet-async": "^1.2.3", + "react-helmet-async": "^1.3.0", "utility-types": "^3.10.0", "webpack": "^5.72.0", "webpack-merge": "^5.8.0" diff --git a/packages/docusaurus-utils/package.json b/packages/docusaurus-utils/package.json index f24fdf6028ce..27e950f782ac 100644 --- a/packages/docusaurus-utils/package.json +++ b/packages/docusaurus-utils/package.json @@ -21,7 +21,7 @@ "@docusaurus/logger": "2.0.0-beta.18", "@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.1.0", "gray-matter": "^4.0.3", @@ -42,7 +42,7 @@ "@types/dedent": "^0.7.0", "@types/github-slugger": "^1.3.0", "@types/micromatch": "^4.0.2", - "@types/react-dom": "^18.0.0", + "@types/react-dom": "^18.0.1", "dedent": "^0.7.0" } } diff --git a/packages/docusaurus/package.json b/packages/docusaurus/package.json index e0ca3c827ed2..14ccfac40fa0 100644 --- a/packages/docusaurus/package.json +++ b/packages/docusaurus/package.json @@ -56,11 +56,11 @@ "boxen": "^6.2.1", "chokidar": "^3.5.3", "clean-css": "^5.3.0", - "cli-table3": "^0.6.1", + "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", + "core-js": "^3.22.0", "css-loader": "^6.7.1", "css-minimizer-webpack-plugin": "^3.4.1", "cssnano": "^5.1.7", @@ -69,7 +69,7 @@ "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.2.0", "html-webpack-plugin": "^5.5.0", @@ -81,8 +81,8 @@ "postcss": "^8.4.12", "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", @@ -90,7 +90,7 @@ "react-router-dom": "^5.2.0", "remark-admonitions": "^1.2.1", "rtl-detect": "^1.0.4", - "semver": "^7.3.6", + "semver": "^7.3.7", "serve-handler": "^6.1.3", "shelljs": "^0.8.5", "terser-webpack-plugin": "^5.3.1", @@ -109,7 +109,7 @@ "@docusaurus/types": "2.0.0-beta.18", "@types/detect-port": "^1.3.2", "@types/nprogress": "^0.2.0", - "@types/react-dom": "^18.0.0", + "@types/react-dom": "^18.0.1", "@types/react-router-config": "^5.0.6", "@types/rtl-detect": "^1.0.0", "@types/serve-handler": "^6.1.1", diff --git a/packages/docusaurus/src/client/clientEntry.tsx b/packages/docusaurus/src/client/clientEntry.tsx index 939769aa31c4..8e53d92e1021 100644 --- a/packages/docusaurus/src/client/clientEntry.tsx +++ b/packages/docusaurus/src/client/clientEntry.tsx @@ -33,7 +33,6 @@ if (ExecutionEnvironment.canUseDOM) { process.env.NODE_ENV === 'production' ? ReactDOM.hydrate : ReactDOM.render; preload(window.location.pathname).then(() => { renderMethod( - // @ts-expect-error: https://github.com/staylor/react-helmet-async/pull/165 diff --git a/packages/docusaurus/src/client/serverEntry.tsx b/packages/docusaurus/src/client/serverEntry.tsx index 4ff192881b5f..ec01d1b9b441 100644 --- a/packages/docusaurus/src/client/serverEntry.tsx +++ b/packages/docusaurus/src/client/serverEntry.tsx @@ -85,7 +85,6 @@ async function doRender(locals: Locals & {path: string}) { const appHtml = ReactDOMServer.renderToString( // @ts-expect-error: we are migrating away from react-loadable anyways modules.add(moduleName)}> - {/* @ts-expect-error: https://github.com/staylor/react-helmet-async/pull/165 */} diff --git a/packages/lqip-loader/package.json b/packages/lqip-loader/package.json index 39bd019437d4..b7a932509c89 100644 --- a/packages/lqip-loader/package.json +++ b/packages/lqip-loader/package.json @@ -27,6 +27,6 @@ "node": ">=14" }, "devDependencies": { - "@types/sharp": "^0.30.1" + "@types/sharp": "^0.30.2" } } diff --git a/packages/stylelint-copyright/package.json b/packages/stylelint-copyright/package.json index 8c669225c399..6ed530fc18c2 100644 --- a/packages/stylelint-copyright/package.json +++ b/packages/stylelint-copyright/package.json @@ -10,6 +10,6 @@ "directory": "packages/stylelint-copyright" }, "dependencies": { - "stylelint": "^14.6.1" + "stylelint": "^14.7.0" } } diff --git a/website/package.json b/website/package.json index e3e347c3a3ce..fb2e68ec7840 100644 --- a/website/package.json +++ b/website/package.json @@ -35,7 +35,7 @@ }, "dependencies": { "@crowdin/cli": "^3.7.8", - "@crowdin/crowdin-api-client": "^1.16.0", + "@crowdin/crowdin-api-client": "^1.17.0", "@docusaurus/core": "2.0.0-beta.18", "@docusaurus/logger": "2.0.0-beta.18", "@docusaurus/plugin-client-redirects": "2.0.0-beta.18", @@ -49,10 +49,10 @@ "@docusaurus/utils": "2.0.0-beta.18", "@docusaurus/utils-common": "2.0.0-beta.18", "@popperjs/core": "^2.11.5", - "@swc/core": "^1.2.164", + "@swc/core": "^1.2.167", "clsx": "^1.1.1", "color": "^4.2.3", - "fs-extra": "^10.0.1", + "fs-extra": "^10.1.0", "netlify-plugin-cache": "^1.0.3", "raw-loader": "^4.0.2", "react": "^17.0.2", @@ -61,10 +61,10 @@ "react-popper": "^2.2.5", "rehype-katex": "^6.0.2", "remark-math": "^3.0.1", - "swc-loader": "^0.1.15", + "swc-loader": "^0.2.0", "unist-util-visit": "^2.0.3", - "workbox-routing": "^6.5.2", - "workbox-strategies": "^6.5.2" + "workbox-routing": "^6.5.3", + "workbox-strategies": "^6.5.3" }, "browserslist": { "production": [ diff --git a/yarn.lock b/yarn.lock index 2051469fd2b1..cc8f2b73b8fd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1317,17 +1317,17 @@ njre "^0.2.0" shelljs "^0.8.4" -"@crowdin/crowdin-api-client@^1.16.0": - version "1.16.0" - resolved "https://registry.yarnpkg.com/@crowdin/crowdin-api-client/-/crowdin-api-client-1.16.0.tgz#d6cdc70d8805bab2b426e71dfa85dafab410444b" - integrity sha512-3WLBN4kuxQ3blvTUh3HMFKStnUDrMYXJ1jpmvCMB/qG7BhczGeqcYpv0ugGvb0almuGmd4wNu+WfK+aAJxigHw== +"@crowdin/crowdin-api-client@^1.17.0": + version "1.17.0" + resolved "https://registry.yarnpkg.com/@crowdin/crowdin-api-client/-/crowdin-api-client-1.17.0.tgz#ff9ee259af52fee83a00beb2510f16130fb5c8aa" + integrity sha512-sc/9GqreWCBUfeENnovETvdtldptCBZ4BMGHQePnf8SJazcuCCZCpxspBX6Gj7Kt5cyqmC0ZywYF8j5jD32+PQ== dependencies: axios "0.21.3" -"@cspell/cspell-bundled-dicts@^5.19.6": - version "5.19.6" - resolved "https://registry.yarnpkg.com/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-5.19.6.tgz#219727c0c7464c202a6c8688b55272a6be5a18a1" - integrity sha512-eNh7swKZvfI8UELOGvCuV0Y4m979tyA4yI4B4LuM71xhMp2zzybtsz23R65couyM2yIUpUhIm31uxzzzlaEWtg== +"@cspell/cspell-bundled-dicts@^5.19.7": + version "5.19.7" + resolved "https://registry.yarnpkg.com/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-5.19.7.tgz#7e6f6990bbc73ff9b5c0b7ca17cb693c58ae06ee" + integrity sha512-9h2KdI3yKODc8rAxkgB5UZb6RLwwEO25Fo91vnOtM1xfwLhX/scMACU1DoqtnTVaE73HoQ46DYAZAAq/OloRFQ== dependencies: "@cspell/dict-ada" "^2.0.0" "@cspell/dict-aws" "^2.0.0" @@ -1370,15 +1370,15 @@ "@cspell/dict-typescript" "^2.0.0" "@cspell/dict-vue" "^2.0.2" -"@cspell/cspell-pipe@^5.19.6": - version "5.19.6" - resolved "https://registry.yarnpkg.com/@cspell/cspell-pipe/-/cspell-pipe-5.19.6.tgz#4b43d4f97c7f21286b7a5deed1a6d043a23444f8" - integrity sha512-KHGyPnr7uJ4buBEh5Tptd5kpgsIzgtEjz07Uk2RpSJ1oBVNheGprQ4EuwSWuFRYzm4e3Dk1OSgH5Lavfh6JjZA== +"@cspell/cspell-pipe@^5.19.7": + version "5.19.7" + resolved "https://registry.yarnpkg.com/@cspell/cspell-pipe/-/cspell-pipe-5.19.7.tgz#398bf6452ce83144f716b60f0f03bd8fb6f80774" + integrity sha512-C2+qovrXyZtoM+IcyMuwwYieoGBwwnWORat+j7bkIkVHf6Pa9spxY3D1IdLt04PqWBKWKHb1g9KzJzw5grBqZw== -"@cspell/cspell-types@^5.19.6": - version "5.19.6" - resolved "https://registry.yarnpkg.com/@cspell/cspell-types/-/cspell-types-5.19.6.tgz#ad2cfaeddead59ce3e1bf08379e0c234c0041c1b" - integrity sha512-/JJ7lyfbqkHFJPc4IAgtLnBaFLW2FVlThkag/B//QAMUBpSO4Q4vaBT6ehBONuxBPPy0wnPKyVzPcdUo5M7ptA== +"@cspell/cspell-types@^5.19.7": + version "5.19.7" + resolved "https://registry.yarnpkg.com/@cspell/cspell-types/-/cspell-types-5.19.7.tgz#9888598b976451df61cc980f0b3cc74379d7a358" + integrity sha512-xL9a0oE8kPQ/GCkE/bxE5DTCMTctCpk7tdrhYG26wVbMK1VRGo8fv9w+vRVzXgTfF5jTxolEA1LTtfVBuik1MA== "@cspell/dict-ada@^2.0.0": version "2.0.0" @@ -1401,9 +1401,9 @@ integrity sha512-O622rMAaHm85AmqNyMki5je8HB/1XlTKbGOXh2UUhooI5qdgdfrjTQ6VBuHwHrfEfuODBHYTNYXVB2m23XqHCg== "@cspell/dict-cpp@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@cspell/dict-cpp/-/dict-cpp-2.0.2.tgz#201b247f4a238e891b69ff32e737332570cccfa7" - integrity sha512-2Z2mOFQ4pSBoQeUaa/Cn0KBwkcRDdWSdBMj8bjGlhl9hXI342drAJMXg8tWsQa4l6J0GJUdmxz6RHmYRSzZJoQ== + version "2.0.3" + resolved "https://registry.yarnpkg.com/@cspell/dict-cpp/-/dict-cpp-2.0.3.tgz#551bec166c4520f7ba36f8d263fb885d19f98db0" + integrity sha512-aWRvI3CQW2M3XeJpDVffItw/9n4hxsN5EPwyBa6Po6EnCxZZZLOqpieZk4JNz4pH0/xbnOX+sMMuSeKWr71r/w== "@cspell/dict-cryptocurrencies@^2.0.0": version "2.0.0" @@ -2654,10 +2654,10 @@ call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" -"@netlify/build@^26.5.2": - version "26.5.2" - resolved "https://registry.yarnpkg.com/@netlify/build/-/build-26.5.2.tgz#e10794bd4e144cc769d7dc3107468bf2e9878e6b" - integrity sha512-b/movOQmBIw9ghNDdo4jviZGQRYMBzcGTN1BcoWgK649Whj1KfqEWpL+JBeqnCCNUQpfhfE9o284o6Ql37k8jQ== +"@netlify/build@^26.5.3": + version "26.5.3" + resolved "https://registry.yarnpkg.com/@netlify/build/-/build-26.5.3.tgz#68f8ea15ba48cd0ecdbe239462ae6cecfd57c5cd" + integrity sha512-O16lFUI6/uooWIvgrO/fQphx4vAGTW9GDAQ3hvo5M64XFdu+9W/OU0fB0fAPAJp+wGM+/hZI5JSS6rCG+TWifg== dependencies: "@bugsnag/js" "^7.0.0" "@netlify/cache-utils" "^4.0.0" @@ -2665,7 +2665,7 @@ "@netlify/functions-utils" "^4.0.0" "@netlify/git-utils" "^4.0.0" "@netlify/plugin-edge-handlers" "^3.0.7" - "@netlify/plugins-list" "^6.18.1" + "@netlify/plugins-list" "^6.19.0" "@netlify/run-utils" "^4.0.0" "@netlify/zip-it-and-ship-it" "5.9.0" "@sindresorhus/slugify" "^2.0.0" @@ -2908,7 +2908,7 @@ rollup-plugin-node-polyfills "^0.2.1" rollup-plugin-terser "^7.0.2" -"@netlify/plugins-list@^6.18.1", "@netlify/plugins-list@^6.19.0": +"@netlify/plugins-list@^6.19.0": version "6.19.0" resolved "https://registry.yarnpkg.com/@netlify/plugins-list/-/plugins-list-6.19.0.tgz#6618803445e5ad7f7f1fadb576cf7783160102b9" integrity sha512-EuRZgOhP7QE0H5Sn4+LvsOKL+rcUn+ny6dzwK1V+Rj2HV0cBW2JMGxWj2IEAI1Qb0xU/Gy+Ib+bX23dCvm5LdQ== @@ -3223,9 +3223,9 @@ "@rollup/pluginutils" "^3.1.0" "@rollup/plugin-commonjs@^21.0.0": - version "21.0.3" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.3.tgz#287896c64926ef3d7f0013708dcdcc1223576ef0" - integrity sha512-ThGfwyvcLc6cfP/MWxA5ACF+LZCvsuhUq7V5134Az1oQWsiC7lNpLT4mJI86WQunK7BYmpUiHmMk2Op6OAHs0g== + version "21.1.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-21.1.0.tgz#45576d7b47609af2db87f55a6d4b46e44fc3a553" + integrity sha512-6ZtHx3VHIp2ReNNDxHjuUml6ur+WcQ28N1yHgCQwsbNkQg2suhxGMDQGJOn/KuDxKtd1xuZP5xSTwBA4GQ8hbA== dependencies: "@rollup/pluginutils" "^3.1.0" commondir "^1.0.1" @@ -3489,89 +3489,89 @@ "@svgr/plugin-jsx" "^6.2.1" "@svgr/plugin-svgo" "^6.2.0" -"@swc/core-android-arm-eabi@1.2.164": - version "1.2.164" - resolved "https://registry.yarnpkg.com/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.164.tgz#91dade277d6ff3017df0f08c48acef6c6f094129" - integrity sha512-TdVOB3SJEpcBr+AfWXtK/r8GWJjddLD2bVHZe5wcN+GOGFZpkDTvhT66neK3Z13IBOMWkc5HckjdZ+Rfj+n3Ew== - -"@swc/core-android-arm64@1.2.164": - version "1.2.164" - resolved "https://registry.yarnpkg.com/@swc/core-android-arm64/-/core-android-arm64-1.2.164.tgz#8a1542788c37f0c0f7ccae78338276c735ebc560" - integrity sha512-nAl9QFzA94ESL+UL+UvPywuEjHIADHBCurIVOHMg4XIrgNQwRlbi7RQDKtLyhsTSmZoGoP4bGt5dRnKEyiSzNg== - -"@swc/core-darwin-arm64@1.2.164": - version "1.2.164" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.164.tgz#dc005f9ad96418d9aed8258b4c4e0932b665a488" - integrity sha512-OOsZybjAqcvsV/foB0K3RN6SEDJPb9UEJAYtKGeL1sae1vDq4JyuUhgWhGNmLJy4W1yeMCaDXLFSa9c/YN9pEg== - -"@swc/core-darwin-x64@1.2.164": - version "1.2.164" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.2.164.tgz#dafff10f4850b2251c3786292665ce917954f8e2" - integrity sha512-nKh3qoM4V60NruuY+GZgVwS7aGOjRxovakT84L3ELVCoa1Z/1qnLy5Lq3b1wW+PICxCjapqFGQAu3TQ8IRUNEg== - -"@swc/core-freebsd-x64@1.2.164": - version "1.2.164" - resolved "https://registry.yarnpkg.com/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.164.tgz#4be6a52f43022df409d964ae2f920e0eeb8f3955" - integrity sha512-yawmWGxFmFHMXc40ojmN4yXNXdNBGiauf1ZgF8VQK1Zqn+hcUaSIpNGJ4V9cDX97QKMmTJSEoeUbPGR5cIqEzQ== - -"@swc/core-linux-arm-gnueabihf@1.2.164": - version "1.2.164" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.164.tgz#a6dac7f9654bdf863cdcc3143dc2abfb8faffeea" - integrity sha512-8U85zH0hIbgqFe/71ocDatvCLDzIv/GIIzcuuoTFsdPCDDUzxRjmyZqQfVdwqrbk/j4MiV+iSFnM86VQYs1fRQ== - -"@swc/core-linux-arm64-gnu@1.2.164": - version "1.2.164" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.164.tgz#26684021f8f2d974045ce29b3f4e17e441f6e964" - integrity sha512-NT3IuJGstGnAbBXxE2O2LrMlVUDUFVyybXoklNSL811Y1g6HPPbnGl+by1iEFyMHxSPnn5d6R5dvpvezMwBUDA== - -"@swc/core-linux-arm64-musl@1.2.164": - version "1.2.164" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.164.tgz#88731dfa9d61162710849383d0cd24f6a2e97335" - integrity sha512-L/he+XSa1oQ7V95kbjrcmef8fxTZFA6RMj9bbGk62Nj/kQFOyUpXKVvWD+kQkLxqPeN9s7OV6fCyBwRly2SpNQ== - -"@swc/core-linux-x64-gnu@1.2.164": - version "1.2.164" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.164.tgz#bbe19048a58a5f639fccec47fde26c79d154b476" - integrity sha512-FiNan0A3zkgpMqhWMUvJ1QmpJlpPwkQ4OhERgyos1ZiTnF8PuTcN4kUqV0Pc4mrX5bfSeHRbrYr4owa2PjHv8w== - -"@swc/core-linux-x64-musl@1.2.164": - version "1.2.164" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.164.tgz#dfbf220f3552e0d10a59c2aaad24a299145d3f11" - integrity sha512-yN8GLowpJAlKFnxfVEOEwHIVK3wC587Hyo+MwYx8dDDaQS/n4GQ9XyHjbEDVyf2thGtr3C+2umozi19AgbIs5g== - -"@swc/core-win32-arm64-msvc@1.2.164": - version "1.2.164" - resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.164.tgz#4164831f8af2da39461d2374bc784667f188d96a" - integrity sha512-Hdt+Q2kAPNjLfVj+xHbtjDNJjQNtktb3s+CrGhYkz9iW6w3qb7wO8i18yu6gUVH6HgVYuyDK56oRxOX7T7iP8w== - -"@swc/core-win32-ia32-msvc@1.2.164": - version "1.2.164" - resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.164.tgz#f647cc5de26e5eef464325a145b9a37044813f4d" - integrity sha512-+nNJMnFNQBUPoA3Zu/v9pBn1ZD13b0vHLrPhg6qDAkXCZJJYpr6jUvEcED4F/9sjQs3S+JrH47S6DtkuBn+TzQ== - -"@swc/core-win32-x64-msvc@1.2.164": - version "1.2.164" - resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.164.tgz#e5268d50d300fc863f2d7c146b8d41d338bf7ac9" - integrity sha512-qoE7VNS5Fo6BrmSCtVumrp0v86xoQtHIgCymymjF7C/DQ/lbVDdZ7kSREMnJD2OujKstsJmfiJiRdQcpEJKoAw== - -"@swc/core@^1.2.164": - version "1.2.164" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.2.164.tgz#158f49cf262357cdbae590a14c7a690b89e6e22a" - integrity sha512-vw+jzMIVNzSK+lURMH3kANNRLPGROMvw3NpNm9vbtyjgKz9k/qf5ULCq96mayTPB5yXa9bWGBvzvhy6PtsKtqA== +"@swc/core-android-arm-eabi@1.2.167": + version "1.2.167" + resolved "https://registry.yarnpkg.com/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.167.tgz#113b5c003237b15f1a5aa3881118a59cf56cd4cf" + integrity sha512-eu8RAPKWLC5i9b1NShXhKtu3b5qvv/XtdkKpXuAkb8Kjr6qQs3PwuWl+xw8tsuyOc8FVaEy70Bj2QtckvSk2SA== + +"@swc/core-android-arm64@1.2.167": + version "1.2.167" + resolved "https://registry.yarnpkg.com/@swc/core-android-arm64/-/core-android-arm64-1.2.167.tgz#90c16ca26e4d5a9b60120167e640ed1c2b8ed275" + integrity sha512-L6DEHm4Ki+lMokOXg/Q5kHtOXrGJZf4pHNk1UL9uOW56n602uSBn9u8AXPmKV3VBmDa+xEsFbNUUkDrfRT+txg== + +"@swc/core-darwin-arm64@1.2.167": + version "1.2.167" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.167.tgz#6b8eaa69e51957d0ae1c8326d8b158d5d000ee5d" + integrity sha512-LayaG1CMsrTxUYH6GLA6gRUzEgu2/CrIboUgx/8CoGHSFY2Acqr1CZgE9oJ16DeVud8RX6Y1DkTcrDM5P8566w== + +"@swc/core-darwin-x64@1.2.167": + version "1.2.167" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.2.167.tgz#176675e44c9318c4696302e4da39e90e9502b457" + integrity sha512-2n7bb6iqdgOiLXuS/r0MXsbZl4jGvMi+4l5Vl/6tCqyRB5SoT1gZIVDjAg4NHZYAgWMQUB1jBkSoiXkBN7kXww== + +"@swc/core-freebsd-x64@1.2.167": + version "1.2.167" + resolved "https://registry.yarnpkg.com/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.167.tgz#23da7fe2aa1b8075304b9fdc83d031571f160d7b" + integrity sha512-gEqCULsZhmNRl0SB1RWmhSne6vQDY72Q0LhT7A9Y4Qdnk32hQ+Fp5a6nhqGT+vD9SbPk0VG4VtQWivmxV2dfUg== + +"@swc/core-linux-arm-gnueabihf@1.2.167": + version "1.2.167" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.167.tgz#d61c1507d2303fd3476101a7008058b5cfd17362" + integrity sha512-P+pW01nGwItOPIeMVnOCEBYrOxOc7pnfGb1+EPjasJfyQBkvUKL1K8vo02cLYqaFgsbkDDo1zkzlxXyb52wpGg== + +"@swc/core-linux-arm64-gnu@1.2.167": + version "1.2.167" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.167.tgz#83be1b6458b3cc82a72f605e0446d5e8b376d679" + integrity sha512-tHdQH23Pc7zS8EBm5pEZ/f0SFSP9RVvL4ReWZJRkEcC8sOIazgT9vd7CJwKwQwi5pt+hKxbK2tP94oX+VP/w5A== + +"@swc/core-linux-arm64-musl@1.2.167": + version "1.2.167" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.167.tgz#1c468ef5d2e1e079c578d4127500acd1c1843a44" + integrity sha512-avEcEq7GJ/wZAo4DLDxn+ZRoXA/VUj6yVw4oNjESG3tLY5SE17pFj5Wg3TS2SRuCaG2GJhegmogKUIKJ8be/Lg== + +"@swc/core-linux-x64-gnu@1.2.167": + version "1.2.167" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.167.tgz#1644467a7234e94044ee630551ed10b24871f36f" + integrity sha512-OGnQ/YpHAvUOV4NJzRa9QlIC/IyXtDA2667Loexoru9nr+QM75JzfOBu4SbBllmBHDV0fJ5SDGFRZJfWj1Jr7w== + +"@swc/core-linux-x64-musl@1.2.167": + version "1.2.167" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.167.tgz#6ad80f3d940af991b24216ccd173dda2be2249e7" + integrity sha512-o9x1qGdriSSqJ9jTgBvbCRhsG6FqVIeEzz7failEF1rg2/RUz7r0T+Cjj8WAU6Z724GHSqQKP3U1NVMZRmrvzg== + +"@swc/core-win32-arm64-msvc@1.2.167": + version "1.2.167" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.167.tgz#e73b6cbce71883dce81b501ce25bf9cd18c16f4b" + integrity sha512-hOuO/uZCqCjZHt60NzWInv3miMNF4vunWmkCzdnfrqbZJjl5jid8Gi5NffT3E+kjJM8EwG1I/HTtpeGI11Y5SA== + +"@swc/core-win32-ia32-msvc@1.2.167": + version "1.2.167" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.167.tgz#30ed781e8980e7451f989525d8762625c407cee9" + integrity sha512-/qY4PR5SmfEFmiyeqcHQKxn+4J2Ovvw4ProSZeC83V2WTt85Cqe6nL788vRlgHXx4FIwOXYmVxUtShA9PeiLoQ== + +"@swc/core-win32-x64-msvc@1.2.167": + version "1.2.167" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.167.tgz#927778825a4ea9e9e769b144b109f31b45300444" + integrity sha512-wHhqYZG6kcEkiCJ1lGQJ4FykEYn/JLqftCTyeb6TZx9k3BcLN3RCkQrjGCX8gLclIRcKav9UhATZKEVaDfimag== + +"@swc/core@^1.2.167": + version "1.2.167" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.2.167.tgz#4e81b34b0a9d5d21fb4c1b4676880f90c40f8cee" + integrity sha512-O7o7lw4JizrNe23ozYrN0eSXEZvoD0orERc6N56R75oAvIMPIl6pqm/QoRgpA/H41MD9DD1LkF5jmZOa/UB0OA== optionalDependencies: - "@swc/core-android-arm-eabi" "1.2.164" - "@swc/core-android-arm64" "1.2.164" - "@swc/core-darwin-arm64" "1.2.164" - "@swc/core-darwin-x64" "1.2.164" - "@swc/core-freebsd-x64" "1.2.164" - "@swc/core-linux-arm-gnueabihf" "1.2.164" - "@swc/core-linux-arm64-gnu" "1.2.164" - "@swc/core-linux-arm64-musl" "1.2.164" - "@swc/core-linux-x64-gnu" "1.2.164" - "@swc/core-linux-x64-musl" "1.2.164" - "@swc/core-win32-arm64-msvc" "1.2.164" - "@swc/core-win32-ia32-msvc" "1.2.164" - "@swc/core-win32-x64-msvc" "1.2.164" + "@swc/core-android-arm-eabi" "1.2.167" + "@swc/core-android-arm64" "1.2.167" + "@swc/core-darwin-arm64" "1.2.167" + "@swc/core-darwin-x64" "1.2.167" + "@swc/core-freebsd-x64" "1.2.167" + "@swc/core-linux-arm-gnueabihf" "1.2.167" + "@swc/core-linux-arm64-gnu" "1.2.167" + "@swc/core-linux-arm64-musl" "1.2.167" + "@swc/core-linux-x64-gnu" "1.2.167" + "@swc/core-linux-x64-musl" "1.2.167" + "@swc/core-win32-arm64-msvc" "1.2.167" + "@swc/core-win32-ia32-msvc" "1.2.167" + "@swc/core-win32-x64-msvc" "1.2.167" "@swc/jest@^0.2.20": version "0.2.20" @@ -3594,15 +3594,12 @@ dependencies: defer-to-connect "^2.0.0" -"@testing-library/react-hooks@^7.0.2": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@testing-library/react-hooks/-/react-hooks-7.0.2.tgz#3388d07f562d91e7f2431a4a21b5186062ecfee0" - integrity sha512-dYxpz8u9m4q1TuzfcUApqi8iFfR6R0FaMbr2hjZJy1uC8z+bO/K4v8Gs9eogGKYQop7QsrBTFkv/BCF7MzD2Cg== +"@testing-library/react-hooks@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@testing-library/react-hooks/-/react-hooks-8.0.0.tgz#7d0164bffce4647f506039de0a97f6fcbd20f4bf" + integrity sha512-uZqcgtcUUtw7Z9N32W13qQhVAD+Xki2hxbTR461MKax8T6Jr8nsUvZB+vcBTkzY2nFvsUet434CsgF0ncW2yFw== dependencies: "@babel/runtime" "^7.12.5" - "@types/react" ">=16.9.0" - "@types/react-dom" ">=16.9.0" - "@types/react-test-renderer" ">=16.9.0" react-error-boundary "^3.1.0" "@tootallnate/once@1": @@ -3667,9 +3664,9 @@ "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.14.2.tgz#ffcd470bbb3f8bf30481678fb5502278ca833a43" - integrity sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA== + version "7.17.0" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.17.0.tgz#7a9b80f712fe2052bc20da153ff1e552404d8e4b" + integrity sha512-r8aveDbd+rzGP+ykSdF3oPuTVRWRfbBiHl0rVDM2yNEmSMXfkObQLV46b4RnCv3Lra51OlfnZhkkFaDl2MIRaA== dependencies: "@babel/types" "^7.3.0" @@ -3783,10 +3780,10 @@ "@types/got" "^8" "@types/node" "*" -"@types/escape-html@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/escape-html/-/escape-html-1.0.1.tgz#b19b4646915f0ae2c306bf984dc0a59c5cfc97ba" - integrity sha512-4mI1FuUUZiuT95fSVqvZxp/ssQK9zsa86S43h9x3zPOSU9BBJ+BfDkXwuaU7BfsD+e7U0/cUUfJFk3iW2M4okA== +"@types/escape-html@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/escape-html/-/escape-html-1.0.2.tgz#072b7b13784fb3cee9c2450c22f36405983f5e3c" + integrity sha512-gaBLT8pdcexFztLSPRtriHeXY/Kn4907uOCZ4Q3lncFBkheAWOuNt53ypsF8szgxbEJ513UeBzcf4utN0EzEwA== "@types/eslint-scope@^3.7.3": version "3.7.3" @@ -3959,10 +3956,10 @@ resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-4.0.5.tgz#738dd390a6ecc5442f35e7f03fa1431353f7e138" integrity sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA== -"@types/jscodeshift@^0.11.3": - version "0.11.3" - resolved "https://registry.yarnpkg.com/@types/jscodeshift/-/jscodeshift-0.11.3.tgz#8dcab24ced39dcab1c8ff3461b3d171aafee3d48" - integrity sha512-pM0JD9kWVDH9DQp5Y6td16924V3MwZHei8P3cTeuFhXpzpk0K+iWraBZz8wF61QkFs9fZeAQNX0q8SG0+TFm2w== +"@types/jscodeshift@^0.11.4": + version "0.11.4" + resolved "https://registry.yarnpkg.com/@types/jscodeshift/-/jscodeshift-0.11.4.tgz#adb0c806df6224911a0886220c6da9689eaf9405" + integrity sha512-9VYMEWsjpYgCe3DhHbr6JhdWjUZ2yAP7BQ4MpxLogyDW2K+PW+mGzaPeS/h+hCRkebiOw6NpF3V+gKY30kjOoA== dependencies: ast-types "^0.14.1" recast "^0.20.3" @@ -4043,15 +4040,15 @@ "@types/node" "*" form-data "^3.0.0" -"@types/node@*", "@types/node@^17.0.23", "@types/node@^17.0.5": - version "17.0.23" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.23.tgz#3b41a6e643589ac6442bdbd7a4a3ded62f33f7da" - integrity sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw== +"@types/node@*", "@types/node@^17.0.24", "@types/node@^17.0.5": + version "17.0.24" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.24.tgz#20ba1bf69c1b4ab405c7a01e950c4f446b05029f" + integrity sha512-aveCYRQbgTH9Pssp1voEP7HiuWlD2jW2BO56w+bVrJn04i61yh6mRfoKO6hEYQD9vF+W8Chkwc6j1M36uPkx4g== "@types/node@^16.0.0": - version "16.11.26" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.26.tgz#63d204d136c9916fb4dcd1b50f9740fe86884e47" - integrity sha512-GZ7bu5A6+4DtG7q9GsoHXy3ALcgeIHP4NnL0Vv2wu0uUB/yQex26v0tf6/na1mm0+bS9Uw+0DFex7aaKr2qawQ== + version "16.11.27" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.27.tgz#5da19383bdbeda99bc0d09cfbb88cab7297ebc51" + integrity sha512-C1pD3kgLoZ56Uuy5lhfOxie4aZlA3UMGLX9rXteq4WitEZH6Rl80mwactt9QG0w0gLFlN/kLBTFnGXtDVWvWQw== "@types/normalize-package-data@^2.4.0", "@types/normalize-package-data@^2.4.1": version "2.4.1" @@ -4084,9 +4081,9 @@ integrity sha512-O397rnSS9iQI4OirieAtsDqvCj4+3eY1J+EPdNTKuHuRWIfUoGyzX294o8C4KJYaLqgSrd2o60c5EqCU8Zv02g== "@types/prettier@^2.1.5": - version "2.4.4" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.4.4.tgz#5d9b63132df54d8909fce1c3f8ca260fdd693e17" - integrity sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA== + version "2.6.0" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.6.0.tgz#efcbd41937f9ae7434c714ab698604822d890759" + integrity sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw== "@types/prismjs@^1.26.0": version "1.26.0" @@ -4126,10 +4123,10 @@ "@types/webpack" "^4" "@types/webpack-dev-server" "3" -"@types/react-dom@>=16.9.0", "@types/react-dom@^18.0.0": - version "18.0.0" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.0.tgz#b13f8d098e4b0c45df4f1ed123833143b0c71141" - integrity sha512-49897Y0UiCGmxZqpC8Blrf6meL8QUla6eb+BBhn69dTXlmuOlzkfr7HHY/O8J25e1lTUMs+YYxSlVDAaGHCOLg== +"@types/react-dom@^18.0.1": + version "18.0.1" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.1.tgz#cb3cc10ea91141b12c71001fede1017acfbce4db" + integrity sha512-jCwTXvHtRLiyVvKm9aEdHXs8rflVOGd5Sl913JZrPshfXjn8NYsTNZOz70bCsA31IR0TOqwi3ad+X4tSCBoMTw== dependencies: "@types/react" "*" @@ -4159,17 +4156,17 @@ "@types/history" "^4.7.11" "@types/react" "*" -"@types/react-test-renderer@>=16.9.0", "@types/react-test-renderer@^17.0.1": - version "17.0.1" - resolved "https://registry.yarnpkg.com/@types/react-test-renderer/-/react-test-renderer-17.0.1.tgz#3120f7d1c157fba9df0118dae20cb0297ee0e06b" - integrity sha512-3Fi2O6Zzq/f3QR9dRnlnHso9bMl7weKCviFmfF6B4LS1Uat6Hkm15k0ZAQuDz+UBq6B3+g+NM6IT2nr5QgPzCw== +"@types/react-test-renderer@^18.0.0": + version "18.0.0" + resolved "https://registry.yarnpkg.com/@types/react-test-renderer/-/react-test-renderer-18.0.0.tgz#7b7f69ca98821ea5501b21ba24ea7b6139da2243" + integrity sha512-C7/5FBJ3g3sqUahguGi03O79b8afNeSD6T8/GU50oQrJCU0bVCCGQHaGKUbg2Ce8VQEEqTw8/HiS6lXHHdgkdQ== dependencies: "@types/react" "*" -"@types/react@*", "@types/react@>=16.9.0", "@types/react@^18.0.0": - version "18.0.0" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.0.tgz#4be8aa3a2d04afc3ac2cc1ca43d39b0bd412890c" - integrity sha512-7+K7zEQYu7NzOwQGLR91KwWXXDzmTFODRVizJyIALf6RfLv2GDpqpknX64pvRVILXCpXi7O/pua8NGk44dLvJw== +"@types/react@*", "@types/react@^18.0.5": + version "18.0.5" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.5.tgz#1a4d4b705ae6af5aed369dec22800b20f89f5301" + integrity sha512-UPxNGInDCIKlfqBrm8LDXYWNfLHwIdisWcsH5GpMyGjhEDLFgTtlRBaoWuCua9HcyuE0rMkmAeZ3FXV1pYLIYQ== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -4204,10 +4201,10 @@ resolved "https://registry.yarnpkg.com/@types/rtl-detect/-/rtl-detect-1.0.0.tgz#5791e18a111f2b8b5b328160af97f3991a5697a5" integrity sha512-lyYh44YgrejEK9/5rhASghvRUOxrSJyyyQmqK7L6F/V5qs6PY1RfCi1VbjSkY6kuDt7lzQyhd006slhda4Oypg== -"@types/rtlcss@^3.1.3": - version "3.1.3" - resolved "https://registry.yarnpkg.com/@types/rtlcss/-/rtlcss-3.1.3.tgz#c73f372ec6b94c6b8d7652588559ee88da4f92a8" - integrity sha512-4bYHYzUeHMqnWKDxjJZfriqKJC+KZ91xyB+HoyPCiCzHfvUFcUZZ1SWvsIosPz/E0zsLgR11KHQgZs8fwqkI4Q== +"@types/rtlcss@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@types/rtlcss/-/rtlcss-3.1.4.tgz#8b67938356507f68f1b529396a70f586f6eff2a7" + integrity sha512-R+iDmWdCzCp/6T2vOC3GpCbhPArvShXlStAxcw0UcocS/7GTREHcFyH6+xFlXAXMSgp6F+Ab9Q26Fjdu+2a4ww== dependencies: postcss "^8.2.x" @@ -4250,10 +4247,10 @@ "@types/mime" "^1" "@types/node" "*" -"@types/sharp@^0.30.1": - version "0.30.1" - resolved "https://registry.yarnpkg.com/@types/sharp/-/sharp-0.30.1.tgz#31bd128f2437e8fc31424eb23d8284aa127bfa8d" - integrity sha512-LxzQsKo2YtvA2DlqACNXmlbLGMVJCSU/HhV4N9RrStClUEf02iN+AakD/zUOpZkbo1OG+lHk2LeqoHedLwln2w== +"@types/sharp@^0.30.2": + version "0.30.2" + resolved "https://registry.yarnpkg.com/@types/sharp/-/sharp-0.30.2.tgz#df5ff34140b3bad165482e6f3d26b08e42a0503a" + integrity sha512-uLCBwjDg/BTcQit0dpNGvkIjvH3wsb8zpaJePCjvONBBSfaKHoxXBIuq1MT8DMQEfk2fKYnpC9QExCgFhkGkMQ== dependencies: "@types/node" "*" @@ -4396,14 +4393,14 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^5.18.0": - version "5.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.18.0.tgz#950df411cec65f90d75d6320a03b2c98f6c3af7d" - integrity sha512-tzrmdGMJI/uii9/V6lurMo4/o+dMTKDH82LkNjhJ3adCW22YQydoRs5MwTiqxGF9CSYxPxQ7EYb4jLNlIs+E+A== +"@typescript-eslint/eslint-plugin@^5.19.0": + version "5.19.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.19.0.tgz#9608a4b6d0427104bccf132f058cba629a6553c0" + integrity sha512-w59GpFqDYGnWFim9p6TGJz7a3qWeENJuAKCqjGSx+Hq/bwq3RZwXYqy98KIfN85yDqz9mq6QXiY5h0FjGQLyEg== dependencies: - "@typescript-eslint/scope-manager" "5.18.0" - "@typescript-eslint/type-utils" "5.18.0" - "@typescript-eslint/utils" "5.18.0" + "@typescript-eslint/scope-manager" "5.19.0" + "@typescript-eslint/type-utils" "5.19.0" + "@typescript-eslint/utils" "5.19.0" debug "^4.3.2" functional-red-black-tree "^1.0.1" ignore "^5.1.8" @@ -4411,30 +4408,30 @@ semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/parser@^5.18.0": - version "5.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.18.0.tgz#2bcd4ff21df33621df33e942ccb21cb897f004c6" - integrity sha512-+08nYfurBzSSPndngnHvFw/fniWYJ5ymOrn/63oMIbgomVQOvIDhBoJmYZ9lwQOCnQV9xHGvf88ze3jFGUYooQ== +"@typescript-eslint/parser@^5.19.0": + version "5.19.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.19.0.tgz#05e587c1492868929b931afa0cb5579b0f728e75" + integrity sha512-yhktJjMCJX8BSBczh1F/uY8wGRYrBeyn84kH6oyqdIJwTGKmzX5Qiq49LRQ0Jh0LXnWijEziSo6BRqny8nqLVQ== dependencies: - "@typescript-eslint/scope-manager" "5.18.0" - "@typescript-eslint/types" "5.18.0" - "@typescript-eslint/typescript-estree" "5.18.0" + "@typescript-eslint/scope-manager" "5.19.0" + "@typescript-eslint/types" "5.19.0" + "@typescript-eslint/typescript-estree" "5.19.0" debug "^4.3.2" -"@typescript-eslint/scope-manager@5.18.0": - version "5.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.18.0.tgz#a7d7b49b973ba8cebf2a3710eefd457ef2fb5505" - integrity sha512-C0CZML6NyRDj+ZbMqh9FnPscg2PrzSaVQg3IpTmpe0NURMVBXlghGZgMYqBw07YW73i0MCqSDqv2SbywnCS8jQ== +"@typescript-eslint/scope-manager@5.19.0": + version "5.19.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.19.0.tgz#97e59b0bcbcb54dbcdfba96fc103b9020bbe9cb4" + integrity sha512-Fz+VrjLmwq5fbQn5W7cIJZ066HxLMKvDEmf4eu1tZ8O956aoX45jAuBB76miAECMTODyUxH61AQM7q4/GOMQ5g== dependencies: - "@typescript-eslint/types" "5.18.0" - "@typescript-eslint/visitor-keys" "5.18.0" + "@typescript-eslint/types" "5.19.0" + "@typescript-eslint/visitor-keys" "5.19.0" -"@typescript-eslint/type-utils@5.18.0": - version "5.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.18.0.tgz#62dbfc8478abf36ba94a90ddf10be3cc8e471c74" - integrity sha512-vcn9/6J5D6jtHxpEJrgK8FhaM8r6J1/ZiNu70ZUJN554Y3D9t3iovi6u7JF8l/e7FcBIxeuTEidZDR70UuCIfA== +"@typescript-eslint/type-utils@5.19.0": + version "5.19.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.19.0.tgz#80f2125b0dfe82494bbae1ea99f1c0186d420282" + integrity sha512-O6XQ4RI4rQcBGshTQAYBUIGsKqrKeuIOz9v8bckXZnSeXjn/1+BDZndHLe10UplQeJLXDNbaZYrAytKNQO2T4Q== dependencies: - "@typescript-eslint/utils" "5.18.0" + "@typescript-eslint/utils" "5.19.0" debug "^4.3.2" tsutils "^3.21.0" @@ -4443,18 +4440,18 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== -"@typescript-eslint/types@5.18.0": - version "5.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.18.0.tgz#4f0425d85fdb863071680983853c59a62ce9566e" - integrity sha512-bhV1+XjM+9bHMTmXi46p1Led5NP6iqQcsOxgx7fvk6gGiV48c6IynY0apQb7693twJDsXiVzNXTflhplmaiJaw== +"@typescript-eslint/types@5.19.0": + version "5.19.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.19.0.tgz#12d3d600d754259da771806ee8b2c842d3be8d12" + integrity sha512-zR1ithF4Iyq1wLwkDcT+qFnhs8L5VUtjgac212ftiOP/ZZUOCuuF2DeGiZZGQXGoHA50OreZqLH5NjDcDqn34w== -"@typescript-eslint/typescript-estree@5.18.0": - version "5.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.18.0.tgz#6498e5ee69a32e82b6e18689e2f72e4060986474" - integrity sha512-wa+2VAhOPpZs1bVij9e5gyVu60ReMi/KuOx4LKjGx2Y3XTNUDJgQ+5f77D49pHtqef/klglf+mibuHs9TrPxdQ== +"@typescript-eslint/typescript-estree@5.19.0": + version "5.19.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.19.0.tgz#fc987b8f62883f9ea6a5b488bdbcd20d33c0025f" + integrity sha512-dRPuD4ocXdaE1BM/dNR21elSEUPKaWgowCA0bqJ6YbYkvtrPVEvZ+zqcX5a8ECYn3q5iBSSUcBBD42ubaOp0Hw== dependencies: - "@typescript-eslint/types" "5.18.0" - "@typescript-eslint/visitor-keys" "5.18.0" + "@typescript-eslint/types" "5.19.0" + "@typescript-eslint/visitor-keys" "5.19.0" debug "^4.3.2" globby "^11.0.4" is-glob "^4.0.3" @@ -4474,15 +4471,15 @@ semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/utils@5.18.0", "@typescript-eslint/utils@^5.10.0": - version "5.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.18.0.tgz#27fc84cf95c1a96def0aae31684cb43a37e76855" - integrity sha512-+hFGWUMMri7OFY26TsOlGa+zgjEy1ssEipxpLjtl4wSll8zy85x0GrUSju/FHdKfVorZPYJLkF3I4XPtnCTewA== +"@typescript-eslint/utils@5.19.0", "@typescript-eslint/utils@^5.10.0": + version "5.19.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.19.0.tgz#fe87f1e3003d9973ec361ed10d36b4342f1ded1e" + integrity sha512-ZuEckdupXpXamKvFz/Ql8YnePh2ZWcwz7APICzJL985Rp5C2AYcHO62oJzIqNhAMtMK6XvrlBTZeNG8n7gS3lQ== dependencies: "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.18.0" - "@typescript-eslint/types" "5.18.0" - "@typescript-eslint/typescript-estree" "5.18.0" + "@typescript-eslint/scope-manager" "5.19.0" + "@typescript-eslint/types" "5.19.0" + "@typescript-eslint/typescript-estree" "5.19.0" eslint-scope "^5.1.1" eslint-utils "^3.0.0" @@ -4494,12 +4491,12 @@ "@typescript-eslint/types" "4.33.0" eslint-visitor-keys "^2.0.0" -"@typescript-eslint/visitor-keys@5.18.0": - version "5.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.18.0.tgz#c7c07709823804171d569017f3b031ced7253e60" - integrity sha512-Hf+t+dJsjAKpKSkg3EHvbtEpFFb/1CiOHnvI8bjHgOD4/wAw3gKrA0i94LrbekypiZVanJu3McWJg7rWDMzRTg== +"@typescript-eslint/visitor-keys@5.19.0": + version "5.19.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.19.0.tgz#c84ebc7f6c744707a361ca5ec7f7f64cd85b8af6" + integrity sha512-Ym7zZoMDZcAKWsULi2s7UMLREdVQdScPQ/fKWMYefarCztWlHPFVJo8racf8R0Gc8FAEJ2eD4of8As1oFtnQlQ== dependencies: - "@typescript-eslint/types" "5.18.0" + "@typescript-eslint/types" "5.19.0" eslint-visitor-keys "^3.0.0" "@vercel/nft@^0.17.0": @@ -4664,9 +4661,9 @@ JSONStream@^1.0.4: through ">=2.2.7 <3" abab@^2.0.3, abab@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" - integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== + version "2.0.6" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== abbrev@1: version "1.1.1" @@ -5008,12 +5005,12 @@ archiver-utils@^2.1.0: readable-stream "^2.0.0" archiver@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/archiver/-/archiver-5.3.0.tgz#dd3e097624481741df626267564f7dd8640a45ba" - integrity sha512-iUw+oDwK0fgNpvveEsdQ0Ase6IIKztBJU2U0E9MzszMfmVVUyv1QJhS2ITW9ZCqx8dktAxVAjWWkKehuZE8OPg== + version "5.3.1" + resolved "https://registry.yarnpkg.com/archiver/-/archiver-5.3.1.tgz#21e92811d6f09ecfce649fbefefe8c79e57cbbb6" + integrity sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w== dependencies: archiver-utils "^2.1.0" - async "^3.2.0" + async "^3.2.3" buffer-crc32 "^0.2.1" readable-stream "^3.6.0" readdir-glob "^1.0.0" @@ -5145,22 +5142,24 @@ array-unique@^0.3.2: integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== 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" @@ -5232,13 +5231,13 @@ async@0.9.x: integrity sha512-l6ToIJIotphWahxxHyzK9bnLR6kM4jJIIgLShZeqLY7iboHoGkdgFl7W2/Ivi4SkMJYGKqW8vSuk0uKUj6qsSw== 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== + version "2.6.4" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" + integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== dependencies: lodash "^4.17.14" -async@^3.2.0, async@^3.2.3: +async@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9" integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g== @@ -5683,7 +5682,7 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.17.5, browserslist@^4.18.1, browserslist@^4.19.1, browserslist@^4.20.2: +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.17.5, browserslist@^4.18.1, browserslist@^4.20.2: version "4.20.2" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.2.tgz#567b41508757ecd904dab4d1c646c612cd3d4f88" integrity sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA== @@ -5963,9 +5962,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001317: - version "1.0.30001327" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001327.tgz#c1546d7d7bb66506f0ccdad6a7d07fc6d668c858" - integrity sha512-1/Cg4jlD9qjZzhbzkzEaAC2JHsP0WrOc8Rd/3a3LuajGzGWR/hD7TVyvq99VqmTy99eVh8Zkmdq213OgvgXx7w== + version "1.0.30001332" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz#39476d3aa8d83ea76359c70302eafdd4a1d727dd" + integrity sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw== caseless@~0.12.0: version "0.12.0" @@ -6258,14 +6257,14 @@ cli-spinners@^2.5.0: resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== -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" cli-truncate@^0.2.1: version "0.2.1" @@ -6530,9 +6529,9 @@ commander@^8.0.0, commander@^8.3.0: integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== commander@^9.0.0, commander@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-9.1.0.tgz#a6b263b2327f2e188c6402c42623327909f2dbec" - integrity sha512-i0/MaqBtdbnJ4XQs4Pmyb+oFQl+q0lsAmokVUH92SlSw4fkeAcG3bVon+Qt7hmtF+u3Het6o4VgrcY3qAoEB6w== + version "9.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-9.2.0.tgz#6e21014b2ed90d8b7c9647230d8b7a94a4a419a9" + integrity sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w== comment-json@^4.2.2: version "4.2.2" @@ -6875,27 +6874,27 @@ copy-webpack-plugin@^10.2.4: 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== + version "3.22.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.22.0.tgz#7ce17ab57c378be2c717c7c8ed8f82a50a25b3e4" + integrity sha512-WwA7xbfRGrk8BGaaHlakauVXrlYmAIkk8PNGb1FDQS+Rbrewc3pgFfwJFRw6psmJVAll7Px9UHRYE16oRQnwAQ== dependencies: - browserslist "^4.19.1" + browserslist "^4.20.2" 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.0" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.22.0.tgz#0eaa54b6d1f4ebb4d19976bb4916dfad149a3747" + integrity sha512-ylOC9nVy0ak1N+fPIZj00umoZHgUVqmucklP5RT5N+vJof38klKn8Ze6KGyvchdClvEBr6LcQqJpI216LUMqYA== core-js@^2.4.1: version "2.6.12" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== -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.0: + version "3.22.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.22.0.tgz#b52007870c5e091517352e833b77f0b2d2b259f3" + integrity sha512-8h9jBweRjMiY+ORO7bdWSeWfHhLPO7whobj7Z2Bl0IDo00C228EdGgH7FE4jGumbEjzcFfkfW8bXgdkEDhnwHQ== core-util-is@1.0.2: version "1.0.2" @@ -7017,41 +7016,41 @@ 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== -cspell-gitignore@^5.19.6: - version "5.19.6" - resolved "https://registry.yarnpkg.com/cspell-gitignore/-/cspell-gitignore-5.19.6.tgz#e87575906a7d79c8536de4c63fe3416614718329" - integrity sha512-ZhrJyGb5xMZAP0laGbG6ihmngWWGJoTwpIbe9lh4XyceyZ4NfIEewu0xii9eCqM7iedLDgZ86UF45MTCwgo3Ag== +cspell-gitignore@^5.19.7: + version "5.19.7" + resolved "https://registry.yarnpkg.com/cspell-gitignore/-/cspell-gitignore-5.19.7.tgz#08c073fd3fda72760816c2283822170f4c102720" + integrity sha512-rEqlN6wigNj4P/4Z3QCI1P56KhKkPtXNBpGMXC5CbxIK/NTtn3cLaqHKIZp92pypEnU077lxSCSqRRYCPbg/6A== dependencies: - cspell-glob "^5.19.6" + cspell-glob "^5.19.7" find-up "^5.0.0" -cspell-glob@^5.19.6: - version "5.19.6" - resolved "https://registry.yarnpkg.com/cspell-glob/-/cspell-glob-5.19.6.tgz#0bb4d79fdacf6e400ac2aed5639ebdf7a77e75a6" - integrity sha512-NwTjdIAdNi2E8YEgUKg5OO9mjeaL423eMC1/NNgKi/Eb1cdHAImEORk+L9Vd0wvppAc+54hJ0slSroqfXkPUvw== +cspell-glob@^5.19.7: + version "5.19.7" + resolved "https://registry.yarnpkg.com/cspell-glob/-/cspell-glob-5.19.7.tgz#67a43c566addd2f6cba579f6eae4bbefbf9eb364" + integrity sha512-fqlF7oqYTT2A3SRfQr7gzN21fwPoRO9IGKec1L3QeGkni5UPDxGrM2a5z+oLaYs2GN5pEf29BXVlN7dq0jVxIg== dependencies: micromatch "^4.0.5" -cspell-io@^5.19.6: - version "5.19.6" - resolved "https://registry.yarnpkg.com/cspell-io/-/cspell-io-5.19.6.tgz#c9b2103d9a623bac2af7034b726b28f3a2e5c60b" - integrity sha512-rHjGoa26XGeGtFSrOaFfI7cLVcYRhtairvmn6u+C4WDJ5hak/mZ0J8Dpt0pOZCZb/U4EBOox+9GU1+s8IYLaJQ== +cspell-io@^5.19.7: + version "5.19.7" + resolved "https://registry.yarnpkg.com/cspell-io/-/cspell-io-5.19.7.tgz#ce49d4aaeae19206ccd29c5d90599fa675ea5bac" + integrity sha512-SEy8XkuOhvwleGjh336EBYj5HlH1J5FrCI5GxxGiU2g8zvWlBPQmaCfQPPO4tnDrrXtK76rZvolBu1jfCmWwQA== -cspell-lib@^5.19.6: - version "5.19.6" - resolved "https://registry.yarnpkg.com/cspell-lib/-/cspell-lib-5.19.6.tgz#777a582b21fba40cdc8539b6d2b8f937a4158302" - integrity sha512-gZZ0VDBr6iZrQJ2SFhZ2NaXLIPiP6lNHqB1kn8Gv7irglG8YU2aKdu3E3yAwfDyxEOmBq+1ZoazCZdn1Lvt32g== +cspell-lib@^5.19.7: + version "5.19.7" + resolved "https://registry.yarnpkg.com/cspell-lib/-/cspell-lib-5.19.7.tgz#91edde38af793bcfb69f5fddf59db6ce5e6fe0cb" + integrity sha512-d4ewH1RBgcBE9NqAh0FexmVQ6YvkDQv9XOysskeDH+G9wm975owENUU/mBd8AyBt2b4YXL/FoLtaKd/7MRoNDA== dependencies: - "@cspell/cspell-bundled-dicts" "^5.19.6" - "@cspell/cspell-pipe" "^5.19.6" - "@cspell/cspell-types" "^5.19.6" + "@cspell/cspell-bundled-dicts" "^5.19.7" + "@cspell/cspell-pipe" "^5.19.7" + "@cspell/cspell-types" "^5.19.7" clear-module "^4.1.2" comment-json "^4.2.2" configstore "^5.0.1" cosmiconfig "^7.0.1" - cspell-glob "^5.19.6" - cspell-io "^5.19.6" - cspell-trie-lib "^5.19.6" + cspell-glob "^5.19.7" + cspell-io "^5.19.7" + cspell-trie-lib "^5.19.7" fast-equals "^3.0.1" find-up "^5.0.0" fs-extra "^10.0.1" @@ -7062,26 +7061,26 @@ cspell-lib@^5.19.6: vscode-languageserver-textdocument "^1.0.4" vscode-uri "^3.0.3" -cspell-trie-lib@^5.19.6: - version "5.19.6" - resolved "https://registry.yarnpkg.com/cspell-trie-lib/-/cspell-trie-lib-5.19.6.tgz#76a94b9138e6ae2e8b3b5d12408558b22caab7c0" - integrity sha512-2nICB3sa10B+U9kUPP66Lr1vbu97VFiyz2eYaFCP+n19H2MlrCybgmdGU8F4f5l/CWVxri3HNYpdoqGfzR9h3w== +cspell-trie-lib@^5.19.7: + version "5.19.7" + resolved "https://registry.yarnpkg.com/cspell-trie-lib/-/cspell-trie-lib-5.19.7.tgz#ce3841f95ace03730ce896089d34c92b5e2d343d" + integrity sha512-qr0HS2hGuyIQhDGG5li0nqIjVi039iPRHR8wpeDoSO0YIBCll22i/VlvW3CSmqXLaP5RRoAc9txiZkIGob6DkQ== dependencies: - "@cspell/cspell-pipe" "^5.19.6" + "@cspell/cspell-pipe" "^5.19.7" fs-extra "^10.0.1" gensequence "^3.1.1" -cspell@^5.19.6: - version "5.19.6" - resolved "https://registry.yarnpkg.com/cspell/-/cspell-5.19.6.tgz#8f68ab2a0569110630d1e0f74e8782fd947f1900" - integrity sha512-oEKyQSkYOO34VldGZ/0+u+IrJWZvsyosize9VSz6Wz/wbp/k4KdFy9oA/u4bZlYa5S4v/CgIGpWK26agcveHUg== +cspell@^5.19.7: + version "5.19.7" + resolved "https://registry.yarnpkg.com/cspell/-/cspell-5.19.7.tgz#4f6c6ff8baac1f3ace6693c63280a3b7a6b669ff" + integrity sha512-7/y+k708tv68+5lpN23Ew1/djx/EnG838zZ8W2ZDWCc6uRHutqRhpxsjMZr/MT3RHN44iKUj2MgT5+sfnhr4eg== dependencies: - "@cspell/cspell-pipe" "^5.19.6" + "@cspell/cspell-pipe" "^5.19.7" chalk "^4.1.2" commander "^9.1.0" - cspell-gitignore "^5.19.6" - cspell-glob "^5.19.6" - cspell-lib "^5.19.6" + cspell-gitignore "^5.19.7" + cspell-glob "^5.19.7" + cspell-lib "^5.19.7" fast-json-stable-stringify "^2.1.0" file-entry-cache "^6.0.1" fs-extra "^10.0.1" @@ -7508,11 +7507,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" define-property@^0.2.5: version "0.2.5" @@ -7790,9 +7790,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" @@ -7963,9 +7963,9 @@ ejs@^3.1.6: jake "^10.6.1" electron-to-chromium@^1.4.84: - version "1.4.106" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.106.tgz#e7a3bfa9d745dd9b9e597616cb17283cc349781a" - integrity sha512-ZYfpVLULm67K7CaaGP7DmjyeMY4naxsbTy+syVVxT6QHI1Ww8XbJjmr9fDckrhq44WzCrcC5kH3zGpdusxwwqg== + version "1.4.111" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.111.tgz#897613f6504f3f17c9381c7499a635b413e4df4e" + integrity sha512-/s3+fwhKf1YK4k7btOImOzCQLpUjS6MaPf0ODTNuT4eTM1Bg4itBpLkydhOzJmpmH6Z9eXFyuuK5czsmzRzwtw== elegant-spinner@^1.0.1: version "1.0.1" @@ -8027,9 +8027,9 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1, end-of-stream@ 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" @@ -8078,10 +8078,10 @@ error-stack-parser@^2.0.2, error-stack-parser@^2.0.3, error-stack-parser@^2.0.6: dependencies: stackframe "^1.1.1" -es-abstract@^1.19.0, es-abstract@^1.19.1: - version "1.19.2" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.2.tgz#8f7b696d8f15b167ae3640b4060670f3d054143f" - integrity sha512-gfSBJoZdlL2xRiOCy0g8gLMryhoe1TlimjzU99L/31Z8QEGIhVQI+EWwt5lT+AuU9SnorVupXFqqOGqGfsyO6w== +es-abstract@^1.19.1, es-abstract@^1.19.2: + 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" @@ -8094,7 +8094,7 @@ es-abstract@^1.19.0, es-abstract@^1.19.1: is-callable "^1.2.4" 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.2" object-inspect "^1.12.0" @@ -8109,6 +8109,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" @@ -8780,9 +8787,9 @@ fd-slicer@~1.1.0: pend "~1.2.0" fecha@^4.2.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.1.tgz#0a83ad8f86ef62a091e22bb5a039cd03d23eecce" - integrity sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q== + version "4.2.3" + resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd" + integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== feed@^4.2.2: version "4.2.2" @@ -9037,9 +9044,9 @@ flatten@^1.0.2: integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== flow-parser@0.*: - version "0.175.1" - resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.175.1.tgz#835a0ea46346c8bdd947e70b2814c2b613beb238" - integrity sha512-gYes5/nxeLYiu02MMb+WH4KaOIYrVcTVIuV9M4aP/4hqJ+zULxxS/In+WEj/tEBsQ+8/wSHo9IDWKQL1FhrLmA== + version "0.176.2" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.176.2.tgz#e04ac9f766ea9491fd515c84a82ef360e3a0c659" + integrity sha512-unqoh60i18C67h2rvK0SCFUBac/waUcx7CF1a5E4D0Cwj1NErTP42RF7yb7+dy25Tpyzt7uwVtXw13Wr17VzWA== flush-write-stream@^2.0.0: version "2.0.0" @@ -9175,10 +9182,10 @@ fs-constants@^1.0.0: resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== -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.0.1, 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" @@ -9248,6 +9255,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 sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== +functions-have-names@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.2.tgz#98d93991c39da9361f8e50b337c4f6e41f120e21" + integrity sha512-bLgc3asbWdwPbx2mNk2S49kmJCuQeu0nfmaOgbs8WIyzzkw3r4htszdIi9Q9EMezDPTYuJx2wvjZ/EwgAthpnA== + fuzzy@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/fuzzy/-/fuzzy-0.1.3.tgz#4c76ec2ff0ac1a36a9dccf9a00df8623078d4ed8" @@ -9813,6 +9825,13 @@ has-own-prop@^2.0.0: resolved "https://registry.yarnpkg.com/has-own-prop/-/has-own-prop-2.0.0.tgz#f0f95d58f65804f5d218db32563bb85b8e0417af" integrity sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ== +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-symbol-support-x@^1.4.1: version "1.4.2" resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" @@ -10124,7 +10143,7 @@ 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, html-tags@^3.2.0: +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== @@ -10269,9 +10288,9 @@ http-signature@~1.2.0: sshpk "^1.7.0" https-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" - integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== dependencies: agent-base "6" debug "4" @@ -10956,7 +10975,7 @@ 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: +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== @@ -12074,10 +12093,10 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -lint-staged@^12.3.7: - version "12.3.7" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-12.3.7.tgz#ad0e2014302f704f9cf2c0ebdb97ac63d0f17be0" - integrity sha512-/S4D726e2GIsDVWIk1XGvheCaDm1SJRQp8efamZFWJxQMVEbOwSysp7xb49Oo73KYCdy97mIWinhlxcoNqIfIQ== +lint-staged@^12.3.8: + version "12.3.8" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-12.3.8.tgz#ee3fe2e16c9d76f99d8348072900b017d6d76901" + integrity sha512-0+UpNaqIwKRSGAFOCcpuYNIv/j5QGVC+xUVvmSdxHO+IfIGoHbFLo3XcPmV/LLnsVj5EAncNHVtlITSoY5qWGQ== dependencies: cli-truncate "^3.1.0" colorette "^2.0.16" @@ -12178,9 +12197,9 @@ load-json-file@^6.2.0: type-fest "^0.6.0" 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== + 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" @@ -12532,11 +12551,6 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -lru-cache@^7.4.0: - version "7.8.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.8.0.tgz#649aaeb294a56297b5cbc5d70f198dcc5ebe5747" - integrity sha512-AmXqneQZL3KZMIgBpaPTeI6pfwh+xQ2vutMsyqOu1TBdEXFZgpG/80wuJ531w2ZN7TI0/oc8CPxzh/DKQudZqg== - luxon@^1.28.0: version "1.28.0" resolved "https://registry.yarnpkg.com/luxon/-/luxon-1.28.0.tgz#e7f96daad3938c06a62de0fb027115d251251fbf" @@ -13258,12 +13272,12 @@ nested-error-stacks@^2.0.0, nested-error-stacks@^2.1.0: resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.1.1.tgz#26c8a3cee6cc05fbcf1e333cd2fc3e003326c0b5" integrity sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw== -netlify-cli@^9.16.4: - version "9.16.4" - resolved "https://registry.yarnpkg.com/netlify-cli/-/netlify-cli-9.16.4.tgz#69f43a4b52442c6457d1cc62325873bf1581d1fb" - integrity sha512-sTIo3GpwnxFl23xNBLTfqRGcboOt/RKLFPUwUVhQjf6wzk6vLpFjmqHgN9sBx9y/m2E6m8UZ5PZ69m4Hb8z96A== +netlify-cli@^9.16.6: + version "9.16.6" + resolved "https://registry.yarnpkg.com/netlify-cli/-/netlify-cli-9.16.6.tgz#66521c21c8a79cdfedd807416983f9403086415b" + integrity sha512-JXi/ei/E0fHKf5ThtPfqxiV3lD+k/k+/iKtcrMki9rCLWW8MZwO/VvM7mfCOpx77+gRHvgwumrb7yaFwYW48DQ== dependencies: - "@netlify/build" "^26.5.2" + "@netlify/build" "^26.5.3" "@netlify/config" "^17.0.20" "@netlify/framework-info" "^9.0.2" "@netlify/local-functions-proxy" "^1.1.1" @@ -13556,9 +13570,9 @@ node-pre-gyp@^0.13.0: tar "^4" 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== + version "2.0.3" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.3.tgz#225ee7488e4a5e636da8da52854844f9d716ca96" + integrity sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw== node-source-walk@^4.0.0, node-source-walk@^4.2.0, node-source-walk@^4.2.2: version "4.3.0" @@ -13882,7 +13896,7 @@ object-inspect@^1.12.0, object-inspect@^1.9.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== @@ -14976,7 +14990,7 @@ 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: +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== @@ -15442,10 +15456,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" @@ -15466,7 +15480,7 @@ 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" @@ -15488,20 +15502,20 @@ react-error-boundary@^3.1.0: dependencies: "@babel/runtime" "^7.12.5" -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.0.1, 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" @@ -15561,7 +15575,7 @@ react-loadable-ssr-addon-v5-slorber@^1.0.1: react-medium-image-zoom@^4.3.7: version "4.3.7" - resolved "https://registry.npmmirror.com/react-medium-image-zoom/-/react-medium-image-zoom-4.3.7.tgz#06c0771401c6de312a85843d1feebd15641a969b" + resolved "https://registry.yarnpkg.com/react-medium-image-zoom/-/react-medium-image-zoom-4.3.7.tgz#06c0771401c6de312a85843d1feebd15641a969b" integrity sha512-Vg1M8CIX1EfhfSsmNc2tHP+8KjPDo9e5/zEDaSsfeTBHI82wjEvW3Lgb4k3jdWILPZVOWhM+7QHyDaAzghlvaQ== dependencies: focus-options-polyfill "1.2.0" @@ -15956,12 +15970,13 @@ regexp-ast-analysis@^0.3.0: regexpp "^3.2.0" regexp.prototype.flags@^1.4.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== + 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" @@ -16432,9 +16447,9 @@ rollup-pluginutils@^2.8.1, rollup-pluginutils@^2.8.2: estree-walker "^0.6.1" rollup@^2.23.1, rollup@^2.43.1: - version "2.70.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.70.1.tgz#824b1f1f879ea396db30b0fc3ae8d2fead93523e" - integrity sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA== + version "2.70.2" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.70.2.tgz#808d206a8851628a065097b7ba2053bd83ba0c0d" + integrity sha512-EitogNZnfku65I1DD5Mxe8JYRUCy0hkK5X84IlDtUs+O6JRMpRciXTzyCUuX11b5L5pvjH+OmFXiQ3XjabcXgg== optionalDependencies: fsevents "~2.3.2" @@ -16638,12 +16653,12 @@ 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.0.0, semver@^7.1.1, semver@^7.1.3, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.6: - version "7.3.6" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.6.tgz#5d73886fb9c0c6602e79440b97165c29581cbb2b" - integrity sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w== +semver@^7.0.0, semver@^7.1.1, semver@^7.1.3, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.6, 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 "^7.4.0" + lru-cache "^6.0.0" send@0.17.2: version "0.17.2" @@ -17296,9 +17311,9 @@ statuses@2.0.1: integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== 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== strict-uri-encode@^1.0.0: version "1.1.0" @@ -17579,10 +17594,10 @@ stylelint-config-standard@^25.0.0: dependencies: stylelint-config-recommended "^7.0.0" -stylelint@^14.6.1: - version "14.6.1" - resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.6.1.tgz#aff137b0254515fc36b91921d88a3eb2edc194bf" - integrity sha512-FfNdvZUZdzh9KDQxDnO7Opp+prKh8OQVuSW8S13cBtxrooCbm6J6royhUeb++53WPMt04VB+ZbOz/QmzAijs6Q== +stylelint@^14.6.1, stylelint@^14.7.0: + version "14.7.0" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.7.0.tgz#f2c4457a63ba813d72856818ab7d4141d2bdd6ab" + integrity sha512-vAVPAYaHhcexOiuvym0S64UWIIonMKgYz1Eh+SZgXKkKFLL+wwBzzWGH7Bdnk/HLyH3KlrX+tlisFdEG8ik+Lw== dependencies: balanced-match "^2.0.0" colord "^2.9.2" @@ -17597,7 +17612,7 @@ stylelint@^14.6.1: 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" @@ -17605,7 +17620,7 @@ stylelint@^14.6.1: known-css-properties "^0.24.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" @@ -17613,7 +17628,7 @@ stylelint@^14.6.1: 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" @@ -17703,12 +17718,10 @@ svgo@^2.5.0, svgo@^2.7.0: picocolors "^1.0.0" stable "^0.1.8" -swc-loader@^0.1.15: - version "0.1.15" - resolved "https://registry.yarnpkg.com/swc-loader/-/swc-loader-0.1.15.tgz#cb9c630ccfbb46dabc5aebc5560cced658e32992" - integrity sha512-cn1WPIeQJvXM4bbo3OwdEIapsQ4uUGOfyFj0h2+2+brT0k76DCGnZXDE2KmcqTd2JSQ+b61z2NPMib7eEwMYYw== - dependencies: - loader-utils "^2.0.0" +swc-loader@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/swc-loader/-/swc-loader-0.2.0.tgz#c26621f9fdeb5e28ba4a8ec19e25b1f3d03791c6" + integrity sha512-HefatIgiOaAekVcUPwT5hRNrWF3nULGv5nqGuXeHR7wz1HNN/VGlgmJE830yhIA7X3dHPln4yUTPnZ3ws7B5Fg== symbol-observable@^1.1.0: version "1.2.0" @@ -18381,9 +18394,9 @@ ua-parser-js@^0.7.30: integrity sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ== uglify-js@^3.1.4: - version "3.15.3" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.15.3.tgz#9aa82ca22419ba4c0137642ba0df800cb06e0471" - integrity sha512-6iCVm2omGJbsu3JWac+p6kUiOpg3wFO2f8lIXjfEb8RrmLjzog1wTPMmwKB7swfzzqxj9YM+sGUM++u1qN4qJg== + version "3.15.4" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.15.4.tgz#fa95c257e88f85614915b906204b9623d4fa340d" + integrity sha512-vMOPGDuvXecPs34V74qDKk4iJ/SN4vL3Ow/23ixafENYvtrNvtbcgUeugTcUGRGsOF/5fU8/NYSL5Hyb3l1OJA== uid-number@0.0.6: version "0.0.6" @@ -19331,25 +19344,25 @@ wordwrap@^1.0.0: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== -workbox-background-sync@6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-6.5.2.tgz#28be9bf89b8e4e0379d45903280c7c12f4df836f" - integrity sha512-EjG37LSMDJ1TFlFg56wx6YXbH4/NkG09B9OHvyxx+cGl2gP5OuOzsCY3rOPJSpbcz6jpuA40VIC3HzSD4OvE1g== +workbox-background-sync@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-6.5.3.tgz#7c66c1836aeca6f3762dc48d17a1852a33b3168c" + integrity sha512-0DD/V05FAcek6tWv9XYj2w5T/plxhDSpclIcAGjA/b7t/6PdaRkQ7ZgtAX6Q/L7kV7wZ8uYRJUoH11VjNipMZw== dependencies: idb "^6.1.4" - workbox-core "6.5.2" + workbox-core "6.5.3" -workbox-broadcast-update@6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-6.5.2.tgz#b1f32bb40a9dcb5b05ca27e09fb7c01a0a126182" - integrity sha512-DjJYraYnprTZE/AQNoeogaxI1dPuYmbw+ZJeeP8uXBSbg9SNv5wLYofQgywXeRepv4yr/vglMo9yaHUmBMc+4Q== +workbox-broadcast-update@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-6.5.3.tgz#fc2ad79cf507e22950cda9baf1e9a0ccc43f31bc" + integrity sha512-4AwCIA5DiDrYhlN+Miv/fp5T3/whNmSL+KqhTwRBTZIL6pvTgE4lVuRzAt1JltmqyMcQ3SEfCdfxczuI4kwFQg== dependencies: - workbox-core "6.5.2" + workbox-core "6.5.3" -workbox-build@^6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-6.5.2.tgz#774faafd84b1dc94b74739ceb5d8ff367748523b" - integrity sha512-TVi4Otf6fgwikBeMpXF9n0awHfZTMNu/nwlMIT9W+c13yvxkmDFMPb7vHYK6RUmbcxwPnz4I/R+uL76+JxG4JQ== +workbox-build@^6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-6.5.3.tgz#38e3f286d63d2745bff4d1478bb3a6ab5c8b1170" + integrity sha512-8JNHHS7u13nhwIYCDea9MNXBNPHXCs5KDZPKI/ZNTr3f4sMGoD7hgFGecbyjX1gw4z6e9bMpMsOEJNyH5htA/w== dependencies: "@apideck/better-ajv-errors" "^0.3.1" "@babel/core" "^7.11.1" @@ -19373,121 +19386,121 @@ workbox-build@^6.5.2: strip-comments "^2.0.1" tempy "^0.6.0" upath "^1.2.0" - workbox-background-sync "6.5.2" - workbox-broadcast-update "6.5.2" - workbox-cacheable-response "6.5.2" - workbox-core "6.5.2" - workbox-expiration "6.5.2" - workbox-google-analytics "6.5.2" - workbox-navigation-preload "6.5.2" - workbox-precaching "6.5.2" - workbox-range-requests "6.5.2" - workbox-recipes "6.5.2" - workbox-routing "6.5.2" - workbox-strategies "6.5.2" - workbox-streams "6.5.2" - workbox-sw "6.5.2" - workbox-window "6.5.2" - -workbox-cacheable-response@6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-6.5.2.tgz#d9252eb99f0d0fceb70f63866172f4eaac56a3e8" - integrity sha512-UnHGih6xqloV808T7ve1iNKZMbpML0jGLqkkmyXkJbZc5j16+HRSV61Qrh+tiq3E3yLvFMGJ3AUBODOPNLWpTg== + workbox-background-sync "6.5.3" + workbox-broadcast-update "6.5.3" + workbox-cacheable-response "6.5.3" + workbox-core "6.5.3" + workbox-expiration "6.5.3" + workbox-google-analytics "6.5.3" + workbox-navigation-preload "6.5.3" + workbox-precaching "6.5.3" + workbox-range-requests "6.5.3" + workbox-recipes "6.5.3" + workbox-routing "6.5.3" + workbox-strategies "6.5.3" + workbox-streams "6.5.3" + workbox-sw "6.5.3" + workbox-window "6.5.3" + +workbox-cacheable-response@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-6.5.3.tgz#b1f8c2bc599a7be8f7e3c262535629c558738e47" + integrity sha512-6JE/Zm05hNasHzzAGKDkqqgYtZZL2H06ic2GxuRLStA4S/rHUfm2mnLFFXuHAaGR1XuuYyVCEey1M6H3PdZ7SQ== dependencies: - workbox-core "6.5.2" + workbox-core "6.5.3" -workbox-core@6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.5.2.tgz#f5e06a22c6cb4651d3e13107443d972fdbd47364" - integrity sha512-IlxLGQf+wJHCR+NM0UWqDh4xe/Gu6sg2i4tfZk6WIij34IVk9BdOQgi6WvqSHd879jbQIUgL2fBdJUJyAP5ypQ== +workbox-core@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.5.3.tgz#bca038a9ef0d7a634a6db2a60f45313ed22ac249" + integrity sha512-Bb9ey5n/M9x+l3fBTlLpHt9ASTzgSGj6vxni7pY72ilB/Pb3XtN+cZ9yueboVhD5+9cNQrC9n/E1fSrqWsUz7Q== -workbox-expiration@6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-6.5.2.tgz#ee6ed755a220a0b375d67831f9237e4dcbccb59c" - integrity sha512-5Hfp0uxTZJrgTiy9W7AjIIec+9uTOtnxY/tRBm4DbqcWKaWbVTa+izrKzzOT4MXRJJIJUmvRhWw4oo8tpmMouw== +workbox-expiration@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-6.5.3.tgz#efc0811f371a2ede1052b9de1c4f072b71d50503" + integrity sha512-jzYopYR1zD04ZMdlbn/R2Ik6ixiXbi15c9iX5H8CTi6RPDz7uhvMLZPKEndZTpfgmUk8mdmT9Vx/AhbuCl5Sqw== dependencies: idb "^6.1.4" - workbox-core "6.5.2" + workbox-core "6.5.3" -workbox-google-analytics@6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-6.5.2.tgz#a79fa7a40824873baaa333dcd72d1fdf1c53adf5" - integrity sha512-8SMar+N0xIreP5/2we3dwtN1FUmTMScoopL86aKdXBpio8vXc8Oqb5fCJG32ialjN8BAOzDqx/FnGeCtkIlyvw== +workbox-google-analytics@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-6.5.3.tgz#cc8c3a61f449131660a4ed2f5362d9a3599b18fe" + integrity sha512-3GLCHotz5umoRSb4aNQeTbILETcrTVEozSfLhHSBaegHs1PnqCmN0zbIy2TjTpph2AGXiNwDrWGF0AN+UgDNTw== dependencies: - workbox-background-sync "6.5.2" - workbox-core "6.5.2" - workbox-routing "6.5.2" - workbox-strategies "6.5.2" + workbox-background-sync "6.5.3" + workbox-core "6.5.3" + workbox-routing "6.5.3" + workbox-strategies "6.5.3" -workbox-navigation-preload@6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-6.5.2.tgz#ffb3d9d5cdb881a3824851707da221dbb0bb3f23" - integrity sha512-iqDNWWMswjCsZuvGFDpcX1Z8InBVAlVBELJ28xShsWWntALzbtr0PXMnm2WHkXCc56JimmGldZi1N5yDPiTPOg== +workbox-navigation-preload@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-6.5.3.tgz#81b74f598b11aa07e2cf1c21af7a826a4f0f70b3" + integrity sha512-bK1gDFTc5iu6lH3UQ07QVo+0ovErhRNGvJJO/1ngknT0UQ702nmOUhoN9qE5mhuQSrnK+cqu7O7xeaJ+Rd9Tmg== dependencies: - workbox-core "6.5.2" + workbox-core "6.5.3" -workbox-precaching@6.5.2, workbox-precaching@^6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-6.5.2.tgz#a3117b4d3eb61ce8d01b9dfc063c48155bd7f9d3" - integrity sha512-OZAlQ8AAT20KugGKKuJMHdQ8X1IyNQaLv+mPTHj+8Dmv8peBq5uWNzs4g/1OSFmXsbXZ6a1CBC6YtQWVPhJQ9w== +workbox-precaching@6.5.3, workbox-precaching@^6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-6.5.3.tgz#c870312b2ef901d790ab9e48da084e776c62af47" + integrity sha512-sjNfgNLSsRX5zcc63H/ar/hCf+T19fRtTqvWh795gdpghWb5xsfEkecXEvZ8biEi1QD7X/ljtHphdaPvXDygMQ== dependencies: - workbox-core "6.5.2" - workbox-routing "6.5.2" - workbox-strategies "6.5.2" + workbox-core "6.5.3" + workbox-routing "6.5.3" + workbox-strategies "6.5.3" -workbox-range-requests@6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-6.5.2.tgz#b8b7e5b5830fecc22f0a1d8815457921df2e5bf9" - integrity sha512-zi5VqF1mWqfCyJLTMXn1EuH/E6nisqWDK1VmOJ+TnjxGttaQrseOhMn+BMvULFHeF8AvrQ0ogfQ6bSv0rcfAlg== +workbox-range-requests@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-6.5.3.tgz#e624ac82ff266a5e4f236d055797def07949d941" + integrity sha512-pGCP80Bpn/0Q0MQsfETSfmtXsQcu3M2QCJwSFuJ6cDp8s2XmbUXkzbuQhCUzKR86ZH2Vex/VUjb2UaZBGamijA== dependencies: - workbox-core "6.5.2" + workbox-core "6.5.3" -workbox-recipes@6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/workbox-recipes/-/workbox-recipes-6.5.2.tgz#19f47ec25a8788c65d0cc8d217cbebc0bbbb5c63" - integrity sha512-2lcUKMYDiJKvuvRotOxLjH2z9K7jhj8GNUaHxHNkJYbTCUN3LsX1cWrsgeJFDZ/LgI565t3fntpbG9J415ZBXA== +workbox-recipes@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-recipes/-/workbox-recipes-6.5.3.tgz#15beac9d8ae7a3a1c100218094a824b4dd3fd59a" + integrity sha512-IcgiKYmbGiDvvf3PMSEtmwqxwfQ5zwI7OZPio3GWu4PfehA8jI8JHI3KZj+PCfRiUPZhjQHJ3v1HbNs+SiSkig== dependencies: - workbox-cacheable-response "6.5.2" - workbox-core "6.5.2" - workbox-expiration "6.5.2" - workbox-precaching "6.5.2" - workbox-routing "6.5.2" - workbox-strategies "6.5.2" + workbox-cacheable-response "6.5.3" + workbox-core "6.5.3" + workbox-expiration "6.5.3" + workbox-precaching "6.5.3" + workbox-routing "6.5.3" + workbox-strategies "6.5.3" -workbox-routing@6.5.2, workbox-routing@^6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.5.2.tgz#e0ad46246ba51224fd57eff0dd46891b3220cb9a" - integrity sha512-nR1w5PjF6IVwo0SX3oE88LhmGFmTnqqU7zpGJQQPZiKJfEKgDENQIM9mh3L1ksdFd9Y3CZVkusopHfxQvit/BA== +workbox-routing@6.5.3, workbox-routing@^6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.5.3.tgz#a0a699d8cc90b5692bd3df24679acbbda3913777" + integrity sha512-DFjxcuRAJjjt4T34RbMm3MCn+xnd36UT/2RfPRfa8VWJGItGJIn7tG+GwVTdHmvE54i/QmVTJepyAGWtoLPTmg== dependencies: - workbox-core "6.5.2" + workbox-core "6.5.3" -workbox-strategies@6.5.2, workbox-strategies@^6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.5.2.tgz#56b02e6959c6391351011fc2e5b0829aff1ed859" - integrity sha512-fgbwaUMxbG39BHjJIs2y2X21C0bmf1Oq3vMQxJ1hr6y5JMJIm8rvKCcf1EIdAr+PjKdSk4ddmgyBQ4oO8be4Uw== +workbox-strategies@6.5.3, workbox-strategies@^6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.5.3.tgz#4bea9a48fee16cf43766e0d8138296773c8a9783" + integrity sha512-MgmGRrDVXs7rtSCcetZgkSZyMpRGw8HqL2aguszOc3nUmzGZsT238z/NN9ZouCxSzDu3PQ3ZSKmovAacaIhu1w== dependencies: - workbox-core "6.5.2" + workbox-core "6.5.3" -workbox-streams@6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-6.5.2.tgz#2fb6ba307f7d2cbda63f64522a197be868b4ea25" - integrity sha512-ovD0P4UrgPtZ2Lfc/8E8teb1RqNOSZr+1ZPqLR6sGRZnKZviqKbQC3zVvvkhmOIwhWbpL7bQlWveLVONHjxd5w== +workbox-streams@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-6.5.3.tgz#b6860290031caa7d0e46ad7142315c94359c780b" + integrity sha512-vN4Qi8o+b7zj1FDVNZ+PlmAcy1sBoV7SC956uhqYvZ9Sg1fViSbOpydULOssVJ4tOyKRifH/eoi6h99d+sJ33w== dependencies: - workbox-core "6.5.2" - workbox-routing "6.5.2" + workbox-core "6.5.3" + workbox-routing "6.5.3" -workbox-sw@6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-6.5.2.tgz#2f5dca0e96c61a450fccf0405095ddf1b6f43bc7" - integrity sha512-2KhlYqtkoqlnPdllj2ujXUKRuEFsRDIp6rdE4l1PsxiFHRAFaRTisRQpGvRem5yxgXEr+fcEKiuZUW2r70KZaw== +workbox-sw@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-6.5.3.tgz#cd2f0c086f4496acd25774ed02c48504189bebdd" + integrity sha512-BQBzm092w+NqdIEF2yhl32dERt9j9MDGUTa2Eaa+o3YKL4Qqw55W9yQC6f44FdAHdAJrJvp0t+HVrfh8AiGj8A== -workbox-window@6.5.2, workbox-window@^6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.5.2.tgz#46d6412cd57039bdf3d5dd914ad21fb3f98fe980" - integrity sha512-2kZH37r9Wx8swjEOL4B8uGM53lakMxsKkQ7mOKzGA/QAn/DQTEZGrdHWtypk2tbhKY5S0jvPS+sYDnb2Z3378A== +workbox-window@6.5.3, workbox-window@^6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.5.3.tgz#4ade70056cb73477ef1cd8fea7cfd0ecbd825c7f" + integrity sha512-GnJbx1kcKXDtoJBVZs/P7ddP0Yt52NNy4nocjBpYPiRhMqTpJCNrSL+fGHZ/i/oP6p/vhE8II0sA6AZGKGnssw== dependencies: "@types/trusted-types" "^2.0.2" - workbox-core "6.5.2" + workbox-core "6.5.3" wrap-ansi@^3.0.1: version "3.0.1" @@ -19675,9 +19688,9 @@ yargs@^16.0.0, yargs@^16.2.0: yargs-parser "^20.2.2" yargs@^17.1.0, yargs@^17.3.1: - version "17.4.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.4.0.tgz#9fc9efc96bd3aa2c1240446af28499f0e7593d00" - integrity sha512-WJudfrk81yWFSOkZYpAZx4Nt7V4xp7S/uJkX0CnxovMCt1wCE8LNftPpNuF9X/u9gN5nsD7ycYtRcDf2pL3UiA== + version "17.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.4.1.tgz#ebe23284207bb75cee7c408c33e722bfb27b5284" + integrity sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g== dependencies: cliui "^7.0.2" escalade "^3.1.1" From 7f06857e462359335cac37904d7ce7930b45f62e Mon Sep 17 00:00:00 2001 From: Joshua Chen Date: Sun, 17 Apr 2022 23:44:20 +0800 Subject: [PATCH 07/13] fix: fix a lot of declaration semantic errors (#7194) --- packages/docusaurus-mdx-loader/src/deps.d.ts | 8 +- .../src/feed.ts | 82 +++++++++---------- .../src/deps.d.ts | 3 +- .../docusaurus-plugin-pwa/src/plugin-pwa.d.ts | 2 +- .../src/types.d.ts | 3 +- packages/docusaurus/src/commands/build.ts | 2 +- packages/docusaurus/src/commands/deploy.ts | 2 +- packages/docusaurus/src/deps.d.ts | 25 +++--- 8 files changed, 64 insertions(+), 63 deletions(-) diff --git a/packages/docusaurus-mdx-loader/src/deps.d.ts b/packages/docusaurus-mdx-loader/src/deps.d.ts index 510bfc74e092..d27fd5334b9e 100644 --- a/packages/docusaurus-mdx-loader/src/deps.d.ts +++ b/packages/docusaurus-mdx-loader/src/deps.d.ts @@ -8,14 +8,14 @@ // 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 {MDXPlugin} from '@docusaurus/mdx-loader'; export type Options = { filepath?: string; skipExport?: boolean; wrapExport?: string; - remarkPlugins?: RemarkOrRehypePlugin[]; - rehypePlugins?: RemarkOrRehypePlugin[]; + remarkPlugins?: MDXPlugin[]; + rehypePlugins?: MDXPlugin[]; }; export function sync(content: string, options?: Options): string; @@ -23,6 +23,6 @@ declare module '@mdx-js/mdx' { export function createCompiler(options?: Options): Processor; export default function mdx( content: string, - options?: mdx.Options, + options?: Options, ): Promise; } diff --git a/packages/docusaurus-plugin-content-blog/src/feed.ts b/packages/docusaurus-plugin-content-blog/src/feed.ts index fa546fbf0f18..af453979243c 100644 --- a/packages/docusaurus-plugin-content-blog/src/feed.ts +++ b/packages/docusaurus-plugin-content-blog/src/feed.ts @@ -7,11 +7,7 @@ import {Feed, type Author as FeedAuthor, type Item as FeedItem} from 'feed'; import type {BlogPost} from './types'; -import { - normalizeUrl, - mapAsyncSequential, - readOutputHTMLFile, -} from '@docusaurus/utils'; +import {normalizeUrl, readOutputHTMLFile} from '@docusaurus/utils'; import {load as cheerioLoad} from 'cheerio'; import type {DocusaurusConfig} from '@docusaurus/types'; import path from 'path'; @@ -61,46 +57,48 @@ async function generateBlogFeed({ return {name: author.name, link: author.url, email: author.email}; } - await mapAsyncSequential(blogPosts, async (post) => { - const { - id, - metadata: { + await Promise.all( + blogPosts.map(async (post) => { + const { + id, + metadata: { + title: metadataTitle, + permalink, + date, + description, + authors, + tags, + }, + } = post; + + const content = await readOutputHTMLFile( + permalink.replace(siteConfig.baseUrl, ''), + outDir, + siteConfig.trailingSlash, + ); + const $ = cheerioLoad(content); + + const feedItem: FeedItem = { title: metadataTitle, - permalink, + id, + link: normalizeUrl([siteUrl, permalink]), date, description, - authors, - tags, - }, - } = post; - - const content = await readOutputHTMLFile( - permalink.replace(siteConfig.baseUrl, ''), - outDir, - siteConfig.trailingSlash, - ); - const $ = cheerioLoad(content); - - const feedItem: FeedItem = { - title: metadataTitle, - id, - link: normalizeUrl([siteUrl, permalink]), - date, - description, - // Atom feed demands the "term", while other feeds use "name" - category: tags.map((tag) => ({name: tag.label, term: tag.label})), - content: $(`#${blogPostContainerID}`).html()!, - }; - - // json1() method takes the first item of authors array - // it causes an error when authors array is empty - const feedItemAuthors = authors.map(toFeedAuthor); - if (feedItemAuthors.length > 0) { - feedItem.author = feedItemAuthors; - } - - feed.addItem(feedItem); - }); + // Atom feed demands the "term", while other feeds use "name" + category: tags.map((tag) => ({name: tag.label, term: tag.label})), + content: $(`#${blogPostContainerID}`).html()!, + }; + + // json1() method takes the first item of authors array + // it causes an error when authors array is empty + const feedItemAuthors = authors.map(toFeedAuthor); + if (feedItemAuthors.length > 0) { + feedItem.author = feedItemAuthors; + } + + return feedItem; + }), + ).then((items) => items.forEach(feed.addItem)); return feed; } diff --git a/packages/docusaurus-plugin-ideal-image/src/deps.d.ts b/packages/docusaurus-plugin-ideal-image/src/deps.d.ts index 839a35fac984..f5a6da75b378 100644 --- a/packages/docusaurus-plugin-ideal-image/src/deps.d.ts +++ b/packages/docusaurus-plugin-ideal-image/src/deps.d.ts @@ -42,7 +42,8 @@ declare module '@endiliey/react-ideal-image' { type ThemeKey = 'placeholder' | 'img' | 'icon' | 'noscript'; - export interface ImageProps extends ComponentProps<'img'> { + export interface ImageProps + extends Omit, 'srcSet' | 'placeholder'> { /** * This function decides what icon to show based on the current state of the * component. diff --git a/packages/docusaurus-plugin-pwa/src/plugin-pwa.d.ts b/packages/docusaurus-plugin-pwa/src/plugin-pwa.d.ts index 51cdf63f2c7a..9633e9e4e43a 100644 --- a/packages/docusaurus-plugin-pwa/src/plugin-pwa.d.ts +++ b/packages/docusaurus-plugin-pwa/src/plugin-pwa.d.ts @@ -66,7 +66,7 @@ declare module '@docusaurus/plugin-pwa' { tagName: string; href?: string; content?: string; - [attributeName: string]: string | boolean; + [attributeName: string]: string | boolean | undefined; }[]; /** * Useful for additional Workbox rules. You can do whatever a service worker diff --git a/packages/docusaurus-theme-live-codeblock/src/types.d.ts b/packages/docusaurus-theme-live-codeblock/src/types.d.ts index 9ae9bb21cef3..47200c50ab58 100644 --- a/packages/docusaurus-theme-live-codeblock/src/types.d.ts +++ b/packages/docusaurus-theme-live-codeblock/src/types.d.ts @@ -9,7 +9,8 @@ /// declare module '@theme-init/CodeBlock' { - import type CodeBlock, {Props as BaseProps} from '@theme/CodeBlock'; + import type CodeBlock from '@theme/CodeBlock'; + import type {Props as BaseProps} from '@theme/CodeBlock'; export interface Props extends BaseProps { live?: boolean; diff --git a/packages/docusaurus/src/commands/build.ts b/packages/docusaurus/src/commands/build.ts index 98f7d2bf85fc..8c211c225fba 100644 --- a/packages/docusaurus/src/commands/build.ts +++ b/packages/docusaurus/src/commands/build.ts @@ -145,7 +145,7 @@ async function buildLocale({ new ReactLoadableSSRAddon({ filename: clientManifestPath, }), - ].filter(Boolean), + ].filter((x: T | undefined | false): x is T => Boolean(x)), }, ); diff --git a/packages/docusaurus/src/commands/deploy.ts b/packages/docusaurus/src/commands/deploy.ts index a632fe245be8..2382c696a889 100644 --- a/packages/docusaurus/src/commands/deploy.ts +++ b/packages/docusaurus/src/commands/deploy.ts @@ -236,7 +236,7 @@ You can also set the deploymentBranch property in docusaurus.config.js .`); if (!cliOptions.skipBuild) { // Build site, then push to deploymentBranch branch of specified repo. try { - await runDeploy(await build(siteDir, cliOptions, false)); + await build(siteDir, cliOptions, false).then(runDeploy); } catch (err) { logger.error('Deployment of the build output failed.'); throw err; diff --git a/packages/docusaurus/src/deps.d.ts b/packages/docusaurus/src/deps.d.ts index fe48ab85493b..c2dc3ccd1fd4 100644 --- a/packages/docusaurus/src/deps.d.ts +++ b/packages/docusaurus/src/deps.d.ts @@ -8,6 +8,8 @@ declare module 'remark-admonitions'; declare module 'react-loadable-ssr-addon-v5-slorber' { + import type {WebpackPluginInstance, Compiler} from 'webpack'; + type Asset = { file: string; hash: string; @@ -26,15 +28,14 @@ declare module 'react-loadable-ssr-addon-v5-slorber' { modulesToBeLoaded: string[], ): {js: Asset[]; css: Asset[]}; - type ReactLoadableSSRAddon = { - new (props: {filename: string}); - }; - - const plugin: ReactLoadableSSRAddon; - export default plugin; + export default class ReactLoadableSSRAddon implements WebpackPluginInstance { + constructor(props: {filename: string}); + apply(compiler: Compiler): void; + } } declare module '@slorber/static-site-generator-webpack-plugin' { + import type {WebpackPluginInstance, Compiler} from 'webpack'; import type {HelmetServerState} from 'react-helmet-async'; export type Locals = { @@ -53,18 +54,18 @@ declare module '@slorber/static-site-generator-webpack-plugin' { noIndex: boolean; }; - type StaticSiteGeneratorPlugin = { - new (props: { + export default class StaticSiteGeneratorPlugin + implements WebpackPluginInstance + { + constructor(props: { entry: string; locals: Locals; paths: string[]; preferFoldersOutput?: boolean; globals: {[key: string]: unknown}; }); - }; - - const plugin: StaticSiteGeneratorPlugin; - export default plugin; + apply(compiler: Compiler): void; + } } declare module 'webpack/lib/HotModuleReplacementPlugin' { From c3f21cd54799022f99601b06736bd1a1459ae563 Mon Sep 17 00:00:00 2001 From: Jeffrey Aven Date: Mon, 18 Apr 2022 18:05:17 +1000 Subject: [PATCH 08/13] docs: update showcase data for Full Stack Chronicles (#7196) * Changed blog name Changed the name and domain for my Docusaurus based blog to fullstackchronicles.io * added new screenshot * updates Co-authored-by: Joshua Chen --- .../showcase/cloudywithachanceofbigdata.png | Bin 28187 -> 0 bytes .../src/data/showcase/fullstackchronicles.png | Bin 0 -> 29179 bytes website/src/data/users.tsx | 9 ++++----- 3 files changed, 4 insertions(+), 5 deletions(-) delete mode 100644 website/src/data/showcase/cloudywithachanceofbigdata.png create mode 100644 website/src/data/showcase/fullstackchronicles.png diff --git a/website/src/data/showcase/cloudywithachanceofbigdata.png b/website/src/data/showcase/cloudywithachanceofbigdata.png deleted file mode 100644 index a9780332d1224c7f491861684b6543337a82eb20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28187 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 Date: Tue, 19 Apr 2022 07:42:23 +0800 Subject: [PATCH 09/13] chore(deps): bump actions/checkout from 3.0.0 to 3.0.1 (#7205) Bumps [actions/checkout](https://github.com/actions/checkout) from 3.0.0 to 3.0.1. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/a12a3943b4bdde767164f792f33f40b04645d846...dcd71f646680f2efd8db4afa5ad64fdcba30e748) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build-blog-only.yml | 2 +- .github/workflows/build-perf.yml | 4 ++-- .github/workflows/canary-release.yml | 2 +- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/dependency-review.yml | 2 +- .github/workflows/lighthouse-report.yml | 2 +- .github/workflows/lint.yml | 2 +- .github/workflows/showcase-test.yml | 2 +- .github/workflows/tests-e2e.yml | 8 ++++---- .github/workflows/tests-swizzle.yml | 2 +- .github/workflows/tests-windows.yml | 2 +- .github/workflows/tests.yml | 2 +- 12 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/workflows/build-blog-only.yml b/.github/workflows/build-blog-only.yml index 5cfe15af0848..0764ba0736d9 100644 --- a/.github/workflows/build-blog-only.yml +++ b/.github/workflows/build-blog-only.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 + uses: actions/checkout@dcd71f646680f2efd8db4afa5ad64fdcba30e748 # v3 - name: Set up Node uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 with: diff --git a/.github/workflows/build-perf.yml b/.github/workflows/build-perf.yml index 785b6cbd4b2b..f7399597bb59 100644 --- a/.github/workflows/build-perf.yml +++ b/.github/workflows/build-perf.yml @@ -27,7 +27,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 + uses: actions/checkout@dcd71f646680f2efd8db4afa5ad64fdcba30e748 # v3 - name: Set up Node uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 with: @@ -48,7 +48,7 @@ jobs: timeout-minutes: 30 runs-on: ubuntu-latest steps: - - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 + - uses: actions/checkout@dcd71f646680f2efd8db4afa5ad64fdcba30e748 # v3 - uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 with: cache: yarn diff --git a/.github/workflows/canary-release.yml b/.github/workflows/canary-release.yml index cb35ef589b02..e2df2cdefd79 100644 --- a/.github/workflows/canary-release.yml +++ b/.github/workflows/canary-release.yml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 + uses: actions/checkout@dcd71f646680f2efd8db4afa5ad64fdcba30e748 # v3 with: fetch-depth: 0 # Needed to get the commit number with "git rev-list --count HEAD" - name: Set up Node diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index f4de6eb44655..e61e7c6ce921 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -27,7 +27,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 + uses: actions/checkout@dcd71f646680f2efd8db4afa5ad64fdcba30e748 # v3 - name: Initialize CodeQL uses: github/codeql-action/init@883476649888a9e8e219d5b2e6b789dc024f690c # v1 diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml index 8f1b96d08058..302303abdd5b 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -9,6 +9,6 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 #v3 + uses: actions/checkout@dcd71f646680f2efd8db4afa5ad64fdcba30e748 #v3 - name: Dependency Review uses: actions/dependency-review-action@3f943b86c9a289f4e632c632695e2e0898d9d67d # v1 diff --git a/.github/workflows/lighthouse-report.yml b/.github/workflows/lighthouse-report.yml index fdef85796630..090edb480859 100644 --- a/.github/workflows/lighthouse-report.yml +++ b/.github/workflows/lighthouse-report.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 + uses: actions/checkout@dcd71f646680f2efd8db4afa5ad64fdcba30e748 # v3 - name: Wait for the Netlify Preview uses: jakepartusch/wait-for-netlify-action@7dcdeb40c6bc3710a8099702a1fa1ce2c5e322a6 # v1 id: netlify diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index e2f19dce1710..7a7cfce77c57 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 + uses: actions/checkout@dcd71f646680f2efd8db4afa5ad64fdcba30e748 # v3 - name: Set up Node uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 with: diff --git a/.github/workflows/showcase-test.yml b/.github/workflows/showcase-test.yml index 0e91d37bf79e..1d360ca16664 100644 --- a/.github/workflows/showcase-test.yml +++ b/.github/workflows/showcase-test.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 + uses: actions/checkout@dcd71f646680f2efd8db4afa5ad64fdcba30e748 # v3 - name: Set up Node uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 with: diff --git a/.github/workflows/tests-e2e.yml b/.github/workflows/tests-e2e.yml index e9b07247a553..34bc78f76f70 100644 --- a/.github/workflows/tests-e2e.yml +++ b/.github/workflows/tests-e2e.yml @@ -25,7 +25,7 @@ jobs: node: ['14', '16', '17'] steps: - name: Checkout - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 + uses: actions/checkout@dcd71f646680f2efd8db4afa5ad64fdcba30e748 # v3 - name: Use Node.js ${{ matrix.node }} uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 with: @@ -64,7 +64,7 @@ jobs: nodeLinker: pnp steps: - name: Checkout - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 + uses: actions/checkout@dcd71f646680f2efd8db4afa5ad64fdcba30e748 # v3 - name: Use Node.js 16 uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 with: @@ -110,7 +110,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 #v3 + uses: actions/checkout@dcd71f646680f2efd8db4afa5ad64fdcba30e748 #v3 - name: Use Node.js 16 uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 with: @@ -140,7 +140,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 #v3 + uses: actions/checkout@dcd71f646680f2efd8db4afa5ad64fdcba30e748 #v3 - name: Use Node.js 16 uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 with: diff --git a/.github/workflows/tests-swizzle.yml b/.github/workflows/tests-swizzle.yml index 2805e26121ac..75fb5f44bc2a 100644 --- a/.github/workflows/tests-swizzle.yml +++ b/.github/workflows/tests-swizzle.yml @@ -21,7 +21,7 @@ jobs: variant: ['js', 'ts'] steps: - name: Checkout - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 + uses: actions/checkout@dcd71f646680f2efd8db4afa5ad64fdcba30e748 # v3 - name: Set up Node uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 with: diff --git a/.github/workflows/tests-windows.yml b/.github/workflows/tests-windows.yml index 56f7922e5d12..5e79ae490da5 100644 --- a/.github/workflows/tests-windows.yml +++ b/.github/workflows/tests-windows.yml @@ -22,7 +22,7 @@ jobs: - name: Support longpaths run: git config --system core.longpaths true - name: Checkout - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 + uses: actions/checkout@dcd71f646680f2efd8db4afa5ad64fdcba30e748 # v3 - name: Use Node.js ${{ matrix.node }} uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 with: diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index d2764dc5e1f4..c450e57a60d1 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -20,7 +20,7 @@ jobs: node: ['14', '16', '17'] steps: - name: Checkout - uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3 + uses: actions/checkout@dcd71f646680f2efd8db4afa5ad64fdcba30e748 # v3 - name: Use Node.js ${{ matrix.node }} uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 with: From d33063dd0f81784d4fba5a81f91fc393eb876a76 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Apr 2022 10:55:14 +0800 Subject: [PATCH 10/13] chore(deps): bump github/codeql-action from 1.1.5 to 2.1.8 (#7202) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 1.1.5 to 2.1.8. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/883476649888a9e8e219d5b2e6b789dc024f690c...1ed1437484560351c5be56cf73a48a279d116b78) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/codeql-analysis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index e61e7c6ce921..c4d2cc1df3cb 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -30,9 +30,9 @@ jobs: uses: actions/checkout@dcd71f646680f2efd8db4afa5ad64fdcba30e748 # v3 - name: Initialize CodeQL - uses: github/codeql-action/init@883476649888a9e8e219d5b2e6b789dc024f690c # v1 + uses: github/codeql-action/init@1ed1437484560351c5be56cf73a48a279d116b78 # v1 with: languages: ${{ matrix.language }} - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@883476649888a9e8e219d5b2e6b789dc024f690c # v1 + uses: github/codeql-action/analyze@1ed1437484560351c5be56cf73a48a279d116b78 # v1 From 64e1045b32fe68adcc59017485311b9e58f828de Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Apr 2022 10:55:36 +0800 Subject: [PATCH 11/13] chore(deps): bump jakepartusch/wait-for-netlify-action from 1.1 to 1.3 (#7203) Bumps [jakepartusch/wait-for-netlify-action](https://github.com/jakepartusch/wait-for-netlify-action) from 1.1 to 1.3. - [Release notes](https://github.com/jakepartusch/wait-for-netlify-action/releases) - [Commits](https://github.com/jakepartusch/wait-for-netlify-action/compare/7dcdeb40c6bc3710a8099702a1fa1ce2c5e322a6...7ccf91c9ba3d64aa4389c0d3adcba0a6e77e5421) --- updated-dependencies: - dependency-name: jakepartusch/wait-for-netlify-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/lighthouse-report.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lighthouse-report.yml b/.github/workflows/lighthouse-report.yml index 090edb480859..cef4ee2beb9c 100644 --- a/.github/workflows/lighthouse-report.yml +++ b/.github/workflows/lighthouse-report.yml @@ -13,7 +13,7 @@ jobs: - name: Checkout uses: actions/checkout@dcd71f646680f2efd8db4afa5ad64fdcba30e748 # v3 - name: Wait for the Netlify Preview - uses: jakepartusch/wait-for-netlify-action@7dcdeb40c6bc3710a8099702a1fa1ce2c5e322a6 # v1 + uses: jakepartusch/wait-for-netlify-action@7ccf91c9ba3d64aa4389c0d3adcba0a6e77e5421 # v1 id: netlify with: site_name: docusaurus-2 From c8d6c7e38685598869863b59f9d05197f8558868 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Apr 2022 10:55:58 +0800 Subject: [PATCH 12/13] chore(deps): bump actions/setup-node from 3.0.0 to 3.1.1 (#7204) Bumps [actions/setup-node](https://github.com/actions/setup-node) from 3.0.0 to 3.1.1. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/9ced9a43a244f3ac94f13bfd896db8c8f30da67a...56337c425554a6be30cdef71bf441f15be286854) --- updated-dependencies: - dependency-name: actions/setup-node dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build-blog-only.yml | 2 +- .github/workflows/build-perf.yml | 4 ++-- .github/workflows/canary-release.yml | 2 +- .github/workflows/lint.yml | 2 +- .github/workflows/showcase-test.yml | 2 +- .github/workflows/tests-e2e.yml | 8 ++++---- .github/workflows/tests-swizzle.yml | 2 +- .github/workflows/tests-windows.yml | 2 +- .github/workflows/tests.yml | 2 +- 9 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build-blog-only.yml b/.github/workflows/build-blog-only.yml index 0764ba0736d9..8c112331e269 100644 --- a/.github/workflows/build-blog-only.yml +++ b/.github/workflows/build-blog-only.yml @@ -19,7 +19,7 @@ jobs: - name: Checkout uses: actions/checkout@dcd71f646680f2efd8db4afa5ad64fdcba30e748 # v3 - name: Set up Node - uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 + uses: actions/setup-node@56337c425554a6be30cdef71bf441f15be286854 # v3 with: node-version: '16' cache: yarn diff --git a/.github/workflows/build-perf.yml b/.github/workflows/build-perf.yml index f7399597bb59..779c41c45788 100644 --- a/.github/workflows/build-perf.yml +++ b/.github/workflows/build-perf.yml @@ -29,7 +29,7 @@ jobs: - name: Checkout uses: actions/checkout@dcd71f646680f2efd8db4afa5ad64fdcba30e748 # v3 - name: Set up Node - uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 + uses: actions/setup-node@56337c425554a6be30cdef71bf441f15be286854 # v3 with: node-version: '16' cache: yarn @@ -49,7 +49,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@dcd71f646680f2efd8db4afa5ad64fdcba30e748 # v3 - - uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 + - uses: actions/setup-node@56337c425554a6be30cdef71bf441f15be286854 # v3 with: cache: yarn - name: Installation diff --git a/.github/workflows/canary-release.yml b/.github/workflows/canary-release.yml index e2df2cdefd79..4711e4d3a4ed 100644 --- a/.github/workflows/canary-release.yml +++ b/.github/workflows/canary-release.yml @@ -20,7 +20,7 @@ jobs: with: fetch-depth: 0 # Needed to get the commit number with "git rev-list --count HEAD" - name: Set up Node - uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 + uses: actions/setup-node@56337c425554a6be30cdef71bf441f15be286854 # v3 with: node-version: '16' cache: yarn diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 7a7cfce77c57..4a614bdc26d3 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -17,7 +17,7 @@ jobs: - name: Checkout uses: actions/checkout@dcd71f646680f2efd8db4afa5ad64fdcba30e748 # v3 - name: Set up Node - uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 + uses: actions/setup-node@56337c425554a6be30cdef71bf441f15be286854 # v3 with: node-version: '16' cache: yarn diff --git a/.github/workflows/showcase-test.yml b/.github/workflows/showcase-test.yml index 1d360ca16664..e51b9561d518 100644 --- a/.github/workflows/showcase-test.yml +++ b/.github/workflows/showcase-test.yml @@ -19,7 +19,7 @@ jobs: - name: Checkout uses: actions/checkout@dcd71f646680f2efd8db4afa5ad64fdcba30e748 # v3 - name: Set up Node - uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 + uses: actions/setup-node@56337c425554a6be30cdef71bf441f15be286854 # v3 with: node-version: '16' cache: yarn diff --git a/.github/workflows/tests-e2e.yml b/.github/workflows/tests-e2e.yml index 34bc78f76f70..b05f8983bef3 100644 --- a/.github/workflows/tests-e2e.yml +++ b/.github/workflows/tests-e2e.yml @@ -27,7 +27,7 @@ jobs: - name: Checkout uses: actions/checkout@dcd71f646680f2efd8db4afa5ad64fdcba30e748 # v3 - name: Use Node.js ${{ matrix.node }} - uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 + uses: actions/setup-node@56337c425554a6be30cdef71bf441f15be286854 # v3 with: node-version: ${{ matrix.node }} cache: yarn @@ -66,7 +66,7 @@ jobs: - name: Checkout uses: actions/checkout@dcd71f646680f2efd8db4afa5ad64fdcba30e748 # v3 - name: Use Node.js 16 - uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 + uses: actions/setup-node@56337c425554a6be30cdef71bf441f15be286854 # v3 with: node-version: '16' cache: yarn @@ -112,7 +112,7 @@ jobs: - name: Checkout uses: actions/checkout@dcd71f646680f2efd8db4afa5ad64fdcba30e748 #v3 - name: Use Node.js 16 - uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 + uses: actions/setup-node@56337c425554a6be30cdef71bf441f15be286854 # v3 with: node-version: '16' cache: yarn @@ -142,7 +142,7 @@ jobs: - name: Checkout uses: actions/checkout@dcd71f646680f2efd8db4afa5ad64fdcba30e748 #v3 - name: Use Node.js 16 - uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 + uses: actions/setup-node@56337c425554a6be30cdef71bf441f15be286854 # v3 with: node-version: '16' cache: yarn diff --git a/.github/workflows/tests-swizzle.yml b/.github/workflows/tests-swizzle.yml index 75fb5f44bc2a..755312a8bbde 100644 --- a/.github/workflows/tests-swizzle.yml +++ b/.github/workflows/tests-swizzle.yml @@ -23,7 +23,7 @@ jobs: - name: Checkout uses: actions/checkout@dcd71f646680f2efd8db4afa5ad64fdcba30e748 # v3 - name: Set up Node - uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 + uses: actions/setup-node@56337c425554a6be30cdef71bf441f15be286854 # v3 with: node-version: '16' cache: yarn diff --git a/.github/workflows/tests-windows.yml b/.github/workflows/tests-windows.yml index 5e79ae490da5..2611bfa5fc02 100644 --- a/.github/workflows/tests-windows.yml +++ b/.github/workflows/tests-windows.yml @@ -24,7 +24,7 @@ jobs: - name: Checkout uses: actions/checkout@dcd71f646680f2efd8db4afa5ad64fdcba30e748 # v3 - name: Use Node.js ${{ matrix.node }} - uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 + uses: actions/setup-node@56337c425554a6be30cdef71bf441f15be286854 # v3 with: node-version: ${{ matrix.node }} - name: Installation diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index c450e57a60d1..42a4f9bb7bb7 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -22,7 +22,7 @@ jobs: - name: Checkout uses: actions/checkout@dcd71f646680f2efd8db4afa5ad64fdcba30e748 # v3 - name: Use Node.js ${{ matrix.node }} - uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3 + uses: actions/setup-node@56337c425554a6be30cdef71bf441f15be286854 # v3 with: node-version: ${{ matrix.node }} cache: yarn From 20f333bb504b1f59693f5c65bffa0fafab2a44da Mon Sep 17 00:00:00 2001 From: Joshua Chen Date: Tue, 19 Apr 2022 22:22:06 +0800 Subject: [PATCH 13/13] docs: remove mention of "template" from README installation (#7208) --- README.md | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 310374e7621a..3aa39767c89f 100644 --- a/README.md +++ b/README.md @@ -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