From a97e495d9f2d96f6454b02fea38a3ae47f097c90 Mon Sep 17 00:00:00 2001 From: Ilija Pavlic Date: Tue, 19 Oct 2021 12:27:46 -0400 Subject: [PATCH 01/26] docs: Add Apex FP to showcase (#5737) --- website/src/data/showcase/apexfp.png | Bin 0 -> 201976 bytes website/src/data/users.tsx | 8 ++++++++ 2 files changed, 8 insertions(+) create mode 100644 website/src/data/showcase/apexfp.png diff --git a/website/src/data/showcase/apexfp.png b/website/src/data/showcase/apexfp.png new file mode 100644 index 0000000000000000000000000000000000000000..dda28003aea85fbc46775b5705ad08b019780891 GIT binary patch literal 201976 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 P00000NkvXXu0mjf>+%>= literal 0 HcmV?d00001 diff --git a/website/src/data/users.tsx b/website/src/data/users.tsx index cf648c34edd8..65b219ea9313 100644 --- a/website/src/data/users.tsx +++ b/website/src/data/users.tsx @@ -202,6 +202,14 @@ const Users: User[] = [ source: 'https://github.com/apache/apisix-website', tags: ['opensource','i18n','large'], }, + { + title: 'Apex FP', + description: 'Functional programming library for Salesforce Apex', + preview: require('./showcase/apexfp.png'), + website: 'https://www.apexfp.org', + source: 'https://github.com/ipavlic/apex-fp/tree/master/website', + tags: ['opensource'], + }, { title: 'AttoBot', description: From 43866b4eb3e07c4418816c55dee286c9b7ae114c Mon Sep 17 00:00:00 2001 From: John Reilly Date: Tue, 19 Oct 2021 19:12:15 +0100 Subject: [PATCH 02/26] chore: fix typos / casing in issue template (#5730) --- .github/ISSUE_TEMPLATE/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 97b691569831..b02d363b105f 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -2,7 +2,7 @@ blank_issues_enabled: false contact_links: - name: 🚀 Feature request url: https://docusaurus.io/feature-requests - about: The Canny board to send us feature requests, vote and measure the interest of users. Useful to submit a featurre request when you have an idea but no concrete api design proposal. + about: The Canny board to send us feature requests, vote and measure the interest of users. Useful to submit a feature request when you have an idea but no concrete API design proposal. - name: ❓ Simple question - Discord chat url: https://discord.gg/docusaurus about: This issue tracker is not for technical support. Please use our Discord chat, and ask the community for help. From ae3596df39fc7c5ed50f4ededc6c5a4774139ba2 Mon Sep 17 00:00:00 2001 From: Joshua Chen Date: Wed, 20 Oct 2021 02:15:11 +0800 Subject: [PATCH 03/26] docs: add h4 into toc on certain pages (#5728) --- website/docs/api/themes/theme-configuration.md | 15 ++++++++------- website/docs/guides/docs/sidebar.md | 1 + website/docs/i18n/i18n-crowdin.mdx | 1 + website/docs/lifecycle-apis.md | 9 +++++---- website/docs/migration/migration-manual.md | 1 + 5 files changed, 16 insertions(+), 11 deletions(-) diff --git a/website/docs/api/themes/theme-configuration.md b/website/docs/api/themes/theme-configuration.md index 572f0b4bc965..72e4dc5f04a5 100644 --- a/website/docs/api/themes/theme-configuration.md +++ b/website/docs/api/themes/theme-configuration.md @@ -2,6 +2,7 @@ id: theme-configuration title: 'Theme configuration' slug: '/api/themes/configuration' +toc_max_heading_level: 4 --- This configuration applies to all [main themes](./overview.md). @@ -251,7 +252,7 @@ module.exports = { The items can have different behaviors based on the `type` field. The sections below will introduce you to all the types of navbar items available. -### Navbar link {#navbar-link} +#### Navbar link {#navbar-link} By default, Navbar items are regular links (internal or external). @@ -306,7 +307,7 @@ module.exports = { }; ``` -### Navbar dropdown {#navbar-dropdown} +#### Navbar dropdown {#navbar-dropdown} Navbar items of the type `dropdown` has the additional `items` field, an inner array of navbar items. @@ -362,7 +363,7 @@ module.exports = { }; ``` -### Navbar doc link {#navbar-doc-link} +#### Navbar doc link {#navbar-doc-link} If you want to link to a specific doc, this special navbar item type will render the link to the doc of the provided `docId`. It will get the class `navbar__link--active` as long as you browse a doc of the same sidebar. @@ -400,7 +401,7 @@ module.exports = { }; ``` -### Navbar docs version dropdown {#navbar-docs-version-dropdown} +#### Navbar docs version dropdown {#navbar-docs-version-dropdown} If you use docs with versioning, this special navbar item type that will render a dropdown with all your site's available versions. @@ -441,7 +442,7 @@ module.exports = { }; ``` -### Navbar docs version {#navbar-docs-version} +#### Navbar docs version {#navbar-docs-version} If you use docs with versioning, this special navbar item type will link to the active/browsed version of your doc (depends on the current URL), and fallback to the latest version. @@ -479,7 +480,7 @@ module.exports = { }; ``` -### Navbar locale dropdown {#navbar-locale-dropdown} +#### Navbar locale dropdown {#navbar-locale-dropdown} If you use the [i18n feature](../../i18n/i18n-introduction.md), this special navbar item type will render a dropdown with all your site's available locales. @@ -522,7 +523,7 @@ module.exports = { }; ``` -### Navbar search {#navbar-search} +#### Navbar search {#navbar-search} If you use the [search](../../search.md), the search bar will be the rightmost element in the navbar. diff --git a/website/docs/guides/docs/sidebar.md b/website/docs/guides/docs/sidebar.md index ac49def5aebb..dfc8c4175bef 100644 --- a/website/docs/guides/docs/sidebar.md +++ b/website/docs/guides/docs/sidebar.md @@ -1,6 +1,7 @@ --- id: sidebar title: Sidebar +toc_max_heading_level: 4 slug: /sidebar --- diff --git a/website/docs/i18n/i18n-crowdin.mdx b/website/docs/i18n/i18n-crowdin.mdx index f1ae9a11cd2a..953372107da5 100644 --- a/website/docs/i18n/i18n-crowdin.mdx +++ b/website/docs/i18n/i18n-crowdin.mdx @@ -2,6 +2,7 @@ id: crowdin title: i18n - Using Crowdin slug: /i18n/crowdin +toc_max_heading_level: 4 --- The i18n system of Docusaurus is **decoupled from any translation software**. diff --git a/website/docs/lifecycle-apis.md b/website/docs/lifecycle-apis.md index c30034b994c7..8dd9d25772bd 100644 --- a/website/docs/lifecycle-apis.md +++ b/website/docs/lifecycle-apis.md @@ -1,6 +1,7 @@ --- id: lifecycle-apis title: Lifecycle APIs +toc_max_heading_level: 4 --- :::caution @@ -162,9 +163,9 @@ Plugins should use the data loaded in `loadContent` and construct the pages/rout ### `actions` {#actions} -`actions` contain two functions: +`actions` contain three functions: -- `addRoute(config: RouteConfig): void` +#### `addRoute(config: RouteConfig): void` Create a route to add to the website. @@ -189,7 +190,7 @@ type Module = | string; ``` -- `createData(name: string, data: any): Promise` +#### `createData(name: string, data: any): Promise` A function to help you create static data (generally json or string), that you can provide to your routes as props. @@ -231,7 +232,7 @@ export default function friendsPlugin(context, options) { } ``` -- `setGlobalData(data: any): void` +#### `setGlobalData(data: any): void` This function permits to create some global plugin data, that can be read from any page, including the pages created by other plugins, and your theme layout. diff --git a/website/docs/migration/migration-manual.md b/website/docs/migration/migration-manual.md index a20d3622fbb3..460e07d5a708 100644 --- a/website/docs/migration/migration-manual.md +++ b/website/docs/migration/migration-manual.md @@ -2,6 +2,7 @@ id: migration-manual title: Manual migration slug: /migration/manual +toc_max_heading_level: 4 --- This manual migration process should be run after the [automated migration process](./migration-automated.md), to complete the missing parts, or debug issues in the migration CLI output. From 74675a3e9c9c8d1d872fa6a9531330b268356321 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ng=C3=B4=20Qu=E1=BB=91c=20=C4=90=E1=BA=A1t?= <56961917+datlechin@users.noreply.github.com> Date: Wed, 20 Oct 2021 01:16:01 +0700 Subject: [PATCH 04/26] refactor(v2): update Vietnamese translations (#5723) --- .../codeTranslations/vi.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/docusaurus-theme-classic/codeTranslations/vi.json b/packages/docusaurus-theme-classic/codeTranslations/vi.json index 9fca85ffe051..35646cbed4ba 100644 --- a/packages/docusaurus-theme-classic/codeTranslations/vi.json +++ b/packages/docusaurus-theme-classic/codeTranslations/vi.json @@ -1,6 +1,6 @@ { "theme.AnnouncementBar.closeButtonAriaLabel": "Đóng", - "theme.BackToTopButton.buttonAriaLabel": "Scroll back to top", + "theme.BackToTopButton.buttonAriaLabel": "Trở lại đầu trang", "theme.CodeBlock.copied": "Đã sao chép", "theme.CodeBlock.copy": "Sao chép", "theme.CodeBlock.copyButtonAriaLabel": "Sao chép code vào bộ nhớ tạm", @@ -21,9 +21,9 @@ "theme.SearchPage.inputLabel": "Tìm kiếm", "theme.SearchPage.inputPlaceholder": "Nhập từ khóa cần tìm vào đây", "theme.SearchPage.noResultsText": "Không tìm thấy kết quả nào", - "theme.TOCCollapsible.toggleButtonLabel": "On this page", - "theme.blog.archive.description": "Archive", - "theme.blog.archive.title": "Archive", + "theme.TOCCollapsible.toggleButtonLabel": "Trên trang này", + "theme.blog.archive.description": "Lưu trữ", + "theme.blog.archive.title": "Lưu trữ", "theme.blog.paginator.navAriaLabel": "Thanh điều hướng của trang danh sách bài viết", "theme.blog.paginator.newerEntries": "Các bài mới hơn", "theme.blog.paginator.olderEntries": "Các bài cũ hơn", @@ -33,7 +33,7 @@ "theme.blog.post.plurals": "Một bài viết|{count} bài viết", "theme.blog.post.readMore": "Đọc Tiếp", "theme.blog.post.readingTime.plurals": "Một phút để đọc|{readingTime} phút để đọc", - "theme.blog.sidebar.navAriaLabel": "Blog recent posts navigation", + "theme.blog.sidebar.navAriaLabel": "Điều hướng các bài viết gần đây trên blog", "theme.blog.tagTitle": "{nPosts} được gắn thẻ \"{tagName}\"", "theme.common.editThisPage": "Sửa trang này", "theme.common.headingLinkTitle": "Đường dẫn trực tiếp tới đề mục này", @@ -45,8 +45,8 @@ "theme.docs.sidebar.collapseButtonTitle": "Thu gọn thanh bên", "theme.docs.sidebar.expandButtonAriaLabel": "Mở rộng thanh bên", "theme.docs.sidebar.expandButtonTitle": "Mở rộng thanh bên", - "theme.docs.tagDocListPageTitle": "{nDocsTagged} with \"{tagName}\"", - "theme.docs.tagDocListPageTitle.nDocsTagged": "One doc tagged|{count} docs tagged", + "theme.docs.tagDocListPageTitle": "{nDocsTagged} với \"{tagName}\"", + "theme.docs.tagDocListPageTitle.nDocsTagged": "Một tài liệu đã gắn thẻ|{count} tài liệu đã gắn thẻ", "theme.docs.versions.latestVersionLinkLabel": "phiên bản mới nhất", "theme.docs.versions.latestVersionSuggestionLabel": "Để xem các cập nhật mới nhất, vui lòng xem phiên bản {latestVersionLink} ({versionLabel}).", "theme.docs.versions.unmaintainedVersionLabel": "Đây là tài liệu của {siteTitle} {versionLabel}, hiện không còn được bảo trì.", @@ -54,7 +54,7 @@ "theme.lastUpdated.atDate": " vào {date}", "theme.lastUpdated.byUser": " bởi {user}", "theme.lastUpdated.lastUpdatedAtBy": "Cập nhật lần cuối{atDate}{byUser}", - "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": "← Back to main menu", + "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": "← Trở lại menu chính", "theme.navbar.mobileVersionsDropdown.label": "Versions", "theme.tags.tagsListLabel": "Thẻ:", "theme.tags.tagsPageLink": "Xem tất cả Thẻ", From 059c05248a7d66ee5598edf529d8d64d09c368ef Mon Sep 17 00:00:00 2001 From: Andrew Taft <11670864+ataft@users.noreply.github.com> Date: Wed, 20 Oct 2021 03:39:10 -0700 Subject: [PATCH 05/26] docs: Add plugin-image-zoom (#5746) --- website/community/2-resources.md | 1 + 1 file changed, 1 insertion(+) diff --git a/website/community/2-resources.md b/website/community/2-resources.md index 1a6c6fccbade..37176ac4adc1 100644 --- a/website/community/2-resources.md +++ b/website/community/2-resources.md @@ -45,6 +45,7 @@ See the showcase - [docusaurus-prince-pdf](https://github.com/signcl/docusaurus-prince-pdf) - Generate PDF with PrinceXML for better font subsetting and ToC features. Support Docusaurus v2 sites - [mdx-mermaid](https://github.com/sjwall/mdx-mermaid) - A Docusaurus v2 compatible MDX plugin for displaying [Mermaid](https://mermaid-js.github.io/mermaid) diagrams - [redocusaurus](https://github.com/rohit-gohri/redocusaurus) - A Docusaurus preset for integrating OpenAPI documentation into your docs with [Redoc](https://github.com/redocly/redoc) +- [plugin-image-zoom](https://github.com/flexanalytics/plugin-image-zoom) - An Image Zoom plugin for Docusaurus 2 ## Enterprise usage {#enterprise-usage} From 78d146419fbf4f55a2641c0bfc0d4bdcda95128f Mon Sep 17 00:00:00 2001 From: Alexey Pyltsyn Date: Wed, 20 Oct 2021 13:45:06 +0300 Subject: [PATCH 06/26] chore: fix gen script to support TS template (#5722) --- examples/classic-typescript/package.json | 6 + ...mepageFeatures.js => HomepageFeatures.tsx} | 26 +++- .../src/pages/{index.js => index.tsx} | 2 +- examples/classic-typescript/tsconfig.json | 7 + examples/classic-typescript/yarn.lock | 133 +++++++++++++++++- generateExamples.js | 2 +- 6 files changed, 165 insertions(+), 11 deletions(-) rename examples/classic-typescript/src/components/{HomepageFeatures.js => HomepageFeatures.tsx} (66%) rename examples/classic-typescript/src/pages/{index.js => index.tsx} (96%) create mode 100644 examples/classic-typescript/tsconfig.json diff --git a/examples/classic-typescript/package.json b/examples/classic-typescript/package.json index 0b6516338c12..a45a016c3daf 100644 --- a/examples/classic-typescript/package.json +++ b/examples/classic-typescript/package.json @@ -12,6 +12,7 @@ "serve": "docusaurus serve", "write-translations": "docusaurus write-translations", "write-heading-ids": "docusaurus write-heading-ids", + "typecheck": "tsc", "dev": "docusaurus start" }, "dependencies": { @@ -26,6 +27,11 @@ "react-dom": "^17.0.1", "url-loader": "^4.1.1" }, + "devDependencies": { + "@docusaurus/module-type-aliases": "2.0.0-beta.7", + "@tsconfig/docusaurus": "^1.0.4", + "typescript": "^4.3.5" + }, "browserslist": { "production": [ ">0.5%", diff --git a/examples/classic-typescript/src/components/HomepageFeatures.js b/examples/classic-typescript/src/components/HomepageFeatures.tsx similarity index 66% rename from examples/classic-typescript/src/components/HomepageFeatures.js rename to examples/classic-typescript/src/components/HomepageFeatures.tsx index 16f820b10355..3897078da114 100644 --- a/examples/classic-typescript/src/components/HomepageFeatures.js +++ b/examples/classic-typescript/src/components/HomepageFeatures.tsx @@ -1,11 +1,23 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ import React from 'react'; import clsx from 'clsx'; import styles from './HomepageFeatures.module.css'; -const FeatureList = [ +type FeatureItem = { + title: string; + image: string; + description: JSX.Element; +}; + +const FeatureList: FeatureItem[] = [ { title: 'Easy to Use', - Svg: require('../../static/img/undraw_docusaurus_mountain.svg').default, + image: '/img/undraw_docusaurus_mountain.svg', description: ( <> Docusaurus was designed from the ground up to be easily installed and @@ -15,7 +27,7 @@ const FeatureList = [ }, { title: 'Focus on What Matters', - Svg: require('../../static/img/undraw_docusaurus_tree.svg').default, + image: '/img/undraw_docusaurus_tree.svg', description: ( <> Docusaurus lets you focus on your docs, and we'll do the chores. Go @@ -25,7 +37,7 @@ const FeatureList = [ }, { title: 'Powered by React', - Svg: require('../../static/img/undraw_docusaurus_react.svg').default, + image: '/img/undraw_docusaurus_react.svg', description: ( <> Extend or customize your website layout by reusing React. Docusaurus can @@ -35,11 +47,11 @@ const FeatureList = [ }, ]; -function Feature({Svg, title, description}) { +function Feature({title, image, description}: FeatureItem) { return (
- + {title}

{title}

@@ -49,7 +61,7 @@ function Feature({Svg, title, description}) { ); } -export default function HomepageFeatures() { +export default function HomepageFeatures(): JSX.Element { return (
diff --git a/examples/classic-typescript/src/pages/index.js b/examples/classic-typescript/src/pages/index.tsx similarity index 96% rename from examples/classic-typescript/src/pages/index.js rename to examples/classic-typescript/src/pages/index.tsx index 27c21e8f99c4..cc4f72112724 100644 --- a/examples/classic-typescript/src/pages/index.js +++ b/examples/classic-typescript/src/pages/index.tsx @@ -25,7 +25,7 @@ function HomepageHeader() { ); } -export default function Home() { +export default function Home(): JSX.Element { const {siteConfig} = useDocusaurusContext(); return ( Date: Wed, 20 Oct 2021 19:12:15 +0800 Subject: [PATCH 07/26] docs(v2): Add Fenghua Frontend Developer site to showcase page (#5727) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Sébastien Lorber --- website/src/data/showcase/zxuqian.png | Bin 0 -> 173507 bytes website/src/data/users.tsx | 8 ++++++++ 2 files changed, 8 insertions(+) create mode 100644 website/src/data/showcase/zxuqian.png diff --git a/website/src/data/showcase/zxuqian.png b/website/src/data/showcase/zxuqian.png new file mode 100644 index 0000000000000000000000000000000000000000..29b1c8ff68c67a95ebc176d7df57c64f2a63711a GIT binary patch literal 173507 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

H?G#DS`s*>VI}8C}uuR^93rL!U0J^>aSE4 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

txUkeX1S|u%WsiKP05Xb;T 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 literal 0 HcmV?d00001 diff --git a/website/src/data/users.tsx b/website/src/data/users.tsx index 65b219ea9313..cdaba22d7e08 100644 --- a/website/src/data/users.tsx +++ b/website/src/data/users.tsx @@ -473,6 +473,14 @@ const Users: User[] = [ source: 'https://github.com/facebook/fbt', tags: ['opensource', 'facebook'], }, + { + title: 'Fenghua Frontend Developer', + description: 'Blogs and videos about frontend development', + preview: require('./showcase/zxuqian.png'), + website: 'https://zxuqian.cn', + source: null, + tags: ['personal', 'design'], + }, { title: 'FireCMS', description: 'Firebase/Firestore based headless CMS', From 6763496dc16ef2af5abfca2dc3416bf38e8fac87 Mon Sep 17 00:00:00 2001 From: Nathaniel Furniss Date: Wed, 20 Oct 2021 06:21:11 -0700 Subject: [PATCH 08/26] refactor: perform shallow clone during deploy (#5748) Co-authored-by: slorber --- packages/docusaurus/src/commands/deploy.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/docusaurus/src/commands/deploy.ts b/packages/docusaurus/src/commands/deploy.ts index 6e94f302ad78..9bb5c3f6570b 100644 --- a/packages/docusaurus/src/commands/deploy.ts +++ b/packages/docusaurus/src/commands/deploy.ts @@ -167,7 +167,9 @@ Try using DEPLOYMENT_BRANCH=main or DEPLOYMENT_BRANCH=master`); const toPath = await fs.mkdtemp( path.join(os.tmpdir(), `${projectName}-${deploymentBranch}`), ); - if (shellExecLog(`git clone ${remoteBranch} ${toPath}`).code !== 0) { + if ( + shellExecLog(`git clone --depth 1 ${remoteBranch} ${toPath}`).code !== 0 + ) { throw new Error(`Running "git clone" command in "${toPath}" failed.`); } From 90098ca83851aa5497a9da37b0df5150b36ccf7a Mon Sep 17 00:00:00 2001 From: Joshua Chen Date: Wed, 20 Oct 2021 21:27:16 +0800 Subject: [PATCH 09/26] refactor(module-type-aliases): remove fallback aliases (#5726) --- .../src/index.d.ts | 36 +++++++++++-- .../docusaurus-plugin-ideal-image/.npmignore | 3 +- .../package.json | 1 + .../src/index.ts | 2 +- .../src/plugin-ideal-image.d.ts | 50 +++++++++++++++++++ .../src/types.ts | 37 -------------- .../docusaurus-theme-classic/src/types.d.ts | 8 +++ .../src/client/exports/constants.ts | 13 +---- .../src/client/exports/useGlobalData.ts | 7 +-- website/src/types.d.ts | 1 + 10 files changed, 97 insertions(+), 61 deletions(-) create mode 100644 packages/docusaurus-plugin-ideal-image/src/plugin-ideal-image.d.ts delete mode 100644 packages/docusaurus-plugin-ideal-image/src/types.ts create mode 100644 website/src/types.d.ts diff --git a/packages/docusaurus-module-type-aliases/src/index.d.ts b/packages/docusaurus-module-type-aliases/src/index.d.ts index 9714e568736d..d61de8b4dae2 100644 --- a/packages/docusaurus-module-type-aliases/src/index.d.ts +++ b/packages/docusaurus-module-type-aliases/src/index.d.ts @@ -69,11 +69,41 @@ declare module '@generated/codeTranslations' { export default codeTranslations; } -declare module '@theme/*'; - declare module '@theme-original/*'; -declare module '@docusaurus/*'; +declare module '@theme/Layout' { + import type {ReactNode} from 'react'; + + export interface Props { + readonly children: ReactNode; + readonly title?: string; + readonly description?: string; + } + export default function Layout(props: Props): JSX.Element; +} + +declare module '@theme/Loading' { + import type {LoadingComponentProps} from 'react-loadable'; + + export default function Loading(props: LoadingComponentProps): JSX.Element; +} + +declare module '@theme/NotFound' { + export default function NotFound(props: any): JSX.Element; +} + +declare module '@theme/Root' { + import type {ReactNode} from 'react'; + + export interface Props { + readonly children: ReactNode; + } + export default function Root({children}: Props): JSX.Element; +} + +declare module '@docusaurus/constants' { + export const DEFAULT_PLUGIN_ID: 'default'; +} declare module '@docusaurus/Head' { import type {HelmetProps} from 'react-helmet'; diff --git a/packages/docusaurus-plugin-ideal-image/.npmignore b/packages/docusaurus-plugin-ideal-image/.npmignore index 4978437c5d30..c59f11ebb5fa 100644 --- a/packages/docusaurus-plugin-ideal-image/.npmignore +++ b/packages/docusaurus-plugin-ideal-image/.npmignore @@ -1,2 +1 @@ -src -copyUntypedFiles.js \ No newline at end of file +copyUntypedFiles.js diff --git a/packages/docusaurus-plugin-ideal-image/package.json b/packages/docusaurus-plugin-ideal-image/package.json index d682f2f4b691..37e3dbba8fac 100644 --- a/packages/docusaurus-plugin-ideal-image/package.json +++ b/packages/docusaurus-plugin-ideal-image/package.json @@ -3,6 +3,7 @@ "version": "2.0.0-beta.7", "description": "Docusaurus Plugin to generate an almost ideal image (responsive, lazy-loading, and low quality placeholder).", "main": "lib/index.js", + "types": "src/plugin-ideal-image.d.ts", "scripts": { "build": "tsc && node copyUntypedFiles.js", "watch": "node copyUntypedFiles.js && tsc --watch" diff --git a/packages/docusaurus-plugin-ideal-image/src/index.ts b/packages/docusaurus-plugin-ideal-image/src/index.ts index 70d3a6631eff..d62ddcb9e875 100644 --- a/packages/docusaurus-plugin-ideal-image/src/index.ts +++ b/packages/docusaurus-plugin-ideal-image/src/index.ts @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ import {LoadContext, Plugin} from '@docusaurus/types'; -import {PluginOptions} from './types'; +import type {PluginOptions} from '@docusaurus/plugin-ideal-image'; import {Configuration} from 'webpack'; import path from 'path'; diff --git a/packages/docusaurus-plugin-ideal-image/src/plugin-ideal-image.d.ts b/packages/docusaurus-plugin-ideal-image/src/plugin-ideal-image.d.ts new file mode 100644 index 000000000000..6e2a3eff2146 --- /dev/null +++ b/packages/docusaurus-plugin-ideal-image/src/plugin-ideal-image.d.ts @@ -0,0 +1,50 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +declare module '@docusaurus/plugin-ideal-image' { + export type PluginOptions = { + /** + * Filename template for output files. + */ + name?: string; + /** + * Specify all widths you want to use; if a specified size exceeds the original image's width, the latter will be used (i.e. images won't be scaled up). You may also declare a default sizes array in the loader options in your webpack.config.js. + */ + sizes?: number[]; + /** + * Specify one width you want to use; if the specified size exceeds the original image's width, the latter will be used (i.e. images won't be scaled up) + */ + size?: number; + /** + * As an alternative to manually specifying sizes, you can specify min, max and steps, and the sizes will be generated for you. + */ + min?: number; + /** + * See min above + */ + max?: number; + /** + * Configure the number of images generated between min and max (inclusive) + */ + steps?: number; + /** + * JPEG compression quality + */ + quality?: number; + }; +} + +declare module '@theme/IdealImage' { + import type {ComponentProps} from 'react'; + + export interface Props extends ComponentProps<'img'> { + img: any; + } + export default function IdealImage(props: Props): JSX.Element; +} + +declare module '@endiliey/react-ideal-image'; diff --git a/packages/docusaurus-plugin-ideal-image/src/types.ts b/packages/docusaurus-plugin-ideal-image/src/types.ts deleted file mode 100644 index 2f034e2129b8..000000000000 --- a/packages/docusaurus-plugin-ideal-image/src/types.ts +++ /dev/null @@ -1,37 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -export interface PluginOptions { - /** - * Filename template for output files. - */ - name?: string; - /** - * Specify all widths you want to use; if a specified size exceeds the original image's width, the latter will be used (i.e. images won't be scaled up). You may also declare a default sizes array in the loader options in your webpack.config.js. - */ - sizes?: number[]; - /** - * Specify one width you want to use; if the specified size exceeds the original image's width, the latter will be used (i.e. images won't be scaled up) - */ - size?: number; - /** - * As an alternative to manually specifying sizes, you can specify min, max and steps, and the sizes will be generated for you. - */ - min?: number; - /** - * See min above - */ - max?: number; - /** - * Configure the number of images generated between min and max (inclusive) - */ - steps?: number; - /** - * JPEG compression quality - */ - quality?: number; -} diff --git a/packages/docusaurus-theme-classic/src/types.d.ts b/packages/docusaurus-theme-classic/src/types.d.ts index d2c8d415c8c2..cabd03ed3e94 100644 --- a/packages/docusaurus-theme-classic/src/types.d.ts +++ b/packages/docusaurus-theme-classic/src/types.d.ts @@ -19,6 +19,10 @@ declare module '@theme/AnnouncementBar' { export default AnnouncementBar; } +declare module '@theme/BackToTopButton' { + export default function BackToTopButton(): JSX.Element; +} + declare module '@theme/BlogListPaginator' { import type {Metadata} from '@theme/BlogListPage'; @@ -505,6 +509,10 @@ declare module '@theme/NavbarItem' { export default NavbarItem; } +declare module '@theme/SearchBar' { + export default function SearchBar(): JSX.Element; +} + declare module '@theme/TabItem' { import type {ReactNode} from 'react'; diff --git a/packages/docusaurus/src/client/exports/constants.ts b/packages/docusaurus/src/client/exports/constants.ts index 48fa05bd6982..e7e5a1dcc2b2 100644 --- a/packages/docusaurus/src/client/exports/constants.ts +++ b/packages/docusaurus/src/client/exports/constants.ts @@ -5,16 +5,5 @@ * LICENSE file in the root directory of this source tree. */ -/* -// eslint-disable-next-line no-restricted-imports -export { - // constants were only available on node - // this makes some useful constants available to frontend/themes too - // import {DEFAULT_PLUGIN_ID} '@docusaurus/constants' - DEFAULT_PLUGIN_ID, -} from '../../constants'; - */ - -// Not duplicating the constants seems to produce -// weird TS compilation side-effects +// Constants used on the client-side: duplicated from server-side code export const DEFAULT_PLUGIN_ID = 'default'; diff --git a/packages/docusaurus/src/client/exports/useGlobalData.ts b/packages/docusaurus/src/client/exports/useGlobalData.ts index 15c9034accc8..155ee22e6fe6 100644 --- a/packages/docusaurus/src/client/exports/useGlobalData.ts +++ b/packages/docusaurus/src/client/exports/useGlobalData.ts @@ -6,12 +6,7 @@ */ import useDocusaurusContext from './useDocusaurusContext'; - -// TODO annoying constant duplication -// if we import something from outside the /client folder, -// the tsc directory structure is affected -// import {DEFAULT_PLUGIN_ID} from '../../constants'; -const DEFAULT_PLUGIN_ID = 'default'; +import {DEFAULT_PLUGIN_ID} from './constants'; export default function useGlobalData(): Record { const {globalData} = useDocusaurusContext(); diff --git a/website/src/types.d.ts b/website/src/types.d.ts new file mode 100644 index 000000000000..75278b9bdd5d --- /dev/null +++ b/website/src/types.d.ts @@ -0,0 +1 @@ +/// From 43a4001c7eaef7bf256f58c72d481338b649e6e0 Mon Sep 17 00:00:00 2001 From: Caner Canbaz <34982311+canercanbaz@users.noreply.github.com> Date: Wed, 20 Oct 2021 16:30:49 +0300 Subject: [PATCH 10/26] refactor: add missing Turkish translations to theme-classic (#5725) Co-authored-by: canercanbaz --- .../codeTranslations/tr.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/docusaurus-theme-classic/codeTranslations/tr.json b/packages/docusaurus-theme-classic/codeTranslations/tr.json index f3189d2fc085..e256de49ef15 100644 --- a/packages/docusaurus-theme-classic/codeTranslations/tr.json +++ b/packages/docusaurus-theme-classic/codeTranslations/tr.json @@ -1,6 +1,6 @@ { "theme.AnnouncementBar.closeButtonAriaLabel": "Kapat", - "theme.BackToTopButton.buttonAriaLabel": "Scroll back to top", + "theme.BackToTopButton.buttonAriaLabel": "Sayfa başına dön", "theme.CodeBlock.copied": "Kopyalandı", "theme.CodeBlock.copy": "Kopyala", "theme.CodeBlock.copyButtonAriaLabel": "Kodu panoya kopyala", @@ -21,9 +21,9 @@ "theme.SearchPage.inputLabel": "Ara", "theme.SearchPage.inputPlaceholder": "Aramanızı buraya yazın", "theme.SearchPage.noResultsText": "Hiçbir sonuç bulunamadı", - "theme.TOCCollapsible.toggleButtonLabel": "On this page", - "theme.blog.archive.description": "Archive", - "theme.blog.archive.title": "Archive", + "theme.TOCCollapsible.toggleButtonLabel": "Bu sayfada", + "theme.blog.archive.description": "Arşiv", + "theme.blog.archive.title": "Arşiv", "theme.blog.paginator.navAriaLabel": "Blog gönderi sayfası navigasyonu", "theme.blog.paginator.newerEntries": "Yeni Girdiler", "theme.blog.paginator.olderEntries": "Eski Girdiler", @@ -33,7 +33,7 @@ "theme.blog.post.plurals": "Bir gönderi|{count} gönderi", "theme.blog.post.readMore": "Daha Fazla", "theme.blog.post.readingTime.plurals": "{readingTime} dakikalık okuma|{readingTime} dakikalık okuma", - "theme.blog.sidebar.navAriaLabel": "Blog recent posts navigation", + "theme.blog.sidebar.navAriaLabel": "Blog son gönderiler navigasyonu", "theme.blog.tagTitle": "\"{tagName}\" ile etiketlenmiş {nPosts}", "theme.common.editThisPage": "Bu sayfayı düzenle", "theme.common.headingLinkTitle": "Başlığa doğrudan bağlantı", @@ -45,8 +45,8 @@ "theme.docs.sidebar.collapseButtonTitle": "Kenar çubuğunu daralt", "theme.docs.sidebar.expandButtonAriaLabel": "Kenar çubuğunu genişlet", "theme.docs.sidebar.expandButtonTitle": "Kenar çubuğunu genişlet", - "theme.docs.tagDocListPageTitle": "{nDocsTagged} with \"{tagName}\"", - "theme.docs.tagDocListPageTitle.nDocsTagged": "One doc tagged|{count} docs tagged", + "theme.docs.tagDocListPageTitle": "\"{tagName}\" ile etiketlenmiş {nDocsTagged}", + "theme.docs.tagDocListPageTitle.nDocsTagged": "Bir doküman etiketlendi|{count} doküman etiketlendi", "theme.docs.versions.latestVersionLinkLabel": "en son sürüm", "theme.docs.versions.latestVersionSuggestionLabel": "Güncel belgeler için bkz. {latestVersionLink} ({versionLabel}).", "theme.docs.versions.unmaintainedVersionLabel": "Bu, {siteTitle} {versionLabel} dokümantasyonudur ve bakımı sonlanmıştır.", @@ -54,8 +54,8 @@ "theme.lastUpdated.atDate": " {date} tarihinde", "theme.lastUpdated.byUser": " {user} tarafından", "theme.lastUpdated.lastUpdatedAtBy": "En son{atDate}{byUser} güncellendi", - "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": "← Back to main menu", - "theme.navbar.mobileVersionsDropdown.label": "Versions", + "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": "← Ana menüye dön", + "theme.navbar.mobileVersionsDropdown.label": "Versiyonlar", "theme.tags.tagsListLabel": "Etiketler:", "theme.tags.tagsPageLink": "Tüm Etiketleri Görüntüle", "theme.tags.tagsPageTitle": "Etiketler" From 1e0a32924b5cd78c08fb9e745a78010173b6ab36 Mon Sep 17 00:00:00 2001 From: Thanasis Katsadas Date: Wed, 20 Oct 2021 16:38:25 +0300 Subject: [PATCH 11/26] docs(v2): Fix typo in using-plugins.md (#5750) --- website/docs/using-plugins.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/using-plugins.md b/website/docs/using-plugins.md index 2ebef9f49099..308a8c826654 100644 --- a/website/docs/using-plugins.md +++ b/website/docs/using-plugins.md @@ -133,7 +133,7 @@ You can use a plugin as a function, directly in the Docusaurus config file: module.exports = { // ... plugins: [ - // highligh-start + // highlight-start function myPlugin(context, options) { // ... return { From 3db4fcaec7553b53da606f75a487ddf17cd52569 Mon Sep 17 00:00:00 2001 From: philipp985 Date: Wed, 20 Oct 2021 15:40:59 +0200 Subject: [PATCH 12/26] refactor: Polish de translation (#5717) --- packages/docusaurus-theme-classic/codeTranslations/de.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/docusaurus-theme-classic/codeTranslations/de.json b/packages/docusaurus-theme-classic/codeTranslations/de.json index 219ba427859d..56c63138c65f 100644 --- a/packages/docusaurus-theme-classic/codeTranslations/de.json +++ b/packages/docusaurus-theme-classic/codeTranslations/de.json @@ -1,6 +1,6 @@ { "theme.AnnouncementBar.closeButtonAriaLabel": "Schließen", - "theme.BackToTopButton.buttonAriaLabel": "Scroll back to top", + "theme.BackToTopButton.buttonAriaLabel": "Zurück nach oben scrollen", "theme.CodeBlock.copied": "Kopiert", "theme.CodeBlock.copy": "Kopieren", "theme.CodeBlock.copyButtonAriaLabel": "In die Zwischenablage kopieren", @@ -21,7 +21,7 @@ "theme.SearchPage.inputLabel": "Suche", "theme.SearchPage.inputPlaceholder": "Geben Sie hier Ihre Suche ein", "theme.SearchPage.noResultsText": "Es wurden keine Ergebnisse gefunden", - "theme.TOCCollapsible.toggleButtonLabel": "On this page", + "theme.TOCCollapsible.toggleButtonLabel": "Auf dieser Seite", "theme.blog.archive.description": "Archive", "theme.blog.archive.title": "Archive", "theme.blog.paginator.navAriaLabel": "Navigation der Blog-Listenseite", @@ -54,7 +54,7 @@ "theme.lastUpdated.atDate": " am {date}", "theme.lastUpdated.byUser": " von {user}", "theme.lastUpdated.lastUpdatedAtBy": "Letztes Update{atDate}{byUser}", - "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": "← Back to main menu", + "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": "← Zurück zum Hauptmenü", "theme.navbar.mobileVersionsDropdown.label": "Versions", "theme.tags.tagsListLabel": "Tags:", "theme.tags.tagsPageLink": "Alle Tags anzeigen", From 098f210890cbd7d3ecc20aa055cb8b366d33c9f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Lorber?= Date: Wed, 20 Oct 2021 16:09:52 +0200 Subject: [PATCH 13/26] chore: Enable ESLint rules of hooks + fix new lint errors (#5714) --- .eslintrc.js | 4 ++- .../src/theme/DocPage/index.tsx | 2 +- .../src/theme/DocSidebarItem/index.tsx | 2 +- .../theme/NavbarItem/DropdownNavbarItem.tsx | 2 +- .../src/theme/hooks/useTheme.ts | 4 +-- packages/docusaurus-theme-common/src/index.ts | 5 +++ .../src/utils/announcementBarUtils.tsx | 4 +-- .../DocsPreferredVersionProvider.tsx | 2 +- .../useDocsPreferredVersion.ts | 2 +- .../src/utils/mobileSecondaryMenu.tsx | 1 + .../src/utils/reactUtils.tsx | 34 ++++++++++++++++++ .../src/utils/scrollUtils.tsx | 36 +++++++++++-------- .../src/utils/useLocationChange.ts | 7 ++-- .../src/utils/usePrevious.ts | 5 +-- .../src/theme/SearchPage/index.js | 30 ++++++++++------ .../docusaurus/src/client/exports/Link.tsx | 16 ++++----- 16 files changed, 109 insertions(+), 47 deletions(-) create mode 100644 packages/docusaurus-theme-common/src/utils/reactUtils.tsx diff --git a/.eslintrc.js b/.eslintrc.js index 886bd74c917a..66d72dd28313 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -28,6 +28,7 @@ module.exports = { 'eslint:recommended', 'plugin:@typescript-eslint/eslint-recommended', 'plugin:@typescript-eslint/recommended', + 'plugin:react-hooks/recommended', 'airbnb', 'prettier', 'prettier/react', @@ -41,6 +42,8 @@ module.exports = { }, plugins: ['react-hooks', 'header'], rules: { + 'react-hooks/rules-of-hooks': ERROR, + 'react-hooks/exhaustive-deps': ERROR, 'class-methods-use-this': OFF, // It's a way of allowing private variables. 'func-names': OFF, // Ignore certain webpack alias because it can't be resolved @@ -77,7 +80,6 @@ module.exports = { 'react/destructuring-assignment': OFF, // Too many lines. 'react/prefer-stateless-function': WARNING, 'react/jsx-props-no-spreading': OFF, - 'react-hooks/rules-of-hooks': ERROR, 'react/require-default-props': [ERROR, {ignoreFunctionalComponents: true}], '@typescript-eslint/no-inferrable-types': OFF, 'import/first': OFF, diff --git a/packages/docusaurus-theme-classic/src/theme/DocPage/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocPage/index.tsx index 25bc454dcddf..ebb2ff1abb51 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocPage/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocPage/index.tsx @@ -51,7 +51,7 @@ function DocPageContent({ setHiddenSidebar(false); } - setHiddenSidebarContainer(!hiddenSidebarContainer); + setHiddenSidebarContainer((value) => !value); }, [hiddenSidebar]); return ( diff --git a/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/index.tsx index 8c769004fef5..59a2d2a330c4 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/index.tsx @@ -93,7 +93,7 @@ function useAutoExpandActiveCategory({ if (justBecameActive && collapsed) { setCollapsed(false); } - }, [isActive, wasActive, collapsed]); + }, [isActive, wasActive, collapsed, setCollapsed]); } function DocSidebarItemCategory({ diff --git a/packages/docusaurus-theme-classic/src/theme/NavbarItem/DropdownNavbarItem.tsx b/packages/docusaurus-theme-classic/src/theme/NavbarItem/DropdownNavbarItem.tsx index a3d38a2c28c8..35459e2b556a 100644 --- a/packages/docusaurus-theme-classic/src/theme/NavbarItem/DropdownNavbarItem.tsx +++ b/packages/docusaurus-theme-classic/src/theme/NavbarItem/DropdownNavbarItem.tsx @@ -141,7 +141,7 @@ function DropdownNavbarItemMobile({ if (containsActive) { setCollapsed(!containsActive); } - }, [localPathname, containsActive]); + }, [localPathname, containsActive, setCollapsed]); return (
  • { } catch (err) { console.error(err); } - }, [setTheme]); + }, [disableSwitch, setTheme]); useEffect(() => { if (disableSwitch && !respectPrefersColorScheme) { @@ -80,7 +80,7 @@ const useTheme = (): useThemeReturns => { .addListener(({matches}) => { setTheme(matches ? themes.dark : themes.light); }); - }, []); + }, [disableSwitch, respectPrefersColorScheme]); return { isDarkTheme: theme === themes.dark, diff --git a/packages/docusaurus-theme-common/src/index.ts b/packages/docusaurus-theme-common/src/index.ts index f5c9ab1cdd2a..48874061623f 100644 --- a/packages/docusaurus-theme-common/src/index.ts +++ b/packages/docusaurus-theme-common/src/index.ts @@ -88,3 +88,8 @@ export { useScrollPosition, useScrollPositionBlocker, } from './utils/scrollUtils'; + +export { + useIsomorphicLayoutEffect, + useDynamicCallback, +} from './utils/reactUtils'; diff --git a/packages/docusaurus-theme-common/src/utils/announcementBarUtils.tsx b/packages/docusaurus-theme-common/src/utils/announcementBarUtils.tsx index 8a4c7a376e5e..14f67e9d4476 100644 --- a/packages/docusaurus-theme-common/src/utils/announcementBarUtils.tsx +++ b/packages/docusaurus-theme-common/src/utils/announcementBarUtils.tsx @@ -83,14 +83,14 @@ const useAnnouncementBarContextValue = (): AnnouncementBarAPI => { if (isNewAnnouncement || !isDismissedInStorage()) { setClosed(false); } - }, []); + }, [announcementBar]); return useMemo(() => { return { isActive: !!announcementBar && !isClosed, close: handleClose, }; - }, [isClosed]); + }, [announcementBar, isClosed, handleClose]); }; const AnnouncementBarContext = createContext(null); diff --git a/packages/docusaurus-theme-common/src/utils/docsPreferredVersion/DocsPreferredVersionProvider.tsx b/packages/docusaurus-theme-common/src/utils/docsPreferredVersion/DocsPreferredVersionProvider.tsx index 2176c25e5f51..07911a858ed8 100644 --- a/packages/docusaurus-theme-common/src/utils/docsPreferredVersion/DocsPreferredVersionProvider.tsx +++ b/packages/docusaurus-theme-common/src/utils/docsPreferredVersion/DocsPreferredVersionProvider.tsx @@ -120,7 +120,7 @@ function useContextValue() { return { savePreferredVersion, }; - }, [setState]); + }, [versionPersistence]); return [state, api] as const; } diff --git a/packages/docusaurus-theme-common/src/utils/docsPreferredVersion/useDocsPreferredVersion.ts b/packages/docusaurus-theme-common/src/utils/docsPreferredVersion/useDocsPreferredVersion.ts index 5bfa49b3729d..ace170eafd40 100644 --- a/packages/docusaurus-theme-common/src/utils/docsPreferredVersion/useDocsPreferredVersion.ts +++ b/packages/docusaurus-theme-common/src/utils/docsPreferredVersion/useDocsPreferredVersion.ts @@ -30,7 +30,7 @@ export function useDocsPreferredVersion( (versionName: string) => { api.savePreferredVersion(pluginId, versionName); }, - [api], + [api, pluginId], ); return {preferredVersion, savePreferredVersionName} as const; diff --git a/packages/docusaurus-theme-common/src/utils/mobileSecondaryMenu.tsx b/packages/docusaurus-theme-common/src/utils/mobileSecondaryMenu.tsx index f51c93795e64..b58b621a38c1 100644 --- a/packages/docusaurus-theme-common/src/utils/mobileSecondaryMenu.tsx +++ b/packages/docusaurus-theme-common/src/utils/mobileSecondaryMenu.tsx @@ -83,6 +83,7 @@ function useShallowMemoizedObject>(obj: O) { return useMemo( () => obj, // Is this safe? + // eslint-disable-next-line react-hooks/exhaustive-deps [...Object.keys(obj), ...Object.values(obj)], ); } diff --git a/packages/docusaurus-theme-common/src/utils/reactUtils.tsx b/packages/docusaurus-theme-common/src/utils/reactUtils.tsx new file mode 100644 index 000000000000..5a3ce9ec7064 --- /dev/null +++ b/packages/docusaurus-theme-common/src/utils/reactUtils.tsx @@ -0,0 +1,34 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import {useCallback, useEffect, useLayoutEffect, useRef} from 'react'; + +// This hook is like useLayoutEffect, but without the SSR warning +// It seems hacky but it's used in many React libs (Redux, Formik...) +// Also mentioned here: https://github.com/facebook/react/issues/16956 +// It is useful when you need to update a ref as soon as possible after a React render (before useEffect) +export const useIsomorphicLayoutEffect = + typeof window !== 'undefined' ? useLayoutEffect : useEffect; + +// Permits to transform an unstable callback (like an arrow function provided as props) +// to a "stable" callback that is safe to use in a useEffect dependency array +// Useful to avoid React stale closure problems + avoid useless effect re-executions +// +// Workaround until the React team recommends a good solution, see https://github.com/facebook/react/issues/16956 +// This generally works has some potential drawbacks, such as https://github.com/facebook/react/issues/16956#issuecomment-536636418 +export function useDynamicCallback unknown>( + callback: T, +): T { + const ref = useRef(callback); + + useIsomorphicLayoutEffect(() => { + ref.current = callback; + }, [callback]); + + // @ts-expect-error: TODO, not sure how to fix this TS error + return useCallback((...args) => ref.current(...args), []); +} diff --git a/packages/docusaurus-theme-common/src/utils/scrollUtils.tsx b/packages/docusaurus-theme-common/src/utils/scrollUtils.tsx index 9c54f405ae31..6bd3e4b766ef 100644 --- a/packages/docusaurus-theme-common/src/utils/scrollUtils.tsx +++ b/packages/docusaurus-theme-common/src/utils/scrollUtils.tsx @@ -15,6 +15,7 @@ import React, { useMemo, useRef, } from 'react'; +import {useDynamicCallback} from './reactUtils'; import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment'; /** @@ -103,20 +104,22 @@ export function useScrollPosition( const {scrollEventsEnabledRef} = useScrollController(); const lastPositionRef = useRef(getScrollPosition()); - const handleScroll = () => { - if (!scrollEventsEnabledRef.current) { - return; - } - const currentPosition = getScrollPosition()!; + const dynamicEffect = useDynamicCallback(effect); - if (effect) { - effect(currentPosition, lastPositionRef.current); - } + useEffect(() => { + const handleScroll = () => { + if (!scrollEventsEnabledRef.current) { + return; + } + const currentPosition = getScrollPosition()!; - lastPositionRef.current = currentPosition; - }; + if (dynamicEffect) { + dynamicEffect(currentPosition, lastPositionRef.current); + } + + lastPositionRef.current = currentPosition; + }; - useEffect(() => { const opts: AddEventListenerOptions & EventListenerOptions = { passive: true, }; @@ -125,7 +128,12 @@ export function useScrollPosition( window.addEventListener('scroll', handleScroll, opts); return () => window.removeEventListener('scroll', handleScroll, opts); - }, deps); + }, [ + dynamicEffect, + scrollEventsEnabledRef, + // eslint-disable-next-line react-hooks/exhaustive-deps + ...deps, + ]); } type UseScrollPositionSaver = { @@ -170,7 +178,7 @@ function useScrollPositionSaver(): UseScrollPositionSaver { return {restored: heightDiff !== 0}; }, []); - return useMemo(() => ({save, restore}), []); + return useMemo(() => ({save, restore}), [restore, save]); } type UseScrollPositionBlockerReturn = { @@ -217,7 +225,7 @@ export function useScrollPositionBlocker(): UseScrollPositionBlockerReturn { } }; }, - [scrollController], + [scrollController, scrollPositionSaver], ); useLayoutEffect(() => { diff --git a/packages/docusaurus-theme-common/src/utils/useLocationChange.ts b/packages/docusaurus-theme-common/src/utils/useLocationChange.ts index 70120ca277c0..6be0d3000a7f 100644 --- a/packages/docusaurus-theme-common/src/utils/useLocationChange.ts +++ b/packages/docusaurus-theme-common/src/utils/useLocationChange.ts @@ -9,6 +9,7 @@ import {useEffect} from 'react'; import {useLocation} from '@docusaurus/router'; import {Location} from '@docusaurus/history'; import {usePrevious} from './usePrevious'; +import {useDynamicCallback} from './reactUtils'; type LocationChangeEvent = { location: Location; @@ -21,10 +22,12 @@ export function useLocationChange(onLocationChange: OnLocationChange): void { const location = useLocation(); const previousLocation = usePrevious(location); + const onLocationChangeDynamic = useDynamicCallback(onLocationChange); + useEffect(() => { - onLocationChange({ + onLocationChangeDynamic({ location, previousLocation, }); - }, [location]); + }, [onLocationChangeDynamic, location, previousLocation]); } diff --git a/packages/docusaurus-theme-common/src/utils/usePrevious.ts b/packages/docusaurus-theme-common/src/utils/usePrevious.ts index 2a27462ff374..22cb744e05bd 100644 --- a/packages/docusaurus-theme-common/src/utils/usePrevious.ts +++ b/packages/docusaurus-theme-common/src/utils/usePrevious.ts @@ -5,12 +5,13 @@ * LICENSE file in the root directory of this source tree. */ -import {useRef, useEffect} from 'react'; +import {useRef} from 'react'; +import {useIsomorphicLayoutEffect} from './reactUtils'; export function usePrevious(value: T): T | undefined { const ref = useRef(); - useEffect(() => { + useIsomorphicLayoutEffect(() => { ref.current = value; }); diff --git a/packages/docusaurus-theme-search-algolia/src/theme/SearchPage/index.js b/packages/docusaurus-theme-search-algolia/src/theme/SearchPage/index.js index 8e0fd9e973f0..d319b37bcff6 100644 --- a/packages/docusaurus-theme-search-algolia/src/theme/SearchPage/index.js +++ b/packages/docusaurus-theme-search-algolia/src/theme/SearchPage/index.js @@ -16,7 +16,11 @@ import clsx from 'clsx'; import Head from '@docusaurus/Head'; import Link from '@docusaurus/Link'; import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment'; -import {useTitleFormatter, usePluralForm} from '@docusaurus/theme-common'; +import { + useTitleFormatter, + usePluralForm, + useDynamicCallback, +} from '@docusaurus/theme-common'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; import {useAllDocsData} from '@theme/hooks/useDocs'; import useSearchQuery from '@theme/hooks/useSearchQuery'; @@ -173,6 +177,7 @@ function SearchPage() { }, initialSearchResultState, ); + const algoliaClient = algoliaSearch(appId, apiKey); const algoliaHelper = algoliaSearchHelper(algoliaClient, indexName, { hitsPerPage: 15, @@ -271,7 +276,7 @@ function SearchPage() { description: 'The search page title for empty query', }); - const makeSearch = (page = 0) => { + const makeSearch = useDynamicCallback((page = 0) => { algoliaHelper.addDisjunctiveFacetRefinement('docusaurus_tag', 'default'); algoliaHelper.addDisjunctiveFacetRefinement('language', currentLocale); @@ -285,18 +290,16 @@ function SearchPage() { ); algoliaHelper.setQuery(searchQuery).setPage(page).search(); - }; + }); useEffect(() => { if (!loaderRef) { return undefined; } + const currentObserver = observer.current; - observer.current.observe(loaderRef); - - return () => { - observer.current.unobserve(loaderRef); - }; + currentObserver.observe(loaderRef); + return () => currentObserver.unobserve(loaderRef); }, [loaderRef]); useEffect(() => { @@ -311,7 +314,12 @@ function SearchPage() { makeSearch(); }, 300); } - }, [searchQuery, docsSearchVersionsHelpers.searchVersions]); + }, [ + searchQuery, + docsSearchVersionsHelpers.searchVersions, + updateSearchPath, + makeSearch, + ]); useEffect(() => { if (!searchResultState.lastPage || searchResultState.lastPage === 0) { @@ -319,13 +327,13 @@ function SearchPage() { } makeSearch(searchResultState.lastPage); - }, [searchResultState.lastPage]); + }, [makeSearch, searchResultState.lastPage]); useEffect(() => { if (searchValue && searchValue !== searchQuery) { setSearchQuery(searchValue); } - }, [searchValue]); + }, [searchQuery, searchValue]); return ( diff --git a/packages/docusaurus/src/client/exports/Link.tsx b/packages/docusaurus/src/client/exports/Link.tsx index 562653c5ad30..14203a1becea 100644 --- a/packages/docusaurus/src/client/exports/Link.tsx +++ b/packages/docusaurus/src/client/exports/Link.tsx @@ -90,16 +90,16 @@ function Link({ const IOSupported = ExecutionEnvironment.canUseIntersectionObserver; - let io: IntersectionObserver; + const ioRef = useRef(); const handleIntersection = (el: HTMLAnchorElement, cb: () => void) => { - io = new window.IntersectionObserver((entries) => { + ioRef.current = new window.IntersectionObserver((entries) => { entries.forEach((entry) => { if (el === entry.target) { // If element is in viewport, stop listening/observing and run callback. // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API if (entry.isIntersecting || entry.intersectionRatio > 0) { - io.unobserve(el); - io.disconnect(); + ioRef.current!.unobserve(el); + ioRef.current!.disconnect(); cb(); } } @@ -107,7 +107,7 @@ function Link({ }); // Add element to the observer. - io.observe(el); + ioRef.current!.observe(el); }; const handleRef = (ref: HTMLAnchorElement | null) => { @@ -138,11 +138,11 @@ function Link({ // When unmounting, stop intersection observer from watching. return () => { - if (IOSupported && io) { - io.disconnect(); + if (IOSupported && ioRef.current) { + ioRef.current.disconnect(); } }; - }, [targetLink, IOSupported, isInternal]); + }, [ioRef, targetLink, IOSupported, isInternal]); const isAnchorLink = targetLink?.startsWith('#') ?? false; const isRegularHtmlLink = !targetLink || !isInternal || isAnchorLink; From d799405acea061a96315eac2959e22c320245d25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Lorber?= Date: Wed, 20 Oct 2021 17:36:33 +0200 Subject: [PATCH 14/26] fix: stable callbacks in useSearchQuery + refactor (#5751) --- .../src/theme/SearchPage/index.js | 18 +------ .../src/theme/hooks/useSearchQuery.js | 51 +++++++++++++------ 2 files changed, 37 insertions(+), 32 deletions(-) diff --git a/packages/docusaurus-theme-search-algolia/src/theme/SearchPage/index.js b/packages/docusaurus-theme-search-algolia/src/theme/SearchPage/index.js index d319b37bcff6..8c3ac8b7d7a6 100644 --- a/packages/docusaurus-theme-search-algolia/src/theme/SearchPage/index.js +++ b/packages/docusaurus-theme-search-algolia/src/theme/SearchPage/index.js @@ -129,8 +129,7 @@ function SearchPage() { const documentsFoundPlural = useDocumentsFoundPlural(); const docsSearchVersionsHelpers = useDocsSearchVersionsHelpers(); - const {searchValue, updateSearchPath} = useSearchQuery(); - const [searchQuery, setSearchQuery] = useState(searchValue); + const {searchQuery, setSearchQuery} = useSearchQuery(); const initialSearchResultState = { items: [], query: null, @@ -303,8 +302,6 @@ function SearchPage() { }, [loaderRef]); useEffect(() => { - updateSearchPath(searchQuery); - searchResultStateDispatcher({type: 'reset'}); if (searchQuery) { @@ -314,12 +311,7 @@ function SearchPage() { makeSearch(); }, 300); } - }, [ - searchQuery, - docsSearchVersionsHelpers.searchVersions, - updateSearchPath, - makeSearch, - ]); + }, [searchQuery, docsSearchVersionsHelpers.searchVersions, makeSearch]); useEffect(() => { if (!searchResultState.lastPage || searchResultState.lastPage === 0) { @@ -329,12 +321,6 @@ function SearchPage() { makeSearch(searchResultState.lastPage); }, [makeSearch, searchResultState.lastPage]); - useEffect(() => { - if (searchValue && searchValue !== searchQuery) { - setSearchQuery(searchValue); - } - }, [searchQuery, searchValue]); - return ( diff --git a/packages/docusaurus-theme-search-algolia/src/theme/hooks/useSearchQuery.js b/packages/docusaurus-theme-search-algolia/src/theme/hooks/useSearchQuery.js index 19e942c1dba2..5789251fa814 100644 --- a/packages/docusaurus-theme-search-algolia/src/theme/hooks/useSearchQuery.js +++ b/packages/docusaurus-theme-search-algolia/src/theme/hooks/useSearchQuery.js @@ -5,27 +5,34 @@ * LICENSE file in the root directory of this source tree. */ -import {useHistory, useLocation} from '@docusaurus/router'; -import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment'; +import {useHistory} from '@docusaurus/router'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; +import {useCallback, useEffect, useState} from 'react'; const SEARCH_PARAM_QUERY = 'q'; function useSearchQuery() { const history = useHistory(); - const location = useLocation(); - const {siteConfig: {baseUrl} = {}} = useDocusaurusContext(); + const { + siteConfig: {baseUrl}, + } = useDocusaurusContext(); - return { - searchValue: - (ExecutionEnvironment.canUseDOM && - new URLSearchParams(location.search).get(SEARCH_PARAM_QUERY)) || - '', - updateSearchPath: (searchValue) => { - const searchParams = new URLSearchParams(location.search); - - if (searchValue) { - searchParams.set(SEARCH_PARAM_QUERY, searchValue); + const [searchQuery, setSearchQueryState] = useState(''); + + // Init search query just after React hydration + useEffect(() => { + const searchQueryStringValue = + new URLSearchParams(window.location.search).get(SEARCH_PARAM_QUERY) ?? ''; + + setSearchQueryState(searchQueryStringValue); + }, []); + + const setSearchQuery = useCallback( + (newSearchQuery) => { + const searchParams = new URLSearchParams(window.location.search); + + if (newSearchQuery) { + searchParams.set(SEARCH_PARAM_QUERY, newSearchQuery); } else { searchParams.delete(SEARCH_PARAM_QUERY); } @@ -33,11 +40,23 @@ function useSearchQuery() { history.replace({ search: searchParams.toString(), }); + setSearchQueryState(newSearchQuery); }, - generateSearchPageLink: (searchValue) => { + [history], + ); + + const generateSearchPageLink = useCallback( + (targetSearchQuery) => { // Refer to https://github.com/facebook/docusaurus/pull/2838 - return `${baseUrl}search?q=${encodeURIComponent(searchValue)}`; + return `${baseUrl}search?q=${encodeURIComponent(targetSearchQuery)}`; }, + [baseUrl], + ); + + return { + searchQuery, + setSearchQuery, + generateSearchPageLink, }; } From fd41239f4fc8bdc4c266265a6f35ac568676a062 Mon Sep 17 00:00:00 2001 From: Alexey Pyltsyn Date: Wed, 20 Oct 2021 18:43:10 +0300 Subject: [PATCH 15/26] fix: handle rubber band scrolling in hideable navbar (#5721) --- .../src/theme/hooks/useHideableNavbar.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/docusaurus-theme-classic/src/theme/hooks/useHideableNavbar.ts b/packages/docusaurus-theme-classic/src/theme/hooks/useHideableNavbar.ts index f4ae24278158..40a9da1ae93d 100644 --- a/packages/docusaurus-theme-classic/src/theme/hooks/useHideableNavbar.ts +++ b/packages/docusaurus-theme-classic/src/theme/hooks/useHideableNavbar.ts @@ -24,12 +24,19 @@ const useHideableNavbar = (hideOnScroll: boolean): useHideableNavbarReturns => { return; } + const scrollTop = currentPosition.scrollY; + + // It needed for mostly to handle rubber band scrolling + if (scrollTop < navbarHeight.current) { + setIsNavbarVisible(true); + return; + } + if (isFocusedAnchor.current) { isFocusedAnchor.current = false; return; } - const scrollTop = currentPosition.scrollY; const lastScrollTop = lastPosition?.scrollY; const documentHeight = document.documentElement.scrollHeight - navbarHeight.current; From 29d13351a493dc6f1a302f9a3540f806f2822709 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Lorber?= Date: Thu, 21 Oct 2021 11:57:47 +0200 Subject: [PATCH 16/26] fix(content-blog): temporarily swallow feed mdxToHtml errors + feed refactor (#5753) --- .../website/blog/mdx-require-blog-post.mdx | 14 ++ .../website/static/img/docusaurus.png | Bin 0 -> 5142 bytes ...logFeed.test.ts.snap => feed.test.ts.snap} | 22 ++- ...{generateBlogFeed.test.ts => feed.test.ts} | 32 +++-- .../src/__tests__/index.test.ts | 26 ++-- .../src/blogUtils.ts | 63 --------- .../src/feed.ts | 129 ++++++++++++++++++ .../src/index.ts | 37 ++--- ...10-08-blog-post-mdx-require-feed-tests.mdx | 20 +++ 9 files changed, 234 insertions(+), 109 deletions(-) create mode 100644 packages/docusaurus-plugin-content-blog/src/__tests__/__fixtures__/website/blog/mdx-require-blog-post.mdx create mode 100644 packages/docusaurus-plugin-content-blog/src/__tests__/__fixtures__/website/static/img/docusaurus.png rename packages/docusaurus-plugin-content-blog/src/__tests__/__snapshots__/{generateBlogFeed.test.ts.snap => feed.test.ts.snap} (90%) rename packages/docusaurus-plugin-content-blog/src/__tests__/{generateBlogFeed.test.ts => feed.test.ts} (82%) create mode 100644 packages/docusaurus-plugin-content-blog/src/feed.ts create mode 100644 website/_dogfooding/_blog tests/2021-10-08-blog-post-mdx-require-feed-tests.mdx diff --git a/packages/docusaurus-plugin-content-blog/src/__tests__/__fixtures__/website/blog/mdx-require-blog-post.mdx b/packages/docusaurus-plugin-content-blog/src/__tests__/__fixtures__/website/blog/mdx-require-blog-post.mdx new file mode 100644 index 000000000000..5ff703b4cb3d --- /dev/null +++ b/packages/docusaurus-plugin-content-blog/src/__tests__/__fixtures__/website/blog/mdx-require-blog-post.mdx @@ -0,0 +1,14 @@ +--- +title: MDX Blog Sample with require calls +date: 2021-03-06 +--- + +Test MDX with require calls + +import useBaseUrl from '@docusaurus/useBaseUrl'; + + + + + + diff --git a/packages/docusaurus-plugin-content-blog/src/__tests__/__fixtures__/website/static/img/docusaurus.png b/packages/docusaurus-plugin-content-blog/src/__tests__/__fixtures__/website/static/img/docusaurus.png new file mode 100644 index 0000000000000000000000000000000000000000..f458149e3c8f53335f28fbc162ae67f55575c881 GIT binary patch literal 5142 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 F{0H{b<4^zq literal 0 HcmV?d00001 diff --git a/packages/docusaurus-plugin-content-blog/src/__tests__/__snapshots__/generateBlogFeed.test.ts.snap b/packages/docusaurus-plugin-content-blog/src/__tests__/__snapshots__/feed.test.ts.snap similarity index 90% rename from packages/docusaurus-plugin-content-blog/src/__tests__/__snapshots__/generateBlogFeed.test.ts.snap rename to packages/docusaurus-plugin-content-blog/src/__tests__/__snapshots__/feed.test.ts.snap index 8914514cebaa..8e600fd89a0b 100644 --- a/packages/docusaurus-plugin-content-blog/src/__tests__/__snapshots__/generateBlogFeed.test.ts.snap +++ b/packages/docusaurus-plugin-content-blog/src/__tests__/__snapshots__/feed.test.ts.snap @@ -1,18 +1,23 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`blogFeed atom should not show feed without posts 1`] = `null`; - exports[`blogFeed atom shows feed item for each post 1`] = ` " https://docusaurus.io/myBaseUrl/blog Hello Blog - 2021-03-05T00:00:00.000Z + 2021-03-06T00:00:00.000Z https://github.com/jpmonette/feed Hello Blog https://docusaurus.io/myBaseUrl/image/favicon.ico Copyright + + <![CDATA[MDX Blog Sample with require calls]]> + MDX Blog Sample with require calls + + 2021-03-06T00:00:00.000Z + + <![CDATA[Full Blog Sample]]> Full Blog Sample @@ -81,8 +86,6 @@ exports[`blogFeed atom shows feed item for each post 1`] = ` " `; -exports[`blogFeed rss should not show feed without posts 1`] = `null`; - exports[`blogFeed rss shows feed item for each post 1`] = ` " @@ -90,10 +93,17 @@ exports[`blogFeed rss shows feed item for each post 1`] = ` Hello Blog https://docusaurus.io/myBaseUrl/blog Hello Blog - Fri, 05 Mar 2021 00:00:00 GMT + Sat, 06 Mar 2021 00:00:00 GMT https://validator.w3.org/feed/docs/rss2.html https://github.com/jpmonette/feed Copyright + + <![CDATA[MDX Blog Sample with require calls]]> + https://docusaurus.io/myBaseUrl/blog/mdx-require-blog-post + MDX Blog Sample with require calls + Sat, 06 Mar 2021 00:00:00 GMT + + <![CDATA[Full Blog Sample]]> https://docusaurus.io/myBaseUrl/blog/mdx-blog-post diff --git a/packages/docusaurus-plugin-content-blog/src/__tests__/generateBlogFeed.test.ts b/packages/docusaurus-plugin-content-blog/src/__tests__/feed.test.ts similarity index 82% rename from packages/docusaurus-plugin-content-blog/src/__tests__/generateBlogFeed.test.ts rename to packages/docusaurus-plugin-content-blog/src/__tests__/feed.test.ts index c9cc678e7bea..d2261547a756 100644 --- a/packages/docusaurus-plugin-content-blog/src/__tests__/generateBlogFeed.test.ts +++ b/packages/docusaurus-plugin-content-blog/src/__tests__/feed.test.ts @@ -6,10 +6,12 @@ */ import path from 'path'; -import {generateBlogFeed} from '../blogUtils'; +import {generateBlogFeed} from '../feed'; import {LoadContext, I18n} from '@docusaurus/types'; import {PluginOptions, BlogContentPaths} from '../types'; import {DEFAULT_OPTIONS} from '../pluginOptionSchema'; +import {generateBlogPosts} from '../blogUtils'; +import {Feed} from 'feed'; const DefaultI18N: I18n = { currentLocale: 'en', @@ -30,6 +32,23 @@ function getBlogContentPaths(siteDir: string): BlogContentPaths { }; } +async function testGenerateFeeds( + context: LoadContext, + options: PluginOptions, +): Promise { + const blogPosts = await generateBlogPosts( + getBlogContentPaths(context.siteDir), + context, + options, + ); + + return generateBlogFeed({ + blogPosts, + options, + siteConfig: context.siteConfig, + }); +} + describe('blogFeed', () => { (['atom', 'rss'] as const).forEach((feedType) => { describe(`${feedType}`, () => { @@ -42,8 +61,7 @@ describe('blogFeed', () => { favicon: 'image/favicon.ico', }; - const feed = await generateBlogFeed( - getBlogContentPaths(siteDir), + const feed = await testGenerateFeeds( { siteDir, siteConfig, @@ -61,9 +79,8 @@ describe('blogFeed', () => { }, } as PluginOptions, ); - const feedContent = - feed && (feedType === 'rss' ? feed.rss2() : feed.atom1()); - expect(feedContent).toMatchSnapshot(); + + expect(feed).toEqual(null); }); test('shows feed item for each post', async () => { @@ -76,8 +93,7 @@ describe('blogFeed', () => { favicon: 'image/favicon.ico', }; - const feed = await generateBlogFeed( - getBlogContentPaths(siteDir), + const feed = await testGenerateFeeds( { siteDir, siteConfig, 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 238b4f04fef7..0aa725b0bf94 100644 --- a/packages/docusaurus-plugin-content-blog/src/__tests__/index.test.ts +++ b/packages/docusaurus-plugin-content-blog/src/__tests__/index.test.ts @@ -246,26 +246,29 @@ describe('loadBlog', () => { test('simple website blog dates localized', async () => { const siteDir = path.join(__dirname, '__fixtures__', 'website'); const blogPostsFrench = await getBlogPosts(siteDir, {}, getI18n('fr')); - expect(blogPostsFrench).toHaveLength(7); + expect(blogPostsFrench).toHaveLength(8); expect(blogPostsFrench[0].metadata.formattedDate).toMatchInlineSnapshot( - `"5 mars 2021"`, + `"6 mars 2021"`, ); expect(blogPostsFrench[1].metadata.formattedDate).toMatchInlineSnapshot( - `"16 août 2020"`, + `"5 mars 2021"`, ); expect(blogPostsFrench[2].metadata.formattedDate).toMatchInlineSnapshot( - `"15 août 2020"`, + `"16 août 2020"`, ); expect(blogPostsFrench[3].metadata.formattedDate).toMatchInlineSnapshot( - `"27 février 2020"`, + `"15 août 2020"`, ); expect(blogPostsFrench[4].metadata.formattedDate).toMatchInlineSnapshot( - `"2 janvier 2019"`, + `"27 février 2020"`, ); expect(blogPostsFrench[5].metadata.formattedDate).toMatchInlineSnapshot( - `"1 janvier 2019"`, + `"2 janvier 2019"`, ); expect(blogPostsFrench[6].metadata.formattedDate).toMatchInlineSnapshot( + `"1 janvier 2019"`, + ); + expect(blogPostsFrench[7].metadata.formattedDate).toMatchInlineSnapshot( `"14 décembre 2018"`, ); }); @@ -295,7 +298,8 @@ describe('loadBlog', () => { expect(blogPost.metadata.editUrl).toEqual(hardcodedEditUrl); }); - expect(editUrlFunction).toHaveBeenCalledTimes(7); + expect(editUrlFunction).toHaveBeenCalledTimes(8); + expect(editUrlFunction).toHaveBeenCalledWith({ blogDirPath: 'blog', blogPath: 'date-matter.md', @@ -314,6 +318,12 @@ describe('loadBlog', () => { permalink: '/blog/mdx-blog-post', locale: 'en', }); + expect(editUrlFunction).toHaveBeenCalledWith({ + blogDirPath: 'blog', + blogPath: 'mdx-require-blog-post.mdx', + permalink: '/blog/mdx-require-blog-post', + locale: 'en', + }); expect(editUrlFunction).toHaveBeenCalledWith({ blogDirPath: 'blog', blogPath: 'complex-slug.md', diff --git a/packages/docusaurus-plugin-content-blog/src/blogUtils.ts b/packages/docusaurus-plugin-content-blog/src/blogUtils.ts index 9465103030a3..011eb4fa6a82 100644 --- a/packages/docusaurus-plugin-content-blog/src/blogUtils.ts +++ b/packages/docusaurus-plugin-content-blog/src/blogUtils.ts @@ -9,7 +9,6 @@ import fs from 'fs-extra'; import chalk from 'chalk'; import path from 'path'; import readingTime from 'reading-time'; -import {Feed, Author as FeedAuthor} from 'feed'; import {compact, keyBy, mapValues} from 'lodash'; import { PluginOptions, @@ -17,7 +16,6 @@ import { BlogContentPaths, BlogMarkdownLoaderOptions, BlogTags, - Author, } from './types'; import { parseMarkdownFile, @@ -26,7 +24,6 @@ import { getEditUrl, getFolderContainingFile, posixPath, - mdxToHtml, replaceMarkdownLinks, Globby, normalizeFrontMatterTags, @@ -104,66 +101,6 @@ function formatBlogPostDate(locale: string, date: Date): string { } } -export async function generateBlogFeed( - contentPaths: BlogContentPaths, - context: LoadContext, - options: PluginOptions, -): Promise { - if (!options.feedOptions) { - throw new Error( - 'Invalid options: "feedOptions" is not expected to be null.', - ); - } - const {siteConfig} = context; - const blogPosts = await generateBlogPosts(contentPaths, context, options); - if (!blogPosts.length) { - return null; - } - - const {feedOptions, routeBasePath} = options; - const {url: siteUrl, baseUrl, title, favicon} = siteConfig; - const blogBaseUrl = normalizeUrl([siteUrl, baseUrl, routeBasePath]); - - const updated = - (blogPosts[0] && blogPosts[0].metadata.date) || - new Date('2015-10-25T16:29:00.000-07:00'); - - const feed = new Feed({ - id: blogBaseUrl, - title: feedOptions.title || `${title} Blog`, - updated, - language: feedOptions.language, - link: blogBaseUrl, - description: feedOptions.description || `${siteConfig.title} Blog`, - favicon: favicon ? normalizeUrl([siteUrl, baseUrl, favicon]) : undefined, - copyright: feedOptions.copyright, - }); - - function toFeedAuthor(author: Author): FeedAuthor { - // TODO ask author emails? - // RSS feed requires email to render authors - return {name: author.name, link: author.url}; - } - - blogPosts.forEach((post) => { - const { - id, - metadata: {title: metadataTitle, permalink, date, description, authors}, - } = post; - feed.addItem({ - title: metadataTitle, - id, - link: normalizeUrl([siteUrl, permalink]), - date, - description, - content: mdxToHtml(post.content), - author: authors.map(toFeedAuthor), - }); - }); - - return feed; -} - async function parseBlogPostMarkdownFile(blogSourceAbsolute: string) { const result = await parseMarkdownFile(blogSourceAbsolute, { removeContentTitle: true, diff --git a/packages/docusaurus-plugin-content-blog/src/feed.ts b/packages/docusaurus-plugin-content-blog/src/feed.ts new file mode 100644 index 000000000000..7d0ce97add9a --- /dev/null +++ b/packages/docusaurus-plugin-content-blog/src/feed.ts @@ -0,0 +1,129 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import {Feed, Author as FeedAuthor} from 'feed'; +import {PluginOptions, Author, BlogPost, FeedType} from './types'; +import {normalizeUrl, mdxToHtml} from '@docusaurus/utils'; +import {DocusaurusConfig} from '@docusaurus/types'; +import path from 'path'; +import fs from 'fs-extra'; + +// TODO this is temporary until we handle mdxToHtml better +// It's hard to convert reliably JSX/require calls to an html feed content +// See https://github.com/facebook/docusaurus/issues/5664 +function mdxToFeedContent(mdxContent: string): string | undefined { + try { + return mdxToHtml(mdxContent); + } catch (e) { + // TODO will we need a plugin option to configure how to handle such an error + // Swallow the error on purpose for now, until we understand better the problem space + return undefined; + } +} + +export async function generateBlogFeed({ + blogPosts, + options, + siteConfig, +}: { + blogPosts: BlogPost[]; + options: PluginOptions; + siteConfig: DocusaurusConfig; +}): Promise { + if (!blogPosts.length) { + return null; + } + + const {feedOptions, routeBasePath} = options; + const {url: siteUrl, baseUrl, title, favicon} = siteConfig; + const blogBaseUrl = normalizeUrl([siteUrl, baseUrl, routeBasePath]); + + const updated = + (blogPosts[0] && blogPosts[0].metadata.date) || + new Date('2015-10-25T16:29:00.000-07:00'); // weird legacy magic date + + const feed = new Feed({ + id: blogBaseUrl, + title: feedOptions.title || `${title} Blog`, + updated, + language: feedOptions.language, + link: blogBaseUrl, + description: feedOptions.description || `${siteConfig.title} Blog`, + favicon: favicon ? normalizeUrl([siteUrl, baseUrl, favicon]) : undefined, + copyright: feedOptions.copyright, + }); + + function toFeedAuthor(author: Author): FeedAuthor { + // TODO ask author emails? + // RSS feed requires email to render authors + return {name: author.name, link: author.url}; + } + + blogPosts.forEach((post) => { + const { + id, + metadata: {title: metadataTitle, permalink, date, description, authors}, + } = post; + feed.addItem({ + title: metadataTitle, + id, + link: normalizeUrl([siteUrl, permalink]), + date, + description, + content: mdxToFeedContent(post.content), + author: authors.map(toFeedAuthor), + }); + }); + + return feed; +} + +async function createBlogFeedFile({ + feed, + feedType, + filePath, +}: { + feed: Feed; + feedType: FeedType; + filePath: string; +}) { + const feedContent = feedType === 'rss' ? feed.rss2() : feed.atom1(); + try { + await fs.outputFile(filePath, feedContent); + } catch (err) { + throw new Error(`Generating ${feedType} feed failed: ${err}.`); + } +} + +export async function createBlogFeedFiles({ + blogPosts, + options, + siteConfig, + outDir, +}: { + blogPosts: BlogPost[]; + options: PluginOptions; + siteConfig: DocusaurusConfig; + outDir: string; +}): Promise { + const feed = await generateBlogFeed({blogPosts, options, siteConfig}); + + const feedTypes = options.feedOptions.type; + if (!feed || !feedTypes) { + return; + } + + await Promise.all( + feedTypes.map(async function (feedType) { + await createBlogFeedFile({ + feed, + feedType, + filePath: path.join(outDir, options.routeBasePath, `${feedType}.xml`), + }); + }), + ); +} diff --git a/packages/docusaurus-plugin-content-blog/src/index.ts b/packages/docusaurus-plugin-content-blog/src/index.ts index 3cb75b946a6f..b7f2cf7ebd68 100644 --- a/packages/docusaurus-plugin-content-blog/src/index.ts +++ b/packages/docusaurus-plugin-content-blog/src/index.ts @@ -5,7 +5,6 @@ * LICENSE file in the root directory of this source tree. */ -import fs from 'fs-extra'; import path from 'path'; import admonitions from 'remark-admonitions'; import { @@ -49,13 +48,13 @@ import { } from '@docusaurus/types'; import {Configuration} from 'webpack'; import { - generateBlogFeed, generateBlogPosts, getContentPathList, getSourceToPermalink, getBlogTags, } from './blogUtils'; import {BlogPostFrontMatter} from './blogFrontMatter'; +import {createBlogFeedFiles} from './feed'; export default function pluginContentBlog( context: LoadContext, @@ -69,10 +68,11 @@ export default function pluginContentBlog( const { siteDir, - siteConfig: {onBrokenMarkdownLinks, baseUrl}, + siteConfig, generatedFilesDir, i18n: {currentLocale}, } = context; + const {onBrokenMarkdownLinks, baseUrl} = siteConfig; const contentPaths: BlogContentPaths = { contentPath: path.resolve(siteDir, options.path), @@ -519,29 +519,18 @@ export default function pluginContentBlog( return; } - const feed = await generateBlogFeed(contentPaths, context, options); - - if (!feed) { + // TODO: we shouldn't need to re-read the posts here! + // postBuild should receive loadedContent + const blogPosts = await generateBlogPosts(contentPaths, context, options); + if (blogPosts.length) { return; } - - const feedTypes = options.feedOptions.type; - - await Promise.all( - feedTypes.map(async (feedType) => { - const feedPath = path.join( - outDir, - options.routeBasePath, - `${feedType}.xml`, - ); - const feedContent = feedType === 'rss' ? feed.rss2() : feed.atom1(); - try { - await fs.outputFile(feedPath, feedContent); - } catch (err) { - throw new Error(`Generating ${feedType} feed failed: ${err}.`); - } - }), - ); + await createBlogFeedFiles({ + blogPosts, + options, + outDir, + siteConfig, + }); }, injectHtmlTags({content}) { diff --git a/website/_dogfooding/_blog tests/2021-10-08-blog-post-mdx-require-feed-tests.mdx b/website/_dogfooding/_blog tests/2021-10-08-blog-post-mdx-require-feed-tests.mdx new file mode 100644 index 000000000000..29c0cd60fa84 --- /dev/null +++ b/website/_dogfooding/_blog tests/2021-10-08-blog-post-mdx-require-feed-tests.mdx @@ -0,0 +1,20 @@ +--- +title: Blog post MDX require Feed tests +authors: + - slorber +tags: [blog, docusaurus, long-long, long-long-long, long-long-long-long] +--- + +Some MDX tests, mostly to test how the RSS feed render those + + + +Test MDX with require calls + +import useBaseUrl from '@docusaurus/useBaseUrl'; + + + + + + From 3127f1265493cc0976d7be76815c3914bfb1a033 Mon Sep 17 00:00:00 2001 From: Joshua Chen Date: Thu, 21 Oct 2021 18:27:57 +0800 Subject: [PATCH 17/26] feat(content-docs): new front matter options to customize pagination (#5705) --- .../simple-site/docs/rootAbsoluteSlug.md | 2 + .../simple-site/docs/rootRelativeSlug.md | 2 + .../simple-site/docs/rootResolvedSlug.md | 2 + .../simple-site/docs/rootTryToEscapeSlug.md | 2 + .../__fixtures__/simple-site/sidebars.json | 16 +- .../__tests__/__snapshots__/cli.test.ts.snap | 28 ++++ .../__tests__/__snapshots__/docs.test.ts.snap | 140 ++++++++++++++++ .../__snapshots__/index.test.ts.snap | 157 +++++++++++++++--- .../src/__tests__/docs.test.ts | 64 ++++++- .../src/__tests__/index.test.ts | 9 +- .../src/docFrontMatter.ts | 2 + .../src/docs.ts | 82 ++++++++- .../src/index.ts | 74 +-------- .../src/types.ts | 2 + .../docs/api/plugins/plugin-content-docs.md | 2 + 15 files changed, 489 insertions(+), 95 deletions(-) create mode 100644 packages/docusaurus-plugin-content-docs/src/__tests__/__snapshots__/docs.test.ts.snap diff --git a/packages/docusaurus-plugin-content-docs/src/__tests__/__fixtures__/simple-site/docs/rootAbsoluteSlug.md b/packages/docusaurus-plugin-content-docs/src/__tests__/__fixtures__/simple-site/docs/rootAbsoluteSlug.md index a9f7e1d353df..3aa6ccb0ff30 100644 --- a/packages/docusaurus-plugin-content-docs/src/__tests__/__fixtures__/simple-site/docs/rootAbsoluteSlug.md +++ b/packages/docusaurus-plugin-content-docs/src/__tests__/__fixtures__/simple-site/docs/rootAbsoluteSlug.md @@ -1,5 +1,7 @@ --- slug: /rootAbsoluteSlug +pagination_next: headingAsTitle +pagination_prev: foo/baz --- Lorem \ No newline at end of file diff --git a/packages/docusaurus-plugin-content-docs/src/__tests__/__fixtures__/simple-site/docs/rootRelativeSlug.md b/packages/docusaurus-plugin-content-docs/src/__tests__/__fixtures__/simple-site/docs/rootRelativeSlug.md index 660f01f0dfae..4b795e81f300 100644 --- a/packages/docusaurus-plugin-content-docs/src/__tests__/__fixtures__/simple-site/docs/rootRelativeSlug.md +++ b/packages/docusaurus-plugin-content-docs/src/__tests__/__fixtures__/simple-site/docs/rootRelativeSlug.md @@ -1,5 +1,7 @@ --- slug: rootRelativeSlug +pagination_next: headingAsTitle +pagination_prev: foo/baz --- Lorem \ No newline at end of file diff --git a/packages/docusaurus-plugin-content-docs/src/__tests__/__fixtures__/simple-site/docs/rootResolvedSlug.md b/packages/docusaurus-plugin-content-docs/src/__tests__/__fixtures__/simple-site/docs/rootResolvedSlug.md index e0119375626d..0581995f86e0 100644 --- a/packages/docusaurus-plugin-content-docs/src/__tests__/__fixtures__/simple-site/docs/rootResolvedSlug.md +++ b/packages/docusaurus-plugin-content-docs/src/__tests__/__fixtures__/simple-site/docs/rootResolvedSlug.md @@ -1,5 +1,7 @@ --- slug: ./hey/ho/../rootResolvedSlug +pagination_next: headingAsTitle +pagination_prev: foo/baz --- Lorem \ No newline at end of file diff --git a/packages/docusaurus-plugin-content-docs/src/__tests__/__fixtures__/simple-site/docs/rootTryToEscapeSlug.md b/packages/docusaurus-plugin-content-docs/src/__tests__/__fixtures__/simple-site/docs/rootTryToEscapeSlug.md index d736a1881c6b..b6f0a49aab8f 100644 --- a/packages/docusaurus-plugin-content-docs/src/__tests__/__fixtures__/simple-site/docs/rootTryToEscapeSlug.md +++ b/packages/docusaurus-plugin-content-docs/src/__tests__/__fixtures__/simple-site/docs/rootTryToEscapeSlug.md @@ -1,5 +1,7 @@ --- slug: ../../../../../../../../rootTryToEscapeSlug +pagination_next: headingAsTitle +pagination_prev: foo/baz --- Lorem \ No newline at end of file diff --git a/packages/docusaurus-plugin-content-docs/src/__tests__/__fixtures__/simple-site/sidebars.json b/packages/docusaurus-plugin-content-docs/src/__tests__/__fixtures__/simple-site/sidebars.json index 7892de099a43..65c87bc85975 100644 --- a/packages/docusaurus-plugin-content-docs/src/__tests__/__fixtures__/simple-site/sidebars.json +++ b/packages/docusaurus-plugin-content-docs/src/__tests__/__fixtures__/simple-site/sidebars.json @@ -4,7 +4,21 @@ { "type": "category", "label": "foo", - "items": ["foo/bar", "foo/baz"] + "items": ["foo/bar", "foo/baz"] + }, + { + "type": "category", + "label": "Slugs", + "items": [ + "rootAbsoluteSlug", + "rootRelativeSlug", + "rootResolvedSlug", + "rootTryToEscapeSlug" + ] + }, + { + "type": "doc", + "id": "headingAsTitle" }, { "type": "link", diff --git a/packages/docusaurus-plugin-content-docs/src/__tests__/__snapshots__/cli.test.ts.snap b/packages/docusaurus-plugin-content-docs/src/__tests__/__snapshots__/cli.test.ts.snap index 9ed12034a2ae..2d4f355595c6 100644 --- a/packages/docusaurus-plugin-content-docs/src/__tests__/__snapshots__/cli.test.ts.snap +++ b/packages/docusaurus-plugin-content-docs/src/__tests__/__snapshots__/cli.test.ts.snap @@ -23,6 +23,34 @@ Object { "label": "foo", "type": "category", }, + Object { + "collapsed": true, + "collapsible": true, + "items": Array [ + Object { + "id": "version-1.0.0/rootAbsoluteSlug", + "type": "doc", + }, + Object { + "id": "version-1.0.0/rootRelativeSlug", + "type": "doc", + }, + Object { + "id": "version-1.0.0/rootResolvedSlug", + "type": "doc", + }, + Object { + "id": "version-1.0.0/rootTryToEscapeSlug", + "type": "doc", + }, + ], + "label": "Slugs", + "type": "category", + }, + Object { + "id": "version-1.0.0/headingAsTitle", + "type": "doc", + }, Object { "href": "https://github.com", "label": "Github", diff --git a/packages/docusaurus-plugin-content-docs/src/__tests__/__snapshots__/docs.test.ts.snap b/packages/docusaurus-plugin-content-docs/src/__tests__/__snapshots__/docs.test.ts.snap new file mode 100644 index 000000000000..97a9e725b268 --- /dev/null +++ b/packages/docusaurus-plugin-content-docs/src/__tests__/__snapshots__/docs.test.ts.snap @@ -0,0 +1,140 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`simple site custom pagination 1`] = ` +Array [ + Array [ + Object { + "permalink": "/docs/rootTryToEscapeSlug", + "title": "rootTryToEscapeSlug", + }, + Object { + "permalink": "/docs/foo/bazSlug.html", + "title": "baz pagination_label", + }, + ], + Array [ + Object { + "permalink": "/docs/foo/bar", + "title": "Bar", + }, + Object { + "permalink": "/docs/absoluteSlug", + "title": "absoluteSlug", + }, + ], + Array [ + undefined, + Object { + "permalink": "/docs/hello", + "title": "Hello sidebar_label", + }, + ], + Array [ + Object { + "permalink": "/docs/headingAsTitle", + "title": "My heading as title", + }, + Object { + "permalink": "/docs/ipsum", + "title": "ipsum", + }, + ], + Array [ + Object { + "permalink": "/docs/hello", + "title": "Hello sidebar_label", + }, + Object { + "permalink": "/docs/lorem", + "title": "lorem", + }, + ], + Array [ + Object { + "permalink": "/docs/ipsum", + "title": "ipsum", + }, + Object { + "permalink": "/docs/rootAbsoluteSlug", + "title": "rootAbsoluteSlug", + }, + ], + Array [ + Object { + "permalink": "/docs/foo/bazSlug.html", + "title": "baz pagination_label", + }, + Object { + "permalink": "/docs/headingAsTitle", + "title": "My heading as title", + }, + ], + Array [ + Object { + "permalink": "/docs/foo/bazSlug.html", + "title": "baz pagination_label", + }, + Object { + "permalink": "/docs/headingAsTitle", + "title": "My heading as title", + }, + ], + Array [ + Object { + "permalink": "/docs/foo/bazSlug.html", + "title": "baz pagination_label", + }, + Object { + "permalink": "/docs/headingAsTitle", + "title": "My heading as title", + }, + ], + Array [ + Object { + "permalink": "/docs/foo/bazSlug.html", + "title": "baz pagination_label", + }, + Object { + "permalink": "/docs/headingAsTitle", + "title": "My heading as title", + }, + ], + Array [ + Object { + "permalink": "/docs/foo/bazSlug.html", + "title": "baz pagination_label", + }, + Object { + "permalink": "/docs/slugs/relativeSlug", + "title": "relativeSlug", + }, + ], + Array [ + Object { + "permalink": "/docs/absoluteSlug", + "title": "absoluteSlug", + }, + Object { + "permalink": "/docs/slugs/hey/resolvedSlug", + "title": "resolvedSlug", + }, + ], + Array [ + Object { + "permalink": "/docs/slugs/relativeSlug", + "title": "relativeSlug", + }, + Object { + "permalink": "/docs/tryToEscapeSlug", + "title": "tryToEscapeSlug", + }, + ], + Array [ + Object { + "permalink": "/docs/slugs/hey/resolvedSlug", + "title": "resolvedSlug", + }, + undefined, + ], +] +`; diff --git a/packages/docusaurus-plugin-content-docs/src/__tests__/__snapshots__/index.test.ts.snap b/packages/docusaurus-plugin-content-docs/src/__tests__/__snapshots__/index.test.ts.snap index 8cd395b58b2f..368c1c146870 100644 --- a/packages/docusaurus-plugin-content-docs/src/__tests__/__snapshots__/index.test.ts.snap +++ b/packages/docusaurus-plugin-content-docs/src/__tests__/__snapshots__/index.test.ts.snap @@ -45,6 +45,34 @@ Object { "label": "foo", "type": "category", }, + Object { + "collapsed": true, + "collapsible": true, + "items": Array [ + Object { + "id": "rootAbsoluteSlug", + "type": "doc", + }, + Object { + "id": "rootRelativeSlug", + "type": "doc", + }, + Object { + "id": "rootResolvedSlug", + "type": "doc", + }, + Object { + "id": "rootTryToEscapeSlug", + "type": "doc", + }, + ], + "label": "Slugs", + "type": "category", + }, + Object { + "id": "headingAsTitle", + "type": "doc", + }, Object { "href": "https://github.com", "label": "Github", @@ -95,7 +123,7 @@ Object { Object { "id": "headingAsTitle", "path": "/docs/headingAsTitle", - "sidebar": undefined, + "sidebar": "docs", }, Object { "id": "hello", @@ -115,22 +143,22 @@ Object { Object { "id": "rootAbsoluteSlug", "path": "/docs/rootAbsoluteSlug", - "sidebar": undefined, + "sidebar": "docs", }, Object { "id": "rootRelativeSlug", "path": "/docs/rootRelativeSlug", - "sidebar": undefined, + "sidebar": "docs", }, Object { "id": "rootResolvedSlug", "path": "/docs/hey/rootResolvedSlug", - "sidebar": undefined, + "sidebar": "docs", }, Object { "id": "rootTryToEscapeSlug", "path": "/docs/rootTryToEscapeSlug", - "sidebar": undefined, + "sidebar": "docs", }, Object { "id": "slugs/absoluteSlug", @@ -231,8 +259,8 @@ Object { \\"permalink\\": \\"/docs/foo/bar\\" }, \\"next\\": { - \\"title\\": \\"Hello sidebar_label\\", - \\"permalink\\": \\"/docs/\\" + \\"title\\": \\"rootAbsoluteSlug\\", + \\"permalink\\": \\"/docs/rootAbsoluteSlug\\" } }", "site-docs-heading-as-title-md-c6d.json": "{ @@ -247,7 +275,16 @@ Object { \\"permalink\\": \\"/docs/headingAsTitle\\", \\"tags\\": [], \\"version\\": \\"current\\", - \\"frontMatter\\": {} + \\"frontMatter\\": {}, + \\"sidebar\\": \\"docs\\", + \\"previous\\": { + \\"title\\": \\"rootTryToEscapeSlug\\", + \\"permalink\\": \\"/docs/rootTryToEscapeSlug\\" + }, + \\"next\\": { + \\"title\\": \\"Hello sidebar_label\\", + \\"permalink\\": \\"/docs/\\" + } }", "site-docs-hello-md-9df.json": "{ \\"unversionedId\\": \\"hello\\", @@ -281,8 +318,8 @@ Object { }, \\"sidebar\\": \\"docs\\", \\"previous\\": { - \\"title\\": \\"baz pagination_label\\", - \\"permalink\\": \\"/docs/foo/bazSlug.html\\" + \\"title\\": \\"My heading as title\\", + \\"permalink\\": \\"/docs/headingAsTitle\\" } }", "site-docs-ipsum-md-c61.json": "{ @@ -333,7 +370,18 @@ Object { \\"tags\\": [], \\"version\\": \\"current\\", \\"frontMatter\\": { - \\"slug\\": \\"/rootAbsoluteSlug\\" + \\"slug\\": \\"/rootAbsoluteSlug\\", + \\"pagination_next\\": \\"headingAsTitle\\", + \\"pagination_prev\\": \\"foo/baz\\" + }, + \\"sidebar\\": \\"docs\\", + \\"previous\\": { + \\"title\\": \\"baz pagination_label\\", + \\"permalink\\": \\"/docs/foo/bazSlug.html\\" + }, + \\"next\\": { + \\"title\\": \\"My heading as title\\", + \\"permalink\\": \\"/docs/headingAsTitle\\" } }", "site-docs-root-relative-slug-md-3dd.json": "{ @@ -349,7 +397,18 @@ Object { \\"tags\\": [], \\"version\\": \\"current\\", \\"frontMatter\\": { - \\"slug\\": \\"rootRelativeSlug\\" + \\"slug\\": \\"rootRelativeSlug\\", + \\"pagination_next\\": \\"headingAsTitle\\", + \\"pagination_prev\\": \\"foo/baz\\" + }, + \\"sidebar\\": \\"docs\\", + \\"previous\\": { + \\"title\\": \\"baz pagination_label\\", + \\"permalink\\": \\"/docs/foo/bazSlug.html\\" + }, + \\"next\\": { + \\"title\\": \\"My heading as title\\", + \\"permalink\\": \\"/docs/headingAsTitle\\" } }", "site-docs-root-resolved-slug-md-4d1.json": "{ @@ -365,7 +424,18 @@ Object { \\"tags\\": [], \\"version\\": \\"current\\", \\"frontMatter\\": { - \\"slug\\": \\"./hey/ho/../rootResolvedSlug\\" + \\"slug\\": \\"./hey/ho/../rootResolvedSlug\\", + \\"pagination_next\\": \\"headingAsTitle\\", + \\"pagination_prev\\": \\"foo/baz\\" + }, + \\"sidebar\\": \\"docs\\", + \\"previous\\": { + \\"title\\": \\"baz pagination_label\\", + \\"permalink\\": \\"/docs/foo/bazSlug.html\\" + }, + \\"next\\": { + \\"title\\": \\"My heading as title\\", + \\"permalink\\": \\"/docs/headingAsTitle\\" } }", "site-docs-root-try-to-escape-slug-md-9ee.json": "{ @@ -381,7 +451,18 @@ Object { \\"tags\\": [], \\"version\\": \\"current\\", \\"frontMatter\\": { - \\"slug\\": \\"../../../../../../../../rootTryToEscapeSlug\\" + \\"slug\\": \\"../../../../../../../../rootTryToEscapeSlug\\", + \\"pagination_next\\": \\"headingAsTitle\\", + \\"pagination_prev\\": \\"foo/baz\\" + }, + \\"sidebar\\": \\"docs\\", + \\"previous\\": { + \\"title\\": \\"baz pagination_label\\", + \\"permalink\\": \\"/docs/foo/bazSlug.html\\" + }, + \\"next\\": { + \\"title\\": \\"My heading as title\\", + \\"permalink\\": \\"/docs/headingAsTitle\\" } }", "site-docs-slugs-absolute-slug-md-4e8.json": "{ @@ -544,6 +625,39 @@ Object { \\"collapsible\\": true, \\"collapsed\\": true }, + { + \\"type\\": \\"category\\", + \\"label\\": \\"Slugs\\", + \\"items\\": [ + { + \\"type\\": \\"link\\", + \\"label\\": \\"rootAbsoluteSlug\\", + \\"href\\": \\"/docs/rootAbsoluteSlug\\" + }, + { + \\"type\\": \\"link\\", + \\"label\\": \\"rootRelativeSlug\\", + \\"href\\": \\"/docs/rootRelativeSlug\\" + }, + { + \\"type\\": \\"link\\", + \\"label\\": \\"rootResolvedSlug\\", + \\"href\\": \\"/docs/hey/rootResolvedSlug\\" + }, + { + \\"type\\": \\"link\\", + \\"label\\": \\"rootTryToEscapeSlug\\", + \\"href\\": \\"/docs/rootTryToEscapeSlug\\" + } + ], + \\"collapsible\\": true, + \\"collapsed\\": true + }, + { + \\"type\\": \\"link\\", + \\"label\\": \\"My heading as title\\", + \\"href\\": \\"/docs/headingAsTitle\\" + }, { \\"type\\": \\"link\\", \\"label\\": \\"Github\\", @@ -596,7 +710,7 @@ Object { Object { "id": "headingAsTitle", "path": "/docs/headingAsTitle", - "sidebar": undefined, + "sidebar": "docs", }, Object { "id": "hello", @@ -616,22 +730,22 @@ Object { Object { "id": "rootAbsoluteSlug", "path": "/docs/rootAbsoluteSlug", - "sidebar": undefined, + "sidebar": "docs", }, Object { "id": "rootRelativeSlug", "path": "/docs/rootRelativeSlug", - "sidebar": undefined, + "sidebar": "docs", }, Object { "id": "rootResolvedSlug", "path": "/docs/hey/rootResolvedSlug", - "sidebar": undefined, + "sidebar": "docs", }, Object { "id": "rootTryToEscapeSlug", "path": "/docs/rootTryToEscapeSlug", - "sidebar": undefined, + "sidebar": "docs", }, Object { "id": "slugs/absoluteSlug", @@ -751,6 +865,7 @@ Array [ "content": "@site/docs/headingAsTitle.md", }, "path": "/docs/headingAsTitle", + "sidebar": "docs", }, Object { "component": "@theme/DocItem", @@ -759,6 +874,7 @@ Array [ "content": "@site/docs/rootResolvedSlug.md", }, "path": "/docs/hey/rootResolvedSlug", + "sidebar": "docs", }, Object { "component": "@theme/DocItem", @@ -783,6 +899,7 @@ Array [ "content": "@site/docs/rootAbsoluteSlug.md", }, "path": "/docs/rootAbsoluteSlug", + "sidebar": "docs", }, Object { "component": "@theme/DocItem", @@ -791,6 +908,7 @@ Array [ "content": "@site/docs/rootRelativeSlug.md", }, "path": "/docs/rootRelativeSlug", + "sidebar": "docs", }, Object { "component": "@theme/DocItem", @@ -799,6 +917,7 @@ Array [ "content": "@site/docs/rootTryToEscapeSlug.md", }, "path": "/docs/rootTryToEscapeSlug", + "sidebar": "docs", }, Object { "component": "@theme/DocItem", 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 0324112b3b1b..7f2574f101da 100644 --- a/packages/docusaurus-plugin-content-docs/src/__tests__/docs.test.ts +++ b/packages/docusaurus-plugin-content-docs/src/__tests__/docs.test.ts @@ -7,7 +7,13 @@ import path from 'path'; import {loadContext} from '@docusaurus/core/src/server/index'; -import {processDocMetadata, readVersionDocs, readDocFile} from '../docs'; +import { + processDocMetadata, + readVersionDocs, + readDocFile, + handleNavigation, +} from '../docs'; +import {loadSidebars} from '../sidebars'; import {readVersionsMetadata} from '../versions'; import { DocFile, @@ -16,6 +22,7 @@ import { VersionMetadata, PluginOptions, EditUrlFunction, + DocNavLink, } from '../types'; import {LoadContext} from '@docusaurus/types'; import {DEFAULT_PLUGIN_ID} from '@docusaurus/core/lib/constants'; @@ -110,7 +117,38 @@ function createTestUtils({ expect(metadata.permalink).toEqual(expectedPermalink); } - return {processDocFile, testMeta, testSlug}; + async function generateNavigation( + docFiles: DocFile[], + ): Promise<[DocNavLink, DocNavLink][]> { + const rawDocs = await Promise.all( + docFiles.map((docFile) => + processDocMetadata({ + docFile, + versionMetadata, + context, + options, + }), + ), + ); + const sidebars = await loadSidebars(versionMetadata.sidebarFilePath, { + sidebarItemsGenerator: ({defaultSidebarItemsGenerator, ...args}) => + defaultSidebarItemsGenerator({...args}), + numberPrefixParser: options.numberPrefixParser, + docs: rawDocs, + version: versionMetadata, + options: { + sidebarCollapsed: false, + sidebarCollapsible: true, + }, + }); + return handleNavigation( + rawDocs, + sidebars, + versionMetadata.sidebarFilePath as string, + ).docs.map((doc) => [doc.previous, doc.next]); + } + + return {processDocFile, testMeta, testSlug, generateNavigation}; } describe('simple site', () => { @@ -541,6 +579,28 @@ describe('simple site', () => { `"The docs homepage (homePageId=homePageId) is not allowed to have a frontmatter slug=/x/y => you have to choose either homePageId or slug, not both"`, ); }); + + test('custom pagination', async () => { + const {defaultTestUtils, options, versionsMetadata} = await loadSite(); + const docs = await readVersionDocs(versionsMetadata[0], options); + expect(await defaultTestUtils.generateNavigation(docs)).toMatchSnapshot(); + }); + + test('bad pagination', async () => { + const {defaultTestUtils, options, versionsMetadata} = await loadSite(); + const docs = await readVersionDocs(versionsMetadata[0], options); + docs.push( + createFakeDocFile({ + source: 'hehe', + frontmatter: {pagination_prev: 'nonexistent'}, + }), + ); + await expect(async () => { + await defaultTestUtils.generateNavigation(docs); + }).rejects.toThrowErrorMatchingInlineSnapshot( + `"Error when loading hehe in .: the pagination_prev front matter points to a non-existent ID nonexistent."`, + ); + }); }); describe('versioned site', () => { 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 98016bd9aed7..a17d351bcdc4 100644 --- a/packages/docusaurus-plugin-content-docs/src/__tests__/index.test.ts +++ b/packages/docusaurus-plugin-content-docs/src/__tests__/index.test.ts @@ -345,10 +345,11 @@ describe('simple website', () => { permalink: '/docs/foo/bar', }, next: { - title: 'Hello sidebar_label', - permalink: '/docs/', + title: 'rootAbsoluteSlug', + permalink: '/docs/rootAbsoluteSlug', }, sidebar: 'docs', + sidebarPosition: undefined, source: path.posix.join( '@site', posixPath(path.relative(siteDir, currentVersion.contentPath)), @@ -391,8 +392,8 @@ describe('simple website', () => { permalink: '/docs/', slug: '/', previous: { - title: 'baz pagination_label', - permalink: '/docs/foo/bazSlug.html', + title: 'My heading as title', + permalink: '/docs/headingAsTitle', }, sidebar: 'docs', source: path.posix.join( diff --git a/packages/docusaurus-plugin-content-docs/src/docFrontMatter.ts b/packages/docusaurus-plugin-content-docs/src/docFrontMatter.ts index cfb550ab9da7..1a20d1485ad2 100644 --- a/packages/docusaurus-plugin-content-docs/src/docFrontMatter.ts +++ b/packages/docusaurus-plugin-content-docs/src/docFrontMatter.ts @@ -34,6 +34,8 @@ const DocFrontMatterSchema = Joi.object({ pagination_label: Joi.string(), custom_edit_url: URISchema.allow('', null), parse_number_prefixes: Joi.boolean(), + pagination_next: Joi.string().allow(null), + pagination_prev: Joi.string().allow(null), ...FrontMatterTOCHeadingLevels, }).unknown(); diff --git a/packages/docusaurus-plugin-content-docs/src/docs.ts b/packages/docusaurus-plugin-content-docs/src/docs.ts index 8f92614e57a6..c2532d12ccc0 100644 --- a/packages/docusaurus-plugin-content-docs/src/docs.ts +++ b/packages/docusaurus-plugin-content-docs/src/docs.ts @@ -7,6 +7,8 @@ import path from 'path'; import fs from 'fs-extra'; +import chalk from 'chalk'; +import {keyBy} from 'lodash'; import { aliasedSitePath, getEditUrl, @@ -23,17 +25,21 @@ import {getFileLastUpdate} from './lastUpdate'; import { DocFile, DocMetadataBase, + DocMetadata, + DocNavLink, LastUpdateData, MetadataOptions, PluginOptions, VersionMetadata, + LoadedVersion, } from './types'; import getSlug from './slug'; import {CURRENT_VERSION_NAME} from './constants'; import {getDocsDirPaths} from './versions'; import {stripPathNumberPrefixes} from './numberPrefix'; import {validateDocFrontMatter} from './docFrontMatter'; -import chalk from 'chalk'; +import type {Sidebars} from './sidebars/types'; +import {createSidebarsUtils} from './sidebars/utils'; type LastUpdateOptions = Pick< PluginOptions, @@ -284,3 +290,77 @@ export function processDocMetadata(args: { throw e; } } + +export function handleNavigation( + docsBase: DocMetadataBase[], + sidebars: Sidebars, + sidebarFilePath: string, +): Pick { + const docsBaseById = keyBy(docsBase, (doc) => doc.id); + const {checkSidebarsDocIds, getDocNavigation, getFirstDocIdOfFirstSidebar} = + createSidebarsUtils(sidebars); + + const validDocIds = Object.keys(docsBaseById); + checkSidebarsDocIds(validDocIds, sidebarFilePath); + + // Add sidebar/next/previous to the docs + function addNavData(doc: DocMetadataBase): DocMetadata { + const {sidebarName, previousId, nextId} = getDocNavigation(doc.id); + const toDocNavLink = ( + docId: string | null | undefined, + type: 'prev' | 'next', + ): DocNavLink | undefined => { + if (!docId) { + return undefined; + } + if (!docsBaseById[docId]) { + // This could only happen if user provided the ID through front matter + throw new Error( + `Error when loading ${doc.id} in ${doc.sourceDirName}: the pagination_${type} front matter points to a non-existent ID ${docId}.`, + ); + } + const { + title, + permalink, + frontMatter: { + pagination_label: paginationLabel, + sidebar_label: sidebarLabel, + }, + } = docsBaseById[docId]; + return {title: paginationLabel ?? sidebarLabel ?? title, permalink}; + }; + const { + frontMatter: { + pagination_next: paginationNext = nextId, + pagination_prev: paginationPrev = previousId, + }, + } = doc; + const previous = toDocNavLink(paginationPrev, 'prev'); + const next = toDocNavLink(paginationNext, 'next'); + return {...doc, sidebar: sidebarName, previous, next}; + } + const docs = docsBase.map(addNavData); + // sort to ensure consistent output for tests + docs.sort((a, b) => a.id.localeCompare(b.id)); + + /** + * The "main doc" is the "version entry point" + * We browse this doc by clicking on a version: + * - the "home" doc (at '/docs/') + * - the first doc of the first sidebar + * - a random doc (if no docs are in any sidebar... edge case) + */ + function getMainDoc(): DocMetadata { + const versionHomeDoc = docs.find((doc) => doc.slug === '/'); + const firstDocIdOfFirstSidebar = getFirstDocIdOfFirstSidebar(); + if (versionHomeDoc) { + return versionHomeDoc; + } else if (firstDocIdOfFirstSidebar) { + return docs.find((doc) => doc.id === firstDocIdOfFirstSidebar)!; + } else { + return docs[0]; + } + } + + return {mainDocId: getMainDoc().unversionedId, docs}; +} diff --git a/packages/docusaurus-plugin-content-docs/src/index.ts b/packages/docusaurus-plugin-content-docs/src/index.ts index 340ce400187e..4c2f5220466e 100644 --- a/packages/docusaurus-plugin-content-docs/src/index.ts +++ b/packages/docusaurus-plugin-content-docs/src/index.ts @@ -22,9 +22,8 @@ import { } from '@docusaurus/utils'; import {LoadContext, Plugin, RouteConfig} from '@docusaurus/types'; import {loadSidebars} from './sidebars'; -import {createSidebarsUtils} from './sidebars/utils'; import {CategoryMetadataFilenamePattern} from './sidebars/generator'; -import {readVersionDocs, processDocMetadata} from './docs'; +import {readVersionDocs, processDocMetadata, handleNavigation} from './docs'; import {getDocsDirPaths, readVersionsMetadata} from './versions'; import { @@ -35,7 +34,6 @@ import { DocMetadata, GlobalPluginData, VersionMetadata, - DocNavLink, LoadedVersion, DocFile, DocsMarkdownOption, @@ -165,10 +163,6 @@ export default function pluginContentDocs( const docsBase: DocMetadataBase[] = await loadVersionDocsBase( versionMetadata, ); - const docsBaseById: Record = keyBy( - docsBase, - (doc) => doc.id, - ); const sidebars = await loadSidebars(versionMetadata.sidebarFilePath, { sidebarItemsGenerator: options.sidebarItemsGenerator, @@ -180,70 +174,14 @@ export default function pluginContentDocs( sidebarCollapsible: options.sidebarCollapsible, }, }); - - const { - checkSidebarsDocIds, - getDocNavigation, - getFirstDocIdOfFirstSidebar, - } = createSidebarsUtils(sidebars); - - const validDocIds = Object.keys(docsBaseById); - checkSidebarsDocIds( - validDocIds, - versionMetadata.sidebarFilePath as string, - ); - - // Add sidebar/next/previous to the docs - function addNavData(doc: DocMetadataBase): DocMetadata { - const {sidebarName, previousId, nextId} = getDocNavigation(doc.id); - const toDocNavLink = (navDocId: string): DocNavLink => { - const {title, permalink, frontMatter} = docsBaseById[navDocId]; - return { - title: - frontMatter.pagination_label ?? - frontMatter.sidebar_label ?? - title, - permalink, - }; - }; - return { - ...doc, - sidebar: sidebarName, - previous: previousId ? toDocNavLink(previousId) : undefined, - next: nextId ? toDocNavLink(nextId) : undefined, - }; - } - - const docs = docsBase.map(addNavData); - - // sort to ensure consistent output for tests - docs.sort((a, b) => a.id.localeCompare(b.id)); - - // The "main doc" is the "version entry point" - // We browse this doc by clicking on a version: - // - the "home" doc (at '/docs/') - // - the first doc of the first sidebar - // - a random doc (if no docs are in any sidebar... edge case) - function getMainDoc(): DocMetadata { - const versionHomeDoc = docs.find( - (doc) => - doc.unversionedId === options.homePageId || doc.slug === '/', - ); - const firstDocIdOfFirstSidebar = getFirstDocIdOfFirstSidebar(); - if (versionHomeDoc) { - return versionHomeDoc; - } else if (firstDocIdOfFirstSidebar) { - return docs.find((doc) => doc.id === firstDocIdOfFirstSidebar)!; - } else { - return docs[0]; - } - } - return { ...versionMetadata, - mainDocId: getMainDoc().unversionedId, + ...handleNavigation( + docsBase, + sidebars, + versionMetadata.sidebarFilePath as string, + ), sidebars, - docs: docs.map(addNavData), }; } diff --git a/packages/docusaurus-plugin-content-docs/src/types.ts b/packages/docusaurus-plugin-content-docs/src/types.ts index 0b75fe4700c2..eebe226722d0 100644 --- a/packages/docusaurus-plugin-content-docs/src/types.ts +++ b/packages/docusaurus-plugin-content-docs/src/types.ts @@ -131,6 +131,8 @@ export type DocFrontMatter = { parse_number_prefixes?: boolean; toc_min_heading_level?: number; toc_max_heading_level?: number; + pagination_next?: string | null; + pagination_prev?: string | null; /* eslint-enable camelcase */ }; diff --git a/website/docs/api/plugins/plugin-content-docs.md b/website/docs/api/plugins/plugin-content-docs.md index 942cd7ef2ee2..ab324d4a096f 100644 --- a/website/docs/api/plugins/plugin-content-docs.md +++ b/website/docs/api/plugins/plugin-content-docs.md @@ -252,6 +252,8 @@ Accepted fields: | `hide_table_of_contents` | `boolean` | `false` | Whether to hide the table of contents to the right. | | `toc_min_heading_level` | `number` | `2` | The minimum heading level shown in the table of contents. Must be between 2 and 6 and lower or equal to the max value. | | `toc_max_heading_level` | `number` | `3` | The max heading level shown in the table of contents. Must be between 2 and 6. | +| `pagination_next` | string \| null | Next doc in the sidebar | The ID of the documentation you want the "Next" pagination to link to. Use `null` to disable showing "Next" for this page. | +| `pagination_prev` | string \| null | Previous doc in the sidebar | The ID of the documentation you want the "Previous" pagination to link to. Use `null` to disable showing "Previous" for this page. | | `parse_number_prefixes` | `boolean` | `numberPrefixParser` plugin option | Whether number prefix parsing is disabled on this doc. See also [Using number prefixes](/docs/sidebar#using-number-prefixes). | | `custom_edit_url` | `string` | Computed using the `editUrl` plugin option | The URL for editing this document. | | `keywords` | `string[]` | `undefined` | Keywords meta tag for the document page, for search engines. | From 2398943c17d9177060c10408ae251add49ea3de7 Mon Sep 17 00:00:00 2001 From: Joshua Chen Date: Thu, 21 Oct 2021 18:33:52 +0800 Subject: [PATCH 18/26] feat(core): write-heading-ids options maintainCasing, overwrite (#5740) --- packages/docusaurus/bin/docusaurus.js | 13 ++- .../__tests__/writeHeadingIds.test.ts | 53 +++++++++--- .../src/commands/writeHeadingIds.ts | 80 +++++++++++++------ website/docs/cli.md | 8 +- 4 files changed, 113 insertions(+), 41 deletions(-) diff --git a/packages/docusaurus/bin/docusaurus.js b/packages/docusaurus/bin/docusaurus.js index dbd4ed422ab9..279623514af1 100755 --- a/packages/docusaurus/bin/docusaurus.js +++ b/packages/docusaurus/bin/docusaurus.js @@ -206,11 +206,16 @@ cli ); cli - .command('write-heading-ids [contentDir]') + .command('write-heading-ids [contentDir] [files]') .description('Generate heading ids in Markdown content.') - .action((siteDir) => { - writeHeadingIds(siteDir); - }); + .option( + '--maintain-case', + "keep the headings' casing, otherwise make all lowercase (default: false)", + ) + .option('--overwrite', 'overwrite existing heading IDs (default: false)') + .action((siteDir, files, options) => + writeHeadingIds(resolveDir(siteDir), files, options), + ); cli.arguments('').action((cmd) => { cli.outputHelp(); diff --git a/packages/docusaurus/src/commands/__tests__/writeHeadingIds.test.ts b/packages/docusaurus/src/commands/__tests__/writeHeadingIds.test.ts index b0fe9857ab9d..e965c5ea32f9 100644 --- a/packages/docusaurus/src/commands/__tests__/writeHeadingIds.test.ts +++ b/packages/docusaurus/src/commands/__tests__/writeHeadingIds.test.ts @@ -22,49 +22,76 @@ describe('transformMarkdownHeadingLine', () => { test('works for simple level-2 heading', () => { expect(transformMarkdownHeadingLine('## ABC', new GithubSlugger())).toEqual( - '## ABC {#-abc}', + '## ABC {#abc}', ); }); test('works for simple level-3 heading', () => { expect( transformMarkdownHeadingLine('### ABC', new GithubSlugger()), - ).toEqual('### ABC {#-abc}'); + ).toEqual('### ABC {#abc}'); }); test('works for simple level-4 heading', () => { expect( transformMarkdownHeadingLine('#### ABC', new GithubSlugger()), - ).toEqual('#### ABC {#-abc}'); + ).toEqual('#### ABC {#abc}'); }); test('works for simple level-2 heading', () => { expect(transformMarkdownHeadingLine('## ABC', new GithubSlugger())).toEqual( - '## ABC {#-abc}', + '## ABC {#abc}', ); }); test('unwraps markdown links', () => { const input = `## hello [facebook](https://facebook.com) [crowdin](https://crowdin.com/translate/docusaurus-v2/126/en-fr?filter=basic&value=0)`; expect(transformMarkdownHeadingLine(input, new GithubSlugger())).toEqual( - `${input} {#-hello-facebook-crowdin}`, + `${input} {#hello-facebook-crowdin}`, ); }); test('can slugify complex headings', () => { const input = '## abc [Hello] How are you %Sébastien_-_$)( ## -56756'; expect(transformMarkdownHeadingLine(input, new GithubSlugger())).toEqual( - `${input} {#-abc-hello-how-are-you-sébastien_-_---56756}`, + `${input} {#abc-hello-how-are-you-sébastien_-_---56756}`, ); }); test('does not duplicate duplicate id', () => { expect( transformMarkdownHeadingLine( - '# hello world {#hello-world}', + '## hello world {#hello-world}', new GithubSlugger(), ), - ).toEqual('# hello world {#hello-world}'); + ).toEqual('## hello world {#hello-world}'); + }); + + test('respects existing heading', () => { + expect( + transformMarkdownHeadingLine( + '## New heading {#old-heading}', + new GithubSlugger(), + ), + ).toEqual('## New heading {#old-heading}'); + }); + + test('overwrites heading ID when asked to', () => { + expect( + transformMarkdownHeadingLine( + '## New heading {#old-heading}', + new GithubSlugger(), + {overwrite: true}, + ), + ).toEqual('## New heading {#new-heading}'); + }); + + test('maintains casing when asked to', () => { + expect( + transformMarkdownHeadingLine('## getDataFromAPI()', new GithubSlugger(), { + maintainCase: true, + }), + ).toEqual('## getDataFromAPI() {#getDataFromAPI}'); }); }); @@ -72,7 +99,7 @@ describe('transformMarkdownContent', () => { test('transform the headings', () => { const input = ` -# Ignorerd title +# Ignored title ## abc @@ -97,17 +124,17 @@ describe('transformMarkdownContent', () => { // not sure how to implement that atm const expected = ` -# Ignorerd title +# Ignored title -## abc {#-abc} +## abc {#abc} -### Hello world {#-hello-world} +### Hello world {#hello-world} \`\`\` # Heading in code block \`\`\` -## Hello world {#-hello-world-1} +## Hello world {#hello-world-1} \`\`\` # Heading in escaped code block diff --git a/packages/docusaurus/src/commands/writeHeadingIds.ts b/packages/docusaurus/src/commands/writeHeadingIds.ts index 8049ce923dda..dddc9ee870d4 100644 --- a/packages/docusaurus/src/commands/writeHeadingIds.ts +++ b/packages/docusaurus/src/commands/writeHeadingIds.ts @@ -11,15 +11,23 @@ import chalk from 'chalk'; import {loadContext, loadPluginConfigs} from '../server'; import initPlugins from '../server/plugins/init'; -import {flatten} from 'lodash'; import {parseMarkdownHeadingId} from '@docusaurus/utils'; import {safeGlobby} from '../server/utils'; -export function unwrapMarkdownLinks(line: string): string { +type Options = { + maintainCase?: boolean; + overwrite?: boolean; +}; + +function unwrapMarkdownLinks(line: string): string { return line.replace(/\[([^\]]+)\]\([^)]+\)/g, (match, p1) => p1); } -function addHeadingId(line: string, slugger: GithubSlugger): string { +function addHeadingId( + line: string, + slugger: GithubSlugger, + maintainCase: boolean, +): string { let headingLevel = 0; while (line.charAt(headingLevel) === '#') { headingLevel += 1; @@ -27,7 +35,10 @@ function addHeadingId(line: string, slugger: GithubSlugger): string { const headingText = line.slice(headingLevel).trimEnd(); const headingHashes = line.slice(0, headingLevel); - const slug = slugger.slug(unwrapMarkdownLinks(headingText)); + const slug = slugger + .slug(unwrapMarkdownLinks(headingText).trim(), maintainCase) + .replace(/^-+/, '') + .replace(/-+$/, ''); return `${headingHashes}${headingText} {#${slug}}`; } @@ -35,33 +46,36 @@ function addHeadingId(line: string, slugger: GithubSlugger): string { export function transformMarkdownHeadingLine( line: string, slugger: GithubSlugger, + options: Options = {maintainCase: false, overwrite: false}, ): string { + const {maintainCase = false, overwrite = false} = options; if (!line.startsWith('#')) { throw new Error(`Line is not a Markdown heading: ${line}.`); } const parsedHeading = parseMarkdownHeadingId(line); - // Do not process if id is already therer - if (parsedHeading.id) { + // Do not process if id is already there + if (parsedHeading.id && !overwrite) { return line; } - return addHeadingId(line, slugger); + return addHeadingId(parsedHeading.text, slugger, maintainCase); } -export function transformMarkdownLine( +function transformMarkdownLine( line: string, slugger: GithubSlugger, + options?: Options, ): string { // Ignore h1 headings on purpose, as we don't create anchor links for those if (line.startsWith('##')) { - return transformMarkdownHeadingLine(line, slugger); + return transformMarkdownHeadingLine(line, slugger, options); } else { return line; } } -function transformMarkdownLines(lines: string[]): string[] { +function transformMarkdownLines(lines: string[], options?: Options): string[] { let inCode = false; const slugger = new GithubSlugger(); @@ -73,20 +87,27 @@ function transformMarkdownLines(lines: string[]): string[] { if (inCode) { return line; } - return transformMarkdownLine(line, slugger); + return transformMarkdownLine(line, slugger, options); } }); } -export function transformMarkdownContent(content: string): string { - return transformMarkdownLines(content.split('\n')).join('\n'); +export function transformMarkdownContent( + content: string, + options?: Options, +): string { + return transformMarkdownLines(content.split('\n'), options).join('\n'); } async function transformMarkdownFile( filepath: string, + options?: Options, ): Promise { const content = await fs.readFile(filepath, 'utf8'); - const updatedContent = transformMarkdownLines(content.split('\n')).join('\n'); + const updatedContent = transformMarkdownLines( + content.split('\n'), + options, + ).join('\n'); if (content !== updatedContent) { await fs.writeFile(filepath, updatedContent); return filepath; @@ -100,19 +121,28 @@ async function transformMarkdownFile( async function getPathsToWatch(siteDir: string): Promise { const context = await loadContext(siteDir); const pluginConfigs = loadPluginConfigs(context); - const plugins = await initPlugins({ + const plugins = initPlugins({ pluginConfigs, context, }); - return flatten(plugins.map((plugin) => plugin?.getPathsToWatch?.() ?? [])); + return plugins.flatMap((plugin) => plugin?.getPathsToWatch?.() ?? []); } -export default async function writeHeadingIds(siteDir: string): Promise { - const markdownFiles = await safeGlobby(await getPathsToWatch(siteDir), { - expandDirectories: ['**/*.{md,mdx}'], - }); - - const result = await Promise.all(markdownFiles.map(transformMarkdownFile)); +export default async function writeHeadingIds( + siteDir: string, + files?: string, + options?: Options, +): Promise { + const markdownFiles = await safeGlobby( + files ? [files] : await getPathsToWatch(siteDir), + { + expandDirectories: ['**/*.{md,mdx}'], + }, + ); + + const result = await Promise.all( + markdownFiles.map((p) => transformMarkdownFile(p, options)), + ); const pathsModified = result.filter(Boolean) as string[]; @@ -126,7 +156,11 @@ export default async function writeHeadingIds(siteDir: string): Promise { } else { console.log( chalk.yellow( - `${markdownFiles.length} Markdown files already have explicit heading ids.`, + `${ + markdownFiles.length + } Markdown files already have explicit heading IDs. If you intend to overwrite the existing heading IDs, use the ${chalk.cyan( + '--overwrite', + )} option.`, ), ); } diff --git a/website/docs/cli.md b/website/docs/cli.md index 026011d03af6..9ea0d48af1c6 100644 --- a/website/docs/cli.md +++ b/website/docs/cli.md @@ -183,6 +183,12 @@ By default, the files are written in `website/i18n//...`. | `--config` | `undefined` | Path to docusaurus config file, default to `[siteDir]/docusaurus.config.js` | | `--messagePrefix` | `''` | Allows to add a prefix to each translation message, to help you highlight untranslated strings | -### `docusaurus write-heading-ids [siteDir]` {#docusaurus-write-heading-ids-sitedir} +### `docusaurus write-heading-ids [siteDir] [files]` {#docusaurus-write-heading-ids-sitedir} Add [explicit heading ids](./guides/markdown-features/markdown-features-headings.mdx#explicit-ids) to the Markdown documents of your site. + +| Name | Default | Description | +| --- | --- | --- | +| `files` | All MD files used by plugins | The files that you want heading IDs to be written to. | +| `--maintain-case` | `false` | Keep the headings' casing, otherwise make all lowercase. | +| `--overwrite` | `false` | Overwrite existing heading IDs. | From c2eda4aac1a62f7c2df38cd9305e109f2ded8c00 Mon Sep 17 00:00:00 2001 From: Joshua Chen Date: Thu, 21 Oct 2021 18:43:56 +0800 Subject: [PATCH 19/26] fix(theme-classic): allow tabs with number as value (#5732) --- jest.config.js | 2 +- .../src/theme/Tabs/__tests__/index.test.tsx | 117 +++++++++++------- .../src/theme/Tabs/index.tsx | 7 +- 3 files changed, 73 insertions(+), 53 deletions(-) diff --git a/jest.config.js b/jest.config.js index 58605dd8246b..2a7d9159c8a6 100644 --- a/jest.config.js +++ b/jest.config.js @@ -41,6 +41,6 @@ module.exports = { // Maybe point to a fixture? '@generated/.*': '/jest/emptyModule.js', // TODO maybe use "projects" + multiple configs if we plan to add tests to another theme? - '@theme/(.*)': '@docusaurus/theme-classic/lib-next/theme/$1', + '@theme/(.*)': '@docusaurus/theme-classic/src/theme/$1', }, }; diff --git a/packages/docusaurus-theme-classic/src/theme/Tabs/__tests__/index.test.tsx b/packages/docusaurus-theme-classic/src/theme/Tabs/__tests__/index.test.tsx index 48cede20804a..6bcf0e7b211c 100644 --- a/packages/docusaurus-theme-classic/src/theme/Tabs/__tests__/index.test.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Tabs/__tests__/index.test.tsx @@ -9,6 +9,8 @@ import React from 'react'; import renderer from 'react-test-renderer'; import Tabs from '../index'; import TabItem from '../../TabItem'; +import UserPreferencesProvider from '@theme/UserPreferencesProvider'; +import {ScrollControllerProvider} from '@docusaurus/theme-common'; describe('Tabs', () => { test('Should reject bad Tabs child', () => { @@ -54,53 +56,74 @@ describe('Tabs', () => { test('Should accept valid Tabs config', () => { expect(() => { renderer.create( - <> - - Tab 1 - Tab 2 - - - Tab 1 - - Tab 2 - - - - - Tab 1 - - - Tab 2 - - - - Tab 1 - Tab 2 - - - Tab 1 - Tab 2 - - - - Tab 1 - - - Tab 2 - - - , + + + + Tab 1 + Tab 2 + + + Tab 1 + + Tab 2 + + + + + Tab 1 + + + Tab 2 + + + + Tab 1 + Tab 2 + + + Tab 1 + Tab 2 + + + + Tab 1 + + + Tab 2 + + + + , ); - }).toMatchInlineSnapshot(`[Function]`); // This is just a check that the function returns. We don't care about the actual DOM. + }).not.toThrow(); // TODO Better Jest infrastructure to mock the Layout + }); + // https://github.com/facebook/docusaurus/issues/5729 + test('Should accept dynamic Tabs with number values', () => { + expect(() => { + const tabs = ['Apple', 'Banana', 'Carrot']; + renderer.create( + + + ({label: t, value: idx}))} + defaultValue={0}> + {tabs.map((t, idx) => ( + {t} + ))} + + + , + ); + }).not.toThrow(); }); }); diff --git a/packages/docusaurus-theme-classic/src/theme/Tabs/index.tsx b/packages/docusaurus-theme-classic/src/theme/Tabs/index.tsx index 91871dae86e9..343874ac09a2 100644 --- a/packages/docusaurus-theme-classic/src/theme/Tabs/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Tabs/index.tsx @@ -25,7 +25,7 @@ import styles from './styles.module.css'; // A very rough duck type, but good enough to guard against mistakes while // allowing customization function isTabItem(comp: ReactElement): comp is ReactElement { - return typeof comp.props.value === 'string'; + return typeof comp.props.value !== 'undefined'; } function TabsComponent(props: Props): JSX.Element { @@ -51,10 +51,7 @@ function TabsComponent(props: Props): JSX.Element { ); }); const values = - valuesProp ?? - children.map(({props: {value, label}}) => { - return {value, label}; - }); + valuesProp ?? children.map(({props: {value, label}}) => ({value, label})); const dup = duplicates(values, (a, b) => a.value === b.value); if (dup.length > 0) { throw new Error( From 92002b6bd3fb07ec3c8b00e3223efa9c99863b99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Lorber?= Date: Thu, 21 Oct 2021 15:16:54 +0200 Subject: [PATCH 20/26] docs: rename docusaurus.config.js route + redirects cleanup (#5755) --- website/docs/api/docusaurus.config.js.md | 2 +- website/static/_redirects | 10 ++++++---- .../version-2.0.0-beta.7/api/docusaurus.config.js.md | 2 +- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/website/docs/api/docusaurus.config.js.md b/website/docs/api/docusaurus.config.js.md index 21a5ba0ce1cd..a153a84910dc 100644 --- a/website/docs/api/docusaurus.config.js.md +++ b/website/docs/api/docusaurus.config.js.md @@ -1,7 +1,7 @@ --- id: docusaurus.config.js description: API reference for Docusaurus configuration file. -slug: /docusaurus.config.js +slug: /api/docusaurus-config --- # `docusaurus.config.js` diff --git a/website/static/_redirects b/website/static/_redirects index 1b7df1fc0847..086cf210c64f 100644 --- a/website/static/_redirects +++ b/website/static/_redirects @@ -1,5 +1,11 @@ # Server redirects for Netlify + +# Renamed doc routes +/docs/docusaurus.config.js /docs/api/docusaurus-config +/docs/next/docusaurus.config.js /docs/next/api/docusaurus-config + + # v2.docusaurus.io domain redirect after we put v2 on docusaurus.io https://v2.docusaurus.io/* https://docusaurus.io/:splat 301! @@ -14,10 +20,6 @@ https://docusaurus.io/docs/pt-br/* https://v1.docusaurus.io/docs/pt-br/:spl https://docusaurus.io/docs/zh-cn/* https://v1.docusaurus.io/docs/zh-cn/:splat -# Redirect to fix blog post url typo on publish :'( can be cleaned up soon -/blog/2020/01/19/docusaurus-2020-recap /blog/2021/01/19/docusaurus-2020-recap -/classic/blog/2020/01/19/docusaurus-2020-recap /classic/blog/2021/01/19/docusaurus-2020-recap - # Redirect Docusaurus v1 blog RSS feed /blog/feed.xml /blog/rss.xml diff --git a/website/versioned_docs/version-2.0.0-beta.7/api/docusaurus.config.js.md b/website/versioned_docs/version-2.0.0-beta.7/api/docusaurus.config.js.md index 21a5ba0ce1cd..a153a84910dc 100644 --- a/website/versioned_docs/version-2.0.0-beta.7/api/docusaurus.config.js.md +++ b/website/versioned_docs/version-2.0.0-beta.7/api/docusaurus.config.js.md @@ -1,7 +1,7 @@ --- id: docusaurus.config.js description: API reference for Docusaurus configuration file. -slug: /docusaurus.config.js +slug: /api/docusaurus-config --- # `docusaurus.config.js` From 9ad6de2b85f554ca5fbc71d2b1140c77aad34f03 Mon Sep 17 00:00:00 2001 From: Joshua Chen Date: Thu, 21 Oct 2021 21:26:10 +0800 Subject: [PATCH 21/26] feat(content-blog): new readingTime plugin option (#5702) --- .../src/__tests__/feed.test.ts | 4 + .../src/blogUtils.ts | 13 +- .../src/pluginOptionSchema.ts | 2 + .../src/types.ts | 20 +++ .../2021-10-07-blog-post-mdx-feed-tests.mdx | 1 + website/_dogfooding/dogfooding.config.js | 4 + .../docs/api/plugins/plugin-content-blog.md | 18 +++ website/docs/blog.mdx | 118 ++++++++++++++++++ 8 files changed, 179 insertions(+), 1 deletion(-) diff --git a/packages/docusaurus-plugin-content-blog/src/__tests__/feed.test.ts b/packages/docusaurus-plugin-content-blog/src/__tests__/feed.test.ts index d2261547a756..2c2d0337a46e 100644 --- a/packages/docusaurus-plugin-content-blog/src/__tests__/feed.test.ts +++ b/packages/docusaurus-plugin-content-blog/src/__tests__/feed.test.ts @@ -77,6 +77,8 @@ describe('blogFeed', () => { type: [feedType], copyright: 'Copyright', }, + readingTime: ({content, defaultReadingTime}) => + defaultReadingTime({content}), } as PluginOptions, ); @@ -111,6 +113,8 @@ describe('blogFeed', () => { type: [feedType], copyright: 'Copyright', }, + readingTime: ({content, defaultReadingTime}) => + defaultReadingTime({content}), } as PluginOptions, ); const feedContent = diff --git a/packages/docusaurus-plugin-content-blog/src/blogUtils.ts b/packages/docusaurus-plugin-content-blog/src/blogUtils.ts index 011eb4fa6a82..e50e4cadfcce 100644 --- a/packages/docusaurus-plugin-content-blog/src/blogUtils.ts +++ b/packages/docusaurus-plugin-content-blog/src/blogUtils.ts @@ -16,6 +16,7 @@ import { BlogContentPaths, BlogMarkdownLoaderOptions, BlogTags, + ReadingTimeFunction, } from './types'; import { parseMarkdownFile, @@ -111,6 +112,10 @@ async function parseBlogPostMarkdownFile(blogSourceAbsolute: string) { }; } +const defaultReadingTime: ReadingTimeFunction = ({content, options}) => { + return readingTime(content, options).minutes; +}; + async function processBlogSourceFile( blogSourceRelative: string, contentPaths: BlogContentPaths, @@ -227,7 +232,13 @@ async function processBlogSourceFile( date, formattedDate, tags: normalizeFrontMatterTags(tagsBasePath, frontMatter.tags), - readingTime: showReadingTime ? readingTime(content).minutes : undefined, + readingTime: showReadingTime + ? options.readingTime({ + content, + frontMatter, + defaultReadingTime, + }) + : undefined, truncated: truncateMarker?.test(content) || false, authors, }, diff --git a/packages/docusaurus-plugin-content-blog/src/pluginOptionSchema.ts b/packages/docusaurus-plugin-content-blog/src/pluginOptionSchema.ts index 0d0e4cb75569..00ede624e043 100644 --- a/packages/docusaurus-plugin-content-blog/src/pluginOptionSchema.ts +++ b/packages/docusaurus-plugin-content-blog/src/pluginOptionSchema.ts @@ -41,6 +41,7 @@ export const DEFAULT_OPTIONS: PluginOptions = { path: 'blog', editLocalizedFiles: false, authorsMapPath: 'authors.yml', + readingTime: ({content, defaultReadingTime}) => defaultReadingTime({content}), }; export const PluginOptionSchema = Joi.object({ @@ -113,4 +114,5 @@ export const PluginOptionSchema = Joi.object({ language: Joi.string(), }).default(DEFAULT_OPTIONS.feedOptions), authorsMapPath: Joi.string().default(DEFAULT_OPTIONS.authorsMapPath), + readingTime: Joi.function().default(() => DEFAULT_OPTIONS.readingTime), }); diff --git a/packages/docusaurus-plugin-content-blog/src/types.ts b/packages/docusaurus-plugin-content-blog/src/types.ts index 3d40724e5b0a..e8990d5437d7 100644 --- a/packages/docusaurus-plugin-content-blog/src/types.ts +++ b/packages/docusaurus-plugin-content-blog/src/types.ts @@ -12,6 +12,7 @@ import type { ContentPaths, } from '@docusaurus/utils/lib/markdownLinks'; import {Overwrite} from 'utility-types'; +import {BlogPostFrontMatter} from './blogFrontMatter'; export type BlogContentPaths = ContentPaths; @@ -46,6 +47,24 @@ export type EditUrlFunction = (editUrlParams: { locale: string; }) => string | undefined; +// Duplicate from ngryman/reading-time to keep stability of API +type ReadingTimeOptions = { + wordsPerMinute?: number; + wordBound?: (char: string) => boolean; +}; + +export type ReadingTimeFunction = (params: { + content: string; + frontMatter?: BlogPostFrontMatter & Record; + options?: ReadingTimeOptions; +}) => number; + +export type ReadingTimeFunctionOption = ( + params: Required[0], 'options'>> & { + defaultReadingTime: ReadingTimeFunction; + }, +) => number | undefined; + export type PluginOptions = RemarkAndRehypePluginOptions & { id?: string; path: string; @@ -76,6 +95,7 @@ export type PluginOptions = RemarkAndRehypePluginOptions & { editLocalizedFiles?: boolean; admonitions: Record; authorsMapPath: string; + readingTime: ReadingTimeFunctionOption; }; // Options, as provided in the user config (before normalization) diff --git a/website/_dogfooding/_blog tests/2021-10-07-blog-post-mdx-feed-tests.mdx b/website/_dogfooding/_blog tests/2021-10-07-blog-post-mdx-feed-tests.mdx index 72db346e7256..005d1b52e81b 100644 --- a/website/_dogfooding/_blog tests/2021-10-07-blog-post-mdx-feed-tests.mdx +++ b/website/_dogfooding/_blog tests/2021-10-07-blog-post-mdx-feed-tests.mdx @@ -3,6 +3,7 @@ title: Blog post MDX Feed tests authors: - slorber tags: [blog, docusaurus, long-long, long-long-long, long-long-long-long] +hide_reading_time: true --- Some MDX tests, mostly to test how the RSS feed render those diff --git a/website/_dogfooding/dogfooding.config.js b/website/_dogfooding/dogfooding.config.js index ab350802069a..be9960027238 100644 --- a/website/_dogfooding/dogfooding.config.js +++ b/website/_dogfooding/dogfooding.config.js @@ -31,6 +31,10 @@ const dogfoodingPluginInstances = [ title: 'Docusaurus Tests Blog', copyright: `Copyright © ${new Date().getFullYear()} Facebook, Inc.`, }, + readingTime: ({content, frontMatter, defaultReadingTime}) => + frontMatter.hide_reading_time + ? undefined + : defaultReadingTime({content, options: {wordsPerMinute: 5}}), }), ], diff --git a/website/docs/api/plugins/plugin-content-blog.md b/website/docs/api/plugins/plugin-content-blog.md index af7f8e0c9fa3..f769ab10b3f4 100644 --- a/website/docs/api/plugins/plugin-content-blog.md +++ b/website/docs/api/plugins/plugin-content-blog.md @@ -51,6 +51,7 @@ Accepted fields: | `beforeDefaultRehypePlugins` | `any[]` | `[]` | Custom Rehype plugins passed to MDX before the default Docusaurus Rehype plugins. | | `truncateMarker` | `string` | `//` | Truncate marker, can be a regex or string. | | `showReadingTime` | `boolean` | `true` | Show estimated reading time for the blog post. | +| `readingTime` | `ReadingTimeFunctionOption` | The default reading time | A callback to customize the reading time number displayed. | | `authorsMapPath` | `string` | `'authors.yml'` | Path to the authors map file, relative to the blog content directory specified with `path`. Can also be a `json` file. | | `feedOptions` | _See below_ | `{type: ['rss', 'atom']}` | Blog feed. If undefined, no rss feed will be generated. | | `feedOptions.type` | 'rss' \| 'atom' \| 'all' (or array of multiple options) | **Required** | Type of feed to be generated. | @@ -68,6 +69,23 @@ type EditUrlFunction = (params: { permalink: string; locale: string; }) => string | undefined; + +type ReadingTimeOptions = { + wordsPerMinute: number; + wordBound: (char: string) => boolean; +}; + +type ReadingTimeFunction = (params: { + content: string; + frontMatter?: BlogPostFrontMatter & Record; + options?: ReadingTimeOptions; +}) => number; + +type ReadingTimeFunctionOption = (params: { + content: string; + frontMatter: BlogPostFrontMatter & Record; + defaultReadingTime: ReadingTimeFunction; +}) => number | undefined; ``` ## Example configuration {#ex-config} diff --git a/website/docs/blog.mdx b/website/docs/blog.mdx index ecb03123843e..171cc12c7607 100644 --- a/website/docs/blog.mdx +++ b/website/docs/blog.mdx @@ -335,6 +335,124 @@ website/i18n//docusaurus-plugin-content-blog/authors.yml ::: +## Reading time {#reading-time} + +Docusaurus generates a reading time estimation for each blog post based on word count. We provide an option to customize this. + +```js title="docusaurus.config.js" +module.exports = { + presets: [ + [ + '@docusaurus/preset-classic', + { + blog: { + // highlight-start + showReadingTime: true, // When set to false, the "x min read" won't be shown + readingTime: ({content, frontMatter, defaultReadingTime}) => + defaultReadingTime({content, options: {wordsPerMinute: 300}}), + // highlight-end + }, + }, + ], + ], +}; +``` + +The `readingTime` callback receives three parameters: the blog content text as a string, front matter as a record of string keys and their values, and the default reading time function. It returns a number (reading time in minutes) or `undefined` (disable reading time for this page). + +The default reading time is able to accept additional options: `wordsPerMinute` as a number (default: 300), and `wordBound` as a function from string to boolean. If the string passed to `wordBound` should be a word bound (spaces, tabs, and line breaks by default), the function should return `true`. + +:::tip + +Use the callback for all your customization needs: + +````mdx-code-block + + + +**Disable reading time on one page:** + +```js title="docusaurus.config.js" +module.exports = { + presets: [ + [ + '@docusaurus/preset-classic', + { + blog: { + showReadingTime: true, + // highlight-start + readingTime: ({content, frontMatter, defaultReadingTime}) => + frontMatter.hide_reading_time ? undefined : defaultReadingTime({content}), + // highlight-end + }, + }, + ], + ], +}; +``` + +Usage: + +```yml "my-blog-post.md" +--- +hide_reading_time: true +--- + +This page will no longer display the reading time stats! +``` + + + + +**Pass options to the default reading time function:** + +```js title="docusaurus.config.js" +module.exports = { + presets: [ + [ + '@docusaurus/preset-classic', + { + blog: { + // highlight-start + readingTime: ({content, defaultReadingTime}) => + defaultReadingTime({content, options: {wordsPerMinute: 100}}), + // highlight-end + }, + }, + ], + ], +}; +``` + + + + +**Use a custom implementation of reading time:** + +```js title="docusaurus.config.js" +const myReadingTime = require('./myReadingTime'); + +module.exports = { + presets: [ + [ + '@docusaurus/preset-classic', + { + blog: { + // highlight-next-line + readingTime: ({content}) => myReadingTime(content), + }, + }, + ], + ], +}; +``` + + + +```` + +::: + ## Feed {#feed} You can generate RSS/Atom feed by passing feedOptions. By default, RSS and Atom feeds are generated. To disable feed generation, set `feedOptions.type` to `null`. From 1c8b8362f7d6b06b2f7b428e3ac8f4e84010d8ba Mon Sep 17 00:00:00 2001 From: Joshua Chen Date: Thu, 21 Oct 2021 23:17:03 +0800 Subject: [PATCH 22/26] fix(live-codeblock): render static codeblock server-side (#5754) Co-authored-by: slorber --- package.json | 1 + .../src/theme/CodeBlock/index.tsx | 11 +++++- .../src/theme/Playground/index.js | 37 +++++++++++++++---- website/docusaurus.config.js | 12 ++++-- website/package.json | 1 + 5 files changed, 49 insertions(+), 13 deletions(-) diff --git a/package.json b/package.json index fa46ef270357..cf4ce7e0902a 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "build:website:baseUrl": "yarn workspace website build:baseUrl", "build:website:blogOnly": "yarn workspace website build:blogOnly", "build:website:deployPreview": "cross-env NETLIFY=true CONTEXT='deploy-preview' yarn workspace website build", + "build:website:fast": "yarn workspace website build:fast", "build:website:en": "yarn workspace website build --locale en", "clear:website": "yarn workspace website clear", "serve:website": "yarn workspace website serve", diff --git a/packages/docusaurus-theme-classic/src/theme/CodeBlock/index.tsx b/packages/docusaurus-theme-classic/src/theme/CodeBlock/index.tsx index 1a0e7e2b861d..bd7d49ac24a9 100644 --- a/packages/docusaurus-theme-classic/src/theme/CodeBlock/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/CodeBlock/index.tsx @@ -101,7 +101,7 @@ const highlightDirectiveRegex = (lang: string) => { export default function CodeBlock({ children, - className: languageClassName, + className: blockClassName, metastring, title, }: Props): JSX.Element { @@ -141,6 +141,9 @@ export default function CodeBlock({ highlightLines = rangeParser(highlightLinesRange).filter((n) => n > 0); } + const languageClassName = blockClassName + ?.split(' ') + .find((str) => str.startsWith('language-')); let language = languageClassName?.replace(/language-/, '') as Language; if (!language && prism.defaultLanguage) { @@ -209,7 +212,11 @@ export default function CodeBlock({ code={code} language={language}> {({className, style, tokens, getLineProps, getTokenProps}) => ( -
    +
    {codeBlockTitle && (
    {codeBlockTitle} diff --git a/packages/docusaurus-theme-live-codeblock/src/theme/Playground/index.js b/packages/docusaurus-theme-live-codeblock/src/theme/Playground/index.js index 2b35c04b51a2..92ee17f67d9a 100644 --- a/packages/docusaurus-theme-live-codeblock/src/theme/Playground/index.js +++ b/packages/docusaurus-theme-live-codeblock/src/theme/Playground/index.js @@ -10,14 +10,20 @@ import {LiveProvider, LiveEditor, LiveError, LivePreview} from 'react-live'; import clsx from 'clsx'; import Translate from '@docusaurus/Translate'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; -import useIsBrowser from '@docusaurus/useIsBrowser'; +import BrowserOnly from '@docusaurus/BrowserOnly'; import usePrismTheme from '@theme/hooks/usePrismTheme'; import styles from './styles.module.css'; +import useIsBrowser from '@docusaurus/core/lib/client/exports/useIsBrowser'; function Header({children}) { return
    {children}
    ; } +function LivePreviewLoader() { + // Is it worth improving/translating? + return
    Loading...
    ; +} + function ResultWithHeader() { return ( <> @@ -28,14 +34,33 @@ function ResultWithHeader() { Result + {/* https://github.com/facebook/docusaurus/issues/5747 */}
    - - + }> + {() => ( + <> + + + + )} +
    ); } +function ThemedLiveEditor() { + const isBrowser = useIsBrowser(); + return ( + + ); +} + function EditorWithHeader() { return ( <> @@ -46,13 +71,12 @@ function EditorWithHeader() { Live Editor - + ); } export default function Playground({children, transformCode, ...props}) { - const isBrowser = useIsBrowser(); const { siteConfig: { themeConfig: { @@ -65,8 +89,7 @@ export default function Playground({children, transformCode, ...props}) { return (
    `${code};`)} theme={prismTheme} {...props}> diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js index 5789a7b23768..722563564d35 100644 --- a/website/docusaurus.config.js +++ b/website/docusaurus.config.js @@ -38,6 +38,9 @@ const isDev = process.env.NODE_ENV === 'development'; const isDeployPreview = process.env.NETLIFY && process.env.CONTEXT === 'deploy-preview'; +// Used to debug production build issues faster +const isBuildFast = !!process.env.BUILD_FAST; + const baseUrl = process.env.BASE_URL || '/'; // Special deployment for staging locales until they get enough translations @@ -252,10 +255,11 @@ const config = { rehypePlugins: [katex], disableVersioning: isVersioningDisabled, lastVersion: isDev ? 'current' : undefined, - onlyIncludeVersions: - !isVersioningDisabled && (isDev || isDeployPreview) - ? ['current', ...versions.slice(0, 2)] - : undefined, + onlyIncludeVersions: isBuildFast + ? ['current'] + : !isVersioningDisabled && (isDev || isDeployPreview) + ? ['current', ...versions.slice(0, 2)] + : undefined, versions: { current: { label: `${getNextBetaVersionName()} 🚧`, diff --git a/website/package.json b/website/package.json index 493097b44b49..67c76bd82989 100644 --- a/website/package.json +++ b/website/package.json @@ -16,6 +16,7 @@ "build:baseUrl": "cross-env BASE_URL='/build/' yarn build", "start:blogOnly": "cross-env yarn start --config=docusaurus.config-blog-only.js", "build:blogOnly": "cross-env yarn build --config=docusaurus.config-blog-only.js", + "build:fast": "cross-env BUILD_FAST=true yarn build --locale en", "netlify:build:production": "yarn docusaurus write-translations && yarn netlify:crowdin:delay && yarn netlify:crowdin:uploadSources && yarn netlify:crowdin:downloadTranslations && yarn build", "netlify:build:deployPreview": "yarn docusaurus write-translations --locale fr --messagePrefix '(fr) ' && yarn build", "netlify:crowdin:delay": "node delayCrowdin.js", From 31ad8c4def29512c81a968b1de2bb39aa52456e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Lorber?= Date: Thu, 21 Oct 2021 17:22:49 +0200 Subject: [PATCH 23/26] fix(ideal-image): fix IdealImage in dev not handling ES import images properly (#5760) --- .../src/theme/IdealImage.js | 11 +++++++++-- .../_docs tests/tests/img-tests.mdx | 19 +++++++++++++++++++ website/_dogfooding/docs-tests-sidebars.js | 10 ++++++++++ 3 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 website/_dogfooding/_docs tests/tests/img-tests.mdx diff --git a/packages/docusaurus-plugin-ideal-image/src/theme/IdealImage.js b/packages/docusaurus-plugin-ideal-image/src/theme/IdealImage.js index 7679f53bb2ed..d5d0215f138d 100644 --- a/packages/docusaurus-plugin-ideal-image/src/theme/IdealImage.js +++ b/packages/docusaurus-plugin-ideal-image/src/theme/IdealImage.js @@ -12,8 +12,15 @@ function Image(props) { const {alt, className, img} = props; // In dev env just use regular img with original file - if (img.default) { - return {alt}; + if (typeof img === 'string' || typeof img.default === 'string') { + return ( + {alt} + ); } return ( diff --git a/website/_dogfooding/_docs tests/tests/img-tests.mdx b/website/_dogfooding/_docs tests/tests/img-tests.mdx new file mode 100644 index 000000000000..885500b6a32e --- /dev/null +++ b/website/_dogfooding/_docs tests/tests/img-tests.mdx @@ -0,0 +1,19 @@ +# Image tests + +import Image from '@theme/IdealImage'; + +import docusaurusImport from '@site/static/img/docusaurus.png'; + +export const docusaurusRequire = require('@site/static/img/docusaurus.png'); + +## Regular images + + + + + +## Ideal images + + + + diff --git a/website/_dogfooding/docs-tests-sidebars.js b/website/_dogfooding/docs-tests-sidebars.js index 61fdaa1f2325..02682bbdd8d3 100644 --- a/website/_dogfooding/docs-tests-sidebars.js +++ b/website/_dogfooding/docs-tests-sidebars.js @@ -13,6 +13,16 @@ module.exports = { className: 'red', label: 'Index', }, + { + type: 'category', + label: 'Tests', + items: [ + { + type: 'autogenerated', + dirName: 'tests', + }, + ], + }, { type: 'category', label: 'section', From ef246dafcd83c0dd2feabc0b5e103d3a1202a5df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Lorber?= Date: Thu, 21 Oct 2021 17:54:35 +0200 Subject: [PATCH 24/26] chore: upgrade html-webpack-plugin, remove terser 4 (#5761) --- packages/docusaurus/package.json | 2 +- yarn.lock | 57 ++++++++------------------------ 2 files changed, 15 insertions(+), 44 deletions(-) diff --git a/packages/docusaurus/package.json b/packages/docusaurus/package.json index 665d22b4f7dd..3b92a320798d 100644 --- a/packages/docusaurus/package.json +++ b/packages/docusaurus/package.json @@ -87,7 +87,7 @@ "globby": "^11.0.2", "html-minifier-terser": "^6.0.2", "html-tags": "^3.1.0", - "html-webpack-plugin": "^5.3.2", + "html-webpack-plugin": "^5.4.0", "import-fresh": "^3.3.0", "is-root": "^2.1.0", "leven": "^3.1.0", diff --git a/yarn.lock b/yarn.lock index c73b6d0f17b1..3ceb217f44c9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4136,10 +4136,10 @@ resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.9.tgz#1cfb6d60ef3822c589f18e70f8b12f9a28ce8724" integrity sha512-MUc6zSmU3tEVnkQ78q0peeEjKWPUADMlC/t++2bI8WnAG2tvYRPIgHG8lWkXwqc8MsUF6Z2MOf+Mh5sazOmhiQ== -"@types/html-minifier-terser@^5.0.0": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.2.tgz#693b316ad323ea97eed6b38ed1a3cc02b1672b57" - integrity sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w== +"@types/html-minifier-terser@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.0.0.tgz#563c1c6c132cd204e71512f9c0b394ff90d3fae7" + integrity sha512-NZwaaynfs1oIoLAV1vg18e7QMVDvw+6SQrdJc8w3BwUaoroVSf6EBj/Sk4PBWGxsq0dzhA2drbsuMC1/6C6KgQ== "@types/html-minifier@*": version "4.0.1" @@ -6283,7 +6283,7 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camel-case@^4.1.1, camel-case@^4.1.2: +camel-case@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== @@ -6576,13 +6576,6 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -clean-css@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" - integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== - dependencies: - source-map "~0.6.0" - clean-css@^5.1.5: version "5.1.5" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.1.5.tgz#3b0af240dcfc9a3779a08c2332df3ebd4474f232" @@ -6952,7 +6945,7 @@ commander@^3.0.2: resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== -commander@^4.0.1, commander@^4.1.1: +commander@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== @@ -10817,19 +10810,6 @@ html-escaper@^2.0.0: resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -html-minifier-terser@^5.0.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054" - integrity sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg== - dependencies: - camel-case "^4.1.1" - clean-css "^4.2.3" - commander "^4.1.1" - he "^1.2.0" - param-case "^3.0.3" - relateurl "^0.2.7" - terser "^4.6.3" - html-minifier-terser@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.0.2.tgz#14059ad64b69bf9f8b8a33f25b53411d8321e75d" @@ -10853,13 +10833,13 @@ html-void-elements@^1.0.0: resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483" integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== -html-webpack-plugin@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.3.2.tgz#7b04bf80b1f6fe84a6d3f66c8b79d64739321b08" - integrity sha512-HvB33boVNCz2lTyBsSiMffsJ+m0YLIQ+pskblXgN9fnjS1BgEcuAfdInfXfGrkdXV406k9FiDi86eVCDBgJOyQ== +html-webpack-plugin@^5.4.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.4.0.tgz#d016cd9594be5c243bb5c12287af43babbe1c094" + integrity sha512-cSUdckNOIqKc0nOrCJG7zkvzEIUcXjzEiVbKdEdIzW3BD5T4xPK6boV1mrTrPDZiL+aAr/j45eqbNL1akU2ZRA== dependencies: - "@types/html-minifier-terser" "^5.0.0" - html-minifier-terser "^5.0.1" + "@types/html-minifier-terser" "^6.0.0" + html-minifier-terser "^6.0.2" lodash "^4.17.21" pretty-error "^3.0.4" tapable "^2.0.0" @@ -15420,7 +15400,7 @@ parallel-transform@^1.1.0, parallel-transform@^1.2.0: inherits "^2.0.3" readable-stream "^2.1.5" -param-case@^3.0.3, param-case@^3.0.4: +param-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== @@ -18250,7 +18230,7 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.5.16, source-map-support@^0.5.19, source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.20: +source-map-support@^0.5.16, source-map-support@^0.5.19, source-map-support@^0.5.6, source-map-support@~0.5.20: version "0.5.20" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9" integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw== @@ -19141,15 +19121,6 @@ terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.2.4: source-map "^0.6.1" terser "^5.7.2" -terser@^4.6.3: - version "4.8.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" - integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - terser@^5.0.0, terser@^5.7.2: version "5.9.0" resolved "https://registry.yarnpkg.com/terser/-/terser-5.9.0.tgz#47d6e629a522963240f2b55fcaa3c99083d2c351" From 68a116611f45a561f329cb9b0d0d179b30e2fb57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Lorber?= Date: Thu, 21 Oct 2021 18:52:17 +0200 Subject: [PATCH 25/26] chore: prepare v2.0.0-beta.8 release (#5762) --- CHANGELOG.md | 80 ++++++++++ admin/new.docusaurus.io/package.json | 2 +- lerna.json | 2 +- packages/create-docusaurus/package.json | 2 +- .../templates/classic-typescript/package.json | 8 +- .../templates/classic/package.json | 6 +- .../templates/facebook/package.json | 6 +- .../docusaurus-cssnano-preset/package.json | 2 +- packages/docusaurus-mdx-loader/package.json | 8 +- packages/docusaurus-migrate/package.json | 2 +- .../package.json | 2 +- .../package.json | 12 +- .../package.json | 12 +- .../package.json | 14 +- .../package.json | 12 +- packages/docusaurus-plugin-debug/package.json | 8 +- .../package.json | 6 +- .../package.json | 6 +- .../package.json | 8 +- packages/docusaurus-plugin-pwa/package.json | 10 +- .../docusaurus-plugin-sitemap/package.json | 12 +- .../docusaurus-preset-classic/package.json | 22 +-- .../package.json | 2 +- .../docusaurus-theme-classic/package.json | 22 +-- packages/docusaurus-theme-common/package.json | 14 +- .../package.json | 6 +- .../package.json | 10 +- packages/docusaurus-types/package.json | 2 +- packages/docusaurus-utils-common/package.json | 4 +- .../docusaurus-utils-validation/package.json | 4 +- packages/docusaurus-utils/package.json | 4 +- packages/docusaurus/package.json | 14 +- packages/lqip-loader/package.json | 2 +- packages/stylelint-copyright/package.json | 2 +- website/package.json | 16 +- .../api/themes/theme-bootstrap.md | 25 --- .../_partials/swizzleWarning.mdx | 0 .../api/docusaurus.config.js.md | 2 +- .../api/plugins/overview.md | 0 .../api/plugins/plugin-client-redirects.md | 0 .../api/plugins/plugin-content-blog.md | 21 +++ .../api/plugins/plugin-content-docs.md | 6 + .../api/plugins/plugin-content-pages.md | 0 .../api/plugins/plugin-debug.md | 0 .../api/plugins/plugin-google-analytics.md | 0 .../api/plugins/plugin-google-gtag.md | 0 .../api/plugins/plugin-ideal-image.md | 0 .../api/plugins/plugin-pwa.md | 0 .../api/plugins/plugin-sitemap.md | 0 .../api/themes/overview.md | 2 +- .../api/themes/theme-classic.md | 0 .../api/themes/theme-configuration.md | 43 ++++- .../api/themes/theme-live-codeblock.md | 0 .../api/themes/theme-search-algolia.md | 0 .../docusaurus-asset-example-banner.png | Bin .../assets/docusaurus-asset-example-pdf.pdf | Bin .../assets/docusaurus-asset-example.xyz | Bin .../blog.mdx | 148 +++++++++++++++--- .../browser-support.md | 0 .../cli.md | 8 +- .../configuration.md | 0 .../deployment.mdx | 14 +- .../docusaurus-core.md | 10 ++ .../guides/creating-pages.md | 2 +- .../guides/docs/docs-create-doc.mdx | 26 ++- .../guides/docs/docs-introduction.md | 0 .../guides/docs/docs-markdown-features.mdx | 0 .../guides/docs/docs-multi-instance.mdx | 0 .../guides/docs/sidebar.md | 7 +- .../guides/docs/versioning.md | 0 .../_markdown-partial-example.mdx | 0 .../markdown-features-admonitions.mdx | 30 ++-- .../markdown-features-assets.mdx | 2 +- .../markdown-features-code-blocks.mdx | 79 +++++++--- .../markdown-features-head-metadatas.mdx | 0 .../markdown-features-headings.mdx | 0 .../markdown-features-inline-toc.mdx | 5 +- .../markdown-features-intro.mdx | 0 .../markdown-features-math-equations.mdx | 0 .../markdown-features-plugins.mdx | 0 .../markdown-features-react.mdx | 4 +- .../markdown-features-tabs.mdx | 42 +++-- .../i18n/i18n-crowdin.mdx | 12 +- .../i18n/i18n-git.md | 0 .../i18n/i18n-introduction.md | 0 .../i18n/i18n-tutorial.md | 0 .../installation.md | 14 +- .../introduction.md | 2 +- .../lifecycle-apis.md | 13 +- .../migration/migration-automated.md | 0 .../migration/migration-manual.md | 1 + .../migration/migration-overview.md | 2 +- .../migration/migration-translated-sites.md | 0 .../migration/migration-versioned-sites.md | 0 .../playground.mdx | 0 .../presets.md | 67 ++------ .../search.md | 117 +++++++++++--- .../static-assets.md | 0 .../styling-layout.md | 0 .../typescript-support.md | 34 ++-- .../using-plugins.md | 2 +- .../using-themes.md | 2 +- ...son => version-2.0.0-beta.8-sidebars.json} | 130 ++++++++------- website/versions.json | 4 +- website/versionsArchived.json | 3 +- 105 files changed, 755 insertions(+), 468 deletions(-) delete mode 100644 website/versioned_docs/version-2.0.0-beta.6/api/themes/theme-bootstrap.md rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/_partials/swizzleWarning.mdx (100%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/api/docusaurus.config.js.md (99%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/api/plugins/overview.md (100%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/api/plugins/plugin-client-redirects.md (100%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/api/plugins/plugin-content-blog.md (91%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/api/plugins/plugin-content-docs.md (93%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/api/plugins/plugin-content-pages.md (100%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/api/plugins/plugin-debug.md (100%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/api/plugins/plugin-google-analytics.md (100%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/api/plugins/plugin-google-gtag.md (100%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/api/plugins/plugin-ideal-image.md (100%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/api/plugins/plugin-pwa.md (100%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/api/plugins/plugin-sitemap.md (100%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/api/themes/overview.md (94%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/api/themes/theme-classic.md (100%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/api/themes/theme-configuration.md (95%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/api/themes/theme-live-codeblock.md (100%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/api/themes/theme-search-algolia.md (100%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/assets/docusaurus-asset-example-banner.png (100%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/assets/docusaurus-asset-example-pdf.pdf (100%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/assets/docusaurus-asset-example.xyz (100%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/blog.mdx (77%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/browser-support.md (100%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/cli.md (95%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/configuration.md (100%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/deployment.mdx (99%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/docusaurus-core.md (98%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/guides/creating-pages.md (98%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/guides/docs/docs-create-doc.mdx (75%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/guides/docs/docs-introduction.md (100%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/guides/docs/docs-markdown-features.mdx (100%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/guides/docs/docs-multi-instance.mdx (100%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/guides/docs/sidebar.md (98%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/guides/docs/versioning.md (100%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/guides/markdown-features/_markdown-partial-example.mdx (100%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/guides/markdown-features/markdown-features-admonitions.mdx (72%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/guides/markdown-features/markdown-features-assets.mdx (97%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/guides/markdown-features/markdown-features-code-blocks.mdx (86%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/guides/markdown-features/markdown-features-head-metadatas.mdx (100%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/guides/markdown-features/markdown-features-headings.mdx (100%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/guides/markdown-features/markdown-features-inline-toc.mdx (90%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/guides/markdown-features/markdown-features-intro.mdx (100%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/guides/markdown-features/markdown-features-math-equations.mdx (100%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/guides/markdown-features/markdown-features-plugins.mdx (100%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/guides/markdown-features/markdown-features-react.mdx (94%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/guides/markdown-features/markdown-features-tabs.mdx (78%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/i18n/i18n-crowdin.mdx (98%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/i18n/i18n-git.md (100%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/i18n/i18n-introduction.md (100%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/i18n/i18n-tutorial.md (100%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/installation.md (89%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/introduction.md (99%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/lifecycle-apis.md (99%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/migration/migration-automated.md (100%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/migration/migration-manual.md (99%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/migration/migration-overview.md (96%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/migration/migration-translated-sites.md (100%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/migration/migration-versioned-sites.md (100%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/playground.mdx (100%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/presets.md (66%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/search.md (55%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/static-assets.md (100%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/styling-layout.md (100%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/typescript-support.md (85%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/using-plugins.md (99%) rename website/versioned_docs/{version-2.0.0-beta.6 => version-2.0.0-beta.8}/using-themes.md (99%) rename website/versioned_sidebars/{version-2.0.0-beta.6-sidebars.json => version-2.0.0-beta.8-sidebars.json} (55%) diff --git a/CHANGELOG.md b/CHANGELOG.md index b7612b54a2a7..34c46bc8d7a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,85 @@ # Docusaurus 2 Changelog +## 2.0.0-beta.8 (2021-10-21) + +#### :rocket: New Feature + +- `docusaurus-plugin-content-blog` + - [#5702](https://github.com/facebook/docusaurus/pull/5702) feat(content-blog): new readingTime plugin option ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus` + - [#5740](https://github.com/facebook/docusaurus/pull/5740) feat(core): write-heading-ids options maintainCasing, overwrite ([@Josh-Cena](https://github.com/Josh-Cena)) +- `docusaurus-plugin-content-docs` + - [#5705](https://github.com/facebook/docusaurus/pull/5705) feat(content-docs): new front matter options to customize pagination ([@Josh-Cena](https://github.com/Josh-Cena)) + +#### :boom: Breaking Change + +- `docusaurus-theme-search-algolia` + - [#5751](https://github.com/facebook/docusaurus/pull/5751) fix: stable callbacks in useSearchQuery + refactor ([@slorber](https://github.com/slorber)) + +#### :bug: Bug Fix + +- `docusaurus-plugin-ideal-image` + - [#5760](https://github.com/facebook/docusaurus/pull/5760) fix(ideal-image): fix IdealImage in dev not handling ES import images properly ([@slorber](https://github.com/slorber)) +- `docusaurus-theme-classic` + - [#5732](https://github.com/facebook/docusaurus/pull/5732) fix(theme-classic): allow tabs with number as value ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#5721](https://github.com/facebook/docusaurus/pull/5721) fix: handle rubber band scrolling in hideable navbar ([@lex111](https://github.com/lex111)) +- `docusaurus-theme-search-algolia` + - [#5751](https://github.com/facebook/docusaurus/pull/5751) fix: stable callbacks in useSearchQuery + refactor ([@slorber](https://github.com/slorber)) + +#### :nail_care: Polish + +- `docusaurus-theme-classic` + - [#5717](https://github.com/facebook/docusaurus/pull/5717) refactor: Polish de translation ([@philipp985](https://github.com/philipp985)) + - [#5725](https://github.com/facebook/docusaurus/pull/5725) refactor: add missing Turkish translations to theme-classic ([@canercanbaz](https://github.com/canercanbaz)) + - [#5723](https://github.com/facebook/docusaurus/pull/5723) refactor(v2): update Vietnamese translations ([@datlechin](https://github.com/datlechin)) +- `docusaurus-module-type-aliases`, `docusaurus-plugin-ideal-image`, `docusaurus-theme-classic`, `docusaurus` + - [#5726](https://github.com/facebook/docusaurus/pull/5726) refactor(module-type-aliases): remove fallback aliases ([@Josh-Cena](https://github.com/Josh-Cena)) + +#### :memo: Documentation + +- Other + - [#5755](https://github.com/facebook/docusaurus/pull/5755) docs: rename docusaurus.config.js route + redirects cleanup ([@slorber](https://github.com/slorber)) + - [#5750](https://github.com/facebook/docusaurus/pull/5750) docs(v2): Fix typo in using-plugins.md ([@thanasis00](https://github.com/thanasis00)) + - [#5727](https://github.com/facebook/docusaurus/pull/5727) docs(v2): Add Fenghua Frontend Developer site to showcase page ([@zxuqian](https://github.com/zxuqian)) + - [#5746](https://github.com/facebook/docusaurus/pull/5746) docs: Add plugin-image-zoom ([@ataft](https://github.com/ataft)) + - [#5728](https://github.com/facebook/docusaurus/pull/5728) docs: add h4 into toc on certain pages ([@Josh-Cena](https://github.com/Josh-Cena)) + - [#5737](https://github.com/facebook/docusaurus/pull/5737) docs: Add Apex FP to showcase ([@ipavlic](https://github.com/ipavlic)) +- `docusaurus-plugin-content-blog` + - [#5753](https://github.com/facebook/docusaurus/pull/5753) fix(content-blog): temporarily swallow feed mdxToHtml errors + feed refactor ([@slorber](https://github.com/slorber)) + +#### :house: Internal + +- `docusaurus` + - [#5761](https://github.com/facebook/docusaurus/pull/5761) chore: upgrade html-webpack-plugin, remove terser 4 ([@slorber](https://github.com/slorber)) +- `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-theme-search-algolia`, `docusaurus` + - [#5714](https://github.com/facebook/docusaurus/pull/5714) chore: Enable ESLint rules of hooks + fix new lint errors ([@slorber](https://github.com/slorber)) +- Other + - [#5722](https://github.com/facebook/docusaurus/pull/5722) chore: fix gen script to support TS template ([@lex111](https://github.com/lex111)) + - [#5730](https://github.com/facebook/docusaurus/pull/5730) chore: fix typos / casing in issue template ([@johnnyreilly](https://github.com/johnnyreilly)) + - [#5720](https://github.com/facebook/docusaurus/pull/5720) chore: regenerate beta.7 examples ([@lex111](https://github.com/lex111)) + - [#5719](https://github.com/facebook/docusaurus/pull/5719) chore: remove beta.5 docs ([@lex111](https://github.com/lex111)) + +#### :running_woman: Performance + +- `docusaurus` + - [#5748](https://github.com/facebook/docusaurus/pull/5748) refactor: perform shallow clone during deploy ([@nlfurniss](https://github.com/nlfurniss)) + +#### Committers: 13 + +- Alexey Pyltsyn ([@lex111](https://github.com/lex111)) +- Andrew Taft ([@ataft](https://github.com/ataft)) +- Caner Canbaz ([@canercanbaz](https://github.com/canercanbaz)) +- Dimi Mikadze ([@DimiMikadze](https://github.com/DimiMikadze)) +- Ilija Pavlic ([@ipavlic](https://github.com/ipavlic)) +- John Reilly ([@johnnyreilly](https://github.com/johnnyreilly)) +- Joshua Chen ([@Josh-Cena](https://github.com/Josh-Cena)) +- Nathaniel Furniss ([@nlfurniss](https://github.com/nlfurniss)) +- Ngô Quốc Đạt ([@datlechin](https://github.com/datlechin)) +- Sébastien Lorber ([@slorber](https://github.com/slorber)) +- Thanasis Katsadas ([@thanasis00](https://github.com/thanasis00)) +- Xuqian ([@zxuqian](https://github.com/zxuqian)) +- [@philipp985](https://github.com/philipp985) + ## 2.0.0-beta.7 (2021-10-15) #### :rocket: New Feature diff --git a/admin/new.docusaurus.io/package.json b/admin/new.docusaurus.io/package.json index 4ca5b66c70d5..df4980850d23 100644 --- a/admin/new.docusaurus.io/package.json +++ b/admin/new.docusaurus.io/package.json @@ -1,6 +1,6 @@ { "name": "new.docusaurus.io", - "version": "2.0.0-beta.7", + "version": "2.0.0-beta.8", "private": true, "scripts": { "start": "netlify dev" diff --git a/lerna.json b/lerna.json index 0f2cae777f16..c59848a18698 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "2.0.0-beta.7", + "version": "2.0.0-beta.8", "npmClient": "yarn", "useWorkspaces": true, "changelog": { diff --git a/packages/create-docusaurus/package.json b/packages/create-docusaurus/package.json index 507737cb5335..5b62bf280350 100755 --- a/packages/create-docusaurus/package.json +++ b/packages/create-docusaurus/package.json @@ -1,6 +1,6 @@ { "name": "create-docusaurus", - "version": "2.0.0-beta.7", + "version": "2.0.0-beta.8", "description": "Create Docusaurus apps easily.", "repository": { "type": "git", diff --git a/packages/create-docusaurus/templates/classic-typescript/package.json b/packages/create-docusaurus/templates/classic-typescript/package.json index 3089140f82d4..0df788d22526 100644 --- a/packages/create-docusaurus/templates/classic-typescript/package.json +++ b/packages/create-docusaurus/templates/classic-typescript/package.json @@ -1,6 +1,6 @@ { "name": "docusaurus-2-classic-typescript-template", - "version": "2.0.0-beta.7", + "version": "2.0.0-beta.8", "private": true, "scripts": { "docusaurus": "docusaurus", @@ -15,8 +15,8 @@ "typecheck": "tsc" }, "dependencies": { - "@docusaurus/core": "2.0.0-beta.7", - "@docusaurus/preset-classic": "2.0.0-beta.7", + "@docusaurus/core": "2.0.0-beta.8", + "@docusaurus/preset-classic": "2.0.0-beta.8", "@mdx-js/react": "^1.6.21", "@svgr/webpack": "^5.5.0", "clsx": "^1.1.1", @@ -27,7 +27,7 @@ "url-loader": "^4.1.1" }, "devDependencies": { - "@docusaurus/module-type-aliases": "2.0.0-beta.7", + "@docusaurus/module-type-aliases": "2.0.0-beta.8", "@tsconfig/docusaurus": "^1.0.4", "typescript": "^4.3.5" }, diff --git a/packages/create-docusaurus/templates/classic/package.json b/packages/create-docusaurus/templates/classic/package.json index 1edb6021f8ea..257f2672bed1 100644 --- a/packages/create-docusaurus/templates/classic/package.json +++ b/packages/create-docusaurus/templates/classic/package.json @@ -1,6 +1,6 @@ { "name": "docusaurus-2-classic-template", - "version": "2.0.0-beta.7", + "version": "2.0.0-beta.8", "private": true, "scripts": { "docusaurus": "docusaurus", @@ -14,8 +14,8 @@ "write-heading-ids": "docusaurus write-heading-ids" }, "dependencies": { - "@docusaurus/core": "2.0.0-beta.7", - "@docusaurus/preset-classic": "2.0.0-beta.7", + "@docusaurus/core": "2.0.0-beta.8", + "@docusaurus/preset-classic": "2.0.0-beta.8", "@mdx-js/react": "^1.6.21", "@svgr/webpack": "^5.5.0", "clsx": "^1.1.1", diff --git a/packages/create-docusaurus/templates/facebook/package.json b/packages/create-docusaurus/templates/facebook/package.json index e35f27e4a9dd..0ac930a90771 100644 --- a/packages/create-docusaurus/templates/facebook/package.json +++ b/packages/create-docusaurus/templates/facebook/package.json @@ -1,6 +1,6 @@ { "name": "docusaurus-2-facebook-template", - "version": "2.0.0-beta.7", + "version": "2.0.0-beta.8", "private": true, "scripts": { "docusaurus": "docusaurus", @@ -18,8 +18,8 @@ "prettier:diff": "prettier --config .prettierrc --list-different \"**/*.{js,jsx,ts,tsx,md,mdx}\"" }, "dependencies": { - "@docusaurus/core": "2.0.0-beta.7", - "@docusaurus/preset-classic": "2.0.0-beta.7", + "@docusaurus/core": "2.0.0-beta.8", + "@docusaurus/preset-classic": "2.0.0-beta.8", "@mdx-js/react": "^1.6.21", "@svgr/webpack": "^5.5.0", "clsx": "^1.1.1", diff --git a/packages/docusaurus-cssnano-preset/package.json b/packages/docusaurus-cssnano-preset/package.json index e94b31c56fd4..44965c05a309 100644 --- a/packages/docusaurus-cssnano-preset/package.json +++ b/packages/docusaurus-cssnano-preset/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/cssnano-preset", - "version": "2.0.0-beta.7", + "version": "2.0.0-beta.8", "description": "Advanced cssnano preset for maximum optimization.", "main": "index.js", "license": "MIT", diff --git a/packages/docusaurus-mdx-loader/package.json b/packages/docusaurus-mdx-loader/package.json index debde5f8be40..8662df2cb49d 100644 --- a/packages/docusaurus-mdx-loader/package.json +++ b/packages/docusaurus-mdx-loader/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/mdx-loader", - "version": "2.0.0-beta.7", + "version": "2.0.0-beta.8", "description": "Docusaurus Loader for MDX", "main": "lib/index.js", "types": "src/types.d.ts", @@ -20,8 +20,8 @@ "dependencies": { "@babel/parser": "^7.12.16", "@babel/traverse": "^7.12.13", - "@docusaurus/core": "2.0.0-beta.7", - "@docusaurus/utils": "2.0.0-beta.7", + "@docusaurus/core": "2.0.0-beta.8", + "@docusaurus/utils": "2.0.0-beta.8", "@mdx-js/mdx": "^1.6.21", "@mdx-js/react": "^1.6.21", "chalk": "^4.1.2", @@ -38,7 +38,7 @@ "webpack": "^5.40.0" }, "devDependencies": { - "@docusaurus/types": "2.0.0-beta.7", + "@docusaurus/types": "2.0.0-beta.8", "@types/escape-html": "^1.0.1", "@types/mdast": "^3.0.7", "@types/stringify-object": "^3.3.1", diff --git a/packages/docusaurus-migrate/package.json b/packages/docusaurus-migrate/package.json index 1bfb454a7e1c..d5c215f70da1 100644 --- a/packages/docusaurus-migrate/package.json +++ b/packages/docusaurus-migrate/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/migrate", - "version": "2.0.0-beta.7", + "version": "2.0.0-beta.8", "description": "A CLI tool to migrate from older versions of Docusaurus.", "main": "lib/index.js", "license": "MIT", diff --git a/packages/docusaurus-module-type-aliases/package.json b/packages/docusaurus-module-type-aliases/package.json index 1e261a2de8b4..bbc02b928a30 100644 --- a/packages/docusaurus-module-type-aliases/package.json +++ b/packages/docusaurus-module-type-aliases/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/module-type-aliases", - "version": "2.0.0-beta.7", + "version": "2.0.0-beta.8", "description": "Docusaurus module type aliases.", "types": "./src/index.d.ts", "publishConfig": { diff --git a/packages/docusaurus-plugin-client-redirects/package.json b/packages/docusaurus-plugin-client-redirects/package.json index 10312d004c75..fe4f2b2c29d2 100644 --- a/packages/docusaurus-plugin-client-redirects/package.json +++ b/packages/docusaurus-plugin-client-redirects/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/plugin-client-redirects", - "version": "2.0.0-beta.7", + "version": "2.0.0-beta.8", "description": "Client redirects plugin for Docusaurus.", "main": "lib/index.js", "types": "src/plugin-client-redirects.d.ts", @@ -18,11 +18,11 @@ }, "license": "MIT", "dependencies": { - "@docusaurus/core": "2.0.0-beta.7", - "@docusaurus/types": "2.0.0-beta.7", - "@docusaurus/utils": "2.0.0-beta.7", - "@docusaurus/utils-common": "2.0.0-beta.7", - "@docusaurus/utils-validation": "2.0.0-beta.7", + "@docusaurus/core": "2.0.0-beta.8", + "@docusaurus/types": "2.0.0-beta.8", + "@docusaurus/utils": "2.0.0-beta.8", + "@docusaurus/utils-common": "2.0.0-beta.8", + "@docusaurus/utils-validation": "2.0.0-beta.8", "chalk": "^4.1.2", "eta": "^1.12.3", "fs-extra": "^10.0.0", diff --git a/packages/docusaurus-plugin-content-blog/package.json b/packages/docusaurus-plugin-content-blog/package.json index 791f13e89657..d75f9df3de6c 100644 --- a/packages/docusaurus-plugin-content-blog/package.json +++ b/packages/docusaurus-plugin-content-blog/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/plugin-content-blog", - "version": "2.0.0-beta.7", + "version": "2.0.0-beta.8", "description": "Blog plugin for Docusaurus.", "main": "lib/index.js", "types": "src/plugin-content-blog.d.ts", @@ -18,11 +18,11 @@ }, "license": "MIT", "dependencies": { - "@docusaurus/core": "2.0.0-beta.7", - "@docusaurus/mdx-loader": "2.0.0-beta.7", - "@docusaurus/types": "2.0.0-beta.7", - "@docusaurus/utils": "2.0.0-beta.7", - "@docusaurus/utils-validation": "2.0.0-beta.7", + "@docusaurus/core": "2.0.0-beta.8", + "@docusaurus/mdx-loader": "2.0.0-beta.8", + "@docusaurus/types": "2.0.0-beta.8", + "@docusaurus/utils": "2.0.0-beta.8", + "@docusaurus/utils-validation": "2.0.0-beta.8", "chalk": "^4.1.2", "escape-string-regexp": "^4.0.0", "feed": "^4.2.2", diff --git a/packages/docusaurus-plugin-content-docs/package.json b/packages/docusaurus-plugin-content-docs/package.json index f1d89e62ca79..3196262b2ac1 100644 --- a/packages/docusaurus-plugin-content-docs/package.json +++ b/packages/docusaurus-plugin-content-docs/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/plugin-content-docs", - "version": "2.0.0-beta.7", + "version": "2.0.0-beta.8", "description": "Docs plugin for Docusaurus.", "main": "lib/index.js", "types": "src/plugin-content-docs.d.ts", @@ -18,7 +18,7 @@ }, "license": "MIT", "devDependencies": { - "@docusaurus/module-type-aliases": "2.0.0-beta.7", + "@docusaurus/module-type-aliases": "2.0.0-beta.8", "@types/js-yaml": "^4.0.0", "@types/picomatch": "^2.2.1", "commander": "^5.1.0", @@ -26,11 +26,11 @@ "utility-types": "^3.10.0" }, "dependencies": { - "@docusaurus/core": "2.0.0-beta.7", - "@docusaurus/mdx-loader": "2.0.0-beta.7", - "@docusaurus/types": "2.0.0-beta.7", - "@docusaurus/utils": "2.0.0-beta.7", - "@docusaurus/utils-validation": "2.0.0-beta.7", + "@docusaurus/core": "2.0.0-beta.8", + "@docusaurus/mdx-loader": "2.0.0-beta.8", + "@docusaurus/types": "2.0.0-beta.8", + "@docusaurus/utils": "2.0.0-beta.8", + "@docusaurus/utils-validation": "2.0.0-beta.8", "chalk": "^4.1.2", "combine-promises": "^1.1.0", "escape-string-regexp": "^4.0.0", diff --git a/packages/docusaurus-plugin-content-pages/package.json b/packages/docusaurus-plugin-content-pages/package.json index ce4b703ebb5b..9115ae5d933a 100644 --- a/packages/docusaurus-plugin-content-pages/package.json +++ b/packages/docusaurus-plugin-content-pages/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/plugin-content-pages", - "version": "2.0.0-beta.7", + "version": "2.0.0-beta.8", "description": "Pages plugin for Docusaurus.", "main": "lib/index.js", "types": "src/plugin-content-pages.d.ts", @@ -18,11 +18,11 @@ }, "license": "MIT", "dependencies": { - "@docusaurus/core": "2.0.0-beta.7", - "@docusaurus/mdx-loader": "2.0.0-beta.7", - "@docusaurus/types": "2.0.0-beta.7", - "@docusaurus/utils": "2.0.0-beta.7", - "@docusaurus/utils-validation": "2.0.0-beta.7", + "@docusaurus/core": "2.0.0-beta.8", + "@docusaurus/mdx-loader": "2.0.0-beta.8", + "@docusaurus/types": "2.0.0-beta.8", + "@docusaurus/utils": "2.0.0-beta.8", + "@docusaurus/utils-validation": "2.0.0-beta.8", "globby": "^11.0.2", "lodash": "^4.17.20", "remark-admonitions": "^1.2.1", diff --git a/packages/docusaurus-plugin-debug/package.json b/packages/docusaurus-plugin-debug/package.json index 9210d6812df1..69146690e143 100644 --- a/packages/docusaurus-plugin-debug/package.json +++ b/packages/docusaurus-plugin-debug/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/plugin-debug", - "version": "2.0.0-beta.7", + "version": "2.0.0-beta.8", "description": "Debug plugin for Docusaurus.", "main": "lib/index.js", "types": "src/types.d.ts", @@ -18,9 +18,9 @@ }, "license": "MIT", "dependencies": { - "@docusaurus/core": "2.0.0-beta.7", - "@docusaurus/types": "2.0.0-beta.7", - "@docusaurus/utils": "2.0.0-beta.7", + "@docusaurus/core": "2.0.0-beta.8", + "@docusaurus/types": "2.0.0-beta.8", + "@docusaurus/utils": "2.0.0-beta.8", "fs-extra": "^10.0.0", "react-json-view": "^1.21.3", "tslib": "^2.3.1" diff --git a/packages/docusaurus-plugin-google-analytics/package.json b/packages/docusaurus-plugin-google-analytics/package.json index 85711cafa213..9f7ab26e0efe 100644 --- a/packages/docusaurus-plugin-google-analytics/package.json +++ b/packages/docusaurus-plugin-google-analytics/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/plugin-google-analytics", - "version": "2.0.0-beta.7", + "version": "2.0.0-beta.8", "description": "Global analytics (analytics.js) plugin for Docusaurus.", "main": "lib/index.js", "types": "src/plugin-google-analytics.d.ts", @@ -18,10 +18,10 @@ }, "license": "MIT", "dependencies": { - "@docusaurus/core": "2.0.0-beta.7" + "@docusaurus/core": "2.0.0-beta.8" }, "devDependencies": { - "@docusaurus/types": "2.0.0-beta.7" + "@docusaurus/types": "2.0.0-beta.8" }, "peerDependencies": { "react": "^16.8.4 || ^17.0.0", diff --git a/packages/docusaurus-plugin-google-gtag/package.json b/packages/docusaurus-plugin-google-gtag/package.json index 7b10cf5d4a09..13e8bd955a6a 100644 --- a/packages/docusaurus-plugin-google-gtag/package.json +++ b/packages/docusaurus-plugin-google-gtag/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/plugin-google-gtag", - "version": "2.0.0-beta.7", + "version": "2.0.0-beta.8", "description": "Global Site Tag (gtag.js) plugin for Docusaurus.", "main": "lib/index.js", "types": "src/plugin-google-gtag.d.ts", @@ -18,10 +18,10 @@ }, "license": "MIT", "dependencies": { - "@docusaurus/core": "2.0.0-beta.7" + "@docusaurus/core": "2.0.0-beta.8" }, "devDependencies": { - "@docusaurus/types": "2.0.0-beta.7" + "@docusaurus/types": "2.0.0-beta.8" }, "peerDependencies": { "react": "^16.8.4 || ^17.0.0", diff --git a/packages/docusaurus-plugin-ideal-image/package.json b/packages/docusaurus-plugin-ideal-image/package.json index 37e3dbba8fac..0c9c0fe99ce7 100644 --- a/packages/docusaurus-plugin-ideal-image/package.json +++ b/packages/docusaurus-plugin-ideal-image/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/plugin-ideal-image", - "version": "2.0.0-beta.7", + "version": "2.0.0-beta.8", "description": "Docusaurus Plugin to generate an almost ideal image (responsive, lazy-loading, and low quality placeholder).", "main": "lib/index.js", "types": "src/plugin-ideal-image.d.ts", @@ -21,10 +21,10 @@ "fs-extra": "^10.0.0" }, "dependencies": { - "@docusaurus/core": "2.0.0-beta.7", - "@docusaurus/lqip-loader": "2.0.0-beta.7", + "@docusaurus/core": "2.0.0-beta.8", + "@docusaurus/lqip-loader": "2.0.0-beta.8", "@docusaurus/responsive-loader": "1.4.0", - "@docusaurus/types": "2.0.0-beta.7", + "@docusaurus/types": "2.0.0-beta.8", "@endiliey/react-ideal-image": "^0.0.11", "react-waypoint": "^10.1.0", "sharp": "^0.29.1", diff --git a/packages/docusaurus-plugin-pwa/package.json b/packages/docusaurus-plugin-pwa/package.json index cacecbc6032e..9a9adfb0b334 100644 --- a/packages/docusaurus-plugin-pwa/package.json +++ b/packages/docusaurus-plugin-pwa/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/plugin-pwa", - "version": "2.0.0-beta.7", + "version": "2.0.0-beta.8", "description": "Docusaurus Plugin to add PWA support.", "main": "src/index.js", "publishConfig": { @@ -16,10 +16,10 @@ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.13", "@babel/plugin-proposal-optional-chaining": "^7.12.16", "@babel/preset-env": "^7.15.6", - "@docusaurus/core": "2.0.0-beta.7", - "@docusaurus/theme-common": "2.0.0-beta.7", - "@docusaurus/utils": "2.0.0-beta.7", - "@docusaurus/utils-validation": "2.0.0-beta.7", + "@docusaurus/core": "2.0.0-beta.8", + "@docusaurus/theme-common": "2.0.0-beta.8", + "@docusaurus/utils": "2.0.0-beta.8", + "@docusaurus/utils-validation": "2.0.0-beta.8", "babel-loader": "^8.2.2", "clsx": "^1.1.1", "core-js": "^2.6.5", diff --git a/packages/docusaurus-plugin-sitemap/package.json b/packages/docusaurus-plugin-sitemap/package.json index a4e78129ffba..55294198b26b 100644 --- a/packages/docusaurus-plugin-sitemap/package.json +++ b/packages/docusaurus-plugin-sitemap/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/plugin-sitemap", - "version": "2.0.0-beta.7", + "version": "2.0.0-beta.8", "description": "Simple sitemap generation plugin for Docusaurus.", "main": "lib/index.js", "types": "src/plugin-sitemap.d.ts", @@ -18,11 +18,11 @@ }, "license": "MIT", "dependencies": { - "@docusaurus/core": "2.0.0-beta.7", - "@docusaurus/types": "2.0.0-beta.7", - "@docusaurus/utils": "2.0.0-beta.7", - "@docusaurus/utils-common": "2.0.0-beta.7", - "@docusaurus/utils-validation": "2.0.0-beta.7", + "@docusaurus/core": "2.0.0-beta.8", + "@docusaurus/types": "2.0.0-beta.8", + "@docusaurus/utils": "2.0.0-beta.8", + "@docusaurus/utils-common": "2.0.0-beta.8", + "@docusaurus/utils-validation": "2.0.0-beta.8", "fs-extra": "^10.0.0", "sitemap": "^7.0.0", "tslib": "^2.3.1" diff --git a/packages/docusaurus-preset-classic/package.json b/packages/docusaurus-preset-classic/package.json index 7e4dadc6acc3..7bf4969b65d4 100644 --- a/packages/docusaurus-preset-classic/package.json +++ b/packages/docusaurus-preset-classic/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/preset-classic", - "version": "2.0.0-beta.7", + "version": "2.0.0-beta.8", "description": "Classic preset for Docusaurus.", "main": "lib/index.js", "types": "src/preset-classic.d.ts", @@ -18,16 +18,16 @@ }, "license": "MIT", "dependencies": { - "@docusaurus/core": "2.0.0-beta.7", - "@docusaurus/plugin-content-blog": "2.0.0-beta.7", - "@docusaurus/plugin-content-docs": "2.0.0-beta.7", - "@docusaurus/plugin-content-pages": "2.0.0-beta.7", - "@docusaurus/plugin-debug": "2.0.0-beta.7", - "@docusaurus/plugin-google-analytics": "2.0.0-beta.7", - "@docusaurus/plugin-google-gtag": "2.0.0-beta.7", - "@docusaurus/plugin-sitemap": "2.0.0-beta.7", - "@docusaurus/theme-classic": "2.0.0-beta.7", - "@docusaurus/theme-search-algolia": "2.0.0-beta.7" + "@docusaurus/core": "2.0.0-beta.8", + "@docusaurus/plugin-content-blog": "2.0.0-beta.8", + "@docusaurus/plugin-content-docs": "2.0.0-beta.8", + "@docusaurus/plugin-content-pages": "2.0.0-beta.8", + "@docusaurus/plugin-debug": "2.0.0-beta.8", + "@docusaurus/plugin-google-analytics": "2.0.0-beta.8", + "@docusaurus/plugin-google-gtag": "2.0.0-beta.8", + "@docusaurus/plugin-sitemap": "2.0.0-beta.8", + "@docusaurus/theme-classic": "2.0.0-beta.8", + "@docusaurus/theme-search-algolia": "2.0.0-beta.8" }, "peerDependencies": { "react": "^16.8.4 || ^17.0.0", diff --git a/packages/docusaurus-remark-plugin-npm2yarn/package.json b/packages/docusaurus-remark-plugin-npm2yarn/package.json index b9003a92ee37..6ab516482abd 100644 --- a/packages/docusaurus-remark-plugin-npm2yarn/package.json +++ b/packages/docusaurus-remark-plugin-npm2yarn/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/remark-plugin-npm2yarn", - "version": "2.0.0-beta.7", + "version": "2.0.0-beta.8", "description": "Remark plugin for converting npm commands to Yarn commands as tabs.", "main": "src/index.js", "publishConfig": { diff --git a/packages/docusaurus-theme-classic/package.json b/packages/docusaurus-theme-classic/package.json index 14bf990f2325..faf718bc8fd8 100644 --- a/packages/docusaurus-theme-classic/package.json +++ b/packages/docusaurus-theme-classic/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/theme-classic", - "version": "2.0.0-beta.7", + "version": "2.0.0-beta.8", "description": "Classic theme for Docusaurus", "main": "lib/index.js", "types": "src/types.d.ts", @@ -23,15 +23,15 @@ "update-code-translations": "node -e 'require(\"./update-code-translations.js\").run()'" }, "dependencies": { - "@docusaurus/core": "2.0.0-beta.7", - "@docusaurus/plugin-content-blog": "2.0.0-beta.7", - "@docusaurus/plugin-content-docs": "2.0.0-beta.7", - "@docusaurus/plugin-content-pages": "2.0.0-beta.7", - "@docusaurus/theme-common": "2.0.0-beta.7", - "@docusaurus/types": "2.0.0-beta.7", - "@docusaurus/utils": "2.0.0-beta.7", - "@docusaurus/utils-common": "2.0.0-beta.7", - "@docusaurus/utils-validation": "2.0.0-beta.7", + "@docusaurus/core": "2.0.0-beta.8", + "@docusaurus/plugin-content-blog": "2.0.0-beta.8", + "@docusaurus/plugin-content-docs": "2.0.0-beta.8", + "@docusaurus/plugin-content-pages": "2.0.0-beta.8", + "@docusaurus/theme-common": "2.0.0-beta.8", + "@docusaurus/types": "2.0.0-beta.8", + "@docusaurus/utils": "2.0.0-beta.8", + "@docusaurus/utils-common": "2.0.0-beta.8", + "@docusaurus/utils-validation": "2.0.0-beta.8", "@mdx-js/mdx": "^1.6.21", "@mdx-js/react": "^1.6.21", "chalk": "^4.1.2", @@ -50,7 +50,7 @@ "rtlcss": "^3.3.0" }, "devDependencies": { - "@docusaurus/module-type-aliases": "2.0.0-beta.7", + "@docusaurus/module-type-aliases": "2.0.0-beta.8", "@types/mdx-js__react": "^1.5.4", "@types/parse-numeric-range": "^0.0.1", "@types/rtlcss": "^3.1.1", diff --git a/packages/docusaurus-theme-common/package.json b/packages/docusaurus-theme-common/package.json index 52157559ecda..2bc7a79733f9 100644 --- a/packages/docusaurus-theme-common/package.json +++ b/packages/docusaurus-theme-common/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/theme-common", - "version": "2.0.0-beta.7", + "version": "2.0.0-beta.8", "description": "Common code for Docusaurus themes.", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -18,18 +18,18 @@ }, "license": "MIT", "dependencies": { - "@docusaurus/core": "2.0.0-beta.7", - "@docusaurus/plugin-content-blog": "2.0.0-beta.7", - "@docusaurus/plugin-content-docs": "2.0.0-beta.7", - "@docusaurus/plugin-content-pages": "2.0.0-beta.7", - "@docusaurus/types": "2.0.0-beta.7", + "@docusaurus/core": "2.0.0-beta.8", + "@docusaurus/plugin-content-blog": "2.0.0-beta.8", + "@docusaurus/plugin-content-docs": "2.0.0-beta.8", + "@docusaurus/plugin-content-pages": "2.0.0-beta.8", + "@docusaurus/types": "2.0.0-beta.8", "clsx": "^1.1.1", "fs-extra": "^10.0.0", "tslib": "^2.3.1", "utility-types": "^3.10.0" }, "devDependencies": { - "@docusaurus/module-type-aliases": "2.0.0-beta.7", + "@docusaurus/module-type-aliases": "2.0.0-beta.8", "lodash": "^4.17.20" }, "peerDependencies": { diff --git a/packages/docusaurus-theme-live-codeblock/package.json b/packages/docusaurus-theme-live-codeblock/package.json index 517460f58fa0..293046ab891b 100644 --- a/packages/docusaurus-theme-live-codeblock/package.json +++ b/packages/docusaurus-theme-live-codeblock/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/theme-live-codeblock", - "version": "2.0.0-beta.7", + "version": "2.0.0-beta.8", "description": "Docusaurus live code block component.", "main": "src/index.js", "publishConfig": { @@ -13,8 +13,8 @@ }, "license": "MIT", "dependencies": { - "@docusaurus/core": "2.0.0-beta.7", - "@docusaurus/utils-validation": "2.0.0-beta.7", + "@docusaurus/core": "2.0.0-beta.8", + "@docusaurus/utils-validation": "2.0.0-beta.8", "@philpl/buble": "^0.19.7", "clsx": "^1.1.1", "parse-numeric-range": "^1.3.0", diff --git a/packages/docusaurus-theme-search-algolia/package.json b/packages/docusaurus-theme-search-algolia/package.json index c4681f522ecd..6dda70cec94b 100644 --- a/packages/docusaurus-theme-search-algolia/package.json +++ b/packages/docusaurus-theme-search-algolia/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/theme-search-algolia", - "version": "2.0.0-beta.7", + "version": "2.0.0-beta.8", "description": "Algolia search component for Docusaurus.", "main": "src/index.js", "publishConfig": { @@ -14,10 +14,10 @@ "license": "MIT", "dependencies": { "@docsearch/react": "^3.0.0-alpha.39", - "@docusaurus/core": "2.0.0-beta.7", - "@docusaurus/theme-common": "2.0.0-beta.7", - "@docusaurus/utils": "2.0.0-beta.7", - "@docusaurus/utils-validation": "2.0.0-beta.7", + "@docusaurus/core": "2.0.0-beta.8", + "@docusaurus/theme-common": "2.0.0-beta.8", + "@docusaurus/utils": "2.0.0-beta.8", + "@docusaurus/utils-validation": "2.0.0-beta.8", "algoliasearch": "^4.10.5", "algoliasearch-helper": "^3.5.5", "clsx": "^1.1.1", diff --git a/packages/docusaurus-types/package.json b/packages/docusaurus-types/package.json index 0b4203445764..24a00f2f4a8c 100644 --- a/packages/docusaurus-types/package.json +++ b/packages/docusaurus-types/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/types", - "version": "2.0.0-beta.7", + "version": "2.0.0-beta.8", "description": "Common types for Docusaurus packages.", "types": "./src/index.d.ts", "publishConfig": { diff --git a/packages/docusaurus-utils-common/package.json b/packages/docusaurus-utils-common/package.json index 5edf47a0b256..5a3cfba53587 100644 --- a/packages/docusaurus-utils-common/package.json +++ b/packages/docusaurus-utils-common/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/utils-common", - "version": "2.0.0-beta.7", + "version": "2.0.0-beta.8", "description": "Common (Node/Browser) utility functions for Docusaurus packages.", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -18,7 +18,7 @@ }, "license": "MIT", "dependencies": { - "@docusaurus/types": "2.0.0-beta.7", + "@docusaurus/types": "2.0.0-beta.8", "tslib": "^2.3.1" }, "engines": { diff --git a/packages/docusaurus-utils-validation/package.json b/packages/docusaurus-utils-validation/package.json index b75b1b77eecd..cfca0396407c 100644 --- a/packages/docusaurus-utils-validation/package.json +++ b/packages/docusaurus-utils-validation/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/utils-validation", - "version": "2.0.0-beta.7", + "version": "2.0.0-beta.8", "description": "Node validation utility functions for Docusaurus packages.", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -18,7 +18,7 @@ }, "license": "MIT", "dependencies": { - "@docusaurus/utils": "2.0.0-beta.7", + "@docusaurus/utils": "2.0.0-beta.8", "chalk": "^4.1.2", "joi": "^17.4.2", "tslib": "^2.3.1" diff --git a/packages/docusaurus-utils/package.json b/packages/docusaurus-utils/package.json index 94e45dfe70ab..f1d257417da9 100644 --- a/packages/docusaurus-utils/package.json +++ b/packages/docusaurus-utils/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/utils", - "version": "2.0.0-beta.7", + "version": "2.0.0-beta.8", "description": "Node utility functions for Docusaurus packages.", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -18,7 +18,7 @@ }, "license": "MIT", "dependencies": { - "@docusaurus/types": "2.0.0-beta.7", + "@docusaurus/types": "2.0.0-beta.8", "@mdx-js/runtime": "^1.6.22", "@types/github-slugger": "^1.3.0", "chalk": "^4.1.2", diff --git a/packages/docusaurus/package.json b/packages/docusaurus/package.json index 3b92a320798d..939c72d33ec2 100644 --- a/packages/docusaurus/package.json +++ b/packages/docusaurus/package.json @@ -1,7 +1,7 @@ { "name": "@docusaurus/core", "description": "Easy to Maintain Open Source Documentation Websites", - "version": "2.0.0-beta.7", + "version": "2.0.0-beta.8", "license": "MIT", "publishConfig": { "access": "public" @@ -31,7 +31,7 @@ "url": "https://github.com/facebook/docusaurus/issues" }, "devDependencies": { - "@docusaurus/module-type-aliases": "2.0.0-beta.7", + "@docusaurus/module-type-aliases": "2.0.0-beta.8", "@types/copy-webpack-plugin": "^8.0.1", "@types/css-minimizer-webpack-plugin": "^3.0.2", "@types/detect-port": "^1.3.0", @@ -55,12 +55,12 @@ "@babel/runtime": "^7.15.4", "@babel/runtime-corejs3": "^7.15.4", "@babel/traverse": "^7.12.13", - "@docusaurus/cssnano-preset": "2.0.0-beta.7", + "@docusaurus/cssnano-preset": "2.0.0-beta.8", "@docusaurus/react-loadable": "5.5.0", - "@docusaurus/types": "2.0.0-beta.7", - "@docusaurus/utils": "2.0.0-beta.7", - "@docusaurus/utils-common": "2.0.0-beta.7", - "@docusaurus/utils-validation": "2.0.0-beta.7", + "@docusaurus/types": "2.0.0-beta.8", + "@docusaurus/utils": "2.0.0-beta.8", + "@docusaurus/utils-common": "2.0.0-beta.8", + "@docusaurus/utils-validation": "2.0.0-beta.8", "@slorber/static-site-generator-webpack-plugin": "^4.0.0", "@svgr/webpack": "^5.5.0", "autoprefixer": "^10.3.5", diff --git a/packages/lqip-loader/package.json b/packages/lqip-loader/package.json index cf2cc82cdf35..d1a030c326fb 100644 --- a/packages/lqip-loader/package.json +++ b/packages/lqip-loader/package.json @@ -1,6 +1,6 @@ { "name": "@docusaurus/lqip-loader", - "version": "2.0.0-beta.7", + "version": "2.0.0-beta.8", "description": "Low Quality Image Placeholders (LQIP) loader for webpack.", "main": "src/index.js", "publishConfig": { diff --git a/packages/stylelint-copyright/package.json b/packages/stylelint-copyright/package.json index 2c941fed101f..8166ec55a91b 100644 --- a/packages/stylelint-copyright/package.json +++ b/packages/stylelint-copyright/package.json @@ -1,6 +1,6 @@ { "name": "stylelint-copyright", - "version": "2.0.0-beta.7", + "version": "2.0.0-beta.8", "description": "Stylelint plugin to check CSS files for a copyright header.", "main": "index.js", "license": "MIT", diff --git a/website/package.json b/website/package.json index 67c76bd82989..3ff20c497b4c 100644 --- a/website/package.json +++ b/website/package.json @@ -1,6 +1,6 @@ { "name": "website", - "version": "2.0.0-beta.7", + "version": "2.0.0-beta.8", "private": true, "scripts": { "docusaurus": "docusaurus", @@ -31,13 +31,13 @@ "dependencies": { "@crowdin/cli": "^3.5.2", "@crowdin/crowdin-api-client": "^1.10.6", - "@docusaurus/core": "2.0.0-beta.7", - "@docusaurus/plugin-client-redirects": "2.0.0-beta.7", - "@docusaurus/plugin-ideal-image": "2.0.0-beta.7", - "@docusaurus/plugin-pwa": "2.0.0-beta.7", - "@docusaurus/preset-classic": "2.0.0-beta.7", - "@docusaurus/remark-plugin-npm2yarn": "2.0.0-beta.7", - "@docusaurus/theme-live-codeblock": "2.0.0-beta.7", + "@docusaurus/core": "2.0.0-beta.8", + "@docusaurus/plugin-client-redirects": "2.0.0-beta.8", + "@docusaurus/plugin-ideal-image": "2.0.0-beta.8", + "@docusaurus/plugin-pwa": "2.0.0-beta.8", + "@docusaurus/preset-classic": "2.0.0-beta.8", + "@docusaurus/remark-plugin-npm2yarn": "2.0.0-beta.8", + "@docusaurus/theme-live-codeblock": "2.0.0-beta.8", "clsx": "^1.1.1", "color": "^4.0.1", "esbuild-loader": "2.13.1", diff --git a/website/versioned_docs/version-2.0.0-beta.6/api/themes/theme-bootstrap.md b/website/versioned_docs/version-2.0.0-beta.6/api/themes/theme-bootstrap.md deleted file mode 100644 index 2c2dc05a6206..000000000000 --- a/website/versioned_docs/version-2.0.0-beta.6/api/themes/theme-bootstrap.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -id: theme-bootstrap -title: '📦 theme-bootstrap' -slug: '/api/themes/@docusaurus/theme-bootstrap' ---- - -:::danger - -The bootstrap theme is a work in progress, and is not production ready. - -::: - -🚧 The bootstrap theme for Docusaurus. - -You can refer to the [theme configuration page](theme-configuration.md) for more details on the configuration. - -```bash npm2yarn -npm install --save @docusaurus/theme-bootstrap -``` - -:::tip - -If you have installed `@docusaurus/preset-bootstrap`, you don't need to install it as a dependency. - -::: diff --git a/website/versioned_docs/version-2.0.0-beta.6/_partials/swizzleWarning.mdx b/website/versioned_docs/version-2.0.0-beta.8/_partials/swizzleWarning.mdx similarity index 100% rename from website/versioned_docs/version-2.0.0-beta.6/_partials/swizzleWarning.mdx rename to website/versioned_docs/version-2.0.0-beta.8/_partials/swizzleWarning.mdx diff --git a/website/versioned_docs/version-2.0.0-beta.6/api/docusaurus.config.js.md b/website/versioned_docs/version-2.0.0-beta.8/api/docusaurus.config.js.md similarity index 99% rename from website/versioned_docs/version-2.0.0-beta.6/api/docusaurus.config.js.md rename to website/versioned_docs/version-2.0.0-beta.8/api/docusaurus.config.js.md index 21a5ba0ce1cd..a153a84910dc 100644 --- a/website/versioned_docs/version-2.0.0-beta.6/api/docusaurus.config.js.md +++ b/website/versioned_docs/version-2.0.0-beta.8/api/docusaurus.config.js.md @@ -1,7 +1,7 @@ --- id: docusaurus.config.js description: API reference for Docusaurus configuration file. -slug: /docusaurus.config.js +slug: /api/docusaurus-config --- # `docusaurus.config.js` diff --git a/website/versioned_docs/version-2.0.0-beta.6/api/plugins/overview.md b/website/versioned_docs/version-2.0.0-beta.8/api/plugins/overview.md similarity index 100% rename from website/versioned_docs/version-2.0.0-beta.6/api/plugins/overview.md rename to website/versioned_docs/version-2.0.0-beta.8/api/plugins/overview.md diff --git a/website/versioned_docs/version-2.0.0-beta.6/api/plugins/plugin-client-redirects.md b/website/versioned_docs/version-2.0.0-beta.8/api/plugins/plugin-client-redirects.md similarity index 100% rename from website/versioned_docs/version-2.0.0-beta.6/api/plugins/plugin-client-redirects.md rename to website/versioned_docs/version-2.0.0-beta.8/api/plugins/plugin-client-redirects.md diff --git a/website/versioned_docs/version-2.0.0-beta.6/api/plugins/plugin-content-blog.md b/website/versioned_docs/version-2.0.0-beta.8/api/plugins/plugin-content-blog.md similarity index 91% rename from website/versioned_docs/version-2.0.0-beta.6/api/plugins/plugin-content-blog.md rename to website/versioned_docs/version-2.0.0-beta.8/api/plugins/plugin-content-blog.md index 58af14d1dd19..f769ab10b3f4 100644 --- a/website/versioned_docs/version-2.0.0-beta.6/api/plugins/plugin-content-blog.md +++ b/website/versioned_docs/version-2.0.0-beta.8/api/plugins/plugin-content-blog.md @@ -36,6 +36,7 @@ Accepted fields: | `blogSidebarCount` | number \| 'ALL' | `5` | Number of blog post elements to show in the blog sidebar. `'ALL'` to show all blog posts; `0` to disable | | `blogSidebarTitle` | `string` | `'Recent posts'` | Title of the blog sidebar. | | `routeBasePath` | `string` | `'blog'` | URL route for the blog section of your site. **DO NOT** include a trailing slash. Use `/` to put the blog at root path. | +| `tagsBasePath` | `string` | `'tags'` | URL route for the tags list page of your site. It is prepended to the `routeBasePath`. | | `archiveBasePath` | `string` | `'/archive'` | URL route for the archive blog section of your site. It is prepended to the `routeBasePath`. **DO NOT** include a trailing slash. | | `include` | `string[]` | `['**/*.{md,mdx}']` | Matching files will be included and processed. | | `exclude` | `string[]` | _See example configuration_ | No route will be created for matching files. | @@ -50,6 +51,7 @@ Accepted fields: | `beforeDefaultRehypePlugins` | `any[]` | `[]` | Custom Rehype plugins passed to MDX before the default Docusaurus Rehype plugins. | | `truncateMarker` | `string` | `//` | Truncate marker, can be a regex or string. | | `showReadingTime` | `boolean` | `true` | Show estimated reading time for the blog post. | +| `readingTime` | `ReadingTimeFunctionOption` | The default reading time | A callback to customize the reading time number displayed. | | `authorsMapPath` | `string` | `'authors.yml'` | Path to the authors map file, relative to the blog content directory specified with `path`. Can also be a `json` file. | | `feedOptions` | _See below_ | `{type: ['rss', 'atom']}` | Blog feed. If undefined, no rss feed will be generated. | | `feedOptions.type` | 'rss' \| 'atom' \| 'all' (or array of multiple options) | **Required** | Type of feed to be generated. | @@ -67,6 +69,23 @@ type EditUrlFunction = (params: { permalink: string; locale: string; }) => string | undefined; + +type ReadingTimeOptions = { + wordsPerMinute: number; + wordBound: (char: string) => boolean; +}; + +type ReadingTimeFunction = (params: { + content: string; + frontMatter?: BlogPostFrontMatter & Record; + options?: ReadingTimeOptions; +}) => number; + +type ReadingTimeFunctionOption = (params: { + content: string; + frontMatter: BlogPostFrontMatter & Record; + defaultReadingTime: ReadingTimeFunction; +}) => number | undefined; ``` ## Example configuration {#ex-config} @@ -186,6 +205,8 @@ Accepted fields: | `tags` | `Tag[]` | `undefined` | A list of strings or objects of two string fields `label` and `permalink` to tag to your post. | | `draft` | `boolean` | `false` | A boolean flag to indicate that the blog post is work-in-progress and therefore should not be published yet. However, draft blog posts will be displayed during development. | | `hide_table_of_contents` | `boolean` | `false` | Whether to hide the table of contents to the right. | +| `toc_min_heading_level` | `number` | `2` | The minimum heading level shown in the table of contents. Must be between 2 and 6 and lower or equal to the max value. | +| `toc_max_heading_level` | `number` | `3` | The max heading level shown in the table of contents. Must be between 2 and 6. | | `keywords` | `string[]` | `undefined` | Keywords meta tag, which will become the `` in ``, used by search engines. | | `description` | `string` | The first line of Markdown content | The description of your document, which will become the `` and `` in ``, used by search engines. | | `image` | `string` | `undefined` | Cover or thumbnail image that will be used when displaying the link to your post. | diff --git a/website/versioned_docs/version-2.0.0-beta.6/api/plugins/plugin-content-docs.md b/website/versioned_docs/version-2.0.0-beta.8/api/plugins/plugin-content-docs.md similarity index 93% rename from website/versioned_docs/version-2.0.0-beta.6/api/plugins/plugin-content-docs.md rename to website/versioned_docs/version-2.0.0-beta.8/api/plugins/plugin-content-docs.md index 0e947ab10910..ab324d4a096f 100644 --- a/website/versioned_docs/version-2.0.0-beta.6/api/plugins/plugin-content-docs.md +++ b/website/versioned_docs/version-2.0.0-beta.8/api/plugins/plugin-content-docs.md @@ -33,6 +33,7 @@ Accepted fields: | `editLocalizedFiles` | `boolean` | `false` | The edit URL will target the localized file, instead of the original unlocalized file. Ignored when `editUrl` is a function. | | `editCurrentVersion` | `boolean` | `false` | The edit URL will always target the current version doc instead of older versions. Ignored when `editUrl` is a function. | | `routeBasePath` | `string` | `'docs'` | URL route for the docs section of your site. **DO NOT** include a trailing slash. Use `/` for shipping docs without base path. | +| `tagsBasePath` | `string` | `'tags'` | URL route for the tags list page of your site. It is prepended to the `routeBasePath`. | | `include` | `string[]` | `['**/*.{md,mdx}']` | Matching files will be included and processed. | | `exclude` | `string[]` | _See example configuration_ | No route will be created for matching files. | | `sidebarPath` | false \| string | `undefined` (creates autogenerated sidebar) | Path to sidebar configuration. | @@ -246,8 +247,13 @@ Accepted fields: | `pagination_label` | `string` | `sidebar_label` or `title` | The text used in the document next/previous buttons for this document. | | `sidebar_label` | `string` | `title` | The text shown in the document sidebar for this document. | | `sidebar_position` | `number` | Default ordering | Controls the position of a doc inside the generated sidebar slice when using `autogenerated` sidebar items. See also [Autogenerated sidebar metadatas](/docs/sidebar#autogenerated-sidebar-metadatas). | +| `sidebar_class_name` | `string` | `undefined` | Gives the corresponding sidebar label a special class name when using autogenerated sidebars. | | `hide_title` | `boolean` | `false` | Whether to hide the title at the top of the doc. It only hides a title declared through the frontmatter, and have no effect on a Markdown title at the top of your document. | | `hide_table_of_contents` | `boolean` | `false` | Whether to hide the table of contents to the right. | +| `toc_min_heading_level` | `number` | `2` | The minimum heading level shown in the table of contents. Must be between 2 and 6 and lower or equal to the max value. | +| `toc_max_heading_level` | `number` | `3` | The max heading level shown in the table of contents. Must be between 2 and 6. | +| `pagination_next` | string \| null | Next doc in the sidebar | The ID of the documentation you want the "Next" pagination to link to. Use `null` to disable showing "Next" for this page. | +| `pagination_prev` | string \| null | Previous doc in the sidebar | The ID of the documentation you want the "Previous" pagination to link to. Use `null` to disable showing "Previous" for this page. | | `parse_number_prefixes` | `boolean` | `numberPrefixParser` plugin option | Whether number prefix parsing is disabled on this doc. See also [Using number prefixes](/docs/sidebar#using-number-prefixes). | | `custom_edit_url` | `string` | Computed using the `editUrl` plugin option | The URL for editing this document. | | `keywords` | `string[]` | `undefined` | Keywords meta tag for the document page, for search engines. | diff --git a/website/versioned_docs/version-2.0.0-beta.6/api/plugins/plugin-content-pages.md b/website/versioned_docs/version-2.0.0-beta.8/api/plugins/plugin-content-pages.md similarity index 100% rename from website/versioned_docs/version-2.0.0-beta.6/api/plugins/plugin-content-pages.md rename to website/versioned_docs/version-2.0.0-beta.8/api/plugins/plugin-content-pages.md diff --git a/website/versioned_docs/version-2.0.0-beta.6/api/plugins/plugin-debug.md b/website/versioned_docs/version-2.0.0-beta.8/api/plugins/plugin-debug.md similarity index 100% rename from website/versioned_docs/version-2.0.0-beta.6/api/plugins/plugin-debug.md rename to website/versioned_docs/version-2.0.0-beta.8/api/plugins/plugin-debug.md diff --git a/website/versioned_docs/version-2.0.0-beta.6/api/plugins/plugin-google-analytics.md b/website/versioned_docs/version-2.0.0-beta.8/api/plugins/plugin-google-analytics.md similarity index 100% rename from website/versioned_docs/version-2.0.0-beta.6/api/plugins/plugin-google-analytics.md rename to website/versioned_docs/version-2.0.0-beta.8/api/plugins/plugin-google-analytics.md diff --git a/website/versioned_docs/version-2.0.0-beta.6/api/plugins/plugin-google-gtag.md b/website/versioned_docs/version-2.0.0-beta.8/api/plugins/plugin-google-gtag.md similarity index 100% rename from website/versioned_docs/version-2.0.0-beta.6/api/plugins/plugin-google-gtag.md rename to website/versioned_docs/version-2.0.0-beta.8/api/plugins/plugin-google-gtag.md diff --git a/website/versioned_docs/version-2.0.0-beta.6/api/plugins/plugin-ideal-image.md b/website/versioned_docs/version-2.0.0-beta.8/api/plugins/plugin-ideal-image.md similarity index 100% rename from website/versioned_docs/version-2.0.0-beta.6/api/plugins/plugin-ideal-image.md rename to website/versioned_docs/version-2.0.0-beta.8/api/plugins/plugin-ideal-image.md diff --git a/website/versioned_docs/version-2.0.0-beta.6/api/plugins/plugin-pwa.md b/website/versioned_docs/version-2.0.0-beta.8/api/plugins/plugin-pwa.md similarity index 100% rename from website/versioned_docs/version-2.0.0-beta.6/api/plugins/plugin-pwa.md rename to website/versioned_docs/version-2.0.0-beta.8/api/plugins/plugin-pwa.md diff --git a/website/versioned_docs/version-2.0.0-beta.6/api/plugins/plugin-sitemap.md b/website/versioned_docs/version-2.0.0-beta.8/api/plugins/plugin-sitemap.md similarity index 100% rename from website/versioned_docs/version-2.0.0-beta.6/api/plugins/plugin-sitemap.md rename to website/versioned_docs/version-2.0.0-beta.8/api/plugins/plugin-sitemap.md diff --git a/website/versioned_docs/version-2.0.0-beta.6/api/themes/overview.md b/website/versioned_docs/version-2.0.0-beta.8/api/themes/overview.md similarity index 94% rename from website/versioned_docs/version-2.0.0-beta.6/api/themes/overview.md rename to website/versioned_docs/version-2.0.0-beta.8/api/themes/overview.md index 984918726f3b..8a2ee6b50f84 100644 --- a/website/versioned_docs/version-2.0.0-beta.6/api/themes/overview.md +++ b/website/versioned_docs/version-2.0.0-beta.8/api/themes/overview.md @@ -12,7 +12,7 @@ We provide official Docusaurus themes. The main themes implement the user interface for the [docs](../plugins/plugin-content-docs.md), [blog](../plugins/plugin-content-blog.md) and [pages](../plugins/plugin-content-pages.md) plugins. - [@docusaurus/theme-classic](./theme-classic.md) -- [@docusaurus/theme-bootstrap](./theme-bootstrap.md) 🚧 +- 🚧 other themes are planned :::caution diff --git a/website/versioned_docs/version-2.0.0-beta.6/api/themes/theme-classic.md b/website/versioned_docs/version-2.0.0-beta.8/api/themes/theme-classic.md similarity index 100% rename from website/versioned_docs/version-2.0.0-beta.6/api/themes/theme-classic.md rename to website/versioned_docs/version-2.0.0-beta.8/api/themes/theme-classic.md diff --git a/website/versioned_docs/version-2.0.0-beta.6/api/themes/theme-configuration.md b/website/versioned_docs/version-2.0.0-beta.8/api/themes/theme-configuration.md similarity index 95% rename from website/versioned_docs/version-2.0.0-beta.6/api/themes/theme-configuration.md rename to website/versioned_docs/version-2.0.0-beta.8/api/themes/theme-configuration.md index c22cdbe65266..72e4dc5f04a5 100644 --- a/website/versioned_docs/version-2.0.0-beta.6/api/themes/theme-configuration.md +++ b/website/versioned_docs/version-2.0.0-beta.8/api/themes/theme-configuration.md @@ -2,6 +2,7 @@ id: theme-configuration title: 'Theme configuration' slug: '/api/themes/configuration' +toc_max_heading_level: 4 --- This configuration applies to all [main themes](./overview.md). @@ -251,7 +252,7 @@ module.exports = { The items can have different behaviors based on the `type` field. The sections below will introduce you to all the types of navbar items available. -### Navbar link {#navbar-link} +#### Navbar link {#navbar-link} By default, Navbar items are regular links (internal or external). @@ -306,7 +307,7 @@ module.exports = { }; ``` -### Navbar dropdown {#navbar-dropdown} +#### Navbar dropdown {#navbar-dropdown} Navbar items of the type `dropdown` has the additional `items` field, an inner array of navbar items. @@ -362,7 +363,7 @@ module.exports = { }; ``` -### Navbar doc link {#navbar-doc-link} +#### Navbar doc link {#navbar-doc-link} If you want to link to a specific doc, this special navbar item type will render the link to the doc of the provided `docId`. It will get the class `navbar__link--active` as long as you browse a doc of the same sidebar. @@ -400,7 +401,7 @@ module.exports = { }; ``` -### Navbar docs version dropdown {#navbar-docs-version-dropdown} +#### Navbar docs version dropdown {#navbar-docs-version-dropdown} If you use docs with versioning, this special navbar item type that will render a dropdown with all your site's available versions. @@ -441,7 +442,7 @@ module.exports = { }; ``` -### Navbar docs version {#navbar-docs-version} +#### Navbar docs version {#navbar-docs-version} If you use docs with versioning, this special navbar item type will link to the active/browsed version of your doc (depends on the current URL), and fallback to the latest version. @@ -479,7 +480,7 @@ module.exports = { }; ``` -### Navbar locale dropdown {#navbar-locale-dropdown} +#### Navbar locale dropdown {#navbar-locale-dropdown} If you use the [i18n feature](../../i18n/i18n-introduction.md), this special navbar item type will render a dropdown with all your site's available locales. @@ -522,7 +523,7 @@ module.exports = { }; ``` -### Navbar search {#navbar-search} +#### Navbar search {#navbar-search} If you use the [search](../../search.md), the search bar will be the rightmost element in the navbar. @@ -757,6 +758,34 @@ module.exports = { }; ``` +## Table of Contents {#table-of-contents} + +You can adjust the default table of contents via `themeConfig.tableOfContents`. + + + +| Name | Type | Default | Description | +| --- | --- | --- | --- | +| `minHeadingLevel` | `number` | `2` | The minimum heading level shown in the table of contents. Must be between 2 and 6 and lower or equal to the max value. | +| `maxHeadingLevel` | `number` | `3` | Max heading level displayed in the TOC. Should be an integer between 2 and 6. | + + + +Example configuration: + +```js title="docusaurus.config.js" +module.exports = { + themeConfig: { + // highlight-start + tableOfContents: { + minHeadingLevel: 2, + maxHeadingLevel: 5, + }, + // highlight-end + }, +}; +``` + ## Hooks {#hooks} ### `useThemeContext` {#usethemecontext} diff --git a/website/versioned_docs/version-2.0.0-beta.6/api/themes/theme-live-codeblock.md b/website/versioned_docs/version-2.0.0-beta.8/api/themes/theme-live-codeblock.md similarity index 100% rename from website/versioned_docs/version-2.0.0-beta.6/api/themes/theme-live-codeblock.md rename to website/versioned_docs/version-2.0.0-beta.8/api/themes/theme-live-codeblock.md diff --git a/website/versioned_docs/version-2.0.0-beta.6/api/themes/theme-search-algolia.md b/website/versioned_docs/version-2.0.0-beta.8/api/themes/theme-search-algolia.md similarity index 100% rename from website/versioned_docs/version-2.0.0-beta.6/api/themes/theme-search-algolia.md rename to website/versioned_docs/version-2.0.0-beta.8/api/themes/theme-search-algolia.md diff --git a/website/versioned_docs/version-2.0.0-beta.6/assets/docusaurus-asset-example-banner.png b/website/versioned_docs/version-2.0.0-beta.8/assets/docusaurus-asset-example-banner.png similarity index 100% rename from website/versioned_docs/version-2.0.0-beta.6/assets/docusaurus-asset-example-banner.png rename to website/versioned_docs/version-2.0.0-beta.8/assets/docusaurus-asset-example-banner.png diff --git a/website/versioned_docs/version-2.0.0-beta.6/assets/docusaurus-asset-example-pdf.pdf b/website/versioned_docs/version-2.0.0-beta.8/assets/docusaurus-asset-example-pdf.pdf similarity index 100% rename from website/versioned_docs/version-2.0.0-beta.6/assets/docusaurus-asset-example-pdf.pdf rename to website/versioned_docs/version-2.0.0-beta.8/assets/docusaurus-asset-example-pdf.pdf diff --git a/website/versioned_docs/version-2.0.0-beta.6/assets/docusaurus-asset-example.xyz b/website/versioned_docs/version-2.0.0-beta.8/assets/docusaurus-asset-example.xyz similarity index 100% rename from website/versioned_docs/version-2.0.0-beta.6/assets/docusaurus-asset-example.xyz rename to website/versioned_docs/version-2.0.0-beta.8/assets/docusaurus-asset-example.xyz diff --git a/website/versioned_docs/version-2.0.0-beta.6/blog.mdx b/website/versioned_docs/version-2.0.0-beta.8/blog.mdx similarity index 77% rename from website/versioned_docs/version-2.0.0-beta.6/blog.mdx rename to website/versioned_docs/version-2.0.0-beta.8/blog.mdx index a028526023be..171cc12c7607 100644 --- a/website/versioned_docs/version-2.0.0-beta.6/blog.mdx +++ b/website/versioned_docs/version-2.0.0-beta.8/blog.mdx @@ -176,14 +176,8 @@ Use the `authors` FrontMatter field to declare blog post authors. Blog post authors can be declared directly inside the FrontMatter: ````mdx-code-block - - + + ```yml title="my-blog-post.md" --- @@ -196,7 +190,7 @@ authors: ``` - + ```yml title="my-blog-post.md" --- @@ -226,7 +220,6 @@ This option works best to get started, or for casual, irregular authors. Prefer usage of the `authors` FrontMatter, but the legacy `author_*` FrontMatter remains supported: - ```yml title="my-blog-post.md" --- author: Joel Marcey @@ -235,7 +228,6 @@ author_url: https://github.com/JoelMarcey author_image_url: https://github.com/JoelMarcey.png --- ``` - ::: @@ -268,14 +260,8 @@ Use the `authorsMapPath` plugin option to configure the path. JSON is also suppo In blog posts FrontMatter, you can reference the authors declared in the global configuration file: ````mdx-code-block - - + + ```yml title="my-blog-post.md" --- @@ -284,7 +270,7 @@ authors: jmarcey ``` - + ```yml title="my-blog-post.md" --- @@ -305,7 +291,6 @@ The `authors` system is very flexible and can suit more advanced use-case: You can use global authors most of the time, and still use inline authors: - ```yml title="my-blog-post.md" --- authors: @@ -317,7 +302,6 @@ authors: image_url: https://github.com/inlineAuthor --- ``` - @@ -326,7 +310,6 @@ authors: You can customize the global author's data on per-blog-post basis: - ```yml title="my-blog-post.md" --- authors: @@ -336,7 +319,6 @@ authors: name: Sébastien Lorber's new name --- ``` - @@ -353,6 +335,124 @@ website/i18n//docusaurus-plugin-content-blog/authors.yml ::: +## Reading time {#reading-time} + +Docusaurus generates a reading time estimation for each blog post based on word count. We provide an option to customize this. + +```js title="docusaurus.config.js" +module.exports = { + presets: [ + [ + '@docusaurus/preset-classic', + { + blog: { + // highlight-start + showReadingTime: true, // When set to false, the "x min read" won't be shown + readingTime: ({content, frontMatter, defaultReadingTime}) => + defaultReadingTime({content, options: {wordsPerMinute: 300}}), + // highlight-end + }, + }, + ], + ], +}; +``` + +The `readingTime` callback receives three parameters: the blog content text as a string, front matter as a record of string keys and their values, and the default reading time function. It returns a number (reading time in minutes) or `undefined` (disable reading time for this page). + +The default reading time is able to accept additional options: `wordsPerMinute` as a number (default: 300), and `wordBound` as a function from string to boolean. If the string passed to `wordBound` should be a word bound (spaces, tabs, and line breaks by default), the function should return `true`. + +:::tip + +Use the callback for all your customization needs: + +````mdx-code-block + + + +**Disable reading time on one page:** + +```js title="docusaurus.config.js" +module.exports = { + presets: [ + [ + '@docusaurus/preset-classic', + { + blog: { + showReadingTime: true, + // highlight-start + readingTime: ({content, frontMatter, defaultReadingTime}) => + frontMatter.hide_reading_time ? undefined : defaultReadingTime({content}), + // highlight-end + }, + }, + ], + ], +}; +``` + +Usage: + +```yml "my-blog-post.md" +--- +hide_reading_time: true +--- + +This page will no longer display the reading time stats! +``` + + + + +**Pass options to the default reading time function:** + +```js title="docusaurus.config.js" +module.exports = { + presets: [ + [ + '@docusaurus/preset-classic', + { + blog: { + // highlight-start + readingTime: ({content, defaultReadingTime}) => + defaultReadingTime({content, options: {wordsPerMinute: 100}}), + // highlight-end + }, + }, + ], + ], +}; +``` + + + + +**Use a custom implementation of reading time:** + +```js title="docusaurus.config.js" +const myReadingTime = require('./myReadingTime'); + +module.exports = { + presets: [ + [ + '@docusaurus/preset-classic', + { + blog: { + // highlight-next-line + readingTime: ({content}) => myReadingTime(content), + }, + }, + ], + ], +}; +``` + + + +```` + +::: + ## Feed {#feed} You can generate RSS/Atom feed by passing feedOptions. By default, RSS and Atom feeds are generated. To disable feed generation, set `feedOptions.type` to `null`. diff --git a/website/versioned_docs/version-2.0.0-beta.6/browser-support.md b/website/versioned_docs/version-2.0.0-beta.8/browser-support.md similarity index 100% rename from website/versioned_docs/version-2.0.0-beta.6/browser-support.md rename to website/versioned_docs/version-2.0.0-beta.8/browser-support.md diff --git a/website/versioned_docs/version-2.0.0-beta.6/cli.md b/website/versioned_docs/version-2.0.0-beta.8/cli.md similarity index 95% rename from website/versioned_docs/version-2.0.0-beta.6/cli.md rename to website/versioned_docs/version-2.0.0-beta.8/cli.md index 026011d03af6..9ea0d48af1c6 100644 --- a/website/versioned_docs/version-2.0.0-beta.6/cli.md +++ b/website/versioned_docs/version-2.0.0-beta.8/cli.md @@ -183,6 +183,12 @@ By default, the files are written in `website/i18n//...`. | `--config` | `undefined` | Path to docusaurus config file, default to `[siteDir]/docusaurus.config.js` | | `--messagePrefix` | `''` | Allows to add a prefix to each translation message, to help you highlight untranslated strings | -### `docusaurus write-heading-ids [siteDir]` {#docusaurus-write-heading-ids-sitedir} +### `docusaurus write-heading-ids [siteDir] [files]` {#docusaurus-write-heading-ids-sitedir} Add [explicit heading ids](./guides/markdown-features/markdown-features-headings.mdx#explicit-ids) to the Markdown documents of your site. + +| Name | Default | Description | +| --- | --- | --- | +| `files` | All MD files used by plugins | The files that you want heading IDs to be written to. | +| `--maintain-case` | `false` | Keep the headings' casing, otherwise make all lowercase. | +| `--overwrite` | `false` | Overwrite existing heading IDs. | diff --git a/website/versioned_docs/version-2.0.0-beta.6/configuration.md b/website/versioned_docs/version-2.0.0-beta.8/configuration.md similarity index 100% rename from website/versioned_docs/version-2.0.0-beta.6/configuration.md rename to website/versioned_docs/version-2.0.0-beta.8/configuration.md diff --git a/website/versioned_docs/version-2.0.0-beta.6/deployment.mdx b/website/versioned_docs/version-2.0.0-beta.8/deployment.mdx similarity index 99% rename from website/versioned_docs/version-2.0.0-beta.6/deployment.mdx rename to website/versioned_docs/version-2.0.0-beta.8/deployment.mdx index 504d657ee5bb..d5624990918e 100644 --- a/website/versioned_docs/version-2.0.0-beta.6/deployment.mdx +++ b/website/versioned_docs/version-2.0.0-beta.8/deployment.mdx @@ -143,28 +143,22 @@ GitHub enterprise installations should work in the same manner as github.com; yo Finally, to deploy your site to GitHub Pages, run: ````mdx-code-block - - + + ```bash GIT_USER= yarn deploy ``` - + ```batch cmd /C "set "GIT_USER=" && yarn deploy" ``` - + ```powershell cmd /C 'set "GIT_USER=" && yarn deploy' diff --git a/website/versioned_docs/version-2.0.0-beta.6/docusaurus-core.md b/website/versioned_docs/version-2.0.0-beta.8/docusaurus-core.md similarity index 98% rename from website/versioned_docs/version-2.0.0-beta.6/docusaurus-core.md rename to website/versioned_docs/version-2.0.0-beta.8/docusaurus-core.md index d144820e93ec..eb456c6a07cf 100644 --- a/website/versioned_docs/version-2.0.0-beta.6/docusaurus-core.md +++ b/website/versioned_docs/version-2.0.0-beta.8/docusaurus-core.md @@ -253,6 +253,16 @@ export default function Home() { } ``` +:::note + +You can even omit a children prop and specify a translation string in your `code.json` file manually after running the `docusaurus write-translations` CLI command. + +```jsx + +``` + +::: + ## Hooks {#hooks} ### `useDocusaurusContext` {#usedocusauruscontext} diff --git a/website/versioned_docs/version-2.0.0-beta.6/guides/creating-pages.md b/website/versioned_docs/version-2.0.0-beta.8/guides/creating-pages.md similarity index 98% rename from website/versioned_docs/version-2.0.0-beta.6/guides/creating-pages.md rename to website/versioned_docs/version-2.0.0-beta.8/guides/creating-pages.md index c622ae5fcd4d..33306508478f 100644 --- a/website/versioned_docs/version-2.0.0-beta.6/guides/creating-pages.md +++ b/website/versioned_docs/version-2.0.0-beta.8/guides/creating-pages.md @@ -45,7 +45,7 @@ function Hello() { fontSize: '20px', }}>

    - Edit pages/hello.js and save to reload. + Edit pages/helloReact.js and save to reload.

    diff --git a/website/versioned_docs/version-2.0.0-beta.6/guides/docs/docs-create-doc.mdx b/website/versioned_docs/version-2.0.0-beta.8/guides/docs/docs-create-doc.mdx similarity index 75% rename from website/versioned_docs/version-2.0.0-beta.6/guides/docs/docs-create-doc.mdx rename to website/versioned_docs/version-2.0.0-beta.8/guides/docs/docs-create-doc.mdx index ab4d584d1555..f068973ff762 100644 --- a/website/versioned_docs/version-2.0.0-beta.6/guides/docs/docs-create-doc.mdx +++ b/website/versioned_docs/version-2.0.0-beta.8/guides/docs/docs-create-doc.mdx @@ -35,7 +35,9 @@ will show up on the table of contents on the upper right So that your users will know what this page is all about without scrolling down or even without reading too much. -### Only h2 and h3 will be in the toc +### Only h2 and h3 will be in the toc by default. + +You can configure the TOC heading levels either per-document or in the theme configuration. The headers are well-spaced so that the hierarchy is clear. @@ -67,7 +69,9 @@ will show up on the table of contents on the upper right So that your users will know what this page is all about without scrolling down or even without reading too much. -

    Only h2 and h3 will be in the toc

    +

    Only h2 and h3 will be in the toc by default.

    + +You can configure the TOC heading levels either per-document or in the theme configuration. The headers are well-spaced so that the hierarchy is clear. @@ -84,11 +88,18 @@ With {#custom-id} syntax you can set your own header id. ``` +:::note + +All files prefixed with an underscore (`_`) under the `docs` directory are treated as "partial" pages and will be ignored by default. + +Read more about [importing partial pages](../markdown-features/markdown-features-react.mdx#importing-markdown). + +::: + ## Doc tags {#doc-tags} Optionally, you can add tags to your doc pages, which introduces another dimension of categorization in addition to the [docs sidebar](./sidebar.md). Tags are passed in the front matter as a list of labels: - ```yml "your-doc-page.md" --- id: doc-with-tags @@ -98,4 +109,11 @@ tags: - Getting started --- ``` - + +:::tip + +Tags can also be declared with `tags [Demo, Getting started]` + +Read more about all the possible [Yaml array syntaxes](https://www.w3schools.io/file/yaml-arrays/). + +::: diff --git a/website/versioned_docs/version-2.0.0-beta.6/guides/docs/docs-introduction.md b/website/versioned_docs/version-2.0.0-beta.8/guides/docs/docs-introduction.md similarity index 100% rename from website/versioned_docs/version-2.0.0-beta.6/guides/docs/docs-introduction.md rename to website/versioned_docs/version-2.0.0-beta.8/guides/docs/docs-introduction.md diff --git a/website/versioned_docs/version-2.0.0-beta.6/guides/docs/docs-markdown-features.mdx b/website/versioned_docs/version-2.0.0-beta.8/guides/docs/docs-markdown-features.mdx similarity index 100% rename from website/versioned_docs/version-2.0.0-beta.6/guides/docs/docs-markdown-features.mdx rename to website/versioned_docs/version-2.0.0-beta.8/guides/docs/docs-markdown-features.mdx diff --git a/website/versioned_docs/version-2.0.0-beta.6/guides/docs/docs-multi-instance.mdx b/website/versioned_docs/version-2.0.0-beta.8/guides/docs/docs-multi-instance.mdx similarity index 100% rename from website/versioned_docs/version-2.0.0-beta.6/guides/docs/docs-multi-instance.mdx rename to website/versioned_docs/version-2.0.0-beta.8/guides/docs/docs-multi-instance.mdx diff --git a/website/versioned_docs/version-2.0.0-beta.6/guides/docs/sidebar.md b/website/versioned_docs/version-2.0.0-beta.8/guides/docs/sidebar.md similarity index 98% rename from website/versioned_docs/version-2.0.0-beta.6/guides/docs/sidebar.md rename to website/versioned_docs/version-2.0.0-beta.8/guides/docs/sidebar.md index 47aecb43f240..dfc8c4175bef 100644 --- a/website/versioned_docs/version-2.0.0-beta.6/guides/docs/sidebar.md +++ b/website/versioned_docs/version-2.0.0-beta.8/guides/docs/sidebar.md @@ -1,6 +1,7 @@ --- id: sidebar title: Sidebar +toc_max_heading_level: 4 slug: /sidebar --- @@ -173,6 +174,7 @@ type SidebarItemDoc = type: 'doc'; id: string; label: string; // Sidebar label text + className?: string; // Class name for sidebar label } // Shorthand syntax @@ -244,6 +246,7 @@ type SidebarItemLink = { type: 'link'; label: string; href: string; + className?: string; }; ``` @@ -282,6 +285,7 @@ type SidebarItemCategory = { type: 'category'; label: string; // Sidebar label text. items: SidebarItem[]; // Array of sidebar items. + className?: string; // Category options: collapsible: boolean; // Set the category to be collapsible @@ -519,7 +523,8 @@ This is the easy tutorial! ```json title="docs/tutorials/_category_.json" { "label": "Tutorial", - "position": 3 + "position": 3, + "className": "red" } ``` diff --git a/website/versioned_docs/version-2.0.0-beta.6/guides/docs/versioning.md b/website/versioned_docs/version-2.0.0-beta.8/guides/docs/versioning.md similarity index 100% rename from website/versioned_docs/version-2.0.0-beta.6/guides/docs/versioning.md rename to website/versioned_docs/version-2.0.0-beta.8/guides/docs/versioning.md diff --git a/website/versioned_docs/version-2.0.0-beta.6/guides/markdown-features/_markdown-partial-example.mdx b/website/versioned_docs/version-2.0.0-beta.8/guides/markdown-features/_markdown-partial-example.mdx similarity index 100% rename from website/versioned_docs/version-2.0.0-beta.6/guides/markdown-features/_markdown-partial-example.mdx rename to website/versioned_docs/version-2.0.0-beta.8/guides/markdown-features/_markdown-partial-example.mdx diff --git a/website/versioned_docs/version-2.0.0-beta.6/guides/markdown-features/markdown-features-admonitions.mdx b/website/versioned_docs/version-2.0.0-beta.8/guides/markdown-features/markdown-features-admonitions.mdx similarity index 72% rename from website/versioned_docs/version-2.0.0-beta.6/guides/markdown-features/markdown-features-admonitions.mdx rename to website/versioned_docs/version-2.0.0-beta.8/guides/markdown-features/markdown-features-admonitions.mdx index ccd7ae68ff56..69784e5dc131 100644 --- a/website/versioned_docs/version-2.0.0-beta.6/guides/markdown-features/markdown-features-admonitions.mdx +++ b/website/versioned_docs/version-2.0.0-beta.8/guides/markdown-features/markdown-features-admonitions.mdx @@ -89,23 +89,17 @@ Some **content** with _markdown_ `syntax`. You can use MDX inside admonitions too! -```mdx +```jsx import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; :::tip Use tabs in admonitions - - This is an apple 🍎 - This is an orange 🍊 - This is a banana 🍌 + + This is an apple 🍎 + This is an orange 🍊 + This is a banana 🍌 ::: @@ -119,16 +113,10 @@ import TabItem from '@theme/TabItem'; :::tip Use tabs in admonitions ```mdx-code-block - - This is an apple 🍎 - This is an orange 🍊 - This is a banana 🍌 + + This is an apple 🍎 + This is an orange 🍊 + This is a banana 🍌 ``` diff --git a/website/versioned_docs/version-2.0.0-beta.6/guides/markdown-features/markdown-features-assets.mdx b/website/versioned_docs/version-2.0.0-beta.8/guides/markdown-features/markdown-features-assets.mdx similarity index 97% rename from website/versioned_docs/version-2.0.0-beta.6/guides/markdown-features/markdown-features-assets.mdx rename to website/versioned_docs/version-2.0.0-beta.8/guides/markdown-features/markdown-features-assets.mdx index 8e0fa107f263..ae69e768ac90 100644 --- a/website/versioned_docs/version-2.0.0-beta.6/guides/markdown-features/markdown-features-assets.mdx +++ b/website/versioned_docs/version-2.0.0-beta.8/guides/markdown-features/markdown-features-assets.mdx @@ -119,7 +119,7 @@ html[data-theme='dark'] .themedDocusaurus [fill='#FFFF50'] { ## Themed Images {#themed-images} -Docusaurus supports themed images: the `ThemedImage` component (included in the classic/bootstrap themes) allows you to switch the image source based on the current theme. +Docusaurus supports themed images: the `ThemedImage` component (included in the themes) allows you to switch the image source based on the current theme. ```jsx {5-8} import ThemedImage from '@theme/ThemedImage'; diff --git a/website/versioned_docs/version-2.0.0-beta.6/guides/markdown-features/markdown-features-code-blocks.mdx b/website/versioned_docs/version-2.0.0-beta.8/guides/markdown-features/markdown-features-code-blocks.mdx similarity index 86% rename from website/versioned_docs/version-2.0.0-beta.6/guides/markdown-features/markdown-features-code-blocks.mdx rename to website/versioned_docs/version-2.0.0-beta.8/guides/markdown-features/markdown-features-code-blocks.mdx index 7fedb93feca3..5c355f1e4612 100644 --- a/website/versioned_docs/version-2.0.0-beta.6/guides/markdown-features/markdown-features-code-blocks.mdx +++ b/website/versioned_docs/version-2.0.0-beta.8/guides/markdown-features/markdown-features-code-blocks.mdx @@ -374,15 +374,8 @@ The following example is how you can have multi-language code tabs in your docs. import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; - - + + ```js function helloWorld() { @@ -391,7 +384,7 @@ function helloWorld() { ``` - + ```py def hello_world(): @@ -399,7 +392,7 @@ def hello_world(): ``` - + ```java class HelloWorld { @@ -416,15 +409,8 @@ class HelloWorld { And you will get the following: ````mdx-code-block - - + + ```js function helloWorld() { @@ -433,7 +419,7 @@ function helloWorld() { ``` - + ```py def hello_world(): @@ -441,7 +427,7 @@ def hello_world(): ``` - + ```java class HelloWorld { @@ -455,6 +441,51 @@ class HelloWorld { ```` -You may want to implement your own `` abstraction if you find the above approach too verbose. We might just implement one in future for convenience. - If you have multiple of these multi-language code tabs, and you want to sync the selection across the tab instances, refer to the [Syncing tab choices section](markdown-features-tabs.mdx#syncing-tab-choices). + +### Docusaurus npm2yarn remark plugin {#npm2yarn-remark-plugin} + +Displaying CLI commands in both NPM and Yarn is a very common need, for example: + +```bash npm2yarn +npm install @docusaurus/remark-plugin-npm2yarn +``` + +Docusaurus provides such a utility out of the box, freeing you from using the `Tabs` component every time. To enable this feature, first install the `@docusaurus/remark-plugin-npm2yarn` package as above, and then in `docusaurus.config.js`, for the plugins where you need this feature (doc, blog, pages, etc.), register it in the `remarkPlugins` option. (See [Docs configuration](../../api/plugins/plugin-content-docs.md#ex-config) for more details on configuration format) + +```js title="docusaurus.config.js" +module.exports = { + // ... + presets: [ + [ + '@docusaurus/preset-classic', + { + docs: { + // highlight-start + remarkPlugins: [ + [require('@docusaurus/remark-plugin-npm2yarn'), {sync: true}], + ], + // highlight-end + }, + pages: { + // highlight-next-line + remarkPlugins: [require('@docusaurus/remark-plugin-npm2yarn')], + }, + blog: { + // ... + }, + }, + ], + ], +}; +``` + +And then use it by adding the `npm2yarn` key to the code block: + +````md +```bash npm2yarn +npm install @docusaurus/remark-plugin-npm2yarn +``` +```` + +Using the `{sync: true}` option would make all tab choices synced. Because the choice is stored under the same namespace `npm2yarn`, different `npm2yarn` plugin instances would also sync their choices. diff --git a/website/versioned_docs/version-2.0.0-beta.6/guides/markdown-features/markdown-features-head-metadatas.mdx b/website/versioned_docs/version-2.0.0-beta.8/guides/markdown-features/markdown-features-head-metadatas.mdx similarity index 100% rename from website/versioned_docs/version-2.0.0-beta.6/guides/markdown-features/markdown-features-head-metadatas.mdx rename to website/versioned_docs/version-2.0.0-beta.8/guides/markdown-features/markdown-features-head-metadatas.mdx diff --git a/website/versioned_docs/version-2.0.0-beta.6/guides/markdown-features/markdown-features-headings.mdx b/website/versioned_docs/version-2.0.0-beta.8/guides/markdown-features/markdown-features-headings.mdx similarity index 100% rename from website/versioned_docs/version-2.0.0-beta.6/guides/markdown-features/markdown-features-headings.mdx rename to website/versioned_docs/version-2.0.0-beta.8/guides/markdown-features/markdown-features-headings.mdx diff --git a/website/versioned_docs/version-2.0.0-beta.6/guides/markdown-features/markdown-features-inline-toc.mdx b/website/versioned_docs/version-2.0.0-beta.8/guides/markdown-features/markdown-features-inline-toc.mdx similarity index 90% rename from website/versioned_docs/version-2.0.0-beta.6/guides/markdown-features/markdown-features-inline-toc.mdx rename to website/versioned_docs/version-2.0.0-beta.8/guides/markdown-features/markdown-features-inline-toc.mdx index 5f839da3b835..3726f048421f 100644 --- a/website/versioned_docs/version-2.0.0-beta.6/guides/markdown-features/markdown-features-inline-toc.mdx +++ b/website/versioned_docs/version-2.0.0-beta.8/guides/markdown-features/markdown-features-inline-toc.mdx @@ -13,7 +13,9 @@ But it is also possible to display an inline table of contents directly inside a ## Full table of contents {#full-table-of-contents} -The `toc` variable is available in any MDX document, and contain all the top level headings of a MDX document. +The `toc` variable is available in any MDX document, and contains all the headings of a MDX document. + +By default, only `h2` and `h3` headings are displayed in the TOC. You can change which heading levels are visible by setting `minHeadingLevel` or `maxHeadingLevel`. ```jsx import TOCInline from '@theme/TOCInline'; @@ -40,6 +42,7 @@ type TOCItem = { value: string; id: string; children: TOCItem[]; + level: number; }; ``` diff --git a/website/versioned_docs/version-2.0.0-beta.6/guides/markdown-features/markdown-features-intro.mdx b/website/versioned_docs/version-2.0.0-beta.8/guides/markdown-features/markdown-features-intro.mdx similarity index 100% rename from website/versioned_docs/version-2.0.0-beta.6/guides/markdown-features/markdown-features-intro.mdx rename to website/versioned_docs/version-2.0.0-beta.8/guides/markdown-features/markdown-features-intro.mdx diff --git a/website/versioned_docs/version-2.0.0-beta.6/guides/markdown-features/markdown-features-math-equations.mdx b/website/versioned_docs/version-2.0.0-beta.8/guides/markdown-features/markdown-features-math-equations.mdx similarity index 100% rename from website/versioned_docs/version-2.0.0-beta.6/guides/markdown-features/markdown-features-math-equations.mdx rename to website/versioned_docs/version-2.0.0-beta.8/guides/markdown-features/markdown-features-math-equations.mdx diff --git a/website/versioned_docs/version-2.0.0-beta.6/guides/markdown-features/markdown-features-plugins.mdx b/website/versioned_docs/version-2.0.0-beta.8/guides/markdown-features/markdown-features-plugins.mdx similarity index 100% rename from website/versioned_docs/version-2.0.0-beta.6/guides/markdown-features/markdown-features-plugins.mdx rename to website/versioned_docs/version-2.0.0-beta.8/guides/markdown-features/markdown-features-plugins.mdx diff --git a/website/versioned_docs/version-2.0.0-beta.6/guides/markdown-features/markdown-features-react.mdx b/website/versioned_docs/version-2.0.0-beta.8/guides/markdown-features/markdown-features-react.mdx similarity index 94% rename from website/versioned_docs/version-2.0.0-beta.6/guides/markdown-features/markdown-features-react.mdx rename to website/versioned_docs/version-2.0.0-beta.8/guides/markdown-features/markdown-features-react.mdx index 4f920c5d201a..08aed08e3a77 100644 --- a/website/versioned_docs/version-2.0.0-beta.6/guides/markdown-features/markdown-features-react.mdx +++ b/website/versioned_docs/version-2.0.0-beta.8/guides/markdown-features/markdown-features-react.mdx @@ -11,7 +11,7 @@ import BrowserWindow from '@site/src/components/BrowserWindow'; ## Using JSX in Markdown {#using-jsx-in-markdown} -Docusaurus has built-in support for [MDX](https://mdxjs.com/), which allows you to write JSX within your Markdown files and render them as React components. +Docusaurus has built-in support for [MDX v1](https://mdxjs.com/), which allows you to write JSX within your Markdown files and render them as React components. :::note @@ -23,7 +23,7 @@ While both `.md` and `.mdx` files are parsed using MDX, some of the syntax are t MDX is not [100% compatible with CommonMark](https://github.com/facebook/docusaurus/issues/3018). -Use the **[MDX playground](https://mdxjs.com/playground)** to ensure that your syntax is valid MDX. +Use the **[MDX playground](https://mdx-git-renovate-babel-monorepo-mdx.vercel.app/playground)** to ensure that your syntax is valid MDX. ::: diff --git a/website/versioned_docs/version-2.0.0-beta.6/guides/markdown-features/markdown-features-tabs.mdx b/website/versioned_docs/version-2.0.0-beta.8/guides/markdown-features/markdown-features-tabs.mdx similarity index 78% rename from website/versioned_docs/version-2.0.0-beta.6/guides/markdown-features/markdown-features-tabs.mdx rename to website/versioned_docs/version-2.0.0-beta.8/guides/markdown-features/markdown-features-tabs.mdx index 4e4e2da6827b..5fc9d5acd194 100644 --- a/website/versioned_docs/version-2.0.0-beta.6/guides/markdown-features/markdown-features-tabs.mdx +++ b/website/versioned_docs/version-2.0.0-beta.8/guides/markdown-features/markdown-features-tabs.mdx @@ -13,6 +13,7 @@ import TabItem from '@theme/TabItem'; Docusaurus provides `` components that you can use thanks to [MDX](./markdown-features-react.mdx): + ```jsx import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; @@ -27,13 +28,14 @@ import TabItem from '@theme/TabItem'; This is a banana 🍌 -; + ``` + ```mdx-code-block - This is an apple 🍎 + This is an apple 🍎 This is an orange 🍊 This is a banana 🍌 @@ -109,7 +111,7 @@ It is also possible to provide `values` and `defaultValue` props to `Tabs`: ]}> This is an apple 🍎 This is an orange 🍊 - This is a banana 🍌 + This is a banana 🍌
    @@ -121,17 +123,15 @@ It is also possible to provide `values` and `defaultValue` props to `Tabs`: By default, all tabs are rendered eagerly during the build process, and search engines can index hidden tabs. -It is possible to only render the default tab with ``. +It is possible to only render the default tab with ``. ::: ## Displaying a default tab -Add `default` to one of the tab items to make it displayed by default. You can also set the `defaultValue` prop in the `Tabs` component to the label value of your choice. - -For example, in the example above, setting `default` for the `value="apple"` tab forces it to be open by default. +The first tab is displayed by default, and to override this behavior, you can specify a default tab by adding `default` to one of the tab items. You can also set the `defaultValue` prop of the `Tabs` component to the label value of your choice. For example, in the example above, either setting `default` for the `value="apple"` tab or setting `defaultValue="apple"` for the tabs forces the "Apple" tab to be open by default. -If none of the children contains the `default` prop, neither is the `defaultValue` provided for the `Tabs`, or it refers to an non-existing value, only the tab headings appear until the user clicks on a tab. +Docusaurus will throw an error if a `defaultValue` is provided for the `Tabs` but it refers to an non-existing value. If you want none of the tabs to be shown by default, use `defaultValue={null}`. ## Syncing tab choices {#syncing-tab-choices} @@ -140,13 +140,13 @@ You may want choices of the same kind of tabs to sync with each other. For examp ```jsx // highlight-next-line - Use Ctrl + C to copy. + Use Ctrl + C to copy. Use Command + C to copy. // highlight-next-line - Use Ctrl + V to paste. + Use Ctrl + V to paste. Use Command + V to paste. ``` @@ -154,12 +154,12 @@ You may want choices of the same kind of tabs to sync with each other. For examp ```mdx-code-block - Use Ctrl + C to copy. + Use Ctrl + C to copy. Use Command + C to copy. - Use Ctrl + V to paste. + Use Ctrl + V to paste. Use Command + V to paste. @@ -170,7 +170,7 @@ For all tab groups that have the same `groupId`, the possible values do not need ```jsx - + I am Windows. @@ -185,7 +185,7 @@ For all tab groups that have the same `groupId`, the possible values do not need ```mdx-code-block - I am Windows. + I am Windows. I am macOS. I am Linux. @@ -199,13 +199,13 @@ Tab choices with different `groupId`s will not interfere with each other: ```jsx // highlight-next-line - Windows in windows. + Windows in windows. macOS is macOS. // highlight-next-line - Windows is windows. + Windows is windows. Unix is unix. ``` @@ -213,12 +213,12 @@ Tab choices with different `groupId`s will not interfere with each other: ```mdx-code-block - Windows in windows. + Windows in windows. macOS is macOS. - Windows is windows. + Windows is windows. Unix is unix. @@ -234,9 +234,7 @@ import TabItem from '@theme/TabItem'; // highlight-next-line - - This is an apple 🍎 - + This is an apple 🍎 This is an orange 🍊 This is a banana 🍌 ; @@ -245,7 +243,7 @@ import TabItem from '@theme/TabItem'; ```mdx-code-block - This is an apple 🍎 + This is an apple 🍎 This is an orange 🍊 This is a banana 🍌 diff --git a/website/versioned_docs/version-2.0.0-beta.6/i18n/i18n-crowdin.mdx b/website/versioned_docs/version-2.0.0-beta.8/i18n/i18n-crowdin.mdx similarity index 98% rename from website/versioned_docs/version-2.0.0-beta.6/i18n/i18n-crowdin.mdx rename to website/versioned_docs/version-2.0.0-beta.8/i18n/i18n-crowdin.mdx index ef038d068cf3..953372107da5 100644 --- a/website/versioned_docs/version-2.0.0-beta.6/i18n/i18n-crowdin.mdx +++ b/website/versioned_docs/version-2.0.0-beta.8/i18n/i18n-crowdin.mdx @@ -2,6 +2,7 @@ id: crowdin title: i18n - Using Crowdin slug: /i18n/crowdin +toc_max_heading_level: 4 --- The i18n system of Docusaurus is **decoupled from any translation software**. @@ -363,20 +364,15 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; - - + + ```bash GIT_USER= yarn deploy ``` - + ```batch cmd /C "set "GIT_USER=" && yarn deploy" diff --git a/website/versioned_docs/version-2.0.0-beta.6/i18n/i18n-git.md b/website/versioned_docs/version-2.0.0-beta.8/i18n/i18n-git.md similarity index 100% rename from website/versioned_docs/version-2.0.0-beta.6/i18n/i18n-git.md rename to website/versioned_docs/version-2.0.0-beta.8/i18n/i18n-git.md diff --git a/website/versioned_docs/version-2.0.0-beta.6/i18n/i18n-introduction.md b/website/versioned_docs/version-2.0.0-beta.8/i18n/i18n-introduction.md similarity index 100% rename from website/versioned_docs/version-2.0.0-beta.6/i18n/i18n-introduction.md rename to website/versioned_docs/version-2.0.0-beta.8/i18n/i18n-introduction.md diff --git a/website/versioned_docs/version-2.0.0-beta.6/i18n/i18n-tutorial.md b/website/versioned_docs/version-2.0.0-beta.8/i18n/i18n-tutorial.md similarity index 100% rename from website/versioned_docs/version-2.0.0-beta.6/i18n/i18n-tutorial.md rename to website/versioned_docs/version-2.0.0-beta.8/i18n/i18n-tutorial.md diff --git a/website/versioned_docs/version-2.0.0-beta.6/installation.md b/website/versioned_docs/version-2.0.0-beta.8/installation.md similarity index 89% rename from website/versioned_docs/version-2.0.0-beta.6/installation.md rename to website/versioned_docs/version-2.0.0-beta.8/installation.md index 9deaa6dabbfd..92e6368bb28d 100644 --- a/website/versioned_docs/version-2.0.0-beta.6/installation.md +++ b/website/versioned_docs/version-2.0.0-beta.8/installation.md @@ -29,10 +29,10 @@ npm init docusaurus@latest [name] [template] Example: ```bash -npm init docusaurus@latest my-website classic +npm init docusaurus@latest website classic ``` -If you do not specify `name` or `template`, it will prompt you for them. We recommend the `classic` template so that you can get started quickly and it contains features found in Docusaurus 1. The `classic` template contains `@docusaurus/preset-classic` which includes standard documentation, a blog, custom pages, and a CSS framework (with dark mode support). You can get up and running extremely quickly with the classic template and customize things later on when you have gained more familiarity with Docusaurus. +If you do not specify `name` or `template`, it will prompt you for them. We recommend the `classic` template so that you can get started quickly, and it contains features found in Docusaurus 1. The `classic` template contains `@docusaurus/preset-classic` which includes standard documentation, a blog, custom pages, and a CSS framework (with dark mode support). You can get up and running extremely quickly with the classic template and customize things later on when you have gained more familiarity with Docusaurus. **[FB-Only]:** If you are setting up a new Docusaurus website for a Facebook open source project, use the `facebook` template instead, which comes with some useful Facebook-specific defaults: @@ -40,22 +40,16 @@ If you do not specify `name` or `template`, it will prompt you for them. We reco npm init docusaurus@latest my-website facebook ``` -**[Experimental]:** If you want setting up a new website using [bootstrap](https://getbootstrap.com/), use the `bootstrap` template, like the following: - -```bash -npm init docusaurus@latest my-website bootstrap -``` - If you want to skip installing dependencies, use the `--skip-install` option, like the following: ```bash -npm init docusaurus@latest my-website classic --skip-install +npm init docusaurus@latest my-website classic -- --skip-install ``` You can also use the template's TypeScript variant by passing the `--typescript` flag. ```bash -npm init docusaurus@latest my-website classic --typescript +npm init docusaurus@latest my-website classic -- --typescript ``` ## Project structure {#project-structure} diff --git a/website/versioned_docs/version-2.0.0-beta.6/introduction.md b/website/versioned_docs/version-2.0.0-beta.8/introduction.md similarity index 99% rename from website/versioned_docs/version-2.0.0-beta.6/introduction.md rename to website/versioned_docs/version-2.0.0-beta.8/introduction.md index 97601dff31be..cf2783fee44a 100644 --- a/website/versioned_docs/version-2.0.0-beta.6/introduction.md +++ b/website/versioned_docs/version-2.0.0-beta.8/introduction.md @@ -177,7 +177,7 @@ In comparison with statically generated HTML and interactivity added using `` +#### `createData(name: string, data: any): Promise` A function to help you create static data (generally json or string), that you can provide to your routes as props. @@ -231,7 +232,7 @@ export default function friendsPlugin(context, options) { } ``` -- `setGlobalData(data: any): void` +#### `setGlobalData(data: any): void` This function permits to create some global plugin data, that can be read from any page, including the pages created by other plugins, and your theme layout. @@ -396,7 +397,7 @@ module.exports = function (context, options) { Called when a (production) build finishes. ```ts -type Props = { +interface Props { siteDir: string; generatedFilesDir: string; siteConfig: DocusaurusConfig; @@ -407,7 +408,7 @@ type Props = { postBodyTags: string; routesPaths: string[]; plugins: Plugin[]; -}; +} ``` Example: diff --git a/website/versioned_docs/version-2.0.0-beta.6/migration/migration-automated.md b/website/versioned_docs/version-2.0.0-beta.8/migration/migration-automated.md similarity index 100% rename from website/versioned_docs/version-2.0.0-beta.6/migration/migration-automated.md rename to website/versioned_docs/version-2.0.0-beta.8/migration/migration-automated.md diff --git a/website/versioned_docs/version-2.0.0-beta.6/migration/migration-manual.md b/website/versioned_docs/version-2.0.0-beta.8/migration/migration-manual.md similarity index 99% rename from website/versioned_docs/version-2.0.0-beta.6/migration/migration-manual.md rename to website/versioned_docs/version-2.0.0-beta.8/migration/migration-manual.md index a20d3622fbb3..460e07d5a708 100644 --- a/website/versioned_docs/version-2.0.0-beta.6/migration/migration-manual.md +++ b/website/versioned_docs/version-2.0.0-beta.8/migration/migration-manual.md @@ -2,6 +2,7 @@ id: migration-manual title: Manual migration slug: /migration/manual +toc_max_heading_level: 4 --- This manual migration process should be run after the [automated migration process](./migration-automated.md), to complete the missing parts, or debug issues in the migration CLI output. diff --git a/website/versioned_docs/version-2.0.0-beta.6/migration/migration-overview.md b/website/versioned_docs/version-2.0.0-beta.8/migration/migration-overview.md similarity index 96% rename from website/versioned_docs/version-2.0.0-beta.6/migration/migration-overview.md rename to website/versioned_docs/version-2.0.0-beta.8/migration/migration-overview.md index 9b2310e41a6a..8ddda200b03c 100644 --- a/website/versioned_docs/version-2.0.0-beta.6/migration/migration-overview.md +++ b/website/versioned_docs/version-2.0.0-beta.8/migration/migration-overview.md @@ -94,7 +94,7 @@ The [manual migration guide](./migration-manual.md) will give you all the manual ## Support {#support} -For any questions, you can ask in the [`#docusaurus-1-to-2-migration` Discord channel](https://discordapp.com/invite/kYaNd6V). +For any questions, you can ask in the [`#migration-v1-to-v2` Discord channel](https://discord.gg/C3P6CxMMxY). Feel free to tag [@slorber](https://github.com/slorber) in any migration PRs if you would like us to have a look. diff --git a/website/versioned_docs/version-2.0.0-beta.6/migration/migration-translated-sites.md b/website/versioned_docs/version-2.0.0-beta.8/migration/migration-translated-sites.md similarity index 100% rename from website/versioned_docs/version-2.0.0-beta.6/migration/migration-translated-sites.md rename to website/versioned_docs/version-2.0.0-beta.8/migration/migration-translated-sites.md diff --git a/website/versioned_docs/version-2.0.0-beta.6/migration/migration-versioned-sites.md b/website/versioned_docs/version-2.0.0-beta.8/migration/migration-versioned-sites.md similarity index 100% rename from website/versioned_docs/version-2.0.0-beta.6/migration/migration-versioned-sites.md rename to website/versioned_docs/version-2.0.0-beta.8/migration/migration-versioned-sites.md diff --git a/website/versioned_docs/version-2.0.0-beta.6/playground.mdx b/website/versioned_docs/version-2.0.0-beta.8/playground.mdx similarity index 100% rename from website/versioned_docs/version-2.0.0-beta.6/playground.mdx rename to website/versioned_docs/version-2.0.0-beta.8/playground.mdx diff --git a/website/versioned_docs/version-2.0.0-beta.6/presets.md b/website/versioned_docs/version-2.0.0-beta.8/presets.md similarity index 66% rename from website/versioned_docs/version-2.0.0-beta.6/presets.md rename to website/versioned_docs/version-2.0.0-beta.8/presets.md index b24a6e938094..7d3eddb070e0 100644 --- a/website/versioned_docs/version-2.0.0-beta.6/presets.md +++ b/website/versioned_docs/version-2.0.0-beta.8/presets.md @@ -35,16 +35,13 @@ module.exports = { ## Presets -> themes and plugins {#presets---themes-and-plugins} -Presets in some way are a shorthand function to add plugins and themes to your Docusaurus config. For example, you can specify a preset that includes the following themes and plugins, +Presets are a shorthand function to add plugins and themes to your Docusaurus config. For example, you can specify a preset that includes the following themes and plugins, ```js module.exports = function preset(context, opts = {}) { return { - themes: [ - require.resolve('@docusaurus/themes-cool'), - require.resolve('@docusaurus/themes-bootstrap'), - ], - plugins: [require.resolve('@docusaurus/plugin-blog')], + themes: ['@docusaurus/theme-cool', opts.cool], + plugins: ['@docusaurus/plugin-blog', opts.blog], }; }; ``` @@ -53,8 +50,10 @@ then in your Docusaurus config, you may configure the preset instead: ```jsx {3} title="docusaurus.config.js" module.exports = { - // ... - presets: ['@docusaurus/preset-my-own'], + presets: [ + '@docusaurus/preset-my-own', + {cool: {hello: 'world'}, blog: {path: '/blog'}}, + ], }; ``` @@ -62,8 +61,8 @@ This is equivalent of doing: ```jsx title="docusaurus.config.js" module.exports = { - themes: ['@docusaurus/themes-cool', '@docusaurus/themes-bootstrap'], - plugins: ['@docusaurus/plugin-blog'], + themes: ['@docusaurus/themes-cool', {hello: 'world'}], + plugins: ['@docusaurus/plugin-blog', {path: '/blog'}], }; ``` @@ -132,51 +131,3 @@ module.exports = { ], }; ``` - -### `@docusaurus/preset-bootstrap` {#docusauruspreset-bootstrap} - -An alternative preset that uses Bootstrap styling. - -| Themes | Plugins | -| ----------------------------- | ---------------------------------- | -| `@docusaurus/theme-bootstrap` | `@docusaurus/plugin-content-docs` | -| | `@docusaurus/plugin-content-blog` | -| | `@docusaurus/plugin-content-pages` | -| | `@docusaurus/plugin-debug` | - -To specify plugin options individually, you can provide the necessary fields to certain plugins, i.e. `docs` for `@docusaurus/theme-bootstrap`, pass them in the preset field, like this: - -```js title="docusaurus.config.js" -module.exports = { - presets: [ - [ - '@docusaurus/preset-bootstrap', - { - // Debug defaults to true in dev, false in prod - debug: undefined, - // Will be passed to @docusaurus/plugin-content-docs (false to disable) - docs: {}, - // Will be passed to @docusaurus/plugin-content-blog (false to disable) - blog: {}, - }, - ], - ], -}; -``` - -:::caution - -This preset is work in progress - -::: - - diff --git a/website/versioned_docs/version-2.0.0-beta.6/search.md b/website/versioned_docs/version-2.0.0-beta.8/search.md similarity index 55% rename from website/versioned_docs/version-2.0.0-beta.6/search.md rename to website/versioned_docs/version-2.0.0-beta.8/search.md index b22ef0ed470d..ceb6541a5982 100644 --- a/website/versioned_docs/version-2.0.0-beta.6/search.md +++ b/website/versioned_docs/version-2.0.0-beta.8/search.md @@ -6,18 +6,60 @@ keywords: - search --- -Docusaurus' own `@docusaurus/preset-classic` supports a search integration. +There are a few options you can use to add search to your website: -There are two main options, you can use [Algolia DocSearch](https://docsearch.algolia.com) or bring in your own `SearchBar` component. +- 🥇 [Algolia DocSearch](#using-algolia-docsearch) (**official**) +- 👥 [Typesense DocSearch](#using-typesense-docsearch) +- 👥 [Local Search](#using-local-search) +- 👥 [Your own `SearchBar` component](#using-your-own-search) -## Using Algolia DocSearch {#using-algolia-docsearch} +:::info + +🥇 Docusaurus provides **first-class support** for [Algolia DocSearch](#using-algolia-docsearch). + +👥 Other options are **maintained by the community**: please report bugs to their respective repositories. + +::: + +## 🥇 Using Algolia DocSearch {#using-algolia-docsearch} + +Docusaurus has **official support** for [Algolia DocSearch](https://docsearch.algolia.com). + +The service is **free** in most cases: just [apply to the DocSearch program](https://docsearch.algolia.com/docs/apply). + +It works by crawling the content of your website every 24 hours and putting all the content in an Algolia index. This content is then queried directly from your front-end using the Algolia API. -Algolia DocSearch works by crawling the content of your website every 24 hours and putting all the content in an Algolia index. This content is then queried directly from your front-end using the Algolia API. Note that your website needs to be publicly available for this to work (i.e., not behind a firewall). The service is free. +If your website is [not eligible](https://docsearch.algolia.com/docs/who-can-apply) for the free, hosted version of DocSearch, or if your website sits behind a firewall and is not public, then you can [run your own](https://docsearch.algolia.com/docs/run-your-own/) DocSearch crawler. -If your website is [not eligible](https://docsearch.algolia.com/docs/who-can-apply) for the free, hosted version of DocSearch, or if your website sits behind a firewall, then you can [run your own](https://docsearch.algolia.com/docs/run-your-own/) DocSearch crawler. For best results, you may want to use a config file based on the [Docusaurus 2 config](https://github.com/algolia/docsearch-configs/blob/master/configs/docusaurus-2.json). +:::note + +By default, the Docusaurus preset generates a [sitemap.xml](https://docusaurus.io/sitemap.xml) that the Algolia crawler can use. + +::: + +### Index Configuration {#algolia-index-configuration} + +After applying, your site's DocSearch config should be created at: + +``` +https://github.com/algolia/docsearch-configs/blob/master/configs/.json +``` + +This configuration file can be updated by: + +- [**asking for help**](#algolia-support): the DocSearch team can help you maintain it +- opening a pull-requests in [algolia/docsearch-configs](https://github.com/algolia/docsearch-configs) + +:::caution + +It is highly recommended using a config similar to the [**Docusaurus 2 website config**](https://github.com/algolia/docsearch-configs/blob/master/configs/docusaurus-2.json). + +::: ### Connecting Algolia {#connecting-algolia} +Docusaurus' own `@docusaurus/preset-classic` supports an Algolia DocSearch integration. + To connect your docs with Algolia, first add the package to your website: ```bash npm2yarn @@ -33,7 +75,12 @@ module.exports = { // ... // highlight-start algolia: { - apiKey: 'YOUR_API_KEY', + // If Algolia did not provide you any appId, use 'BH4D9OD16A' + appId: 'YOUR_APP_ID', + + // Public API key: it is safe to commit it + apiKey: 'YOUR_SEARCH_API_KEY', + indexName: 'YOUR_INDEX_NAME', // Optional: see doc section below @@ -58,6 +105,14 @@ The `searchParameters` option used to be named `algoliaOptions` in Docusaurus v1 ::: +:::caution + +The search feature will not work reliably until Algolia crawls your site with the **search plugin enabled**. + +If you are installing the Algolia plugin for the first time and want to ensure the search feature works before deploying it to production, you can ask the DocSearch team to trigger a crawl on a staging environment url or deploy preview. + +::: + ### Contextual search {#contextual-search} Contextual search is mostly useful for versioned Docusaurus sites. @@ -89,24 +144,6 @@ When using `contextualSearch: true`, the contextual facet filters will be merged ::: -### Custom Application ID {#custom-application-id} - -When [running your own](https://docsearch.algolia.com/docs/run-your-own/) DocSearch crawler, it is [required to set the `appId` configuration key](https://docsearch.algolia.com/docs/behavior/#appid) to your own Application ID. If left unset, the `appId` will fallback to the one used with the free, hosted version of Algolia DocSearch. - -```jsx title="docusaurus.config.js" -module.exports = { - // ... - themeConfig: { - // ... - // highlight-start - algolia: { - appId: 'YOUR_APP_ID', - }, - // highlight-end - }, -}; -``` - ### Styling your Algolia search {#styling-your-algolia-search} By default, DocSearch comes with a fine-tuned theme that was designed for accessibility, making sure that colors and contrasts respect standards. @@ -182,7 +219,37 @@ If you prefer to edit the Algolia search React component, swizzle the `SearchBar npm run swizzle @docusaurus/theme-search-algolia SearchBar ``` -## Using your own search {#using-your-own-search} +### Support {#algolia-support} + +The Algolia DocSearch team can help you figure out search problems on your site. + +You can contact them by [email](mailto:documentationsearch@algolia.com) or on [Discord](https://discord.gg/tXdr5mP). + +Docusaurus also has an `#algolia` channel on [Discord](https://discordapp.com/invite/docusaurus). + +## 👥 Using Typesense DocSearch {#using-typesense-docsearch} + +[Typesense](https://typesense.org) DocSearch works similar to Algolia DocSearch, except that your website is indexed into a Typesense search cluster. + +Typesense is an [open source](https://github.com/typesense/typesense) instant-search engine that you can either: + +- [Self-Host](https://typesense.org/docs/latest/guide/install-typesense.html#option-2-local-machine-self-hosting) on your own servers or +- Use the Managed [Typesense Cloud](https://cloud.typesense.org) service. + +Similar to Algolia DocSearch, there are two components: + +- [typesense-docsearch-scraper](https://github.com/typesense/typesense-docsearch-scraper) - which scrapes your website and indexes the data in your Typesense cluster. +- [docusaurus-theme-search-typesense](https://github.com/typesense/docusaurus-theme-search-typesense) - a search bar UI component to add to your website. + +Read a step-by-step walk-through of how to [run typesense-docsearch-scraper here](https://typesense.org/docs/latest/guide/docsearch.html#step-1-set-up-docsearch-scraper) and how to [install the Search Bar in your Docusaurus Site here](https://typesense.org/docs/latest/guide/docsearch.html#option-a-docusaurus-powered-sites). + +## 👥 Using Local Search {#using-local-search} + +You can use a local search plugin for websites where the search index is small and can be downloaded to your users' browsers when they visit your website. + +You'll find a list of community-supported [local search plugins listed here](https://docusaurus.io/community/resources#search). + +## 👥 Using your own search {#using-your-own-search} To use your own search, swizzle the `SearchBar` component in `@docusaurus/theme-classic` diff --git a/website/versioned_docs/version-2.0.0-beta.6/static-assets.md b/website/versioned_docs/version-2.0.0-beta.8/static-assets.md similarity index 100% rename from website/versioned_docs/version-2.0.0-beta.6/static-assets.md rename to website/versioned_docs/version-2.0.0-beta.8/static-assets.md diff --git a/website/versioned_docs/version-2.0.0-beta.6/styling-layout.md b/website/versioned_docs/version-2.0.0-beta.8/styling-layout.md similarity index 100% rename from website/versioned_docs/version-2.0.0-beta.6/styling-layout.md rename to website/versioned_docs/version-2.0.0-beta.8/styling-layout.md diff --git a/website/versioned_docs/version-2.0.0-beta.6/typescript-support.md b/website/versioned_docs/version-2.0.0-beta.8/typescript-support.md similarity index 85% rename from website/versioned_docs/version-2.0.0-beta.6/typescript-support.md rename to website/versioned_docs/version-2.0.0-beta.8/typescript-support.md index 8b1cff8fefcc..dd235ddd5beb 100644 --- a/website/versioned_docs/version-2.0.0-beta.6/typescript-support.md +++ b/website/versioned_docs/version-2.0.0-beta.8/typescript-support.md @@ -3,24 +3,24 @@ id: typescript-support title: TypeScript Support --- -Docusaurus is written in TypeScript, and provide first-class TypeScript support. +Docusaurus is written in TypeScript, and provides first-class TypeScript support. ## Initialization {#initialization} Docusaurus supports writing and using TypeScript theme components. If the init template provides a Typescript variant, you can directly initialize a site with full TypeScript support by using the `--typescript` flag. ```bash -npm init docusaurus@latest my-website classic --typescript +npm init docusaurus@latest my-website classic -- --typescript ``` Below are some guides on how to migrate an existing project to TypeScript. ## Setup {#setup} -To start using TypeScript, add `@docusaurus/module-type-aliases` and some `@types` dependencies to your project: +To start using TypeScript, add `@docusaurus/module-type-aliases` and the base TS config to your project: ```bash npm2yarn -npm install --save-dev typescript @docusaurus/module-type-aliases @types/react @types/react-router-dom @types/react-helmet @tsconfig/docusaurus +npm install --save-dev typescript @docusaurus/module-type-aliases @tsconfig/docusaurus ``` Then add `tsconfig.json` to your project root with the following content: @@ -42,8 +42,11 @@ It is **not possible** to use a TypeScript config file in Docusaurus, unless you We recommend using [JSDoc type annotations](https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html): - ```js title="docusaurus.config.js" +// highlight-start +// @ts-check +// highlight-end + // highlight-start /** @type {import('@docusaurus/types').Plugin} */ // highlight-end @@ -54,9 +57,9 @@ function MyPlugin(context, options) { } // highlight-start -/** @type {import('@docusaurus/types').DocusaurusConfig} */ +/** @type {import('@docusaurus/types').Config} */ // highlight-end -(module.exports = { +const config = { title: 'Docusaurus', tagline: 'Build optimized websites quickly, focus on your content', organizationName: 'facebook', @@ -98,9 +101,10 @@ function MyPlugin(context, options) { }, }, }), -}); +}; + +module.exports = config; ``` - :::tip @@ -110,6 +114,18 @@ The best IDEs (VSCode, WebStorm, Intellij...) will provide a nice auto-completio ::: +:::info + +By default, the Docusaurus TypeScript config does not type-check JavaScript files. + +The `// @ts-check` comment ensures the config file is properly type-checked when running: + +```bash npm2yarn +npm run tsc +``` + +::: + ## Swizzling TypeScript theme components {#swizzling-typescript-theme-components} For themes that supports TypeScript theme components, you can add the `--typescript` flag to the end of swizzling command to get TypeScript source code. For example, the following command will generate `index.tsx` and `styles.module.css` into `src/theme/Footer`. diff --git a/website/versioned_docs/version-2.0.0-beta.6/using-plugins.md b/website/versioned_docs/version-2.0.0-beta.8/using-plugins.md similarity index 99% rename from website/versioned_docs/version-2.0.0-beta.6/using-plugins.md rename to website/versioned_docs/version-2.0.0-beta.8/using-plugins.md index 2ebef9f49099..308a8c826654 100644 --- a/website/versioned_docs/version-2.0.0-beta.6/using-plugins.md +++ b/website/versioned_docs/version-2.0.0-beta.8/using-plugins.md @@ -133,7 +133,7 @@ You can use a plugin as a function, directly in the Docusaurus config file: module.exports = { // ... plugins: [ - // highligh-start + // highlight-start function myPlugin(context, options) { // ... return { diff --git a/website/versioned_docs/version-2.0.0-beta.6/using-themes.md b/website/versioned_docs/version-2.0.0-beta.8/using-themes.md similarity index 99% rename from website/versioned_docs/version-2.0.0-beta.6/using-themes.md rename to website/versioned_docs/version-2.0.0-beta.8/using-themes.md index f0f94a959f8d..2ff65c35ee30 100644 --- a/website/versioned_docs/version-2.0.0-beta.6/using-themes.md +++ b/website/versioned_docs/version-2.0.0-beta.8/using-themes.md @@ -51,7 +51,7 @@ website `website/src/theme/Navbar.js` takes precedence whenever `@theme/Navbar` is imported. This behavior is called component swizzling. In iOS, method swizzling is the process of changing the implementation of an existing selector (method). In the context of a website, component swizzling means providing an alternative component that takes precedence over the component provided by the theme. -**Themes are for providing UI components to present the content.** Most content plugins need to be paired with a theme in order to be actually useful. The UI is a separate layer from the data schema, so it makes it easy to swap out the themes for other designs (i.e., Bootstrap). +**Themes are for providing UI components to present the content.** Most content plugins need to be paired with a theme in order to be actually useful. The UI is a separate layer from the data schema, so it makes it easy to swap out the themes for other designs. For example, a Docusaurus blog consists of a blog plugin and a blog theme. diff --git a/website/versioned_sidebars/version-2.0.0-beta.6-sidebars.json b/website/versioned_sidebars/version-2.0.0-beta.8-sidebars.json similarity index 55% rename from website/versioned_sidebars/version-2.0.0-beta.6-sidebars.json rename to website/versioned_sidebars/version-2.0.0-beta.8-sidebars.json index edb9fee7eae7..da77d4031b41 100644 --- a/website/versioned_sidebars/version-2.0.0-beta.6-sidebars.json +++ b/website/versioned_sidebars/version-2.0.0-beta.8-sidebars.json @@ -1,8 +1,8 @@ { - "version-2.0.0-beta.6/docs": [ + "version-2.0.0-beta.8/docs": [ { "type": "doc", - "id": "version-2.0.0-beta.6/introduction" + "id": "version-2.0.0-beta.8/introduction" }, { "type": "category", @@ -11,19 +11,19 @@ "items": [ { "type": "doc", - "id": "version-2.0.0-beta.6/installation" + "id": "version-2.0.0-beta.8/installation" }, { "type": "doc", - "id": "version-2.0.0-beta.6/configuration" + "id": "version-2.0.0-beta.8/configuration" }, { "type": "doc", - "id": "version-2.0.0-beta.6/playground" + "id": "version-2.0.0-beta.8/playground" }, { "type": "doc", - "id": "version-2.0.0-beta.6/typescript-support" + "id": "version-2.0.0-beta.8/typescript-support" } ], "collapsible": true @@ -34,7 +34,7 @@ "items": [ { "type": "doc", - "id": "version-2.0.0-beta.6/guides/creating-pages" + "id": "version-2.0.0-beta.8/guides/creating-pages" }, { "type": "category", @@ -44,33 +44,33 @@ "items": [ { "type": "doc", - "id": "version-2.0.0-beta.6/guides/docs/introduction" + "id": "version-2.0.0-beta.8/guides/docs/introduction" }, { "type": "doc", - "id": "version-2.0.0-beta.6/guides/docs/create-doc" + "id": "version-2.0.0-beta.8/guides/docs/create-doc" }, { "type": "doc", - "id": "version-2.0.0-beta.6/guides/docs/sidebar" + "id": "version-2.0.0-beta.8/guides/docs/sidebar" }, { "type": "doc", - "id": "version-2.0.0-beta.6/guides/docs/versioning" + "id": "version-2.0.0-beta.8/guides/docs/versioning" }, { "type": "doc", - "id": "version-2.0.0-beta.6/guides/docs/markdown-features" + "id": "version-2.0.0-beta.8/guides/docs/markdown-features" }, { "type": "doc", - "id": "version-2.0.0-beta.6/guides/docs/multi-instance" + "id": "version-2.0.0-beta.8/guides/docs/multi-instance" } ] }, { "type": "doc", - "id": "version-2.0.0-beta.6/blog" + "id": "version-2.0.0-beta.8/blog" }, { "type": "category", @@ -78,47 +78,47 @@ "items": [ { "type": "doc", - "id": "version-2.0.0-beta.6/guides/markdown-features/introduction" + "id": "version-2.0.0-beta.8/guides/markdown-features/introduction" }, { "type": "doc", - "id": "version-2.0.0-beta.6/guides/markdown-features/react" + "id": "version-2.0.0-beta.8/guides/markdown-features/react" }, { "type": "doc", - "id": "version-2.0.0-beta.6/guides/markdown-features/tabs" + "id": "version-2.0.0-beta.8/guides/markdown-features/tabs" }, { "type": "doc", - "id": "version-2.0.0-beta.6/guides/markdown-features/code-blocks" + "id": "version-2.0.0-beta.8/guides/markdown-features/code-blocks" }, { "type": "doc", - "id": "version-2.0.0-beta.6/guides/markdown-features/admonitions" + "id": "version-2.0.0-beta.8/guides/markdown-features/admonitions" }, { "type": "doc", - "id": "version-2.0.0-beta.6/guides/markdown-features/headings" + "id": "version-2.0.0-beta.8/guides/markdown-features/headings" }, { "type": "doc", - "id": "version-2.0.0-beta.6/guides/markdown-features/inline-toc" + "id": "version-2.0.0-beta.8/guides/markdown-features/inline-toc" }, { "type": "doc", - "id": "version-2.0.0-beta.6/guides/markdown-features/assets" + "id": "version-2.0.0-beta.8/guides/markdown-features/assets" }, { "type": "doc", - "id": "version-2.0.0-beta.6/guides/markdown-features/plugins" + "id": "version-2.0.0-beta.8/guides/markdown-features/plugins" }, { "type": "doc", - "id": "version-2.0.0-beta.6/guides/markdown-features/math-equations" + "id": "version-2.0.0-beta.8/guides/markdown-features/math-equations" }, { "type": "doc", - "id": "version-2.0.0-beta.6/guides/markdown-features/head-metadatas" + "id": "version-2.0.0-beta.8/guides/markdown-features/head-metadatas" } ], "collapsible": true, @@ -126,23 +126,23 @@ }, { "type": "doc", - "id": "version-2.0.0-beta.6/styling-layout" + "id": "version-2.0.0-beta.8/styling-layout" }, { "type": "doc", - "id": "version-2.0.0-beta.6/static-assets" + "id": "version-2.0.0-beta.8/static-assets" }, { "type": "doc", - "id": "version-2.0.0-beta.6/search" + "id": "version-2.0.0-beta.8/search" }, { "type": "doc", - "id": "version-2.0.0-beta.6/browser-support" + "id": "version-2.0.0-beta.8/browser-support" }, { "type": "doc", - "id": "version-2.0.0-beta.6/deployment" + "id": "version-2.0.0-beta.8/deployment" }, { "type": "category", @@ -150,19 +150,19 @@ "items": [ { "type": "doc", - "id": "version-2.0.0-beta.6/i18n/introduction" + "id": "version-2.0.0-beta.8/i18n/introduction" }, { "type": "doc", - "id": "version-2.0.0-beta.6/i18n/tutorial" + "id": "version-2.0.0-beta.8/i18n/tutorial" }, { "type": "doc", - "id": "version-2.0.0-beta.6/i18n/git" + "id": "version-2.0.0-beta.8/i18n/git" }, { "type": "doc", - "id": "version-2.0.0-beta.6/i18n/crowdin" + "id": "version-2.0.0-beta.8/i18n/crowdin" } ], "collapsible": true, @@ -178,15 +178,15 @@ "items": [ { "type": "doc", - "id": "version-2.0.0-beta.6/using-plugins" + "id": "version-2.0.0-beta.8/using-plugins" }, { "type": "doc", - "id": "version-2.0.0-beta.6/using-themes" + "id": "version-2.0.0-beta.8/using-themes" }, { "type": "doc", - "id": "version-2.0.0-beta.6/presets" + "id": "version-2.0.0-beta.8/presets" } ], "collapsible": true, @@ -198,45 +198,45 @@ "items": [ { "type": "doc", - "id": "version-2.0.0-beta.6/migration/migration-overview" + "id": "version-2.0.0-beta.8/migration/migration-overview" }, { "type": "doc", - "id": "version-2.0.0-beta.6/migration/migration-automated" + "id": "version-2.0.0-beta.8/migration/migration-automated" }, { "type": "doc", - "id": "version-2.0.0-beta.6/migration/migration-manual" + "id": "version-2.0.0-beta.8/migration/migration-manual" }, { "type": "doc", - "id": "version-2.0.0-beta.6/migration/migration-versioned-sites" + "id": "version-2.0.0-beta.8/migration/migration-versioned-sites" }, { "type": "doc", - "id": "version-2.0.0-beta.6/migration/migration-translated-sites" + "id": "version-2.0.0-beta.8/migration/migration-translated-sites" } ], "collapsible": true, "collapsed": true } ], - "version-2.0.0-beta.6/api": [ + "version-2.0.0-beta.8/api": [ { "type": "doc", - "id": "version-2.0.0-beta.6/cli" + "id": "version-2.0.0-beta.8/cli" }, { "type": "doc", - "id": "version-2.0.0-beta.6/docusaurus-core" + "id": "version-2.0.0-beta.8/docusaurus-core" }, { "type": "doc", - "id": "version-2.0.0-beta.6/api/docusaurus.config.js" + "id": "version-2.0.0-beta.8/api/docusaurus.config.js" }, { "type": "doc", - "id": "version-2.0.0-beta.6/lifecycle-apis" + "id": "version-2.0.0-beta.8/lifecycle-apis" }, { "type": "category", @@ -244,47 +244,47 @@ "items": [ { "type": "doc", - "id": "version-2.0.0-beta.6/api/plugins/plugins-overview" + "id": "version-2.0.0-beta.8/api/plugins/plugins-overview" }, { "type": "doc", - "id": "version-2.0.0-beta.6/api/plugins/plugin-content-docs" + "id": "version-2.0.0-beta.8/api/plugins/plugin-content-docs" }, { "type": "doc", - "id": "version-2.0.0-beta.6/api/plugins/plugin-content-blog" + "id": "version-2.0.0-beta.8/api/plugins/plugin-content-blog" }, { "type": "doc", - "id": "version-2.0.0-beta.6/api/plugins/plugin-content-pages" + "id": "version-2.0.0-beta.8/api/plugins/plugin-content-pages" }, { "type": "doc", - "id": "version-2.0.0-beta.6/api/plugins/plugin-client-redirects" + "id": "version-2.0.0-beta.8/api/plugins/plugin-client-redirects" }, { "type": "doc", - "id": "version-2.0.0-beta.6/api/plugins/plugin-debug" + "id": "version-2.0.0-beta.8/api/plugins/plugin-debug" }, { "type": "doc", - "id": "version-2.0.0-beta.6/api/plugins/plugin-google-analytics" + "id": "version-2.0.0-beta.8/api/plugins/plugin-google-analytics" }, { "type": "doc", - "id": "version-2.0.0-beta.6/api/plugins/plugin-google-gtag" + "id": "version-2.0.0-beta.8/api/plugins/plugin-google-gtag" }, { "type": "doc", - "id": "version-2.0.0-beta.6/api/plugins/plugin-ideal-image" + "id": "version-2.0.0-beta.8/api/plugins/plugin-ideal-image" }, { "type": "doc", - "id": "version-2.0.0-beta.6/api/plugins/plugin-pwa" + "id": "version-2.0.0-beta.8/api/plugins/plugin-pwa" }, { "type": "doc", - "id": "version-2.0.0-beta.6/api/plugins/plugin-sitemap" + "id": "version-2.0.0-beta.8/api/plugins/plugin-sitemap" } ], "collapsible": true, @@ -296,27 +296,23 @@ "items": [ { "type": "doc", - "id": "version-2.0.0-beta.6/api/themes/themes-overview" + "id": "version-2.0.0-beta.8/api/themes/themes-overview" }, { "type": "doc", - "id": "version-2.0.0-beta.6/api/themes/theme-configuration" + "id": "version-2.0.0-beta.8/api/themes/theme-configuration" }, { "type": "doc", - "id": "version-2.0.0-beta.6/api/themes/theme-classic" + "id": "version-2.0.0-beta.8/api/themes/theme-classic" }, { "type": "doc", - "id": "version-2.0.0-beta.6/api/themes/theme-bootstrap" + "id": "version-2.0.0-beta.8/api/themes/theme-live-codeblock" }, { "type": "doc", - "id": "version-2.0.0-beta.6/api/themes/theme-live-codeblock" - }, - { - "type": "doc", - "id": "version-2.0.0-beta.6/api/themes/theme-search-algolia" + "id": "version-2.0.0-beta.8/api/themes/theme-search-algolia" } ], "collapsible": true, diff --git a/website/versions.json b/website/versions.json index c9e89b3f44ee..228156222533 100644 --- a/website/versions.json +++ b/website/versions.json @@ -1,4 +1,4 @@ [ - "2.0.0-beta.7", - "2.0.0-beta.6" + "2.0.0-beta.8", + "2.0.0-beta.7" ] diff --git a/website/versionsArchived.json b/website/versionsArchived.json index 1e0ad914722f..1850d48c6b98 100644 --- a/website/versionsArchived.json +++ b/website/versionsArchived.json @@ -1,5 +1,6 @@ { - "2.0.0-beta.5": "https://6130eb5cde15830007fdf57b--docusaurus-2.netlify.app/docs", + "2.0.0-beta.6": "https://61716a75858b7d0007e84c89--docusaurus-2.netlify.app/docs/2.0.0-beta.6", + "2.0.0-beta.5": "https://61685d5327709b0007411bff--docusaurus-2.netlify.app/docs/2.0.0-beta.5", "2.0.0-beta.4": "https://6130eb5cde15830007fdf57b--docusaurus-2.netlify.app/docs/2.0.0-beta.4", "2.0.0-beta.3": "https://6127899cbdc82400074cdc97--docusaurus-2.netlify.app/docs/2.0.0-beta.3", "2.0.0-beta.2": "https://6107be93ef38a00008efa7eb--docusaurus-2.netlify.app/docs/2.0.0-beta.2", From 11acc2d728213c41a1c84d8b15ab52bc6f7e51d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Lorber?= Date: Thu, 21 Oct 2021 19:49:36 +0200 Subject: [PATCH 26/26] chore: update examples for beta.8 (#5763) --- examples/classic-typescript/package.json | 6 +- examples/classic-typescript/yarn.lock | 640 +++++++++++------------ examples/classic/package.json | 4 +- examples/classic/yarn.lock | 626 +++++++++++----------- examples/facebook/package.json | 4 +- examples/facebook/yarn.lock | 626 +++++++++++----------- 6 files changed, 953 insertions(+), 953 deletions(-) diff --git a/examples/classic-typescript/package.json b/examples/classic-typescript/package.json index a45a016c3daf..240047ecd66d 100644 --- a/examples/classic-typescript/package.json +++ b/examples/classic-typescript/package.json @@ -16,8 +16,8 @@ "dev": "docusaurus start" }, "dependencies": { - "@docusaurus/core": "2.0.0-beta.7", - "@docusaurus/preset-classic": "2.0.0-beta.7", + "@docusaurus/core": "2.0.0-beta.8", + "@docusaurus/preset-classic": "2.0.0-beta.8", "@mdx-js/react": "^1.6.21", "@svgr/webpack": "^5.5.0", "clsx": "^1.1.1", @@ -28,7 +28,7 @@ "url-loader": "^4.1.1" }, "devDependencies": { - "@docusaurus/module-type-aliases": "2.0.0-beta.7", + "@docusaurus/module-type-aliases": "2.0.0-beta.8", "@tsconfig/docusaurus": "^1.0.4", "typescript": "^4.3.5" }, diff --git a/examples/classic-typescript/yarn.lock b/examples/classic-typescript/yarn.lock index 52d399d818f5..3ebc7f4e17dd 100644 --- a/examples/classic-typescript/yarn.lock +++ b/examples/classic-typescript/yarn.lock @@ -21,109 +21,109 @@ resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.2.2.tgz#ff25dc308f2a296b2b9b325f1e3b57498eea3e0c" integrity sha512-mLTl7d2C1xVVazHt/bqh9EE/u2lbp5YOxLDdcjILXmUqOs5HH1D4SuySblXaQG1uf28FhTqMGp35qE5wJQnqAw== -"@algolia/cache-browser-local-storage@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.10.5.tgz#961cf07cf59955de17af13bd74f7806bd2119553" - integrity sha512-cfX2rEKOtuuljcGI5DMDHClwZHdDqd2nT2Ohsc8aHtBiz6bUxKVyIqxr2gaC6tU8AgPtrTVBzcxCA+UavXpKww== - dependencies: - "@algolia/cache-common" "4.10.5" - -"@algolia/cache-common@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.10.5.tgz#9510419e9dfb6d8814582c6b20615196f213a9d6" - integrity sha512-1mClwdmTHll+OnHkG+yeRoFM17kSxDs4qXkjf6rNZhoZGXDvfYLy3YcZ1FX4Kyz0DJv8aroq5RYGBDsWkHj6Tw== - -"@algolia/cache-in-memory@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.10.5.tgz#de9331cb86734bf7f7624063cdaa639e43509be1" - integrity sha512-+ciQnfIGi5wjMk02XhEY8fmy2pzy+oY1nIIfu8LBOglaSipCRAtjk6WhHc7/KIbXPiYzIwuDbM2K1+YOwSGjwA== - dependencies: - "@algolia/cache-common" "4.10.5" - -"@algolia/client-account@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.10.5.tgz#82f7c330fc5f0625b5b559afe9c6b1aa6722b6cf" - integrity sha512-I9UkSS2glXm7RBZYZIALjBMmXSQbw/fI/djPcBHxiwXIheNIlqIFl2SNPkvihpPF979BSkzjqdJNRPhE1vku3Q== - dependencies: - "@algolia/client-common" "4.10.5" - "@algolia/client-search" "4.10.5" - "@algolia/transporter" "4.10.5" - -"@algolia/client-analytics@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.10.5.tgz#269e47c9de7e53e9e05e4a2d3c380607c3d2631f" - integrity sha512-h2owwJSkovPxzc+xIsjY1pMl0gj+jdVwP9rcnGjlaTY2fqHbSLrR9yvGyyr6305LvTppxsQnfAbRdE/5Z3eFxw== - dependencies: - "@algolia/client-common" "4.10.5" - "@algolia/client-search" "4.10.5" - "@algolia/requester-common" "4.10.5" - "@algolia/transporter" "4.10.5" - -"@algolia/client-common@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.10.5.tgz#a7d0833796a9a2da68be16be76b6dc3962bf2f18" - integrity sha512-21FAvIai5qm8DVmZHm2Gp4LssQ/a0nWwMchAx+1hIRj1TX7OcdW6oZDPyZ8asQdvTtK7rStQrRnD8a95SCUnzA== - dependencies: - "@algolia/requester-common" "4.10.5" - "@algolia/transporter" "4.10.5" - -"@algolia/client-personalization@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.10.5.tgz#78a8fb8161bdbeaa66b400b3283640ef689e155b" - integrity sha512-nH+IyFKBi8tCyzGOanJTbXC5t4dspSovX3+ABfmwKWUYllYzmiQNFUadpb3qo+MLA3jFx5IwBesjneN6dD5o3w== - dependencies: - "@algolia/client-common" "4.10.5" - "@algolia/requester-common" "4.10.5" - "@algolia/transporter" "4.10.5" - -"@algolia/client-search@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.10.5.tgz#47907232a3e4ecf2aa4459b8de17242afd88147c" - integrity sha512-1eQFMz9uodrc5OM+9HeT+hHcfR1E1AsgFWXwyJ9Q3xejA2c1c4eObGgOgC9ZoshuHHdptaTN1m3rexqAxXRDBg== - dependencies: - "@algolia/client-common" "4.10.5" - "@algolia/requester-common" "4.10.5" - "@algolia/transporter" "4.10.5" - -"@algolia/logger-common@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.10.5.tgz#cf807107e755ad4a72c5afc787e968ff1196f1cc" - integrity sha512-gRJo9zt1UYP4k3woEmZm4iuEBIQd/FrArIsjzsL/b+ihNoOqIxZKTSuGFU4UUZOEhvmxDReiA4gzvQXG+TMTmA== - -"@algolia/logger-console@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.10.5.tgz#f961a7a7c6718c3f3842fb9b522d47b03b9df8ad" - integrity sha512-4WfIbn4253EDU12u9UiYvz+QTvAXDv39mKNg9xSoMCjKE5szcQxfcSczw2byc6pYhahOJ9PmxPBfs1doqsdTKQ== - dependencies: - "@algolia/logger-common" "4.10.5" - -"@algolia/requester-browser-xhr@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.10.5.tgz#7063e3bc6d9c72bc535e1794352eddf47459dfe6" - integrity sha512-53/MURQEqtK+bGdfq4ITSPwTh5hnADU99qzvpAINGQveUFNSFGERipJxHjTJjIrjFz3vxj5kKwjtxDnU6ygO9g== - dependencies: - "@algolia/requester-common" "4.10.5" - -"@algolia/requester-common@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.10.5.tgz#52abfbf10b743d26afd3ce20f62771bc393ff4f0" - integrity sha512-UkVa1Oyuj6NPiAEt5ZvrbVopEv1m/mKqjs40KLB+dvfZnNcj+9Fry4Oxnt15HMy/HLORXsx4UwcthAvBuOXE9Q== - -"@algolia/requester-node-http@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.10.5.tgz#db7e9ece1fda1b71a28c8e623666aaa096320b5c" - integrity sha512-aNEKVKXL4fiiC+bS7yJwAHdxln81ieBwY3tsMCtM4zF9f5KwCzY2OtN4WKEZa5AAADVcghSAUdyjs4AcGUlO5w== - dependencies: - "@algolia/requester-common" "4.10.5" - -"@algolia/transporter@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.10.5.tgz#9354989f12af3e2ce7d3109a94f519d467a960e0" - integrity sha512-F8DLkmIlvCoMwSCZA3FKHtmdjH3o5clbt0pi2ktFStVNpC6ZDmY307HcK619bKP5xW6h8sVJhcvrLB775D2cyA== - dependencies: - "@algolia/cache-common" "4.10.5" - "@algolia/logger-common" "4.10.5" - "@algolia/requester-common" "4.10.5" +"@algolia/cache-browser-local-storage@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.11.0.tgz#1c168add00b398a860db6c86039e33b2843a9425" + integrity sha512-4sr9vHIG1fVA9dONagdzhsI/6M5mjs/qOe2xUP0yBmwsTsuwiZq3+Xu6D3dsxsuFetcJgC6ydQoCW8b7fDJHYQ== + dependencies: + "@algolia/cache-common" "4.11.0" + +"@algolia/cache-common@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.11.0.tgz#066fe6d58b18e4b028dbef9bb8de07c5e22a3594" + integrity sha512-lODcJRuPXqf+6mp0h6bOxPMlbNoyn3VfjBVcQh70EDP0/xExZbkpecgHyyZK4kWg+evu+mmgvTK3GVHnet/xKw== + +"@algolia/cache-in-memory@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.11.0.tgz#763c8cb655e6fd2261588e04214fca0959ac07c1" + integrity sha512-aBz+stMSTBOBaBEQ43zJXz2DnwS7fL6dR0e2myehAgtfAWlWwLDHruc/98VOy1ZAcBk1blE2LCU02bT5HekGxQ== + dependencies: + "@algolia/cache-common" "4.11.0" + +"@algolia/client-account@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.11.0.tgz#67fadd3b0802b013ebaaa4b47bb7babae892374e" + integrity sha512-jwmFBoUSzoMwMqgD3PmzFJV/d19p1RJXB6C1ADz4ju4mU7rkaQLtqyZroQpheLoU5s5Tilmn/T8/0U2XLoJCRQ== + dependencies: + "@algolia/client-common" "4.11.0" + "@algolia/client-search" "4.11.0" + "@algolia/transporter" "4.11.0" + +"@algolia/client-analytics@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.11.0.tgz#cbdc8128205e2da749cafc79e54708d14c413974" + integrity sha512-v5U9585aeEdYml7JqggHAj3E5CQ+jPwGVztPVhakBk8H/cmLyPS2g8wvmIbaEZCHmWn4TqFj3EBHVYxAl36fSA== + dependencies: + "@algolia/client-common" "4.11.0" + "@algolia/client-search" "4.11.0" + "@algolia/requester-common" "4.11.0" + "@algolia/transporter" "4.11.0" + +"@algolia/client-common@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.11.0.tgz#9a2d1f6f8eaad25ba5d6d4ce307ba5bd84e6f999" + integrity sha512-Qy+F+TZq12kc7tgfC+FM3RvYH/Ati7sUiUv/LkvlxFwNwNPwWGoZO81AzVSareXT/ksDDrabD4mHbdTbBPTRmQ== + dependencies: + "@algolia/requester-common" "4.11.0" + "@algolia/transporter" "4.11.0" + +"@algolia/client-personalization@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.11.0.tgz#d3bf0e760f85df876b4baf5b81996f0aa3a59940" + integrity sha512-mI+X5IKiijHAzf9fy8VSl/GTT67dzFDnJ0QAM8D9cMPevnfX4U72HRln3Mjd0xEaYUOGve8TK/fMg7d3Z5yG6g== + dependencies: + "@algolia/client-common" "4.11.0" + "@algolia/requester-common" "4.11.0" + "@algolia/transporter" "4.11.0" + +"@algolia/client-search@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.11.0.tgz#c1105d715a2a04ba27231eca86f5d6620f68f4ae" + integrity sha512-iovPLc5YgiXBdw2qMhU65sINgo9umWbHFzInxoNErWnYoTQWfXsW6P54/NlKx5uscoLVjSf+5RUWwFu5BX+lpw== + dependencies: + "@algolia/client-common" "4.11.0" + "@algolia/requester-common" "4.11.0" + "@algolia/transporter" "4.11.0" + +"@algolia/logger-common@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.11.0.tgz#bac1c2d59d29dee378b57412c8edd435b97de663" + integrity sha512-pRMJFeOY8hoWKIxWuGHIrqnEKN/kqKh7UilDffG/+PeEGxBuku+Wq5CfdTFG0C9ewUvn8mAJn5BhYA5k8y0Jqg== + +"@algolia/logger-console@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.11.0.tgz#ced19e3abb22eb782ed5268d51efb5aa9ef109ef" + integrity sha512-wXztMk0a3VbNmYP8Kpc+F7ekuvaqZmozM2eTLok0XIshpAeZ/NJDHDffXK2Pw+NF0wmHqurptLYwKoikjBYvhQ== + dependencies: + "@algolia/logger-common" "4.11.0" + +"@algolia/requester-browser-xhr@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.11.0.tgz#f9e1ad56f185432aa8dde8cad53ae271fd5d6181" + integrity sha512-Fp3SfDihAAFR8bllg8P5ouWi3+qpEVN5e7hrtVIYldKBOuI/qFv80Zv/3/AMKNJQRYglS4zWyPuqrXm58nz6KA== + dependencies: + "@algolia/requester-common" "4.11.0" + +"@algolia/requester-common@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.11.0.tgz#d16de98d3ff72434bac39e4d915eab08035946a9" + integrity sha512-+cZGe/9fuYgGuxjaBC+xTGBkK7OIYdfapxhfvEf03dviLMPmhmVYFJtJlzAjQ2YmGDJpHrGgAYj3i/fbs8yhiA== + +"@algolia/requester-node-http@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.11.0.tgz#beb2b6b68d5f4ce15aec80ede623f0ac96991368" + integrity sha512-qJIk9SHRFkKDi6dMT9hba8X1J1z92T5AZIgl+tsApjTGIRQXJLTIm+0q4yOefokfu4CoxYwRZ9QAq+ouGwfeOg== + dependencies: + "@algolia/requester-common" "4.11.0" + +"@algolia/transporter@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.11.0.tgz#a8de3c173093ceceb02b26b577395ce3b3d4b96f" + integrity sha512-k4dyxiaEfYpw4UqybK9q7lrFzehygo6KV3OCYJMMdX0IMWV0m4DXdU27c1zYRYtthaFYaBzGF4Kjcl8p8vxCKw== + dependencies: + "@algolia/cache-common" "4.11.0" + "@algolia/logger-common" "4.11.0" + "@algolia/requester-common" "4.11.0" "@babel/code-frame@7.10.4": version "7.10.4" @@ -1067,9 +1067,9 @@ semver "^6.3.0" "@babel/preset-modules@^0.1.4": - version "0.1.4" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" - integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== + version "0.1.5" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" + integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" @@ -1145,25 +1145,25 @@ "@babel/helper-validator-identifier" "^7.14.9" to-fast-properties "^2.0.0" -"@docsearch/css@3.0.0-alpha.40": - version "3.0.0-alpha.40" - resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.0.0-alpha.40.tgz#c37bd7b03f4c30a6ea7a19b87fe71880d2e8b22a" - integrity sha512-PrOTPgJMl+Iji1zOH0+J0PEDMriJ1teGxbgll7o4h8JrvJW6sJGqQw7/bLW7enWiFaxbJMK76w1yyPNLFHV7Qg== +"@docsearch/css@3.0.0-alpha.41": + version "3.0.0-alpha.41" + resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.0.0-alpha.41.tgz#c5c8e803541bd157ad86e764c2c1e9f1b5a68592" + integrity sha512-AP1jqcF/9jCrm4s0lcES3QAtHueyipKjd14L/pguk0CZYK7uI7hC0FWodmRmrgK3/HST9jiHa1waUMR6ZYedlQ== "@docsearch/react@^3.0.0-alpha.39": - version "3.0.0-alpha.40" - resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-3.0.0-alpha.40.tgz#d912b4bb7281cb0faf65590c9cf022aa2a13d823" - integrity sha512-aKxnu7sgpP1R7jtgOV/pZdJEHXx6Ts+jnS9U/ejSUS2BMUpwQI5SA3oLs1BA5TA9kIViJ5E+rrjh0VsbcsJ6sQ== + version "3.0.0-alpha.41" + resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-3.0.0-alpha.41.tgz#07e85a664e85f251ce3d13153abce65a4d5997ab" + integrity sha512-UL0Gdter/NUea04lGuBGH0GzQ2/2q/hBfn7Rjo71rRKbjtfkQCM92leJ9tZ+9j9sFLoyuHb9XMm/B8vCjWwTEg== dependencies: "@algolia/autocomplete-core" "1.2.2" "@algolia/autocomplete-preset-algolia" "1.2.2" - "@docsearch/css" "3.0.0-alpha.40" + "@docsearch/css" "3.0.0-alpha.41" algoliasearch "^4.0.0" -"@docusaurus/core@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.0.0-beta.7.tgz#cdfcb57c6737c51122e6b1c009f58cc5570f896b" - integrity sha512-owJDhldpimQBOCr6YbGJiQRQufK3A9zmA3lyDnbtipAGV+sDRQNiYKUDtwnbESCchA4vhKj7suvcLvA4sSEVIQ== +"@docusaurus/core@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.0.0-beta.8.tgz#7e24547a26e34e4d288f19883e08ac29b7946325" + integrity sha512-KVbZoOCxQKvbX1RT8qrHAsPVYPGDnXFevTeJbZW1XQb0OPv7oh5nijXJvzNeGupXP561BByrsdHT7IxM/hT0CQ== dependencies: "@babel/core" "^7.12.16" "@babel/generator" "^7.12.15" @@ -1175,12 +1175,12 @@ "@babel/runtime" "^7.15.4" "@babel/runtime-corejs3" "^7.15.4" "@babel/traverse" "^7.12.13" - "@docusaurus/cssnano-preset" "2.0.0-beta.7" + "@docusaurus/cssnano-preset" "2.0.0-beta.8" "@docusaurus/react-loadable" "5.5.0" - "@docusaurus/types" "2.0.0-beta.7" - "@docusaurus/utils" "2.0.0-beta.7" - "@docusaurus/utils-common" "2.0.0-beta.7" - "@docusaurus/utils-validation" "2.0.0-beta.7" + "@docusaurus/types" "2.0.0-beta.8" + "@docusaurus/utils" "2.0.0-beta.8" + "@docusaurus/utils-common" "2.0.0-beta.8" + "@docusaurus/utils-validation" "2.0.0-beta.8" "@slorber/static-site-generator-webpack-plugin" "^4.0.0" "@svgr/webpack" "^5.5.0" autoprefixer "^10.3.5" @@ -1207,7 +1207,7 @@ globby "^11.0.2" html-minifier-terser "^6.0.2" html-tags "^3.1.0" - html-webpack-plugin "^5.3.2" + html-webpack-plugin "^5.4.0" import-fresh "^3.3.0" is-root "^2.1.0" leven "^3.1.0" @@ -1245,24 +1245,24 @@ webpack-merge "^5.8.0" webpackbar "^5.0.0-3" -"@docusaurus/cssnano-preset@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.0-beta.7.tgz#d39fc576f689dc74aa0fd0812cebd96c9ce38890" - integrity sha512-S1vMCRpIpxWbETcQ/7KzZmFct7WYM2IN1FQSHqCxF1UmAfDH5wwlxUhCe8aQu00f/JV/0Oy/HMOOCJ3cDnLjgw== +"@docusaurus/cssnano-preset@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.0-beta.8.tgz#0e83ad9e70e64709c23aa8cc565ec43d135e9abc" + integrity sha512-RXApzIEaTsTSpz4YV86DBXaFvXH3J4SNIWba/AFSoPBviODjxIu+7TRRs9eh8vUAB32nVBtcdHmRb25b662szQ== dependencies: cssnano-preset-advanced "^5.1.4" postcss "^8.3.7" postcss-sort-media-queries "^4.1.0" -"@docusaurus/mdx-loader@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-beta.7.tgz#a86ca29fd393f01869e671afaaf80d41d728ac49" - integrity sha512-AGL+JDQy/mcJ9IEbCdVDdvqCBvbvG8EIomtopxpxE307gpC3QjQT4bLyUyYBIESDEoniwNsE0R4cABqp+zoIoA== +"@docusaurus/mdx-loader@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-beta.8.tgz#c64a81988975ea5ed969e8a164136a2aaa035da1" + integrity sha512-unVimkaAGgkt+d/QgQPwm8FaRZVB0jew6Q902KSl1Hx0yWI/x5LKWY/y4kCFUBv7rCsuSqyjoZwggD+evw//bg== dependencies: "@babel/parser" "^7.12.16" "@babel/traverse" "^7.12.13" - "@docusaurus/core" "2.0.0-beta.7" - "@docusaurus/utils" "2.0.0-beta.7" + "@docusaurus/core" "2.0.0-beta.8" + "@docusaurus/utils" "2.0.0-beta.8" "@mdx-js/mdx" "^1.6.21" "@mdx-js/react" "^1.6.21" chalk "^4.1.2" @@ -1278,10 +1278,10 @@ url-loader "^4.1.1" webpack "^5.40.0" -"@docusaurus/module-type-aliases@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.0.0-beta.7.tgz#b2435fadb532b1785465feb9c37d86b039ae712c" - integrity sha512-KAd3JjzawbrYaQfhBww/eZoz5bOC54IEE3r4/fTWyV2aWBojwiuhFH+B0XaRR+pCW6E8J7w0Nz6VturS1ZF+sA== +"@docusaurus/module-type-aliases@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.0.0-beta.8.tgz#6bc9ae6ab895ca96dff9df1e1247695b9a4826ad" + integrity sha512-2hW+PMfY+4kMD0MCLuezb9Ytj4jz237PbnKc9d+Lgqvkyri154QQKtkmWha+QOBiGJ4832LIFijtoyb+T+XQSA== dependencies: "@types/react" "*" "@types/react-helmet" "*" @@ -1289,16 +1289,16 @@ "@types/react-router-config" "*" "@types/react-router-dom" "*" -"@docusaurus/plugin-content-blog@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-beta.7.tgz#f40d9314f2ea07e0cea75e0eeaae79a259f8c937" - integrity sha512-Pz4peB7I38aCMogdqiDhp43ip22GtSUWSewMRwZFd5poxvhShAb7/TUOP85p4bHfTmEWPcsFxQkDBMiv2nFkbw== +"@docusaurus/plugin-content-blog@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-beta.8.tgz#f7405b04cbde4cff6ea9aaf281f171f147133cd8" + integrity sha512-sUAk3MZrZL7YMp66h+pIy0rOQYFovB8kh9LbDdTXREDyTViCygfkr/6sFPRWpoFzws/kbXoRCPIPcrzcYj+/Pw== dependencies: - "@docusaurus/core" "2.0.0-beta.7" - "@docusaurus/mdx-loader" "2.0.0-beta.7" - "@docusaurus/types" "2.0.0-beta.7" - "@docusaurus/utils" "2.0.0-beta.7" - "@docusaurus/utils-validation" "2.0.0-beta.7" + "@docusaurus/core" "2.0.0-beta.8" + "@docusaurus/mdx-loader" "2.0.0-beta.8" + "@docusaurus/types" "2.0.0-beta.8" + "@docusaurus/utils" "2.0.0-beta.8" + "@docusaurus/utils-validation" "2.0.0-beta.8" chalk "^4.1.2" escape-string-regexp "^4.0.0" feed "^4.2.2" @@ -1313,16 +1313,16 @@ utility-types "^3.10.0" webpack "^5.40.0" -"@docusaurus/plugin-content-docs@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-beta.7.tgz#546713a2ae773266d5fa385f8f25e9f2438194c9" - integrity sha512-O8Ky+xqiL4+LGIa2hT5WMknbbpw9Q0GaOfnPgX1XTBUwWFlwadMX1rMb4Vb1ki7qhqV1clVCcWZ2EdilkMqhUg== +"@docusaurus/plugin-content-docs@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-beta.8.tgz#b248689ea85201a38c21e285819f400820c1c936" + integrity sha512-uE8mI5zQFcwtxAbycxv6G7ALtqKgNwd4URuJhv4VQ2DhR5uta/yd9IK8BPduwrbYLWZuGf2uO3jVsPbgNBZ0RQ== dependencies: - "@docusaurus/core" "2.0.0-beta.7" - "@docusaurus/mdx-loader" "2.0.0-beta.7" - "@docusaurus/types" "2.0.0-beta.7" - "@docusaurus/utils" "2.0.0-beta.7" - "@docusaurus/utils-validation" "2.0.0-beta.7" + "@docusaurus/core" "2.0.0-beta.8" + "@docusaurus/mdx-loader" "2.0.0-beta.8" + "@docusaurus/types" "2.0.0-beta.8" + "@docusaurus/utils" "2.0.0-beta.8" + "@docusaurus/utils-validation" "2.0.0-beta.8" chalk "^4.1.2" combine-promises "^1.1.0" escape-string-regexp "^4.0.0" @@ -1339,77 +1339,77 @@ utility-types "^3.10.0" webpack "^5.40.0" -"@docusaurus/plugin-content-pages@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-beta.7.tgz#9167c5a9924d284b076d261b08b19b21ac8836fd" - integrity sha512-5NKtexqh5Ug75xDUQ8ZhgTZ5qDQKF+5/MvOsDdV6OPPq39Rc54RnXyOBpn2hmG4sOkITSav0Rx9WdSwXQ1S56w== +"@docusaurus/plugin-content-pages@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-beta.8.tgz#fdc6687917091ad5f62b332feb6add9c29b6b169" + integrity sha512-NcYKwwBhOR1eH5FZpktaRtBYDsT8vnwR2mAYqS4Oyl7EeyYNKb1ykMnBn5tDktMuRaLRy1flq5u79Nc5oscHIQ== dependencies: - "@docusaurus/core" "2.0.0-beta.7" - "@docusaurus/mdx-loader" "2.0.0-beta.7" - "@docusaurus/types" "2.0.0-beta.7" - "@docusaurus/utils" "2.0.0-beta.7" - "@docusaurus/utils-validation" "2.0.0-beta.7" + "@docusaurus/core" "2.0.0-beta.8" + "@docusaurus/mdx-loader" "2.0.0-beta.8" + "@docusaurus/types" "2.0.0-beta.8" + "@docusaurus/utils" "2.0.0-beta.8" + "@docusaurus/utils-validation" "2.0.0-beta.8" globby "^11.0.2" lodash "^4.17.20" remark-admonitions "^1.2.1" tslib "^2.3.1" webpack "^5.40.0" -"@docusaurus/plugin-debug@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.0.0-beta.7.tgz#eb8f9b1297bbc82e9541c6ad528643e0766b1953" - integrity sha512-yClzF4ATBclrnBf5hz5YlFmK7Ds63suWf9Sv6VaLsrW4nnP/TinpbBfXSPdbM1zqaDqzNGcYabm0jbA2bstXJA== +"@docusaurus/plugin-debug@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.0.0-beta.8.tgz#314ca63af4bea9ea38b62e89580ff471cfcf9955" + integrity sha512-DCsYnVQ+MTEfGTOEsSCpZDG+xADM3dC5K2BfT4kDUB4De1SKH37NoXXJpGaVEtE4gLjRWoDGfDaQdS/LlVqwiQ== dependencies: - "@docusaurus/core" "2.0.0-beta.7" - "@docusaurus/types" "2.0.0-beta.7" - "@docusaurus/utils" "2.0.0-beta.7" + "@docusaurus/core" "2.0.0-beta.8" + "@docusaurus/types" "2.0.0-beta.8" + "@docusaurus/utils" "2.0.0-beta.8" fs-extra "^10.0.0" react-json-view "^1.21.3" tslib "^2.3.1" -"@docusaurus/plugin-google-analytics@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.0-beta.7.tgz#040e246bd34300cf88d8f0eed1d677693aae0ec0" - integrity sha512-588Fwd5vlcS13osCm9SeQOL4BnEH5M680pLnFQ2oTfZ1RzLfNFJ0O2mP3c4ivZCsHqT8OguUwZBoSKQC3FtBzg== +"@docusaurus/plugin-google-analytics@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.0-beta.8.tgz#d9b7298fe33e3ce1e11cd722ce4ac681e356915c" + integrity sha512-kpk9pXPIfE+5CbcJSbwF6Evfy5kX+4Z0Ph/x/M1N+8omH+StDrR+fa1S3I5GK38lb3/N1fWNgsWE7LembE9xYQ== dependencies: - "@docusaurus/core" "2.0.0-beta.7" + "@docusaurus/core" "2.0.0-beta.8" -"@docusaurus/plugin-google-gtag@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.0-beta.7.tgz#d8f4be826dbc7b53aaba27c65be86b32ba8bb7b9" - integrity sha512-52nm+VlFk4sGX6R9H3PMv5VVIZSEpzMhnAWTrcLNJyCj7TmX45Rr44+nkFdC1S5xg1Jy6u6farpD9VUK69oQfA== +"@docusaurus/plugin-google-gtag@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.0-beta.8.tgz#ba5b22d0656cf295ccd955e39c7fb5439dadddb8" + integrity sha512-1Wa0yMXZgxp85dGuOD44X+fnZtW8ztmOcGBOgLo9Uwhi+OhxOrW4ZOddhEJA6tmCaRuqkaMK7zN1ss2EUc2g7g== dependencies: - "@docusaurus/core" "2.0.0-beta.7" + "@docusaurus/core" "2.0.0-beta.8" -"@docusaurus/plugin-sitemap@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-beta.7.tgz#a81fcbc65b606d98814ac5ce880b3d8124c32696" - integrity sha512-jCBwxHFDkKbUTa+rc1TGegBpaLM+F/C2N97jhnvT9i07kUClt5w+tWplc+jm1Z1Ei/qwiMC+VLAK7xXnnPWTWg== +"@docusaurus/plugin-sitemap@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-beta.8.tgz#731d97ff8e495cd66f8ba1c6b1426c61726d46c5" + integrity sha512-oz2Hu1q34kvsgPb6DWM8cpzKmNy02BYtv+2GTrg016V+beGr8PNcHkxzgGtdN+Se5zJqdtRQvOPQtIZOJQntcA== dependencies: - "@docusaurus/core" "2.0.0-beta.7" - "@docusaurus/types" "2.0.0-beta.7" - "@docusaurus/utils" "2.0.0-beta.7" - "@docusaurus/utils-common" "2.0.0-beta.7" - "@docusaurus/utils-validation" "2.0.0-beta.7" + "@docusaurus/core" "2.0.0-beta.8" + "@docusaurus/types" "2.0.0-beta.8" + "@docusaurus/utils" "2.0.0-beta.8" + "@docusaurus/utils-common" "2.0.0-beta.8" + "@docusaurus/utils-validation" "2.0.0-beta.8" fs-extra "^10.0.0" sitemap "^7.0.0" tslib "^2.3.1" -"@docusaurus/preset-classic@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-2.0.0-beta.7.tgz#7340144e1ed486ef14cdbfd4366e2d7fc350ff13" - integrity sha512-lrIpgjrcea3AxroU7G1q1cMFxYNBJleNWCMJ+3Ed1cwn6yRmOQAtUJPQzhPX67Uay5Wl6d2K8/cPpMdAT3E0Fg== - dependencies: - "@docusaurus/core" "2.0.0-beta.7" - "@docusaurus/plugin-content-blog" "2.0.0-beta.7" - "@docusaurus/plugin-content-docs" "2.0.0-beta.7" - "@docusaurus/plugin-content-pages" "2.0.0-beta.7" - "@docusaurus/plugin-debug" "2.0.0-beta.7" - "@docusaurus/plugin-google-analytics" "2.0.0-beta.7" - "@docusaurus/plugin-google-gtag" "2.0.0-beta.7" - "@docusaurus/plugin-sitemap" "2.0.0-beta.7" - "@docusaurus/theme-classic" "2.0.0-beta.7" - "@docusaurus/theme-search-algolia" "2.0.0-beta.7" +"@docusaurus/preset-classic@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-2.0.0-beta.8.tgz#97e42cb0c5b1858cf644febc7ebd61b1a72c9f16" + integrity sha512-tlc+KuMJFmfXYA/FOCbHvMfRWx2SQtJLf6rkBUzRt0Vlym+pI7CG1px3OKON62jaaLm/Vyvn3+47z3yClJRM1A== + dependencies: + "@docusaurus/core" "2.0.0-beta.8" + "@docusaurus/plugin-content-blog" "2.0.0-beta.8" + "@docusaurus/plugin-content-docs" "2.0.0-beta.8" + "@docusaurus/plugin-content-pages" "2.0.0-beta.8" + "@docusaurus/plugin-debug" "2.0.0-beta.8" + "@docusaurus/plugin-google-analytics" "2.0.0-beta.8" + "@docusaurus/plugin-google-gtag" "2.0.0-beta.8" + "@docusaurus/plugin-sitemap" "2.0.0-beta.8" + "@docusaurus/theme-classic" "2.0.0-beta.8" + "@docusaurus/theme-search-algolia" "2.0.0-beta.8" "@docusaurus/react-loadable@5.5.0": version "5.5.0" @@ -1418,20 +1418,20 @@ dependencies: prop-types "^15.6.2" -"@docusaurus/theme-classic@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.0.0-beta.7.tgz#af51c439280ad2064d0a65b77bc0475590a74d06" - integrity sha512-x93sqAlR5l0oZa12GetWrvwm6Olx23bA3nv1gYIAhaxHqo374vC6EWIsvjJCBdCSmmuPX6TaZm1rSDYFWc/37g== - dependencies: - "@docusaurus/core" "2.0.0-beta.7" - "@docusaurus/plugin-content-blog" "2.0.0-beta.7" - "@docusaurus/plugin-content-docs" "2.0.0-beta.7" - "@docusaurus/plugin-content-pages" "2.0.0-beta.7" - "@docusaurus/theme-common" "2.0.0-beta.7" - "@docusaurus/types" "2.0.0-beta.7" - "@docusaurus/utils" "2.0.0-beta.7" - "@docusaurus/utils-common" "2.0.0-beta.7" - "@docusaurus/utils-validation" "2.0.0-beta.7" +"@docusaurus/theme-classic@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.0.0-beta.8.tgz#5465c0ea739053ba5ea9f5dca61406e8935f00b2" + integrity sha512-lC0PGxACbNiq98WwF1O3T0YblqSK6yo7KcDcrOnPJd0XCV4xMjWZSeeSIneotfs2uvJzmG3GOg7EfQcLvhdyIQ== + dependencies: + "@docusaurus/core" "2.0.0-beta.8" + "@docusaurus/plugin-content-blog" "2.0.0-beta.8" + "@docusaurus/plugin-content-docs" "2.0.0-beta.8" + "@docusaurus/plugin-content-pages" "2.0.0-beta.8" + "@docusaurus/theme-common" "2.0.0-beta.8" + "@docusaurus/types" "2.0.0-beta.8" + "@docusaurus/utils" "2.0.0-beta.8" + "@docusaurus/utils-common" "2.0.0-beta.8" + "@docusaurus/utils-validation" "2.0.0-beta.8" "@mdx-js/mdx" "^1.6.21" "@mdx-js/react" "^1.6.21" chalk "^4.1.2" @@ -1449,41 +1449,41 @@ react-router-dom "^5.2.0" rtlcss "^3.3.0" -"@docusaurus/theme-common@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.0.0-beta.7.tgz#958b3b9b537e78b6f933bf0b2348650e2e8f8d37" - integrity sha512-50ySwGxsLDS2Jqh771ZkN72QJvLHu+mz+oh/sVerfaQZUmTHZ2AHm0F2Ugzwcwu7ZeuAt31qjHsCLC0ZgVy88A== +"@docusaurus/theme-common@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.0.0-beta.8.tgz#eee6f4a08034477458bbc8869e9ebb1fea76fb6f" + integrity sha512-jrlCgFcg0wAfrtzSwU5F8iVdIBmL325d6jupD3N2CirSG6TxAmHDkeAbFyY6ZjaT27XYWXJUwvqvsbbNXAdNzw== dependencies: - "@docusaurus/core" "2.0.0-beta.7" - "@docusaurus/plugin-content-blog" "2.0.0-beta.7" - "@docusaurus/plugin-content-docs" "2.0.0-beta.7" - "@docusaurus/plugin-content-pages" "2.0.0-beta.7" - "@docusaurus/types" "2.0.0-beta.7" + "@docusaurus/core" "2.0.0-beta.8" + "@docusaurus/plugin-content-blog" "2.0.0-beta.8" + "@docusaurus/plugin-content-docs" "2.0.0-beta.8" + "@docusaurus/plugin-content-pages" "2.0.0-beta.8" + "@docusaurus/types" "2.0.0-beta.8" clsx "^1.1.1" fs-extra "^10.0.0" tslib "^2.3.1" utility-types "^3.10.0" -"@docusaurus/theme-search-algolia@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-beta.7.tgz#d89e56cb98e3632f0b50a0ff72d34882efabe68b" - integrity sha512-N/5AVhs/nx1lcHeWG6ek3SjpARJ8UCGyWgcDDb0Li867YFle/b8Slai8ZgKUDrHlRl1+t3iE8G9w5+xAB+FdwA== +"@docusaurus/theme-search-algolia@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-beta.8.tgz#9747f6975719152ac18674c526a90930ef9303fb" + integrity sha512-ryT57Wipems0GbB0WxdrTUJ4q/1DM6xoqJlpGGnTy52FEZi3ZoCp+1yxaBLbKKYevGl1nEF3S0kp1o13UiqKTw== dependencies: "@docsearch/react" "^3.0.0-alpha.39" - "@docusaurus/core" "2.0.0-beta.7" - "@docusaurus/theme-common" "2.0.0-beta.7" - "@docusaurus/utils" "2.0.0-beta.7" - "@docusaurus/utils-validation" "2.0.0-beta.7" + "@docusaurus/core" "2.0.0-beta.8" + "@docusaurus/theme-common" "2.0.0-beta.8" + "@docusaurus/utils" "2.0.0-beta.8" + "@docusaurus/utils-validation" "2.0.0-beta.8" algoliasearch "^4.10.5" algoliasearch-helper "^3.5.5" clsx "^1.1.1" eta "^1.12.3" lodash "^4.17.20" -"@docusaurus/types@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.0.0-beta.7.tgz#78ea662e6879ef9d819e505e7338a4f861f0b53f" - integrity sha512-p65Fy/8yhnhOvEcqrDtSqfepEmBOxo6mFtCVFS/zQJgXCH10pvbN4SjIFIFFHh8AvbAgv1Dp2TBel2mdwQO2yA== +"@docusaurus/types@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.0.0-beta.8.tgz#0dd7e51ca403c9567eb18d985bb65c975ce15cbc" + integrity sha512-wEzyQvku2zNNp3ChPk1x5s7SvlFygTyuqL9dpwvzCsJhxqZ0JH+whellh2YtDQQO617npOM8l6MC1Yd6ePws2Q== dependencies: commander "^5.1.0" joi "^17.4.2" @@ -1492,30 +1492,30 @@ webpack "^5.40.0" webpack-merge "^5.8.0" -"@docusaurus/utils-common@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.0.0-beta.7.tgz#223096c825990c17da59f1009299cac3edcb00c7" - integrity sha512-qfuEZFe81TEJfNVx5rbwRSPID/guulpr0mTVOTpe8y4MozkqhWvK2j9xElVg9olJc+6WBd9IUN2NIq33g7QjYQ== +"@docusaurus/utils-common@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.0.0-beta.8.tgz#962534413af2f95d8562b46f077be3a6a49fee61" + integrity sha512-SWnXd+VHN+YWKJGdaPHLmREaNMKEFQmAN12xA/FufXFDvVZJOA2YShLEAjSJDQTKt9hfGys3JCYF1PBgosB0sA== dependencies: - "@docusaurus/types" "2.0.0-beta.7" + "@docusaurus/types" "2.0.0-beta.8" tslib "^2.3.1" -"@docusaurus/utils-validation@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.0.0-beta.7.tgz#b2cc4bf77b70b6956f00aa436aed8c610f2ecd8a" - integrity sha512-lcnsW1sJ+DUTkPS2aA3JysO6pZ9kqDAhesrG7Y8q2ivlwU/unED2N7/rubP0Yw0KYFr/1b+v/uOtyfNYZya3gQ== +"@docusaurus/utils-validation@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.0.0-beta.8.tgz#a2093f8e20c79581bc41d6156e4f3a8e3ce95a9a" + integrity sha512-zcoJw9Bo/WkRLJhD53ck0rA68cnswc9TB84F/hOm92X4QkhjCUtb5XlMUtTtvO9ScnlgsFiQYaySrFRAM+fr5w== dependencies: - "@docusaurus/utils" "2.0.0-beta.7" + "@docusaurus/utils" "2.0.0-beta.8" chalk "^4.1.2" joi "^17.4.2" tslib "^2.3.1" -"@docusaurus/utils@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.0.0-beta.7.tgz#e92d11f0fb39aa8c0938025770901594782425a5" - integrity sha512-sL6IKOR/12btiHZS1yiCwlyFMbbkTUGSXSMSmDgumQRSDU63OaAvTLO7lWi2zDwFPXtFtfruAULcXc8XO4RjUA== +"@docusaurus/utils@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.0.0-beta.8.tgz#f6754c8e767cdfcca324eb8e1ac1ceb455d10deb" + integrity sha512-PMdPg8ft/zdAqhuDvMLzDlwXEp01qAh+eOXciKElDrh1zuQM/Hwjg0G3sKiwKInbpHJcz6lbTJCpEjmvMGlXpg== dependencies: - "@docusaurus/types" "2.0.0-beta.7" + "@docusaurus/types" "2.0.0-beta.8" "@mdx-js/runtime" "^1.6.22" "@types/github-slugger" "^1.3.0" chalk "^4.1.2" @@ -1792,9 +1792,9 @@ integrity sha512-J/rMZa7RqiH/rT29TEVZO4nBoDP9XJOjnbbIofg7GQKs4JIduEO3WLpte+6WeUz/TcrXKlY+bM7FYrp8yFB+3g== "@types/glob@^7.1.1": - version "7.1.4" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.4.tgz#ea59e21d2ee5c517914cb4bc8e4153b99e566672" - integrity sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA== + version "7.2.0" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== dependencies: "@types/minimatch" "*" "@types/node" "*" @@ -1834,9 +1834,9 @@ integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== "@types/node@*": - version "16.11.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.0.tgz#4b95f2327bacd1ef8f08d8ceda193039c5d7f52e" - integrity sha512-8MLkBIYQMuhRBQzGN9875bYsOhPnf/0rgXGo66S2FemHkhbn9qtsz9ywV1iCG+vbjigE4WUNVvw37Dx+L0qsPg== + version "16.11.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.2.tgz#31c249c136c3f9b35d4b60fb8e50e01a1f0cc9a5" + integrity sha512-w34LtBB0OkDTs19FQHXy4Ig/TOXI4zqvXS2Kk1PAsRKZ0I+nik7LlMYxckW0tSNGtvWmzB+mrCTbuEjuB9DVsw== "@types/node@^15.0.1": version "15.14.9" @@ -1905,9 +1905,9 @@ "@types/react" "*" "@types/react@*": - version "17.0.30" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.30.tgz#2f8e6f5ab6415c091cc5e571942ee9064b17609e" - integrity sha512-3Dt/A8gd3TCXi2aRe84y7cK1K8G+N9CZRDG8kDGguOKa0kf/ZkSwTmVIDPsm/KbQOVMaDJXwhBtuOXxqwdpWVg== + version "17.0.31" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.31.tgz#fe05ebf91ff3ae35bb6b13f6c1b461db8089dff8" + integrity sha512-MQSR5EL4JZtdWRvqDgz9kXhSDDoy2zMTYyg7UhP+FZ5ttUOocWyxiqFJiI57sUG0BtaEX7WDXYQlkCYkb3X9vQ== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -2171,31 +2171,31 @@ ajv@^6.1.0, ajv@^6.12.4, ajv@^6.12.5: uri-js "^4.2.2" algoliasearch-helper@^3.5.5: - version "3.6.1" - resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.6.1.tgz#b2964de29f69d8266d714e74cf097c06447ffaf2" - integrity sha512-uJkB/t/bU0tYE88ZoJJCGCNSD+9mTdsp/Yp5dG+qviIBYoUUZfKWwFcZBhW+eiqpO+EadTu7Xj3RYYnrvBOUyA== + version "3.6.2" + resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.6.2.tgz#45e19b12589cfa0c611b573287f65266ea2cc14a" + integrity sha512-Xx0NOA6k4ySn+R2l3UMSONAaMkyfmrZ3AP1geEMo32MxDJQJesZABZYsldO9fa6FKQxH91afhi4hO1G0Zc2opg== dependencies: events "^1.1.1" algoliasearch@^4.0.0, algoliasearch@^4.10.5: - version "4.10.5" - resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.10.5.tgz#1faf34a3ae5ac3bef27282eb141251c70c7f5db2" - integrity sha512-KmH2XkiN+8FxhND4nWFbQDkIoU6g2OjfeU9kIv4Lb+EiOOs3Gpp7jvd+JnatsCisAZsnWQdjd7zVlW7I/85QvQ== - dependencies: - "@algolia/cache-browser-local-storage" "4.10.5" - "@algolia/cache-common" "4.10.5" - "@algolia/cache-in-memory" "4.10.5" - "@algolia/client-account" "4.10.5" - "@algolia/client-analytics" "4.10.5" - "@algolia/client-common" "4.10.5" - "@algolia/client-personalization" "4.10.5" - "@algolia/client-search" "4.10.5" - "@algolia/logger-common" "4.10.5" - "@algolia/logger-console" "4.10.5" - "@algolia/requester-browser-xhr" "4.10.5" - "@algolia/requester-common" "4.10.5" - "@algolia/requester-node-http" "4.10.5" - "@algolia/transporter" "4.10.5" + version "4.11.0" + resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.11.0.tgz#234befb3ac355c094077f0edf3777240b1ee013c" + integrity sha512-IXRj8kAP2WrMmj+eoPqPc6P7Ncq1yZkFiyDrjTBObV1ADNL8Z/KdZ+dWC5MmYcBLAbcB/mMCpak5N/D1UIZvsA== + dependencies: + "@algolia/cache-browser-local-storage" "4.11.0" + "@algolia/cache-common" "4.11.0" + "@algolia/cache-in-memory" "4.11.0" + "@algolia/client-account" "4.11.0" + "@algolia/client-analytics" "4.11.0" + "@algolia/client-common" "4.11.0" + "@algolia/client-personalization" "4.11.0" + "@algolia/client-search" "4.11.0" + "@algolia/logger-common" "4.11.0" + "@algolia/logger-console" "4.11.0" + "@algolia/requester-browser-xhr" "4.11.0" + "@algolia/requester-common" "4.11.0" + "@algolia/requester-node-http" "4.11.0" + "@algolia/transporter" "4.11.0" alphanum-sort@^1.0.2: version "1.0.2" @@ -2387,9 +2387,9 @@ axios@^0.21.1: follow-redirects "^1.14.0" babel-loader@^8.2.2: - version "8.2.2" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81" - integrity sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g== + version "8.2.3" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.3.tgz#8986b40f1a64cacfcb4b8429320085ef68b1342d" + integrity sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw== dependencies: find-cache-dir "^3.3.1" loader-utils "^1.4.0" @@ -2716,9 +2716,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.30001264, caniuse-lite@^1.0.30001265: - version "1.0.30001267" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001267.tgz#b1cf2937175afc0570e4615fc2d2f9069fa0ed30" - integrity sha512-r1mjTzAuJ9W8cPBGbbus8E0SKcUP7gn03R14Wk8FlAlqhH9hroy9nLqmpuXlfKEw/oILW+FGz47ipXV2O7x8lg== + version "1.0.30001270" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001270.tgz#cc9c37a4ec5c1a8d616fc7bace902bb053b0cdea" + integrity sha512-TcIC7AyNWXhcOmv2KftOl1ShFAaHQYcB/EPL/hEyMrcS7ZX0/DvV1aoy6BzV0+16wTpoAyTMGDNAJfSqS/rz7A== ccount@^1.0.0, ccount@^1.0.3: version "1.1.0" @@ -2839,9 +2839,9 @@ class-utils@^0.3.5: static-extend "^0.1.1" clean-css@^5.1.5: - version "5.2.1" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.2.1.tgz#e5bdb1bee5f332c67e98cb6181251d4f88c0a6ab" - integrity sha512-ooQCa1/70oRfVdUUGjKpbHuxgMgm8BsDT5EBqBGvPxMoRoGXf4PNx5mMnkjzJ9Ptx4vvmDdha0QVh86QtYIk1g== + version "5.2.2" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.2.2.tgz#d3a7c6ee2511011e051719838bdcf8314dc4548d" + integrity sha512-/eR8ru5zyxKzpBLv9YZvMXgTSSQn7AdkMItMYynsFgGwTveCRVam9IUPFloE85B4vAIj05IuKmmEoV7/AQjT0w== dependencies: source-map "~0.6.0" @@ -2932,9 +2932,9 @@ color-name@~1.1.4: integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== colord@^2.0.1, colord@^2.6: - version "2.8.0" - resolved "https://registry.yarnpkg.com/colord/-/colord-2.8.0.tgz#64fb7aa03de7652b5a39eee50271a104c2783b12" - integrity sha512-kNkVV4KFta3TYQv0bzs4xNwLaeag261pxgzGQSh4cQ1rEhYjcTJfFRP0SDlbhLONg0eSoLzrDd79PosjbltufA== + version "2.9.1" + resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.1.tgz#c961ea0efeb57c9f0f4834458f26cb9cc4a3f90e" + integrity sha512-4LBMSt09vR0uLnPVkOUBnmxgoaeN4ewRbx801wY/bXcltXfpR/G46OdWn96XpYmCWuYvO46aBZP4NgX8HpNAcw== combine-promises@^1.1.0: version "1.1.0" @@ -3639,9 +3639,9 @@ ee-first@1.1.1: integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= electron-to-chromium@^1.3.564, electron-to-chromium@^1.3.867: - version "1.3.871" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.871.tgz#6e87365fd72037a6c898fb46050ad4be3ac9ef62" - integrity sha512-qcLvDUPf8DSIMWarHT2ptgcqrYg62n3vPA7vhrOF24d8UNzbUBaHu2CySiENR3nEDzYgaN60071t0F6KLYMQ7Q== + version "1.3.876" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.876.tgz#fe6f65c9740406f4aa69f10faa8e1d79b81bdf34" + integrity sha512-a6LR4738psrubCtGx5HxM/gNlrIsh4eFTNnokgOqvQo81GWd07lLcOjITkAXn2y4lIp18vgS+DGnehj+/oEAxQ== emoji-regex@^7.0.1: version "7.0.3" @@ -4644,7 +4644,7 @@ html-void-elements@^1.0.0: resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483" integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== -html-webpack-plugin@^5.3.2: +html-webpack-plugin@^5.4.0: version "5.4.0" resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.4.0.tgz#d016cd9594be5c243bb5c12287af43babbe1c094" integrity sha512-cSUdckNOIqKc0nOrCJG7zkvzEIUcXjzEiVbKdEdIzW3BD5T4xPK6boV1mrTrPDZiL+aAr/j45eqbNL1akU2ZRA== @@ -5281,9 +5281,9 @@ isobject@^3.0.0, isobject@^3.0.1: integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= jest-worker@^27.0.2, jest-worker@^27.0.6: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.2.5.tgz#ed42865661959488aa020e8a325df010597c36d4" - integrity sha512-HTjEPZtcNKZ4LnhSp02NEH4vE+5OpJ0EsOWYvGQpHgUMLngydESAAMH5Wd/asPf29+XUDQZszxpLg1BkIIA2aw== + version "27.3.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.3.1.tgz#0def7feae5b8042be38479799aeb7b5facac24b2" + integrity sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g== dependencies: "@types/node" "*" merge-stream "^2.0.0" @@ -5907,7 +5907,7 @@ nanocolors@^0.1.12: resolved "https://registry.yarnpkg.com/nanocolors/-/nanocolors-0.1.12.tgz#8577482c58cbd7b5bb1681db4cf48f11a87fd5f6" integrity sha512-2nMHqg1x5PU+unxX7PGY7AuYxl2qDx7PSrTRjizr8sxdd3l/3hBuWWaki62qmtYm2U5i4Z5E7GbjlyDFhs9/EQ== -nanoid@^3.1.28: +nanoid@^3.1.30: version "3.1.30" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.30.tgz#63f93cc548d2a113dc5dfbc63bfa09e2b9b64362" integrity sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ== @@ -5975,9 +5975,9 @@ node-releases@^1.1.61: integrity sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ== node-releases@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.0.tgz#67dc74903100a7deb044037b8a2e5f453bb05400" - integrity sha512-aA87l0flFYMzCHpTM3DERFSYxc6lv/BltdbRTOMZuxZ0cwZCD3mejE5n9vLhSJCN++/eOqr77G1IO5uXxlQYWA== + version "2.0.1" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" + integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== normalize-path@^2.1.1: version "2.1.1" @@ -6747,12 +6747,12 @@ postcss-zindex@^5.0.1: integrity sha512-nwgtJJys+XmmSGoYCcgkf/VczP8Mp/0OfSv3v0+fw0uABY4yxw+eFs0Xp9nAZHIKnS5j+e9ywQ+RD+ONyvl5pA== postcss@^8.2.15, postcss@^8.2.4, postcss@^8.3.5, postcss@^8.3.7: - version "8.3.9" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.9.tgz#98754caa06c4ee9eb59cc48bd073bb6bd3437c31" - integrity sha512-f/ZFyAKh9Dnqytx5X62jgjhhzttjZS7hMsohcI7HEI5tjELX/HxCy3EFhsRxyzGvrzFF+82XPvCS8T9TFleVJw== + version "8.3.11" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.11.tgz#c3beca7ea811cd5e1c4a3ec6d2e7599ef1f8f858" + integrity sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA== dependencies: - nanoid "^3.1.28" - picocolors "^0.2.1" + nanoid "^3.1.30" + picocolors "^1.0.0" source-map-js "^0.6.2" prepend-http@^2.0.0: @@ -7450,9 +7450,9 @@ rtl-detect@^1.0.4: integrity sha512-EBR4I2VDSSYr7PkBmFy04uhycIpDKp+21p/jARYXlCSjQksTBQcJ0HFUPOO79EPPH5JS6VAhiIQbycf0O3JAxQ== rtlcss@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/rtlcss/-/rtlcss-3.3.0.tgz#fa9d29b071a863fe959704da6a93de3076aeeca4" - integrity sha512-XZ2KEatH2nU5yPlts1Wu8SGIuZ3ndN025HQX5MqtUCUiOn5WkCDbcpJ2VJWjpuFmM2cUTQ1xtH21fhMCSseI5A== + version "3.4.0" + resolved "https://registry.yarnpkg.com/rtlcss/-/rtlcss-3.4.0.tgz#81c5cab77050ea0d880147b8a78943330d4d1813" + integrity sha512-pOSLxwmJTjqcnlFIezpCGyhRoPKIwXj78wJfBI8iZw7gZGVzjT/T5QcaimRComsPanMSV0hzmI5o+oWIP3nNBA== dependencies: chalk "^4.1.0" find-up "^5.0.0" @@ -8775,9 +8775,9 @@ webpack-sources@^3.2.0: integrity sha512-t6BMVLQ0AkjBOoRTZgqrWm7xbXMBzD+XDq2EZ96+vMfn3qKgsvdXZhbPZ4ElUOpdv4u+iiGe+w3+J75iy/bYGA== webpack@^5.40.0: - version "5.58.2" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.58.2.tgz#6b4af12fc9bd5cbedc00dc0a2fc2b9592db16b44" - integrity sha512-3S6e9Vo1W2ijk4F4PPWRIu6D/uGgqaPmqw+av3W3jLDujuNkdxX5h5c+RQ6GkjVR+WwIPOfgY8av+j5j4tMqJw== + version "5.59.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.59.1.tgz#60c77e9aad796252153d4d7ab6b2d4c11f0e548c" + integrity sha512-I01IQV9K96FlpXX3V0L4nvd7gb0r7thfuu1IfT2P4uOHOA77nKARAKDYGe/tScSHKnffNIyQhLC8kRXzY4KEHQ== dependencies: "@types/eslint-scope" "^3.7.0" "@types/estree" "^0.0.50" diff --git a/examples/classic/package.json b/examples/classic/package.json index f62543f8702d..33719fd4766e 100644 --- a/examples/classic/package.json +++ b/examples/classic/package.json @@ -15,8 +15,8 @@ "dev": "docusaurus start" }, "dependencies": { - "@docusaurus/core": "2.0.0-beta.7", - "@docusaurus/preset-classic": "2.0.0-beta.7", + "@docusaurus/core": "2.0.0-beta.8", + "@docusaurus/preset-classic": "2.0.0-beta.8", "@mdx-js/react": "^1.6.21", "@svgr/webpack": "^5.5.0", "clsx": "^1.1.1", diff --git a/examples/classic/yarn.lock b/examples/classic/yarn.lock index 6d17c66546df..81f372f06783 100644 --- a/examples/classic/yarn.lock +++ b/examples/classic/yarn.lock @@ -21,109 +21,109 @@ resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.2.2.tgz#ff25dc308f2a296b2b9b325f1e3b57498eea3e0c" integrity sha512-mLTl7d2C1xVVazHt/bqh9EE/u2lbp5YOxLDdcjILXmUqOs5HH1D4SuySblXaQG1uf28FhTqMGp35qE5wJQnqAw== -"@algolia/cache-browser-local-storage@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.10.5.tgz#961cf07cf59955de17af13bd74f7806bd2119553" - integrity sha512-cfX2rEKOtuuljcGI5DMDHClwZHdDqd2nT2Ohsc8aHtBiz6bUxKVyIqxr2gaC6tU8AgPtrTVBzcxCA+UavXpKww== - dependencies: - "@algolia/cache-common" "4.10.5" - -"@algolia/cache-common@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.10.5.tgz#9510419e9dfb6d8814582c6b20615196f213a9d6" - integrity sha512-1mClwdmTHll+OnHkG+yeRoFM17kSxDs4qXkjf6rNZhoZGXDvfYLy3YcZ1FX4Kyz0DJv8aroq5RYGBDsWkHj6Tw== - -"@algolia/cache-in-memory@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.10.5.tgz#de9331cb86734bf7f7624063cdaa639e43509be1" - integrity sha512-+ciQnfIGi5wjMk02XhEY8fmy2pzy+oY1nIIfu8LBOglaSipCRAtjk6WhHc7/KIbXPiYzIwuDbM2K1+YOwSGjwA== - dependencies: - "@algolia/cache-common" "4.10.5" - -"@algolia/client-account@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.10.5.tgz#82f7c330fc5f0625b5b559afe9c6b1aa6722b6cf" - integrity sha512-I9UkSS2glXm7RBZYZIALjBMmXSQbw/fI/djPcBHxiwXIheNIlqIFl2SNPkvihpPF979BSkzjqdJNRPhE1vku3Q== - dependencies: - "@algolia/client-common" "4.10.5" - "@algolia/client-search" "4.10.5" - "@algolia/transporter" "4.10.5" - -"@algolia/client-analytics@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.10.5.tgz#269e47c9de7e53e9e05e4a2d3c380607c3d2631f" - integrity sha512-h2owwJSkovPxzc+xIsjY1pMl0gj+jdVwP9rcnGjlaTY2fqHbSLrR9yvGyyr6305LvTppxsQnfAbRdE/5Z3eFxw== - dependencies: - "@algolia/client-common" "4.10.5" - "@algolia/client-search" "4.10.5" - "@algolia/requester-common" "4.10.5" - "@algolia/transporter" "4.10.5" - -"@algolia/client-common@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.10.5.tgz#a7d0833796a9a2da68be16be76b6dc3962bf2f18" - integrity sha512-21FAvIai5qm8DVmZHm2Gp4LssQ/a0nWwMchAx+1hIRj1TX7OcdW6oZDPyZ8asQdvTtK7rStQrRnD8a95SCUnzA== - dependencies: - "@algolia/requester-common" "4.10.5" - "@algolia/transporter" "4.10.5" - -"@algolia/client-personalization@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.10.5.tgz#78a8fb8161bdbeaa66b400b3283640ef689e155b" - integrity sha512-nH+IyFKBi8tCyzGOanJTbXC5t4dspSovX3+ABfmwKWUYllYzmiQNFUadpb3qo+MLA3jFx5IwBesjneN6dD5o3w== - dependencies: - "@algolia/client-common" "4.10.5" - "@algolia/requester-common" "4.10.5" - "@algolia/transporter" "4.10.5" - -"@algolia/client-search@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.10.5.tgz#47907232a3e4ecf2aa4459b8de17242afd88147c" - integrity sha512-1eQFMz9uodrc5OM+9HeT+hHcfR1E1AsgFWXwyJ9Q3xejA2c1c4eObGgOgC9ZoshuHHdptaTN1m3rexqAxXRDBg== - dependencies: - "@algolia/client-common" "4.10.5" - "@algolia/requester-common" "4.10.5" - "@algolia/transporter" "4.10.5" - -"@algolia/logger-common@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.10.5.tgz#cf807107e755ad4a72c5afc787e968ff1196f1cc" - integrity sha512-gRJo9zt1UYP4k3woEmZm4iuEBIQd/FrArIsjzsL/b+ihNoOqIxZKTSuGFU4UUZOEhvmxDReiA4gzvQXG+TMTmA== - -"@algolia/logger-console@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.10.5.tgz#f961a7a7c6718c3f3842fb9b522d47b03b9df8ad" - integrity sha512-4WfIbn4253EDU12u9UiYvz+QTvAXDv39mKNg9xSoMCjKE5szcQxfcSczw2byc6pYhahOJ9PmxPBfs1doqsdTKQ== - dependencies: - "@algolia/logger-common" "4.10.5" - -"@algolia/requester-browser-xhr@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.10.5.tgz#7063e3bc6d9c72bc535e1794352eddf47459dfe6" - integrity sha512-53/MURQEqtK+bGdfq4ITSPwTh5hnADU99qzvpAINGQveUFNSFGERipJxHjTJjIrjFz3vxj5kKwjtxDnU6ygO9g== - dependencies: - "@algolia/requester-common" "4.10.5" - -"@algolia/requester-common@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.10.5.tgz#52abfbf10b743d26afd3ce20f62771bc393ff4f0" - integrity sha512-UkVa1Oyuj6NPiAEt5ZvrbVopEv1m/mKqjs40KLB+dvfZnNcj+9Fry4Oxnt15HMy/HLORXsx4UwcthAvBuOXE9Q== - -"@algolia/requester-node-http@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.10.5.tgz#db7e9ece1fda1b71a28c8e623666aaa096320b5c" - integrity sha512-aNEKVKXL4fiiC+bS7yJwAHdxln81ieBwY3tsMCtM4zF9f5KwCzY2OtN4WKEZa5AAADVcghSAUdyjs4AcGUlO5w== - dependencies: - "@algolia/requester-common" "4.10.5" - -"@algolia/transporter@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.10.5.tgz#9354989f12af3e2ce7d3109a94f519d467a960e0" - integrity sha512-F8DLkmIlvCoMwSCZA3FKHtmdjH3o5clbt0pi2ktFStVNpC6ZDmY307HcK619bKP5xW6h8sVJhcvrLB775D2cyA== - dependencies: - "@algolia/cache-common" "4.10.5" - "@algolia/logger-common" "4.10.5" - "@algolia/requester-common" "4.10.5" +"@algolia/cache-browser-local-storage@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.11.0.tgz#1c168add00b398a860db6c86039e33b2843a9425" + integrity sha512-4sr9vHIG1fVA9dONagdzhsI/6M5mjs/qOe2xUP0yBmwsTsuwiZq3+Xu6D3dsxsuFetcJgC6ydQoCW8b7fDJHYQ== + dependencies: + "@algolia/cache-common" "4.11.0" + +"@algolia/cache-common@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.11.0.tgz#066fe6d58b18e4b028dbef9bb8de07c5e22a3594" + integrity sha512-lODcJRuPXqf+6mp0h6bOxPMlbNoyn3VfjBVcQh70EDP0/xExZbkpecgHyyZK4kWg+evu+mmgvTK3GVHnet/xKw== + +"@algolia/cache-in-memory@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.11.0.tgz#763c8cb655e6fd2261588e04214fca0959ac07c1" + integrity sha512-aBz+stMSTBOBaBEQ43zJXz2DnwS7fL6dR0e2myehAgtfAWlWwLDHruc/98VOy1ZAcBk1blE2LCU02bT5HekGxQ== + dependencies: + "@algolia/cache-common" "4.11.0" + +"@algolia/client-account@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.11.0.tgz#67fadd3b0802b013ebaaa4b47bb7babae892374e" + integrity sha512-jwmFBoUSzoMwMqgD3PmzFJV/d19p1RJXB6C1ADz4ju4mU7rkaQLtqyZroQpheLoU5s5Tilmn/T8/0U2XLoJCRQ== + dependencies: + "@algolia/client-common" "4.11.0" + "@algolia/client-search" "4.11.0" + "@algolia/transporter" "4.11.0" + +"@algolia/client-analytics@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.11.0.tgz#cbdc8128205e2da749cafc79e54708d14c413974" + integrity sha512-v5U9585aeEdYml7JqggHAj3E5CQ+jPwGVztPVhakBk8H/cmLyPS2g8wvmIbaEZCHmWn4TqFj3EBHVYxAl36fSA== + dependencies: + "@algolia/client-common" "4.11.0" + "@algolia/client-search" "4.11.0" + "@algolia/requester-common" "4.11.0" + "@algolia/transporter" "4.11.0" + +"@algolia/client-common@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.11.0.tgz#9a2d1f6f8eaad25ba5d6d4ce307ba5bd84e6f999" + integrity sha512-Qy+F+TZq12kc7tgfC+FM3RvYH/Ati7sUiUv/LkvlxFwNwNPwWGoZO81AzVSareXT/ksDDrabD4mHbdTbBPTRmQ== + dependencies: + "@algolia/requester-common" "4.11.0" + "@algolia/transporter" "4.11.0" + +"@algolia/client-personalization@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.11.0.tgz#d3bf0e760f85df876b4baf5b81996f0aa3a59940" + integrity sha512-mI+X5IKiijHAzf9fy8VSl/GTT67dzFDnJ0QAM8D9cMPevnfX4U72HRln3Mjd0xEaYUOGve8TK/fMg7d3Z5yG6g== + dependencies: + "@algolia/client-common" "4.11.0" + "@algolia/requester-common" "4.11.0" + "@algolia/transporter" "4.11.0" + +"@algolia/client-search@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.11.0.tgz#c1105d715a2a04ba27231eca86f5d6620f68f4ae" + integrity sha512-iovPLc5YgiXBdw2qMhU65sINgo9umWbHFzInxoNErWnYoTQWfXsW6P54/NlKx5uscoLVjSf+5RUWwFu5BX+lpw== + dependencies: + "@algolia/client-common" "4.11.0" + "@algolia/requester-common" "4.11.0" + "@algolia/transporter" "4.11.0" + +"@algolia/logger-common@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.11.0.tgz#bac1c2d59d29dee378b57412c8edd435b97de663" + integrity sha512-pRMJFeOY8hoWKIxWuGHIrqnEKN/kqKh7UilDffG/+PeEGxBuku+Wq5CfdTFG0C9ewUvn8mAJn5BhYA5k8y0Jqg== + +"@algolia/logger-console@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.11.0.tgz#ced19e3abb22eb782ed5268d51efb5aa9ef109ef" + integrity sha512-wXztMk0a3VbNmYP8Kpc+F7ekuvaqZmozM2eTLok0XIshpAeZ/NJDHDffXK2Pw+NF0wmHqurptLYwKoikjBYvhQ== + dependencies: + "@algolia/logger-common" "4.11.0" + +"@algolia/requester-browser-xhr@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.11.0.tgz#f9e1ad56f185432aa8dde8cad53ae271fd5d6181" + integrity sha512-Fp3SfDihAAFR8bllg8P5ouWi3+qpEVN5e7hrtVIYldKBOuI/qFv80Zv/3/AMKNJQRYglS4zWyPuqrXm58nz6KA== + dependencies: + "@algolia/requester-common" "4.11.0" + +"@algolia/requester-common@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.11.0.tgz#d16de98d3ff72434bac39e4d915eab08035946a9" + integrity sha512-+cZGe/9fuYgGuxjaBC+xTGBkK7OIYdfapxhfvEf03dviLMPmhmVYFJtJlzAjQ2YmGDJpHrGgAYj3i/fbs8yhiA== + +"@algolia/requester-node-http@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.11.0.tgz#beb2b6b68d5f4ce15aec80ede623f0ac96991368" + integrity sha512-qJIk9SHRFkKDi6dMT9hba8X1J1z92T5AZIgl+tsApjTGIRQXJLTIm+0q4yOefokfu4CoxYwRZ9QAq+ouGwfeOg== + dependencies: + "@algolia/requester-common" "4.11.0" + +"@algolia/transporter@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.11.0.tgz#a8de3c173093ceceb02b26b577395ce3b3d4b96f" + integrity sha512-k4dyxiaEfYpw4UqybK9q7lrFzehygo6KV3OCYJMMdX0IMWV0m4DXdU27c1zYRYtthaFYaBzGF4Kjcl8p8vxCKw== + dependencies: + "@algolia/cache-common" "4.11.0" + "@algolia/logger-common" "4.11.0" + "@algolia/requester-common" "4.11.0" "@babel/code-frame@7.10.4": version "7.10.4" @@ -1067,9 +1067,9 @@ semver "^6.3.0" "@babel/preset-modules@^0.1.4": - version "0.1.4" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" - integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== + version "0.1.5" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" + integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" @@ -1145,25 +1145,25 @@ "@babel/helper-validator-identifier" "^7.14.9" to-fast-properties "^2.0.0" -"@docsearch/css@3.0.0-alpha.40": - version "3.0.0-alpha.40" - resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.0.0-alpha.40.tgz#c37bd7b03f4c30a6ea7a19b87fe71880d2e8b22a" - integrity sha512-PrOTPgJMl+Iji1zOH0+J0PEDMriJ1teGxbgll7o4h8JrvJW6sJGqQw7/bLW7enWiFaxbJMK76w1yyPNLFHV7Qg== +"@docsearch/css@3.0.0-alpha.41": + version "3.0.0-alpha.41" + resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.0.0-alpha.41.tgz#c5c8e803541bd157ad86e764c2c1e9f1b5a68592" + integrity sha512-AP1jqcF/9jCrm4s0lcES3QAtHueyipKjd14L/pguk0CZYK7uI7hC0FWodmRmrgK3/HST9jiHa1waUMR6ZYedlQ== "@docsearch/react@^3.0.0-alpha.39": - version "3.0.0-alpha.40" - resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-3.0.0-alpha.40.tgz#d912b4bb7281cb0faf65590c9cf022aa2a13d823" - integrity sha512-aKxnu7sgpP1R7jtgOV/pZdJEHXx6Ts+jnS9U/ejSUS2BMUpwQI5SA3oLs1BA5TA9kIViJ5E+rrjh0VsbcsJ6sQ== + version "3.0.0-alpha.41" + resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-3.0.0-alpha.41.tgz#07e85a664e85f251ce3d13153abce65a4d5997ab" + integrity sha512-UL0Gdter/NUea04lGuBGH0GzQ2/2q/hBfn7Rjo71rRKbjtfkQCM92leJ9tZ+9j9sFLoyuHb9XMm/B8vCjWwTEg== dependencies: "@algolia/autocomplete-core" "1.2.2" "@algolia/autocomplete-preset-algolia" "1.2.2" - "@docsearch/css" "3.0.0-alpha.40" + "@docsearch/css" "3.0.0-alpha.41" algoliasearch "^4.0.0" -"@docusaurus/core@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.0.0-beta.7.tgz#cdfcb57c6737c51122e6b1c009f58cc5570f896b" - integrity sha512-owJDhldpimQBOCr6YbGJiQRQufK3A9zmA3lyDnbtipAGV+sDRQNiYKUDtwnbESCchA4vhKj7suvcLvA4sSEVIQ== +"@docusaurus/core@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.0.0-beta.8.tgz#7e24547a26e34e4d288f19883e08ac29b7946325" + integrity sha512-KVbZoOCxQKvbX1RT8qrHAsPVYPGDnXFevTeJbZW1XQb0OPv7oh5nijXJvzNeGupXP561BByrsdHT7IxM/hT0CQ== dependencies: "@babel/core" "^7.12.16" "@babel/generator" "^7.12.15" @@ -1175,12 +1175,12 @@ "@babel/runtime" "^7.15.4" "@babel/runtime-corejs3" "^7.15.4" "@babel/traverse" "^7.12.13" - "@docusaurus/cssnano-preset" "2.0.0-beta.7" + "@docusaurus/cssnano-preset" "2.0.0-beta.8" "@docusaurus/react-loadable" "5.5.0" - "@docusaurus/types" "2.0.0-beta.7" - "@docusaurus/utils" "2.0.0-beta.7" - "@docusaurus/utils-common" "2.0.0-beta.7" - "@docusaurus/utils-validation" "2.0.0-beta.7" + "@docusaurus/types" "2.0.0-beta.8" + "@docusaurus/utils" "2.0.0-beta.8" + "@docusaurus/utils-common" "2.0.0-beta.8" + "@docusaurus/utils-validation" "2.0.0-beta.8" "@slorber/static-site-generator-webpack-plugin" "^4.0.0" "@svgr/webpack" "^5.5.0" autoprefixer "^10.3.5" @@ -1207,7 +1207,7 @@ globby "^11.0.2" html-minifier-terser "^6.0.2" html-tags "^3.1.0" - html-webpack-plugin "^5.3.2" + html-webpack-plugin "^5.4.0" import-fresh "^3.3.0" is-root "^2.1.0" leven "^3.1.0" @@ -1245,24 +1245,24 @@ webpack-merge "^5.8.0" webpackbar "^5.0.0-3" -"@docusaurus/cssnano-preset@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.0-beta.7.tgz#d39fc576f689dc74aa0fd0812cebd96c9ce38890" - integrity sha512-S1vMCRpIpxWbETcQ/7KzZmFct7WYM2IN1FQSHqCxF1UmAfDH5wwlxUhCe8aQu00f/JV/0Oy/HMOOCJ3cDnLjgw== +"@docusaurus/cssnano-preset@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.0-beta.8.tgz#0e83ad9e70e64709c23aa8cc565ec43d135e9abc" + integrity sha512-RXApzIEaTsTSpz4YV86DBXaFvXH3J4SNIWba/AFSoPBviODjxIu+7TRRs9eh8vUAB32nVBtcdHmRb25b662szQ== dependencies: cssnano-preset-advanced "^5.1.4" postcss "^8.3.7" postcss-sort-media-queries "^4.1.0" -"@docusaurus/mdx-loader@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-beta.7.tgz#a86ca29fd393f01869e671afaaf80d41d728ac49" - integrity sha512-AGL+JDQy/mcJ9IEbCdVDdvqCBvbvG8EIomtopxpxE307gpC3QjQT4bLyUyYBIESDEoniwNsE0R4cABqp+zoIoA== +"@docusaurus/mdx-loader@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-beta.8.tgz#c64a81988975ea5ed969e8a164136a2aaa035da1" + integrity sha512-unVimkaAGgkt+d/QgQPwm8FaRZVB0jew6Q902KSl1Hx0yWI/x5LKWY/y4kCFUBv7rCsuSqyjoZwggD+evw//bg== dependencies: "@babel/parser" "^7.12.16" "@babel/traverse" "^7.12.13" - "@docusaurus/core" "2.0.0-beta.7" - "@docusaurus/utils" "2.0.0-beta.7" + "@docusaurus/core" "2.0.0-beta.8" + "@docusaurus/utils" "2.0.0-beta.8" "@mdx-js/mdx" "^1.6.21" "@mdx-js/react" "^1.6.21" chalk "^4.1.2" @@ -1278,16 +1278,16 @@ url-loader "^4.1.1" webpack "^5.40.0" -"@docusaurus/plugin-content-blog@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-beta.7.tgz#f40d9314f2ea07e0cea75e0eeaae79a259f8c937" - integrity sha512-Pz4peB7I38aCMogdqiDhp43ip22GtSUWSewMRwZFd5poxvhShAb7/TUOP85p4bHfTmEWPcsFxQkDBMiv2nFkbw== +"@docusaurus/plugin-content-blog@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-beta.8.tgz#f7405b04cbde4cff6ea9aaf281f171f147133cd8" + integrity sha512-sUAk3MZrZL7YMp66h+pIy0rOQYFovB8kh9LbDdTXREDyTViCygfkr/6sFPRWpoFzws/kbXoRCPIPcrzcYj+/Pw== dependencies: - "@docusaurus/core" "2.0.0-beta.7" - "@docusaurus/mdx-loader" "2.0.0-beta.7" - "@docusaurus/types" "2.0.0-beta.7" - "@docusaurus/utils" "2.0.0-beta.7" - "@docusaurus/utils-validation" "2.0.0-beta.7" + "@docusaurus/core" "2.0.0-beta.8" + "@docusaurus/mdx-loader" "2.0.0-beta.8" + "@docusaurus/types" "2.0.0-beta.8" + "@docusaurus/utils" "2.0.0-beta.8" + "@docusaurus/utils-validation" "2.0.0-beta.8" chalk "^4.1.2" escape-string-regexp "^4.0.0" feed "^4.2.2" @@ -1302,16 +1302,16 @@ utility-types "^3.10.0" webpack "^5.40.0" -"@docusaurus/plugin-content-docs@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-beta.7.tgz#546713a2ae773266d5fa385f8f25e9f2438194c9" - integrity sha512-O8Ky+xqiL4+LGIa2hT5WMknbbpw9Q0GaOfnPgX1XTBUwWFlwadMX1rMb4Vb1ki7qhqV1clVCcWZ2EdilkMqhUg== +"@docusaurus/plugin-content-docs@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-beta.8.tgz#b248689ea85201a38c21e285819f400820c1c936" + integrity sha512-uE8mI5zQFcwtxAbycxv6G7ALtqKgNwd4URuJhv4VQ2DhR5uta/yd9IK8BPduwrbYLWZuGf2uO3jVsPbgNBZ0RQ== dependencies: - "@docusaurus/core" "2.0.0-beta.7" - "@docusaurus/mdx-loader" "2.0.0-beta.7" - "@docusaurus/types" "2.0.0-beta.7" - "@docusaurus/utils" "2.0.0-beta.7" - "@docusaurus/utils-validation" "2.0.0-beta.7" + "@docusaurus/core" "2.0.0-beta.8" + "@docusaurus/mdx-loader" "2.0.0-beta.8" + "@docusaurus/types" "2.0.0-beta.8" + "@docusaurus/utils" "2.0.0-beta.8" + "@docusaurus/utils-validation" "2.0.0-beta.8" chalk "^4.1.2" combine-promises "^1.1.0" escape-string-regexp "^4.0.0" @@ -1328,77 +1328,77 @@ utility-types "^3.10.0" webpack "^5.40.0" -"@docusaurus/plugin-content-pages@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-beta.7.tgz#9167c5a9924d284b076d261b08b19b21ac8836fd" - integrity sha512-5NKtexqh5Ug75xDUQ8ZhgTZ5qDQKF+5/MvOsDdV6OPPq39Rc54RnXyOBpn2hmG4sOkITSav0Rx9WdSwXQ1S56w== +"@docusaurus/plugin-content-pages@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-beta.8.tgz#fdc6687917091ad5f62b332feb6add9c29b6b169" + integrity sha512-NcYKwwBhOR1eH5FZpktaRtBYDsT8vnwR2mAYqS4Oyl7EeyYNKb1ykMnBn5tDktMuRaLRy1flq5u79Nc5oscHIQ== dependencies: - "@docusaurus/core" "2.0.0-beta.7" - "@docusaurus/mdx-loader" "2.0.0-beta.7" - "@docusaurus/types" "2.0.0-beta.7" - "@docusaurus/utils" "2.0.0-beta.7" - "@docusaurus/utils-validation" "2.0.0-beta.7" + "@docusaurus/core" "2.0.0-beta.8" + "@docusaurus/mdx-loader" "2.0.0-beta.8" + "@docusaurus/types" "2.0.0-beta.8" + "@docusaurus/utils" "2.0.0-beta.8" + "@docusaurus/utils-validation" "2.0.0-beta.8" globby "^11.0.2" lodash "^4.17.20" remark-admonitions "^1.2.1" tslib "^2.3.1" webpack "^5.40.0" -"@docusaurus/plugin-debug@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.0.0-beta.7.tgz#eb8f9b1297bbc82e9541c6ad528643e0766b1953" - integrity sha512-yClzF4ATBclrnBf5hz5YlFmK7Ds63suWf9Sv6VaLsrW4nnP/TinpbBfXSPdbM1zqaDqzNGcYabm0jbA2bstXJA== +"@docusaurus/plugin-debug@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.0.0-beta.8.tgz#314ca63af4bea9ea38b62e89580ff471cfcf9955" + integrity sha512-DCsYnVQ+MTEfGTOEsSCpZDG+xADM3dC5K2BfT4kDUB4De1SKH37NoXXJpGaVEtE4gLjRWoDGfDaQdS/LlVqwiQ== dependencies: - "@docusaurus/core" "2.0.0-beta.7" - "@docusaurus/types" "2.0.0-beta.7" - "@docusaurus/utils" "2.0.0-beta.7" + "@docusaurus/core" "2.0.0-beta.8" + "@docusaurus/types" "2.0.0-beta.8" + "@docusaurus/utils" "2.0.0-beta.8" fs-extra "^10.0.0" react-json-view "^1.21.3" tslib "^2.3.1" -"@docusaurus/plugin-google-analytics@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.0-beta.7.tgz#040e246bd34300cf88d8f0eed1d677693aae0ec0" - integrity sha512-588Fwd5vlcS13osCm9SeQOL4BnEH5M680pLnFQ2oTfZ1RzLfNFJ0O2mP3c4ivZCsHqT8OguUwZBoSKQC3FtBzg== +"@docusaurus/plugin-google-analytics@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.0-beta.8.tgz#d9b7298fe33e3ce1e11cd722ce4ac681e356915c" + integrity sha512-kpk9pXPIfE+5CbcJSbwF6Evfy5kX+4Z0Ph/x/M1N+8omH+StDrR+fa1S3I5GK38lb3/N1fWNgsWE7LembE9xYQ== dependencies: - "@docusaurus/core" "2.0.0-beta.7" + "@docusaurus/core" "2.0.0-beta.8" -"@docusaurus/plugin-google-gtag@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.0-beta.7.tgz#d8f4be826dbc7b53aaba27c65be86b32ba8bb7b9" - integrity sha512-52nm+VlFk4sGX6R9H3PMv5VVIZSEpzMhnAWTrcLNJyCj7TmX45Rr44+nkFdC1S5xg1Jy6u6farpD9VUK69oQfA== +"@docusaurus/plugin-google-gtag@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.0-beta.8.tgz#ba5b22d0656cf295ccd955e39c7fb5439dadddb8" + integrity sha512-1Wa0yMXZgxp85dGuOD44X+fnZtW8ztmOcGBOgLo9Uwhi+OhxOrW4ZOddhEJA6tmCaRuqkaMK7zN1ss2EUc2g7g== dependencies: - "@docusaurus/core" "2.0.0-beta.7" + "@docusaurus/core" "2.0.0-beta.8" -"@docusaurus/plugin-sitemap@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-beta.7.tgz#a81fcbc65b606d98814ac5ce880b3d8124c32696" - integrity sha512-jCBwxHFDkKbUTa+rc1TGegBpaLM+F/C2N97jhnvT9i07kUClt5w+tWplc+jm1Z1Ei/qwiMC+VLAK7xXnnPWTWg== +"@docusaurus/plugin-sitemap@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-beta.8.tgz#731d97ff8e495cd66f8ba1c6b1426c61726d46c5" + integrity sha512-oz2Hu1q34kvsgPb6DWM8cpzKmNy02BYtv+2GTrg016V+beGr8PNcHkxzgGtdN+Se5zJqdtRQvOPQtIZOJQntcA== dependencies: - "@docusaurus/core" "2.0.0-beta.7" - "@docusaurus/types" "2.0.0-beta.7" - "@docusaurus/utils" "2.0.0-beta.7" - "@docusaurus/utils-common" "2.0.0-beta.7" - "@docusaurus/utils-validation" "2.0.0-beta.7" + "@docusaurus/core" "2.0.0-beta.8" + "@docusaurus/types" "2.0.0-beta.8" + "@docusaurus/utils" "2.0.0-beta.8" + "@docusaurus/utils-common" "2.0.0-beta.8" + "@docusaurus/utils-validation" "2.0.0-beta.8" fs-extra "^10.0.0" sitemap "^7.0.0" tslib "^2.3.1" -"@docusaurus/preset-classic@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-2.0.0-beta.7.tgz#7340144e1ed486ef14cdbfd4366e2d7fc350ff13" - integrity sha512-lrIpgjrcea3AxroU7G1q1cMFxYNBJleNWCMJ+3Ed1cwn6yRmOQAtUJPQzhPX67Uay5Wl6d2K8/cPpMdAT3E0Fg== - dependencies: - "@docusaurus/core" "2.0.0-beta.7" - "@docusaurus/plugin-content-blog" "2.0.0-beta.7" - "@docusaurus/plugin-content-docs" "2.0.0-beta.7" - "@docusaurus/plugin-content-pages" "2.0.0-beta.7" - "@docusaurus/plugin-debug" "2.0.0-beta.7" - "@docusaurus/plugin-google-analytics" "2.0.0-beta.7" - "@docusaurus/plugin-google-gtag" "2.0.0-beta.7" - "@docusaurus/plugin-sitemap" "2.0.0-beta.7" - "@docusaurus/theme-classic" "2.0.0-beta.7" - "@docusaurus/theme-search-algolia" "2.0.0-beta.7" +"@docusaurus/preset-classic@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-2.0.0-beta.8.tgz#97e42cb0c5b1858cf644febc7ebd61b1a72c9f16" + integrity sha512-tlc+KuMJFmfXYA/FOCbHvMfRWx2SQtJLf6rkBUzRt0Vlym+pI7CG1px3OKON62jaaLm/Vyvn3+47z3yClJRM1A== + dependencies: + "@docusaurus/core" "2.0.0-beta.8" + "@docusaurus/plugin-content-blog" "2.0.0-beta.8" + "@docusaurus/plugin-content-docs" "2.0.0-beta.8" + "@docusaurus/plugin-content-pages" "2.0.0-beta.8" + "@docusaurus/plugin-debug" "2.0.0-beta.8" + "@docusaurus/plugin-google-analytics" "2.0.0-beta.8" + "@docusaurus/plugin-google-gtag" "2.0.0-beta.8" + "@docusaurus/plugin-sitemap" "2.0.0-beta.8" + "@docusaurus/theme-classic" "2.0.0-beta.8" + "@docusaurus/theme-search-algolia" "2.0.0-beta.8" "@docusaurus/react-loadable@5.5.0": version "5.5.0" @@ -1407,20 +1407,20 @@ dependencies: prop-types "^15.6.2" -"@docusaurus/theme-classic@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.0.0-beta.7.tgz#af51c439280ad2064d0a65b77bc0475590a74d06" - integrity sha512-x93sqAlR5l0oZa12GetWrvwm6Olx23bA3nv1gYIAhaxHqo374vC6EWIsvjJCBdCSmmuPX6TaZm1rSDYFWc/37g== - dependencies: - "@docusaurus/core" "2.0.0-beta.7" - "@docusaurus/plugin-content-blog" "2.0.0-beta.7" - "@docusaurus/plugin-content-docs" "2.0.0-beta.7" - "@docusaurus/plugin-content-pages" "2.0.0-beta.7" - "@docusaurus/theme-common" "2.0.0-beta.7" - "@docusaurus/types" "2.0.0-beta.7" - "@docusaurus/utils" "2.0.0-beta.7" - "@docusaurus/utils-common" "2.0.0-beta.7" - "@docusaurus/utils-validation" "2.0.0-beta.7" +"@docusaurus/theme-classic@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.0.0-beta.8.tgz#5465c0ea739053ba5ea9f5dca61406e8935f00b2" + integrity sha512-lC0PGxACbNiq98WwF1O3T0YblqSK6yo7KcDcrOnPJd0XCV4xMjWZSeeSIneotfs2uvJzmG3GOg7EfQcLvhdyIQ== + dependencies: + "@docusaurus/core" "2.0.0-beta.8" + "@docusaurus/plugin-content-blog" "2.0.0-beta.8" + "@docusaurus/plugin-content-docs" "2.0.0-beta.8" + "@docusaurus/plugin-content-pages" "2.0.0-beta.8" + "@docusaurus/theme-common" "2.0.0-beta.8" + "@docusaurus/types" "2.0.0-beta.8" + "@docusaurus/utils" "2.0.0-beta.8" + "@docusaurus/utils-common" "2.0.0-beta.8" + "@docusaurus/utils-validation" "2.0.0-beta.8" "@mdx-js/mdx" "^1.6.21" "@mdx-js/react" "^1.6.21" chalk "^4.1.2" @@ -1438,41 +1438,41 @@ react-router-dom "^5.2.0" rtlcss "^3.3.0" -"@docusaurus/theme-common@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.0.0-beta.7.tgz#958b3b9b537e78b6f933bf0b2348650e2e8f8d37" - integrity sha512-50ySwGxsLDS2Jqh771ZkN72QJvLHu+mz+oh/sVerfaQZUmTHZ2AHm0F2Ugzwcwu7ZeuAt31qjHsCLC0ZgVy88A== +"@docusaurus/theme-common@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.0.0-beta.8.tgz#eee6f4a08034477458bbc8869e9ebb1fea76fb6f" + integrity sha512-jrlCgFcg0wAfrtzSwU5F8iVdIBmL325d6jupD3N2CirSG6TxAmHDkeAbFyY6ZjaT27XYWXJUwvqvsbbNXAdNzw== dependencies: - "@docusaurus/core" "2.0.0-beta.7" - "@docusaurus/plugin-content-blog" "2.0.0-beta.7" - "@docusaurus/plugin-content-docs" "2.0.0-beta.7" - "@docusaurus/plugin-content-pages" "2.0.0-beta.7" - "@docusaurus/types" "2.0.0-beta.7" + "@docusaurus/core" "2.0.0-beta.8" + "@docusaurus/plugin-content-blog" "2.0.0-beta.8" + "@docusaurus/plugin-content-docs" "2.0.0-beta.8" + "@docusaurus/plugin-content-pages" "2.0.0-beta.8" + "@docusaurus/types" "2.0.0-beta.8" clsx "^1.1.1" fs-extra "^10.0.0" tslib "^2.3.1" utility-types "^3.10.0" -"@docusaurus/theme-search-algolia@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-beta.7.tgz#d89e56cb98e3632f0b50a0ff72d34882efabe68b" - integrity sha512-N/5AVhs/nx1lcHeWG6ek3SjpARJ8UCGyWgcDDb0Li867YFle/b8Slai8ZgKUDrHlRl1+t3iE8G9w5+xAB+FdwA== +"@docusaurus/theme-search-algolia@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-beta.8.tgz#9747f6975719152ac18674c526a90930ef9303fb" + integrity sha512-ryT57Wipems0GbB0WxdrTUJ4q/1DM6xoqJlpGGnTy52FEZi3ZoCp+1yxaBLbKKYevGl1nEF3S0kp1o13UiqKTw== dependencies: "@docsearch/react" "^3.0.0-alpha.39" - "@docusaurus/core" "2.0.0-beta.7" - "@docusaurus/theme-common" "2.0.0-beta.7" - "@docusaurus/utils" "2.0.0-beta.7" - "@docusaurus/utils-validation" "2.0.0-beta.7" + "@docusaurus/core" "2.0.0-beta.8" + "@docusaurus/theme-common" "2.0.0-beta.8" + "@docusaurus/utils" "2.0.0-beta.8" + "@docusaurus/utils-validation" "2.0.0-beta.8" algoliasearch "^4.10.5" algoliasearch-helper "^3.5.5" clsx "^1.1.1" eta "^1.12.3" lodash "^4.17.20" -"@docusaurus/types@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.0.0-beta.7.tgz#78ea662e6879ef9d819e505e7338a4f861f0b53f" - integrity sha512-p65Fy/8yhnhOvEcqrDtSqfepEmBOxo6mFtCVFS/zQJgXCH10pvbN4SjIFIFFHh8AvbAgv1Dp2TBel2mdwQO2yA== +"@docusaurus/types@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.0.0-beta.8.tgz#0dd7e51ca403c9567eb18d985bb65c975ce15cbc" + integrity sha512-wEzyQvku2zNNp3ChPk1x5s7SvlFygTyuqL9dpwvzCsJhxqZ0JH+whellh2YtDQQO617npOM8l6MC1Yd6ePws2Q== dependencies: commander "^5.1.0" joi "^17.4.2" @@ -1481,30 +1481,30 @@ webpack "^5.40.0" webpack-merge "^5.8.0" -"@docusaurus/utils-common@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.0.0-beta.7.tgz#223096c825990c17da59f1009299cac3edcb00c7" - integrity sha512-qfuEZFe81TEJfNVx5rbwRSPID/guulpr0mTVOTpe8y4MozkqhWvK2j9xElVg9olJc+6WBd9IUN2NIq33g7QjYQ== +"@docusaurus/utils-common@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.0.0-beta.8.tgz#962534413af2f95d8562b46f077be3a6a49fee61" + integrity sha512-SWnXd+VHN+YWKJGdaPHLmREaNMKEFQmAN12xA/FufXFDvVZJOA2YShLEAjSJDQTKt9hfGys3JCYF1PBgosB0sA== dependencies: - "@docusaurus/types" "2.0.0-beta.7" + "@docusaurus/types" "2.0.0-beta.8" tslib "^2.3.1" -"@docusaurus/utils-validation@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.0.0-beta.7.tgz#b2cc4bf77b70b6956f00aa436aed8c610f2ecd8a" - integrity sha512-lcnsW1sJ+DUTkPS2aA3JysO6pZ9kqDAhesrG7Y8q2ivlwU/unED2N7/rubP0Yw0KYFr/1b+v/uOtyfNYZya3gQ== +"@docusaurus/utils-validation@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.0.0-beta.8.tgz#a2093f8e20c79581bc41d6156e4f3a8e3ce95a9a" + integrity sha512-zcoJw9Bo/WkRLJhD53ck0rA68cnswc9TB84F/hOm92X4QkhjCUtb5XlMUtTtvO9ScnlgsFiQYaySrFRAM+fr5w== dependencies: - "@docusaurus/utils" "2.0.0-beta.7" + "@docusaurus/utils" "2.0.0-beta.8" chalk "^4.1.2" joi "^17.4.2" tslib "^2.3.1" -"@docusaurus/utils@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.0.0-beta.7.tgz#e92d11f0fb39aa8c0938025770901594782425a5" - integrity sha512-sL6IKOR/12btiHZS1yiCwlyFMbbkTUGSXSMSmDgumQRSDU63OaAvTLO7lWi2zDwFPXtFtfruAULcXc8XO4RjUA== +"@docusaurus/utils@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.0.0-beta.8.tgz#f6754c8e767cdfcca324eb8e1ac1ceb455d10deb" + integrity sha512-PMdPg8ft/zdAqhuDvMLzDlwXEp01qAh+eOXciKElDrh1zuQM/Hwjg0G3sKiwKInbpHJcz6lbTJCpEjmvMGlXpg== dependencies: - "@docusaurus/types" "2.0.0-beta.7" + "@docusaurus/types" "2.0.0-beta.8" "@mdx-js/runtime" "^1.6.22" "@types/github-slugger" "^1.3.0" chalk "^4.1.2" @@ -1776,9 +1776,9 @@ integrity sha512-J/rMZa7RqiH/rT29TEVZO4nBoDP9XJOjnbbIofg7GQKs4JIduEO3WLpte+6WeUz/TcrXKlY+bM7FYrp8yFB+3g== "@types/glob@^7.1.1": - version "7.1.4" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.4.tgz#ea59e21d2ee5c517914cb4bc8e4153b99e566672" - integrity sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA== + version "7.2.0" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== dependencies: "@types/minimatch" "*" "@types/node" "*" @@ -1813,9 +1813,9 @@ integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== "@types/node@*": - version "16.11.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.0.tgz#4b95f2327bacd1ef8f08d8ceda193039c5d7f52e" - integrity sha512-8MLkBIYQMuhRBQzGN9875bYsOhPnf/0rgXGo66S2FemHkhbn9qtsz9ywV1iCG+vbjigE4WUNVvw37Dx+L0qsPg== + version "16.11.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.2.tgz#31c249c136c3f9b35d4b60fb8e50e01a1f0cc9a5" + integrity sha512-w34LtBB0OkDTs19FQHXy4Ig/TOXI4zqvXS2Kk1PAsRKZ0I+nik7LlMYxckW0tSNGtvWmzB+mrCTbuEjuB9DVsw== "@types/node@^15.0.1": version "15.14.9" @@ -2052,31 +2052,31 @@ ajv@^6.1.0, ajv@^6.12.4, ajv@^6.12.5: uri-js "^4.2.2" algoliasearch-helper@^3.5.5: - version "3.6.1" - resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.6.1.tgz#b2964de29f69d8266d714e74cf097c06447ffaf2" - integrity sha512-uJkB/t/bU0tYE88ZoJJCGCNSD+9mTdsp/Yp5dG+qviIBYoUUZfKWwFcZBhW+eiqpO+EadTu7Xj3RYYnrvBOUyA== + version "3.6.2" + resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.6.2.tgz#45e19b12589cfa0c611b573287f65266ea2cc14a" + integrity sha512-Xx0NOA6k4ySn+R2l3UMSONAaMkyfmrZ3AP1geEMo32MxDJQJesZABZYsldO9fa6FKQxH91afhi4hO1G0Zc2opg== dependencies: events "^1.1.1" algoliasearch@^4.0.0, algoliasearch@^4.10.5: - version "4.10.5" - resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.10.5.tgz#1faf34a3ae5ac3bef27282eb141251c70c7f5db2" - integrity sha512-KmH2XkiN+8FxhND4nWFbQDkIoU6g2OjfeU9kIv4Lb+EiOOs3Gpp7jvd+JnatsCisAZsnWQdjd7zVlW7I/85QvQ== - dependencies: - "@algolia/cache-browser-local-storage" "4.10.5" - "@algolia/cache-common" "4.10.5" - "@algolia/cache-in-memory" "4.10.5" - "@algolia/client-account" "4.10.5" - "@algolia/client-analytics" "4.10.5" - "@algolia/client-common" "4.10.5" - "@algolia/client-personalization" "4.10.5" - "@algolia/client-search" "4.10.5" - "@algolia/logger-common" "4.10.5" - "@algolia/logger-console" "4.10.5" - "@algolia/requester-browser-xhr" "4.10.5" - "@algolia/requester-common" "4.10.5" - "@algolia/requester-node-http" "4.10.5" - "@algolia/transporter" "4.10.5" + version "4.11.0" + resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.11.0.tgz#234befb3ac355c094077f0edf3777240b1ee013c" + integrity sha512-IXRj8kAP2WrMmj+eoPqPc6P7Ncq1yZkFiyDrjTBObV1ADNL8Z/KdZ+dWC5MmYcBLAbcB/mMCpak5N/D1UIZvsA== + dependencies: + "@algolia/cache-browser-local-storage" "4.11.0" + "@algolia/cache-common" "4.11.0" + "@algolia/cache-in-memory" "4.11.0" + "@algolia/client-account" "4.11.0" + "@algolia/client-analytics" "4.11.0" + "@algolia/client-common" "4.11.0" + "@algolia/client-personalization" "4.11.0" + "@algolia/client-search" "4.11.0" + "@algolia/logger-common" "4.11.0" + "@algolia/logger-console" "4.11.0" + "@algolia/requester-browser-xhr" "4.11.0" + "@algolia/requester-common" "4.11.0" + "@algolia/requester-node-http" "4.11.0" + "@algolia/transporter" "4.11.0" alphanum-sort@^1.0.2: version "1.0.2" @@ -2268,9 +2268,9 @@ axios@^0.21.1: follow-redirects "^1.14.0" babel-loader@^8.2.2: - version "8.2.2" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81" - integrity sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g== + version "8.2.3" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.3.tgz#8986b40f1a64cacfcb4b8429320085ef68b1342d" + integrity sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw== dependencies: find-cache-dir "^3.3.1" loader-utils "^1.4.0" @@ -2597,9 +2597,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.30001264, caniuse-lite@^1.0.30001265: - version "1.0.30001267" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001267.tgz#b1cf2937175afc0570e4615fc2d2f9069fa0ed30" - integrity sha512-r1mjTzAuJ9W8cPBGbbus8E0SKcUP7gn03R14Wk8FlAlqhH9hroy9nLqmpuXlfKEw/oILW+FGz47ipXV2O7x8lg== + version "1.0.30001270" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001270.tgz#cc9c37a4ec5c1a8d616fc7bace902bb053b0cdea" + integrity sha512-TcIC7AyNWXhcOmv2KftOl1ShFAaHQYcB/EPL/hEyMrcS7ZX0/DvV1aoy6BzV0+16wTpoAyTMGDNAJfSqS/rz7A== ccount@^1.0.0, ccount@^1.0.3: version "1.1.0" @@ -2720,9 +2720,9 @@ class-utils@^0.3.5: static-extend "^0.1.1" clean-css@^5.1.5: - version "5.2.1" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.2.1.tgz#e5bdb1bee5f332c67e98cb6181251d4f88c0a6ab" - integrity sha512-ooQCa1/70oRfVdUUGjKpbHuxgMgm8BsDT5EBqBGvPxMoRoGXf4PNx5mMnkjzJ9Ptx4vvmDdha0QVh86QtYIk1g== + version "5.2.2" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.2.2.tgz#d3a7c6ee2511011e051719838bdcf8314dc4548d" + integrity sha512-/eR8ru5zyxKzpBLv9YZvMXgTSSQn7AdkMItMYynsFgGwTveCRVam9IUPFloE85B4vAIj05IuKmmEoV7/AQjT0w== dependencies: source-map "~0.6.0" @@ -2813,9 +2813,9 @@ color-name@~1.1.4: integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== colord@^2.0.1, colord@^2.6: - version "2.8.0" - resolved "https://registry.yarnpkg.com/colord/-/colord-2.8.0.tgz#64fb7aa03de7652b5a39eee50271a104c2783b12" - integrity sha512-kNkVV4KFta3TYQv0bzs4xNwLaeag261pxgzGQSh4cQ1rEhYjcTJfFRP0SDlbhLONg0eSoLzrDd79PosjbltufA== + version "2.9.1" + resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.1.tgz#c961ea0efeb57c9f0f4834458f26cb9cc4a3f90e" + integrity sha512-4LBMSt09vR0uLnPVkOUBnmxgoaeN4ewRbx801wY/bXcltXfpR/G46OdWn96XpYmCWuYvO46aBZP4NgX8HpNAcw== combine-promises@^1.1.0: version "1.1.0" @@ -3515,9 +3515,9 @@ ee-first@1.1.1: integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= electron-to-chromium@^1.3.564, electron-to-chromium@^1.3.867: - version "1.3.871" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.871.tgz#6e87365fd72037a6c898fb46050ad4be3ac9ef62" - integrity sha512-qcLvDUPf8DSIMWarHT2ptgcqrYg62n3vPA7vhrOF24d8UNzbUBaHu2CySiENR3nEDzYgaN60071t0F6KLYMQ7Q== + version "1.3.876" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.876.tgz#fe6f65c9740406f4aa69f10faa8e1d79b81bdf34" + integrity sha512-a6LR4738psrubCtGx5HxM/gNlrIsh4eFTNnokgOqvQo81GWd07lLcOjITkAXn2y4lIp18vgS+DGnehj+/oEAxQ== emoji-regex@^7.0.1: version "7.0.3" @@ -4520,7 +4520,7 @@ html-void-elements@^1.0.0: resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483" integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== -html-webpack-plugin@^5.3.2: +html-webpack-plugin@^5.4.0: version "5.4.0" resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.4.0.tgz#d016cd9594be5c243bb5c12287af43babbe1c094" integrity sha512-cSUdckNOIqKc0nOrCJG7zkvzEIUcXjzEiVbKdEdIzW3BD5T4xPK6boV1mrTrPDZiL+aAr/j45eqbNL1akU2ZRA== @@ -5157,9 +5157,9 @@ isobject@^3.0.0, isobject@^3.0.1: integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= jest-worker@^27.0.2, jest-worker@^27.0.6: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.2.5.tgz#ed42865661959488aa020e8a325df010597c36d4" - integrity sha512-HTjEPZtcNKZ4LnhSp02NEH4vE+5OpJ0EsOWYvGQpHgUMLngydESAAMH5Wd/asPf29+XUDQZszxpLg1BkIIA2aw== + version "27.3.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.3.1.tgz#0def7feae5b8042be38479799aeb7b5facac24b2" + integrity sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g== dependencies: "@types/node" "*" merge-stream "^2.0.0" @@ -5783,7 +5783,7 @@ nanocolors@^0.1.12: resolved "https://registry.yarnpkg.com/nanocolors/-/nanocolors-0.1.12.tgz#8577482c58cbd7b5bb1681db4cf48f11a87fd5f6" integrity sha512-2nMHqg1x5PU+unxX7PGY7AuYxl2qDx7PSrTRjizr8sxdd3l/3hBuWWaki62qmtYm2U5i4Z5E7GbjlyDFhs9/EQ== -nanoid@^3.1.28: +nanoid@^3.1.30: version "3.1.30" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.30.tgz#63f93cc548d2a113dc5dfbc63bfa09e2b9b64362" integrity sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ== @@ -5851,9 +5851,9 @@ node-releases@^1.1.61: integrity sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ== node-releases@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.0.tgz#67dc74903100a7deb044037b8a2e5f453bb05400" - integrity sha512-aA87l0flFYMzCHpTM3DERFSYxc6lv/BltdbRTOMZuxZ0cwZCD3mejE5n9vLhSJCN++/eOqr77G1IO5uXxlQYWA== + version "2.0.1" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" + integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== normalize-path@^2.1.1: version "2.1.1" @@ -6623,12 +6623,12 @@ postcss-zindex@^5.0.1: integrity sha512-nwgtJJys+XmmSGoYCcgkf/VczP8Mp/0OfSv3v0+fw0uABY4yxw+eFs0Xp9nAZHIKnS5j+e9ywQ+RD+ONyvl5pA== postcss@^8.2.15, postcss@^8.2.4, postcss@^8.3.5, postcss@^8.3.7: - version "8.3.9" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.9.tgz#98754caa06c4ee9eb59cc48bd073bb6bd3437c31" - integrity sha512-f/ZFyAKh9Dnqytx5X62jgjhhzttjZS7hMsohcI7HEI5tjELX/HxCy3EFhsRxyzGvrzFF+82XPvCS8T9TFleVJw== + version "8.3.11" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.11.tgz#c3beca7ea811cd5e1c4a3ec6d2e7599ef1f8f858" + integrity sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA== dependencies: - nanoid "^3.1.28" - picocolors "^0.2.1" + nanoid "^3.1.30" + picocolors "^1.0.0" source-map-js "^0.6.2" prepend-http@^2.0.0: @@ -7326,9 +7326,9 @@ rtl-detect@^1.0.4: integrity sha512-EBR4I2VDSSYr7PkBmFy04uhycIpDKp+21p/jARYXlCSjQksTBQcJ0HFUPOO79EPPH5JS6VAhiIQbycf0O3JAxQ== rtlcss@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/rtlcss/-/rtlcss-3.3.0.tgz#fa9d29b071a863fe959704da6a93de3076aeeca4" - integrity sha512-XZ2KEatH2nU5yPlts1Wu8SGIuZ3ndN025HQX5MqtUCUiOn5WkCDbcpJ2VJWjpuFmM2cUTQ1xtH21fhMCSseI5A== + version "3.4.0" + resolved "https://registry.yarnpkg.com/rtlcss/-/rtlcss-3.4.0.tgz#81c5cab77050ea0d880147b8a78943330d4d1813" + integrity sha512-pOSLxwmJTjqcnlFIezpCGyhRoPKIwXj78wJfBI8iZw7gZGVzjT/T5QcaimRComsPanMSV0hzmI5o+oWIP3nNBA== dependencies: chalk "^4.1.0" find-up "^5.0.0" @@ -8646,9 +8646,9 @@ webpack-sources@^3.2.0: integrity sha512-t6BMVLQ0AkjBOoRTZgqrWm7xbXMBzD+XDq2EZ96+vMfn3qKgsvdXZhbPZ4ElUOpdv4u+iiGe+w3+J75iy/bYGA== webpack@^5.40.0: - version "5.58.2" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.58.2.tgz#6b4af12fc9bd5cbedc00dc0a2fc2b9592db16b44" - integrity sha512-3S6e9Vo1W2ijk4F4PPWRIu6D/uGgqaPmqw+av3W3jLDujuNkdxX5h5c+RQ6GkjVR+WwIPOfgY8av+j5j4tMqJw== + version "5.59.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.59.1.tgz#60c77e9aad796252153d4d7ab6b2d4c11f0e548c" + integrity sha512-I01IQV9K96FlpXX3V0L4nvd7gb0r7thfuu1IfT2P4uOHOA77nKARAKDYGe/tScSHKnffNIyQhLC8kRXzY4KEHQ== dependencies: "@types/eslint-scope" "^3.7.0" "@types/estree" "^0.0.50" diff --git a/examples/facebook/package.json b/examples/facebook/package.json index 075905dd9d3f..6917bec87671 100644 --- a/examples/facebook/package.json +++ b/examples/facebook/package.json @@ -19,8 +19,8 @@ "dev": "docusaurus start" }, "dependencies": { - "@docusaurus/core": "2.0.0-beta.7", - "@docusaurus/preset-classic": "2.0.0-beta.7", + "@docusaurus/core": "2.0.0-beta.8", + "@docusaurus/preset-classic": "2.0.0-beta.8", "@mdx-js/react": "^1.6.21", "@svgr/webpack": "^5.5.0", "clsx": "^1.1.1", diff --git a/examples/facebook/yarn.lock b/examples/facebook/yarn.lock index 91a764dcdeaf..770b817e334f 100644 --- a/examples/facebook/yarn.lock +++ b/examples/facebook/yarn.lock @@ -21,109 +21,109 @@ resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.2.2.tgz#ff25dc308f2a296b2b9b325f1e3b57498eea3e0c" integrity sha512-mLTl7d2C1xVVazHt/bqh9EE/u2lbp5YOxLDdcjILXmUqOs5HH1D4SuySblXaQG1uf28FhTqMGp35qE5wJQnqAw== -"@algolia/cache-browser-local-storage@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.10.5.tgz#961cf07cf59955de17af13bd74f7806bd2119553" - integrity sha512-cfX2rEKOtuuljcGI5DMDHClwZHdDqd2nT2Ohsc8aHtBiz6bUxKVyIqxr2gaC6tU8AgPtrTVBzcxCA+UavXpKww== - dependencies: - "@algolia/cache-common" "4.10.5" - -"@algolia/cache-common@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.10.5.tgz#9510419e9dfb6d8814582c6b20615196f213a9d6" - integrity sha512-1mClwdmTHll+OnHkG+yeRoFM17kSxDs4qXkjf6rNZhoZGXDvfYLy3YcZ1FX4Kyz0DJv8aroq5RYGBDsWkHj6Tw== - -"@algolia/cache-in-memory@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.10.5.tgz#de9331cb86734bf7f7624063cdaa639e43509be1" - integrity sha512-+ciQnfIGi5wjMk02XhEY8fmy2pzy+oY1nIIfu8LBOglaSipCRAtjk6WhHc7/KIbXPiYzIwuDbM2K1+YOwSGjwA== - dependencies: - "@algolia/cache-common" "4.10.5" - -"@algolia/client-account@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.10.5.tgz#82f7c330fc5f0625b5b559afe9c6b1aa6722b6cf" - integrity sha512-I9UkSS2glXm7RBZYZIALjBMmXSQbw/fI/djPcBHxiwXIheNIlqIFl2SNPkvihpPF979BSkzjqdJNRPhE1vku3Q== - dependencies: - "@algolia/client-common" "4.10.5" - "@algolia/client-search" "4.10.5" - "@algolia/transporter" "4.10.5" - -"@algolia/client-analytics@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.10.5.tgz#269e47c9de7e53e9e05e4a2d3c380607c3d2631f" - integrity sha512-h2owwJSkovPxzc+xIsjY1pMl0gj+jdVwP9rcnGjlaTY2fqHbSLrR9yvGyyr6305LvTppxsQnfAbRdE/5Z3eFxw== - dependencies: - "@algolia/client-common" "4.10.5" - "@algolia/client-search" "4.10.5" - "@algolia/requester-common" "4.10.5" - "@algolia/transporter" "4.10.5" - -"@algolia/client-common@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.10.5.tgz#a7d0833796a9a2da68be16be76b6dc3962bf2f18" - integrity sha512-21FAvIai5qm8DVmZHm2Gp4LssQ/a0nWwMchAx+1hIRj1TX7OcdW6oZDPyZ8asQdvTtK7rStQrRnD8a95SCUnzA== - dependencies: - "@algolia/requester-common" "4.10.5" - "@algolia/transporter" "4.10.5" - -"@algolia/client-personalization@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.10.5.tgz#78a8fb8161bdbeaa66b400b3283640ef689e155b" - integrity sha512-nH+IyFKBi8tCyzGOanJTbXC5t4dspSovX3+ABfmwKWUYllYzmiQNFUadpb3qo+MLA3jFx5IwBesjneN6dD5o3w== - dependencies: - "@algolia/client-common" "4.10.5" - "@algolia/requester-common" "4.10.5" - "@algolia/transporter" "4.10.5" - -"@algolia/client-search@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.10.5.tgz#47907232a3e4ecf2aa4459b8de17242afd88147c" - integrity sha512-1eQFMz9uodrc5OM+9HeT+hHcfR1E1AsgFWXwyJ9Q3xejA2c1c4eObGgOgC9ZoshuHHdptaTN1m3rexqAxXRDBg== - dependencies: - "@algolia/client-common" "4.10.5" - "@algolia/requester-common" "4.10.5" - "@algolia/transporter" "4.10.5" - -"@algolia/logger-common@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.10.5.tgz#cf807107e755ad4a72c5afc787e968ff1196f1cc" - integrity sha512-gRJo9zt1UYP4k3woEmZm4iuEBIQd/FrArIsjzsL/b+ihNoOqIxZKTSuGFU4UUZOEhvmxDReiA4gzvQXG+TMTmA== - -"@algolia/logger-console@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.10.5.tgz#f961a7a7c6718c3f3842fb9b522d47b03b9df8ad" - integrity sha512-4WfIbn4253EDU12u9UiYvz+QTvAXDv39mKNg9xSoMCjKE5szcQxfcSczw2byc6pYhahOJ9PmxPBfs1doqsdTKQ== - dependencies: - "@algolia/logger-common" "4.10.5" - -"@algolia/requester-browser-xhr@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.10.5.tgz#7063e3bc6d9c72bc535e1794352eddf47459dfe6" - integrity sha512-53/MURQEqtK+bGdfq4ITSPwTh5hnADU99qzvpAINGQveUFNSFGERipJxHjTJjIrjFz3vxj5kKwjtxDnU6ygO9g== - dependencies: - "@algolia/requester-common" "4.10.5" - -"@algolia/requester-common@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.10.5.tgz#52abfbf10b743d26afd3ce20f62771bc393ff4f0" - integrity sha512-UkVa1Oyuj6NPiAEt5ZvrbVopEv1m/mKqjs40KLB+dvfZnNcj+9Fry4Oxnt15HMy/HLORXsx4UwcthAvBuOXE9Q== - -"@algolia/requester-node-http@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.10.5.tgz#db7e9ece1fda1b71a28c8e623666aaa096320b5c" - integrity sha512-aNEKVKXL4fiiC+bS7yJwAHdxln81ieBwY3tsMCtM4zF9f5KwCzY2OtN4WKEZa5AAADVcghSAUdyjs4AcGUlO5w== - dependencies: - "@algolia/requester-common" "4.10.5" - -"@algolia/transporter@4.10.5": - version "4.10.5" - resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.10.5.tgz#9354989f12af3e2ce7d3109a94f519d467a960e0" - integrity sha512-F8DLkmIlvCoMwSCZA3FKHtmdjH3o5clbt0pi2ktFStVNpC6ZDmY307HcK619bKP5xW6h8sVJhcvrLB775D2cyA== - dependencies: - "@algolia/cache-common" "4.10.5" - "@algolia/logger-common" "4.10.5" - "@algolia/requester-common" "4.10.5" +"@algolia/cache-browser-local-storage@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.11.0.tgz#1c168add00b398a860db6c86039e33b2843a9425" + integrity sha512-4sr9vHIG1fVA9dONagdzhsI/6M5mjs/qOe2xUP0yBmwsTsuwiZq3+Xu6D3dsxsuFetcJgC6ydQoCW8b7fDJHYQ== + dependencies: + "@algolia/cache-common" "4.11.0" + +"@algolia/cache-common@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.11.0.tgz#066fe6d58b18e4b028dbef9bb8de07c5e22a3594" + integrity sha512-lODcJRuPXqf+6mp0h6bOxPMlbNoyn3VfjBVcQh70EDP0/xExZbkpecgHyyZK4kWg+evu+mmgvTK3GVHnet/xKw== + +"@algolia/cache-in-memory@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.11.0.tgz#763c8cb655e6fd2261588e04214fca0959ac07c1" + integrity sha512-aBz+stMSTBOBaBEQ43zJXz2DnwS7fL6dR0e2myehAgtfAWlWwLDHruc/98VOy1ZAcBk1blE2LCU02bT5HekGxQ== + dependencies: + "@algolia/cache-common" "4.11.0" + +"@algolia/client-account@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.11.0.tgz#67fadd3b0802b013ebaaa4b47bb7babae892374e" + integrity sha512-jwmFBoUSzoMwMqgD3PmzFJV/d19p1RJXB6C1ADz4ju4mU7rkaQLtqyZroQpheLoU5s5Tilmn/T8/0U2XLoJCRQ== + dependencies: + "@algolia/client-common" "4.11.0" + "@algolia/client-search" "4.11.0" + "@algolia/transporter" "4.11.0" + +"@algolia/client-analytics@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.11.0.tgz#cbdc8128205e2da749cafc79e54708d14c413974" + integrity sha512-v5U9585aeEdYml7JqggHAj3E5CQ+jPwGVztPVhakBk8H/cmLyPS2g8wvmIbaEZCHmWn4TqFj3EBHVYxAl36fSA== + dependencies: + "@algolia/client-common" "4.11.0" + "@algolia/client-search" "4.11.0" + "@algolia/requester-common" "4.11.0" + "@algolia/transporter" "4.11.0" + +"@algolia/client-common@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.11.0.tgz#9a2d1f6f8eaad25ba5d6d4ce307ba5bd84e6f999" + integrity sha512-Qy+F+TZq12kc7tgfC+FM3RvYH/Ati7sUiUv/LkvlxFwNwNPwWGoZO81AzVSareXT/ksDDrabD4mHbdTbBPTRmQ== + dependencies: + "@algolia/requester-common" "4.11.0" + "@algolia/transporter" "4.11.0" + +"@algolia/client-personalization@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.11.0.tgz#d3bf0e760f85df876b4baf5b81996f0aa3a59940" + integrity sha512-mI+X5IKiijHAzf9fy8VSl/GTT67dzFDnJ0QAM8D9cMPevnfX4U72HRln3Mjd0xEaYUOGve8TK/fMg7d3Z5yG6g== + dependencies: + "@algolia/client-common" "4.11.0" + "@algolia/requester-common" "4.11.0" + "@algolia/transporter" "4.11.0" + +"@algolia/client-search@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.11.0.tgz#c1105d715a2a04ba27231eca86f5d6620f68f4ae" + integrity sha512-iovPLc5YgiXBdw2qMhU65sINgo9umWbHFzInxoNErWnYoTQWfXsW6P54/NlKx5uscoLVjSf+5RUWwFu5BX+lpw== + dependencies: + "@algolia/client-common" "4.11.0" + "@algolia/requester-common" "4.11.0" + "@algolia/transporter" "4.11.0" + +"@algolia/logger-common@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.11.0.tgz#bac1c2d59d29dee378b57412c8edd435b97de663" + integrity sha512-pRMJFeOY8hoWKIxWuGHIrqnEKN/kqKh7UilDffG/+PeEGxBuku+Wq5CfdTFG0C9ewUvn8mAJn5BhYA5k8y0Jqg== + +"@algolia/logger-console@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.11.0.tgz#ced19e3abb22eb782ed5268d51efb5aa9ef109ef" + integrity sha512-wXztMk0a3VbNmYP8Kpc+F7ekuvaqZmozM2eTLok0XIshpAeZ/NJDHDffXK2Pw+NF0wmHqurptLYwKoikjBYvhQ== + dependencies: + "@algolia/logger-common" "4.11.0" + +"@algolia/requester-browser-xhr@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.11.0.tgz#f9e1ad56f185432aa8dde8cad53ae271fd5d6181" + integrity sha512-Fp3SfDihAAFR8bllg8P5ouWi3+qpEVN5e7hrtVIYldKBOuI/qFv80Zv/3/AMKNJQRYglS4zWyPuqrXm58nz6KA== + dependencies: + "@algolia/requester-common" "4.11.0" + +"@algolia/requester-common@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.11.0.tgz#d16de98d3ff72434bac39e4d915eab08035946a9" + integrity sha512-+cZGe/9fuYgGuxjaBC+xTGBkK7OIYdfapxhfvEf03dviLMPmhmVYFJtJlzAjQ2YmGDJpHrGgAYj3i/fbs8yhiA== + +"@algolia/requester-node-http@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.11.0.tgz#beb2b6b68d5f4ce15aec80ede623f0ac96991368" + integrity sha512-qJIk9SHRFkKDi6dMT9hba8X1J1z92T5AZIgl+tsApjTGIRQXJLTIm+0q4yOefokfu4CoxYwRZ9QAq+ouGwfeOg== + dependencies: + "@algolia/requester-common" "4.11.0" + +"@algolia/transporter@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.11.0.tgz#a8de3c173093ceceb02b26b577395ce3b3d4b96f" + integrity sha512-k4dyxiaEfYpw4UqybK9q7lrFzehygo6KV3OCYJMMdX0IMWV0m4DXdU27c1zYRYtthaFYaBzGF4Kjcl8p8vxCKw== + dependencies: + "@algolia/cache-common" "4.11.0" + "@algolia/logger-common" "4.11.0" + "@algolia/requester-common" "4.11.0" "@babel/code-frame@7.10.4": version "7.10.4" @@ -1083,9 +1083,9 @@ semver "^6.3.0" "@babel/preset-modules@^0.1.4": - version "0.1.4" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" - integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== + version "0.1.5" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" + integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" @@ -1161,25 +1161,25 @@ "@babel/helper-validator-identifier" "^7.14.9" to-fast-properties "^2.0.0" -"@docsearch/css@3.0.0-alpha.40": - version "3.0.0-alpha.40" - resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.0.0-alpha.40.tgz#c37bd7b03f4c30a6ea7a19b87fe71880d2e8b22a" - integrity sha512-PrOTPgJMl+Iji1zOH0+J0PEDMriJ1teGxbgll7o4h8JrvJW6sJGqQw7/bLW7enWiFaxbJMK76w1yyPNLFHV7Qg== +"@docsearch/css@3.0.0-alpha.41": + version "3.0.0-alpha.41" + resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.0.0-alpha.41.tgz#c5c8e803541bd157ad86e764c2c1e9f1b5a68592" + integrity sha512-AP1jqcF/9jCrm4s0lcES3QAtHueyipKjd14L/pguk0CZYK7uI7hC0FWodmRmrgK3/HST9jiHa1waUMR6ZYedlQ== "@docsearch/react@^3.0.0-alpha.39": - version "3.0.0-alpha.40" - resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-3.0.0-alpha.40.tgz#d912b4bb7281cb0faf65590c9cf022aa2a13d823" - integrity sha512-aKxnu7sgpP1R7jtgOV/pZdJEHXx6Ts+jnS9U/ejSUS2BMUpwQI5SA3oLs1BA5TA9kIViJ5E+rrjh0VsbcsJ6sQ== + version "3.0.0-alpha.41" + resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-3.0.0-alpha.41.tgz#07e85a664e85f251ce3d13153abce65a4d5997ab" + integrity sha512-UL0Gdter/NUea04lGuBGH0GzQ2/2q/hBfn7Rjo71rRKbjtfkQCM92leJ9tZ+9j9sFLoyuHb9XMm/B8vCjWwTEg== dependencies: "@algolia/autocomplete-core" "1.2.2" "@algolia/autocomplete-preset-algolia" "1.2.2" - "@docsearch/css" "3.0.0-alpha.40" + "@docsearch/css" "3.0.0-alpha.41" algoliasearch "^4.0.0" -"@docusaurus/core@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.0.0-beta.7.tgz#cdfcb57c6737c51122e6b1c009f58cc5570f896b" - integrity sha512-owJDhldpimQBOCr6YbGJiQRQufK3A9zmA3lyDnbtipAGV+sDRQNiYKUDtwnbESCchA4vhKj7suvcLvA4sSEVIQ== +"@docusaurus/core@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.0.0-beta.8.tgz#7e24547a26e34e4d288f19883e08ac29b7946325" + integrity sha512-KVbZoOCxQKvbX1RT8qrHAsPVYPGDnXFevTeJbZW1XQb0OPv7oh5nijXJvzNeGupXP561BByrsdHT7IxM/hT0CQ== dependencies: "@babel/core" "^7.12.16" "@babel/generator" "^7.12.15" @@ -1191,12 +1191,12 @@ "@babel/runtime" "^7.15.4" "@babel/runtime-corejs3" "^7.15.4" "@babel/traverse" "^7.12.13" - "@docusaurus/cssnano-preset" "2.0.0-beta.7" + "@docusaurus/cssnano-preset" "2.0.0-beta.8" "@docusaurus/react-loadable" "5.5.0" - "@docusaurus/types" "2.0.0-beta.7" - "@docusaurus/utils" "2.0.0-beta.7" - "@docusaurus/utils-common" "2.0.0-beta.7" - "@docusaurus/utils-validation" "2.0.0-beta.7" + "@docusaurus/types" "2.0.0-beta.8" + "@docusaurus/utils" "2.0.0-beta.8" + "@docusaurus/utils-common" "2.0.0-beta.8" + "@docusaurus/utils-validation" "2.0.0-beta.8" "@slorber/static-site-generator-webpack-plugin" "^4.0.0" "@svgr/webpack" "^5.5.0" autoprefixer "^10.3.5" @@ -1223,7 +1223,7 @@ globby "^11.0.2" html-minifier-terser "^6.0.2" html-tags "^3.1.0" - html-webpack-plugin "^5.3.2" + html-webpack-plugin "^5.4.0" import-fresh "^3.3.0" is-root "^2.1.0" leven "^3.1.0" @@ -1261,24 +1261,24 @@ webpack-merge "^5.8.0" webpackbar "^5.0.0-3" -"@docusaurus/cssnano-preset@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.0-beta.7.tgz#d39fc576f689dc74aa0fd0812cebd96c9ce38890" - integrity sha512-S1vMCRpIpxWbETcQ/7KzZmFct7WYM2IN1FQSHqCxF1UmAfDH5wwlxUhCe8aQu00f/JV/0Oy/HMOOCJ3cDnLjgw== +"@docusaurus/cssnano-preset@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.0-beta.8.tgz#0e83ad9e70e64709c23aa8cc565ec43d135e9abc" + integrity sha512-RXApzIEaTsTSpz4YV86DBXaFvXH3J4SNIWba/AFSoPBviODjxIu+7TRRs9eh8vUAB32nVBtcdHmRb25b662szQ== dependencies: cssnano-preset-advanced "^5.1.4" postcss "^8.3.7" postcss-sort-media-queries "^4.1.0" -"@docusaurus/mdx-loader@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-beta.7.tgz#a86ca29fd393f01869e671afaaf80d41d728ac49" - integrity sha512-AGL+JDQy/mcJ9IEbCdVDdvqCBvbvG8EIomtopxpxE307gpC3QjQT4bLyUyYBIESDEoniwNsE0R4cABqp+zoIoA== +"@docusaurus/mdx-loader@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-beta.8.tgz#c64a81988975ea5ed969e8a164136a2aaa035da1" + integrity sha512-unVimkaAGgkt+d/QgQPwm8FaRZVB0jew6Q902KSl1Hx0yWI/x5LKWY/y4kCFUBv7rCsuSqyjoZwggD+evw//bg== dependencies: "@babel/parser" "^7.12.16" "@babel/traverse" "^7.12.13" - "@docusaurus/core" "2.0.0-beta.7" - "@docusaurus/utils" "2.0.0-beta.7" + "@docusaurus/core" "2.0.0-beta.8" + "@docusaurus/utils" "2.0.0-beta.8" "@mdx-js/mdx" "^1.6.21" "@mdx-js/react" "^1.6.21" chalk "^4.1.2" @@ -1294,16 +1294,16 @@ url-loader "^4.1.1" webpack "^5.40.0" -"@docusaurus/plugin-content-blog@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-beta.7.tgz#f40d9314f2ea07e0cea75e0eeaae79a259f8c937" - integrity sha512-Pz4peB7I38aCMogdqiDhp43ip22GtSUWSewMRwZFd5poxvhShAb7/TUOP85p4bHfTmEWPcsFxQkDBMiv2nFkbw== +"@docusaurus/plugin-content-blog@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-beta.8.tgz#f7405b04cbde4cff6ea9aaf281f171f147133cd8" + integrity sha512-sUAk3MZrZL7YMp66h+pIy0rOQYFovB8kh9LbDdTXREDyTViCygfkr/6sFPRWpoFzws/kbXoRCPIPcrzcYj+/Pw== dependencies: - "@docusaurus/core" "2.0.0-beta.7" - "@docusaurus/mdx-loader" "2.0.0-beta.7" - "@docusaurus/types" "2.0.0-beta.7" - "@docusaurus/utils" "2.0.0-beta.7" - "@docusaurus/utils-validation" "2.0.0-beta.7" + "@docusaurus/core" "2.0.0-beta.8" + "@docusaurus/mdx-loader" "2.0.0-beta.8" + "@docusaurus/types" "2.0.0-beta.8" + "@docusaurus/utils" "2.0.0-beta.8" + "@docusaurus/utils-validation" "2.0.0-beta.8" chalk "^4.1.2" escape-string-regexp "^4.0.0" feed "^4.2.2" @@ -1318,16 +1318,16 @@ utility-types "^3.10.0" webpack "^5.40.0" -"@docusaurus/plugin-content-docs@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-beta.7.tgz#546713a2ae773266d5fa385f8f25e9f2438194c9" - integrity sha512-O8Ky+xqiL4+LGIa2hT5WMknbbpw9Q0GaOfnPgX1XTBUwWFlwadMX1rMb4Vb1ki7qhqV1clVCcWZ2EdilkMqhUg== +"@docusaurus/plugin-content-docs@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-beta.8.tgz#b248689ea85201a38c21e285819f400820c1c936" + integrity sha512-uE8mI5zQFcwtxAbycxv6G7ALtqKgNwd4URuJhv4VQ2DhR5uta/yd9IK8BPduwrbYLWZuGf2uO3jVsPbgNBZ0RQ== dependencies: - "@docusaurus/core" "2.0.0-beta.7" - "@docusaurus/mdx-loader" "2.0.0-beta.7" - "@docusaurus/types" "2.0.0-beta.7" - "@docusaurus/utils" "2.0.0-beta.7" - "@docusaurus/utils-validation" "2.0.0-beta.7" + "@docusaurus/core" "2.0.0-beta.8" + "@docusaurus/mdx-loader" "2.0.0-beta.8" + "@docusaurus/types" "2.0.0-beta.8" + "@docusaurus/utils" "2.0.0-beta.8" + "@docusaurus/utils-validation" "2.0.0-beta.8" chalk "^4.1.2" combine-promises "^1.1.0" escape-string-regexp "^4.0.0" @@ -1344,77 +1344,77 @@ utility-types "^3.10.0" webpack "^5.40.0" -"@docusaurus/plugin-content-pages@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-beta.7.tgz#9167c5a9924d284b076d261b08b19b21ac8836fd" - integrity sha512-5NKtexqh5Ug75xDUQ8ZhgTZ5qDQKF+5/MvOsDdV6OPPq39Rc54RnXyOBpn2hmG4sOkITSav0Rx9WdSwXQ1S56w== +"@docusaurus/plugin-content-pages@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-beta.8.tgz#fdc6687917091ad5f62b332feb6add9c29b6b169" + integrity sha512-NcYKwwBhOR1eH5FZpktaRtBYDsT8vnwR2mAYqS4Oyl7EeyYNKb1ykMnBn5tDktMuRaLRy1flq5u79Nc5oscHIQ== dependencies: - "@docusaurus/core" "2.0.0-beta.7" - "@docusaurus/mdx-loader" "2.0.0-beta.7" - "@docusaurus/types" "2.0.0-beta.7" - "@docusaurus/utils" "2.0.0-beta.7" - "@docusaurus/utils-validation" "2.0.0-beta.7" + "@docusaurus/core" "2.0.0-beta.8" + "@docusaurus/mdx-loader" "2.0.0-beta.8" + "@docusaurus/types" "2.0.0-beta.8" + "@docusaurus/utils" "2.0.0-beta.8" + "@docusaurus/utils-validation" "2.0.0-beta.8" globby "^11.0.2" lodash "^4.17.20" remark-admonitions "^1.2.1" tslib "^2.3.1" webpack "^5.40.0" -"@docusaurus/plugin-debug@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.0.0-beta.7.tgz#eb8f9b1297bbc82e9541c6ad528643e0766b1953" - integrity sha512-yClzF4ATBclrnBf5hz5YlFmK7Ds63suWf9Sv6VaLsrW4nnP/TinpbBfXSPdbM1zqaDqzNGcYabm0jbA2bstXJA== +"@docusaurus/plugin-debug@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.0.0-beta.8.tgz#314ca63af4bea9ea38b62e89580ff471cfcf9955" + integrity sha512-DCsYnVQ+MTEfGTOEsSCpZDG+xADM3dC5K2BfT4kDUB4De1SKH37NoXXJpGaVEtE4gLjRWoDGfDaQdS/LlVqwiQ== dependencies: - "@docusaurus/core" "2.0.0-beta.7" - "@docusaurus/types" "2.0.0-beta.7" - "@docusaurus/utils" "2.0.0-beta.7" + "@docusaurus/core" "2.0.0-beta.8" + "@docusaurus/types" "2.0.0-beta.8" + "@docusaurus/utils" "2.0.0-beta.8" fs-extra "^10.0.0" react-json-view "^1.21.3" tslib "^2.3.1" -"@docusaurus/plugin-google-analytics@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.0-beta.7.tgz#040e246bd34300cf88d8f0eed1d677693aae0ec0" - integrity sha512-588Fwd5vlcS13osCm9SeQOL4BnEH5M680pLnFQ2oTfZ1RzLfNFJ0O2mP3c4ivZCsHqT8OguUwZBoSKQC3FtBzg== +"@docusaurus/plugin-google-analytics@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.0-beta.8.tgz#d9b7298fe33e3ce1e11cd722ce4ac681e356915c" + integrity sha512-kpk9pXPIfE+5CbcJSbwF6Evfy5kX+4Z0Ph/x/M1N+8omH+StDrR+fa1S3I5GK38lb3/N1fWNgsWE7LembE9xYQ== dependencies: - "@docusaurus/core" "2.0.0-beta.7" + "@docusaurus/core" "2.0.0-beta.8" -"@docusaurus/plugin-google-gtag@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.0-beta.7.tgz#d8f4be826dbc7b53aaba27c65be86b32ba8bb7b9" - integrity sha512-52nm+VlFk4sGX6R9H3PMv5VVIZSEpzMhnAWTrcLNJyCj7TmX45Rr44+nkFdC1S5xg1Jy6u6farpD9VUK69oQfA== +"@docusaurus/plugin-google-gtag@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.0-beta.8.tgz#ba5b22d0656cf295ccd955e39c7fb5439dadddb8" + integrity sha512-1Wa0yMXZgxp85dGuOD44X+fnZtW8ztmOcGBOgLo9Uwhi+OhxOrW4ZOddhEJA6tmCaRuqkaMK7zN1ss2EUc2g7g== dependencies: - "@docusaurus/core" "2.0.0-beta.7" + "@docusaurus/core" "2.0.0-beta.8" -"@docusaurus/plugin-sitemap@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-beta.7.tgz#a81fcbc65b606d98814ac5ce880b3d8124c32696" - integrity sha512-jCBwxHFDkKbUTa+rc1TGegBpaLM+F/C2N97jhnvT9i07kUClt5w+tWplc+jm1Z1Ei/qwiMC+VLAK7xXnnPWTWg== +"@docusaurus/plugin-sitemap@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-beta.8.tgz#731d97ff8e495cd66f8ba1c6b1426c61726d46c5" + integrity sha512-oz2Hu1q34kvsgPb6DWM8cpzKmNy02BYtv+2GTrg016V+beGr8PNcHkxzgGtdN+Se5zJqdtRQvOPQtIZOJQntcA== dependencies: - "@docusaurus/core" "2.0.0-beta.7" - "@docusaurus/types" "2.0.0-beta.7" - "@docusaurus/utils" "2.0.0-beta.7" - "@docusaurus/utils-common" "2.0.0-beta.7" - "@docusaurus/utils-validation" "2.0.0-beta.7" + "@docusaurus/core" "2.0.0-beta.8" + "@docusaurus/types" "2.0.0-beta.8" + "@docusaurus/utils" "2.0.0-beta.8" + "@docusaurus/utils-common" "2.0.0-beta.8" + "@docusaurus/utils-validation" "2.0.0-beta.8" fs-extra "^10.0.0" sitemap "^7.0.0" tslib "^2.3.1" -"@docusaurus/preset-classic@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-2.0.0-beta.7.tgz#7340144e1ed486ef14cdbfd4366e2d7fc350ff13" - integrity sha512-lrIpgjrcea3AxroU7G1q1cMFxYNBJleNWCMJ+3Ed1cwn6yRmOQAtUJPQzhPX67Uay5Wl6d2K8/cPpMdAT3E0Fg== - dependencies: - "@docusaurus/core" "2.0.0-beta.7" - "@docusaurus/plugin-content-blog" "2.0.0-beta.7" - "@docusaurus/plugin-content-docs" "2.0.0-beta.7" - "@docusaurus/plugin-content-pages" "2.0.0-beta.7" - "@docusaurus/plugin-debug" "2.0.0-beta.7" - "@docusaurus/plugin-google-analytics" "2.0.0-beta.7" - "@docusaurus/plugin-google-gtag" "2.0.0-beta.7" - "@docusaurus/plugin-sitemap" "2.0.0-beta.7" - "@docusaurus/theme-classic" "2.0.0-beta.7" - "@docusaurus/theme-search-algolia" "2.0.0-beta.7" +"@docusaurus/preset-classic@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-2.0.0-beta.8.tgz#97e42cb0c5b1858cf644febc7ebd61b1a72c9f16" + integrity sha512-tlc+KuMJFmfXYA/FOCbHvMfRWx2SQtJLf6rkBUzRt0Vlym+pI7CG1px3OKON62jaaLm/Vyvn3+47z3yClJRM1A== + dependencies: + "@docusaurus/core" "2.0.0-beta.8" + "@docusaurus/plugin-content-blog" "2.0.0-beta.8" + "@docusaurus/plugin-content-docs" "2.0.0-beta.8" + "@docusaurus/plugin-content-pages" "2.0.0-beta.8" + "@docusaurus/plugin-debug" "2.0.0-beta.8" + "@docusaurus/plugin-google-analytics" "2.0.0-beta.8" + "@docusaurus/plugin-google-gtag" "2.0.0-beta.8" + "@docusaurus/plugin-sitemap" "2.0.0-beta.8" + "@docusaurus/theme-classic" "2.0.0-beta.8" + "@docusaurus/theme-search-algolia" "2.0.0-beta.8" "@docusaurus/react-loadable@5.5.0": version "5.5.0" @@ -1423,20 +1423,20 @@ dependencies: prop-types "^15.6.2" -"@docusaurus/theme-classic@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.0.0-beta.7.tgz#af51c439280ad2064d0a65b77bc0475590a74d06" - integrity sha512-x93sqAlR5l0oZa12GetWrvwm6Olx23bA3nv1gYIAhaxHqo374vC6EWIsvjJCBdCSmmuPX6TaZm1rSDYFWc/37g== - dependencies: - "@docusaurus/core" "2.0.0-beta.7" - "@docusaurus/plugin-content-blog" "2.0.0-beta.7" - "@docusaurus/plugin-content-docs" "2.0.0-beta.7" - "@docusaurus/plugin-content-pages" "2.0.0-beta.7" - "@docusaurus/theme-common" "2.0.0-beta.7" - "@docusaurus/types" "2.0.0-beta.7" - "@docusaurus/utils" "2.0.0-beta.7" - "@docusaurus/utils-common" "2.0.0-beta.7" - "@docusaurus/utils-validation" "2.0.0-beta.7" +"@docusaurus/theme-classic@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.0.0-beta.8.tgz#5465c0ea739053ba5ea9f5dca61406e8935f00b2" + integrity sha512-lC0PGxACbNiq98WwF1O3T0YblqSK6yo7KcDcrOnPJd0XCV4xMjWZSeeSIneotfs2uvJzmG3GOg7EfQcLvhdyIQ== + dependencies: + "@docusaurus/core" "2.0.0-beta.8" + "@docusaurus/plugin-content-blog" "2.0.0-beta.8" + "@docusaurus/plugin-content-docs" "2.0.0-beta.8" + "@docusaurus/plugin-content-pages" "2.0.0-beta.8" + "@docusaurus/theme-common" "2.0.0-beta.8" + "@docusaurus/types" "2.0.0-beta.8" + "@docusaurus/utils" "2.0.0-beta.8" + "@docusaurus/utils-common" "2.0.0-beta.8" + "@docusaurus/utils-validation" "2.0.0-beta.8" "@mdx-js/mdx" "^1.6.21" "@mdx-js/react" "^1.6.21" chalk "^4.1.2" @@ -1454,41 +1454,41 @@ react-router-dom "^5.2.0" rtlcss "^3.3.0" -"@docusaurus/theme-common@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.0.0-beta.7.tgz#958b3b9b537e78b6f933bf0b2348650e2e8f8d37" - integrity sha512-50ySwGxsLDS2Jqh771ZkN72QJvLHu+mz+oh/sVerfaQZUmTHZ2AHm0F2Ugzwcwu7ZeuAt31qjHsCLC0ZgVy88A== +"@docusaurus/theme-common@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.0.0-beta.8.tgz#eee6f4a08034477458bbc8869e9ebb1fea76fb6f" + integrity sha512-jrlCgFcg0wAfrtzSwU5F8iVdIBmL325d6jupD3N2CirSG6TxAmHDkeAbFyY6ZjaT27XYWXJUwvqvsbbNXAdNzw== dependencies: - "@docusaurus/core" "2.0.0-beta.7" - "@docusaurus/plugin-content-blog" "2.0.0-beta.7" - "@docusaurus/plugin-content-docs" "2.0.0-beta.7" - "@docusaurus/plugin-content-pages" "2.0.0-beta.7" - "@docusaurus/types" "2.0.0-beta.7" + "@docusaurus/core" "2.0.0-beta.8" + "@docusaurus/plugin-content-blog" "2.0.0-beta.8" + "@docusaurus/plugin-content-docs" "2.0.0-beta.8" + "@docusaurus/plugin-content-pages" "2.0.0-beta.8" + "@docusaurus/types" "2.0.0-beta.8" clsx "^1.1.1" fs-extra "^10.0.0" tslib "^2.3.1" utility-types "^3.10.0" -"@docusaurus/theme-search-algolia@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-beta.7.tgz#d89e56cb98e3632f0b50a0ff72d34882efabe68b" - integrity sha512-N/5AVhs/nx1lcHeWG6ek3SjpARJ8UCGyWgcDDb0Li867YFle/b8Slai8ZgKUDrHlRl1+t3iE8G9w5+xAB+FdwA== +"@docusaurus/theme-search-algolia@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-beta.8.tgz#9747f6975719152ac18674c526a90930ef9303fb" + integrity sha512-ryT57Wipems0GbB0WxdrTUJ4q/1DM6xoqJlpGGnTy52FEZi3ZoCp+1yxaBLbKKYevGl1nEF3S0kp1o13UiqKTw== dependencies: "@docsearch/react" "^3.0.0-alpha.39" - "@docusaurus/core" "2.0.0-beta.7" - "@docusaurus/theme-common" "2.0.0-beta.7" - "@docusaurus/utils" "2.0.0-beta.7" - "@docusaurus/utils-validation" "2.0.0-beta.7" + "@docusaurus/core" "2.0.0-beta.8" + "@docusaurus/theme-common" "2.0.0-beta.8" + "@docusaurus/utils" "2.0.0-beta.8" + "@docusaurus/utils-validation" "2.0.0-beta.8" algoliasearch "^4.10.5" algoliasearch-helper "^3.5.5" clsx "^1.1.1" eta "^1.12.3" lodash "^4.17.20" -"@docusaurus/types@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.0.0-beta.7.tgz#78ea662e6879ef9d819e505e7338a4f861f0b53f" - integrity sha512-p65Fy/8yhnhOvEcqrDtSqfepEmBOxo6mFtCVFS/zQJgXCH10pvbN4SjIFIFFHh8AvbAgv1Dp2TBel2mdwQO2yA== +"@docusaurus/types@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.0.0-beta.8.tgz#0dd7e51ca403c9567eb18d985bb65c975ce15cbc" + integrity sha512-wEzyQvku2zNNp3ChPk1x5s7SvlFygTyuqL9dpwvzCsJhxqZ0JH+whellh2YtDQQO617npOM8l6MC1Yd6ePws2Q== dependencies: commander "^5.1.0" joi "^17.4.2" @@ -1497,30 +1497,30 @@ webpack "^5.40.0" webpack-merge "^5.8.0" -"@docusaurus/utils-common@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.0.0-beta.7.tgz#223096c825990c17da59f1009299cac3edcb00c7" - integrity sha512-qfuEZFe81TEJfNVx5rbwRSPID/guulpr0mTVOTpe8y4MozkqhWvK2j9xElVg9olJc+6WBd9IUN2NIq33g7QjYQ== +"@docusaurus/utils-common@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.0.0-beta.8.tgz#962534413af2f95d8562b46f077be3a6a49fee61" + integrity sha512-SWnXd+VHN+YWKJGdaPHLmREaNMKEFQmAN12xA/FufXFDvVZJOA2YShLEAjSJDQTKt9hfGys3JCYF1PBgosB0sA== dependencies: - "@docusaurus/types" "2.0.0-beta.7" + "@docusaurus/types" "2.0.0-beta.8" tslib "^2.3.1" -"@docusaurus/utils-validation@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.0.0-beta.7.tgz#b2cc4bf77b70b6956f00aa436aed8c610f2ecd8a" - integrity sha512-lcnsW1sJ+DUTkPS2aA3JysO6pZ9kqDAhesrG7Y8q2ivlwU/unED2N7/rubP0Yw0KYFr/1b+v/uOtyfNYZya3gQ== +"@docusaurus/utils-validation@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.0.0-beta.8.tgz#a2093f8e20c79581bc41d6156e4f3a8e3ce95a9a" + integrity sha512-zcoJw9Bo/WkRLJhD53ck0rA68cnswc9TB84F/hOm92X4QkhjCUtb5XlMUtTtvO9ScnlgsFiQYaySrFRAM+fr5w== dependencies: - "@docusaurus/utils" "2.0.0-beta.7" + "@docusaurus/utils" "2.0.0-beta.8" chalk "^4.1.2" joi "^17.4.2" tslib "^2.3.1" -"@docusaurus/utils@2.0.0-beta.7": - version "2.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.0.0-beta.7.tgz#e92d11f0fb39aa8c0938025770901594782425a5" - integrity sha512-sL6IKOR/12btiHZS1yiCwlyFMbbkTUGSXSMSmDgumQRSDU63OaAvTLO7lWi2zDwFPXtFtfruAULcXc8XO4RjUA== +"@docusaurus/utils@2.0.0-beta.8": + version "2.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.0.0-beta.8.tgz#f6754c8e767cdfcca324eb8e1ac1ceb455d10deb" + integrity sha512-PMdPg8ft/zdAqhuDvMLzDlwXEp01qAh+eOXciKElDrh1zuQM/Hwjg0G3sKiwKInbpHJcz6lbTJCpEjmvMGlXpg== dependencies: - "@docusaurus/types" "2.0.0-beta.7" + "@docusaurus/types" "2.0.0-beta.8" "@mdx-js/runtime" "^1.6.22" "@types/github-slugger" "^1.3.0" chalk "^4.1.2" @@ -1836,9 +1836,9 @@ integrity sha512-J/rMZa7RqiH/rT29TEVZO4nBoDP9XJOjnbbIofg7GQKs4JIduEO3WLpte+6WeUz/TcrXKlY+bM7FYrp8yFB+3g== "@types/glob@^7.1.1": - version "7.1.4" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.4.tgz#ea59e21d2ee5c517914cb4bc8e4153b99e566672" - integrity sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA== + version "7.2.0" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== dependencies: "@types/minimatch" "*" "@types/node" "*" @@ -1883,9 +1883,9 @@ integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== "@types/node@*": - version "16.11.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.0.tgz#4b95f2327bacd1ef8f08d8ceda193039c5d7f52e" - integrity sha512-8MLkBIYQMuhRBQzGN9875bYsOhPnf/0rgXGo66S2FemHkhbn9qtsz9ywV1iCG+vbjigE4WUNVvw37Dx+L0qsPg== + version "16.11.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.2.tgz#31c249c136c3f9b35d4b60fb8e50e01a1f0cc9a5" + integrity sha512-w34LtBB0OkDTs19FQHXy4Ig/TOXI4zqvXS2Kk1PAsRKZ0I+nik7LlMYxckW0tSNGtvWmzB+mrCTbuEjuB9DVsw== "@types/node@^15.0.1": version "15.14.9" @@ -2142,31 +2142,31 @@ ajv@^8.0.1: uri-js "^4.2.2" algoliasearch-helper@^3.5.5: - version "3.6.1" - resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.6.1.tgz#b2964de29f69d8266d714e74cf097c06447ffaf2" - integrity sha512-uJkB/t/bU0tYE88ZoJJCGCNSD+9mTdsp/Yp5dG+qviIBYoUUZfKWwFcZBhW+eiqpO+EadTu7Xj3RYYnrvBOUyA== + version "3.6.2" + resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.6.2.tgz#45e19b12589cfa0c611b573287f65266ea2cc14a" + integrity sha512-Xx0NOA6k4ySn+R2l3UMSONAaMkyfmrZ3AP1geEMo32MxDJQJesZABZYsldO9fa6FKQxH91afhi4hO1G0Zc2opg== dependencies: events "^1.1.1" algoliasearch@^4.0.0, algoliasearch@^4.10.5: - version "4.10.5" - resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.10.5.tgz#1faf34a3ae5ac3bef27282eb141251c70c7f5db2" - integrity sha512-KmH2XkiN+8FxhND4nWFbQDkIoU6g2OjfeU9kIv4Lb+EiOOs3Gpp7jvd+JnatsCisAZsnWQdjd7zVlW7I/85QvQ== - dependencies: - "@algolia/cache-browser-local-storage" "4.10.5" - "@algolia/cache-common" "4.10.5" - "@algolia/cache-in-memory" "4.10.5" - "@algolia/client-account" "4.10.5" - "@algolia/client-analytics" "4.10.5" - "@algolia/client-common" "4.10.5" - "@algolia/client-personalization" "4.10.5" - "@algolia/client-search" "4.10.5" - "@algolia/logger-common" "4.10.5" - "@algolia/logger-console" "4.10.5" - "@algolia/requester-browser-xhr" "4.10.5" - "@algolia/requester-common" "4.10.5" - "@algolia/requester-node-http" "4.10.5" - "@algolia/transporter" "4.10.5" + version "4.11.0" + resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.11.0.tgz#234befb3ac355c094077f0edf3777240b1ee013c" + integrity sha512-IXRj8kAP2WrMmj+eoPqPc6P7Ncq1yZkFiyDrjTBObV1ADNL8Z/KdZ+dWC5MmYcBLAbcB/mMCpak5N/D1UIZvsA== + dependencies: + "@algolia/cache-browser-local-storage" "4.11.0" + "@algolia/cache-common" "4.11.0" + "@algolia/cache-in-memory" "4.11.0" + "@algolia/client-account" "4.11.0" + "@algolia/client-analytics" "4.11.0" + "@algolia/client-common" "4.11.0" + "@algolia/client-personalization" "4.11.0" + "@algolia/client-search" "4.11.0" + "@algolia/logger-common" "4.11.0" + "@algolia/logger-console" "4.11.0" + "@algolia/requester-browser-xhr" "4.11.0" + "@algolia/requester-common" "4.11.0" + "@algolia/requester-node-http" "4.11.0" + "@algolia/transporter" "4.11.0" alphanum-sort@^1.0.2: version "1.0.2" @@ -2438,9 +2438,9 @@ axobject-query@^2.2.0: integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== babel-loader@^8.2.2: - version "8.2.2" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81" - integrity sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g== + version "8.2.3" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.3.tgz#8986b40f1a64cacfcb4b8429320085ef68b1342d" + integrity sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw== dependencies: find-cache-dir "^3.3.1" loader-utils "^1.4.0" @@ -2781,9 +2781,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.30001264, caniuse-lite@^1.0.30001265: - version "1.0.30001267" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001267.tgz#b1cf2937175afc0570e4615fc2d2f9069fa0ed30" - integrity sha512-r1mjTzAuJ9W8cPBGbbus8E0SKcUP7gn03R14Wk8FlAlqhH9hroy9nLqmpuXlfKEw/oILW+FGz47ipXV2O7x8lg== + version "1.0.30001270" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001270.tgz#cc9c37a4ec5c1a8d616fc7bace902bb053b0cdea" + integrity sha512-TcIC7AyNWXhcOmv2KftOl1ShFAaHQYcB/EPL/hEyMrcS7ZX0/DvV1aoy6BzV0+16wTpoAyTMGDNAJfSqS/rz7A== ccount@^1.0.0, ccount@^1.0.3: version "1.1.0" @@ -2904,9 +2904,9 @@ class-utils@^0.3.5: static-extend "^0.1.1" clean-css@^5.1.5: - version "5.2.1" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.2.1.tgz#e5bdb1bee5f332c67e98cb6181251d4f88c0a6ab" - integrity sha512-ooQCa1/70oRfVdUUGjKpbHuxgMgm8BsDT5EBqBGvPxMoRoGXf4PNx5mMnkjzJ9Ptx4vvmDdha0QVh86QtYIk1g== + version "5.2.2" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.2.2.tgz#d3a7c6ee2511011e051719838bdcf8314dc4548d" + integrity sha512-/eR8ru5zyxKzpBLv9YZvMXgTSSQn7AdkMItMYynsFgGwTveCRVam9IUPFloE85B4vAIj05IuKmmEoV7/AQjT0w== dependencies: source-map "~0.6.0" @@ -3004,9 +3004,9 @@ color-name@~1.1.4: integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== colord@^2.0.1, colord@^2.6: - version "2.8.0" - resolved "https://registry.yarnpkg.com/colord/-/colord-2.8.0.tgz#64fb7aa03de7652b5a39eee50271a104c2783b12" - integrity sha512-kNkVV4KFta3TYQv0bzs4xNwLaeag261pxgzGQSh4cQ1rEhYjcTJfFRP0SDlbhLONg0eSoLzrDd79PosjbltufA== + version "2.9.1" + resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.1.tgz#c961ea0efeb57c9f0f4834458f26cb9cc4a3f90e" + integrity sha512-4LBMSt09vR0uLnPVkOUBnmxgoaeN4ewRbx801wY/bXcltXfpR/G46OdWn96XpYmCWuYvO46aBZP4NgX8HpNAcw== combine-promises@^1.1.0: version "1.1.0" @@ -3743,9 +3743,9 @@ ee-first@1.1.1: integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= electron-to-chromium@^1.3.564, electron-to-chromium@^1.3.867: - version "1.3.871" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.871.tgz#6e87365fd72037a6c898fb46050ad4be3ac9ef62" - integrity sha512-qcLvDUPf8DSIMWarHT2ptgcqrYg62n3vPA7vhrOF24d8UNzbUBaHu2CySiENR3nEDzYgaN60071t0F6KLYMQ7Q== + version "1.3.876" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.876.tgz#fe6f65c9740406f4aa69f10faa8e1d79b81bdf34" + integrity sha512-a6LR4738psrubCtGx5HxM/gNlrIsh4eFTNnokgOqvQo81GWd07lLcOjITkAXn2y4lIp18vgS+DGnehj+/oEAxQ== emoji-regex@^7.0.1: version "7.0.3" @@ -5042,7 +5042,7 @@ html-void-elements@^1.0.0: resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483" integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== -html-webpack-plugin@^5.3.2: +html-webpack-plugin@^5.4.0: version "5.4.0" resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.4.0.tgz#d016cd9594be5c243bb5c12287af43babbe1c094" integrity sha512-cSUdckNOIqKc0nOrCJG7zkvzEIUcXjzEiVbKdEdIzW3BD5T4xPK6boV1mrTrPDZiL+aAr/j45eqbNL1akU2ZRA== @@ -5704,9 +5704,9 @@ isobject@^3.0.0, isobject@^3.0.1: integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= jest-worker@^27.0.2, jest-worker@^27.0.6: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.2.5.tgz#ed42865661959488aa020e8a325df010597c36d4" - integrity sha512-HTjEPZtcNKZ4LnhSp02NEH4vE+5OpJ0EsOWYvGQpHgUMLngydESAAMH5Wd/asPf29+XUDQZszxpLg1BkIIA2aw== + version "27.3.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.3.1.tgz#0def7feae5b8042be38479799aeb7b5facac24b2" + integrity sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g== dependencies: "@types/node" "*" merge-stream "^2.0.0" @@ -6482,7 +6482,7 @@ nanocolors@^0.1.12: resolved "https://registry.yarnpkg.com/nanocolors/-/nanocolors-0.1.12.tgz#8577482c58cbd7b5bb1681db4cf48f11a87fd5f6" integrity sha512-2nMHqg1x5PU+unxX7PGY7AuYxl2qDx7PSrTRjizr8sxdd3l/3hBuWWaki62qmtYm2U5i4Z5E7GbjlyDFhs9/EQ== -nanoid@^3.1.28: +nanoid@^3.1.30: version "3.1.30" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.30.tgz#63f93cc548d2a113dc5dfbc63bfa09e2b9b64362" integrity sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ== @@ -6555,9 +6555,9 @@ node-releases@^1.1.61: integrity sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ== node-releases@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.0.tgz#67dc74903100a7deb044037b8a2e5f453bb05400" - integrity sha512-aA87l0flFYMzCHpTM3DERFSYxc6lv/BltdbRTOMZuxZ0cwZCD3mejE5n9vLhSJCN++/eOqr77G1IO5uXxlQYWA== + version "2.0.1" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" + integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== normalize-package-data@^2.5.0: version "2.5.0" @@ -7480,12 +7480,12 @@ postcss@^7.0.14, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.26, postcss@^7.0. source-map "^0.6.1" postcss@^8.2.15, postcss@^8.2.4, postcss@^8.3.5, postcss@^8.3.7: - version "8.3.9" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.9.tgz#98754caa06c4ee9eb59cc48bd073bb6bd3437c31" - integrity sha512-f/ZFyAKh9Dnqytx5X62jgjhhzttjZS7hMsohcI7HEI5tjELX/HxCy3EFhsRxyzGvrzFF+82XPvCS8T9TFleVJw== + version "8.3.11" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.11.tgz#c3beca7ea811cd5e1c4a3ec6d2e7599ef1f8f858" + integrity sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA== dependencies: - nanoid "^3.1.28" - picocolors "^0.2.1" + nanoid "^3.1.30" + picocolors "^1.0.0" source-map-js "^0.6.2" prelude-ls@^1.2.1: @@ -8276,9 +8276,9 @@ rtl-detect@^1.0.4: integrity sha512-EBR4I2VDSSYr7PkBmFy04uhycIpDKp+21p/jARYXlCSjQksTBQcJ0HFUPOO79EPPH5JS6VAhiIQbycf0O3JAxQ== rtlcss@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/rtlcss/-/rtlcss-3.3.0.tgz#fa9d29b071a863fe959704da6a93de3076aeeca4" - integrity sha512-XZ2KEatH2nU5yPlts1Wu8SGIuZ3ndN025HQX5MqtUCUiOn5WkCDbcpJ2VJWjpuFmM2cUTQ1xtH21fhMCSseI5A== + version "3.4.0" + resolved "https://registry.yarnpkg.com/rtlcss/-/rtlcss-3.4.0.tgz#81c5cab77050ea0d880147b8a78943330d4d1813" + integrity sha512-pOSLxwmJTjqcnlFIezpCGyhRoPKIwXj78wJfBI8iZw7gZGVzjT/T5QcaimRComsPanMSV0hzmI5o+oWIP3nNBA== dependencies: chalk "^4.1.0" find-up "^5.0.0" @@ -9814,9 +9814,9 @@ webpack-sources@^3.2.0: integrity sha512-t6BMVLQ0AkjBOoRTZgqrWm7xbXMBzD+XDq2EZ96+vMfn3qKgsvdXZhbPZ4ElUOpdv4u+iiGe+w3+J75iy/bYGA== webpack@^5.40.0: - version "5.58.2" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.58.2.tgz#6b4af12fc9bd5cbedc00dc0a2fc2b9592db16b44" - integrity sha512-3S6e9Vo1W2ijk4F4PPWRIu6D/uGgqaPmqw+av3W3jLDujuNkdxX5h5c+RQ6GkjVR+WwIPOfgY8av+j5j4tMqJw== + version "5.59.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.59.1.tgz#60c77e9aad796252153d4d7ab6b2d4c11f0e548c" + integrity sha512-I01IQV9K96FlpXX3V0L4nvd7gb0r7thfuu1IfT2P4uOHOA77nKARAKDYGe/tScSHKnffNIyQhLC8kRXzY4KEHQ== dependencies: "@types/eslint-scope" "^3.7.0" "@types/estree" "^0.0.50"