From 3f110a36bd3b9fded1820df196955aa3b0a4efed Mon Sep 17 00:00:00 2001 From: Pranab Das <31024886+pranabdas@users.noreply.github.com> Date: Sat, 14 May 2022 13:37:59 +0800 Subject: [PATCH 01/32] fix(theme-classic): autocollapse sidebar categories when navigating with paginator (#7411) * fix: autocollapse sidebar categories Auto collapse sidebar categories when navigating via paginator. * Add autoCollapseCategories in dependency array * restore collapse button behavior * simplify Co-authored-by: Joshua Chen * hopefully a better fix * refactor * try this Co-authored-by: Joshua Chen --- .../src/theme/DocSidebarItem/Category.tsx | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Category.tsx b/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Category.tsx index 7a9a52e0e884..49b52448bcd1 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Category.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Category.tsx @@ -31,19 +31,19 @@ import useIsBrowser from '@docusaurus/useIsBrowser'; function useAutoExpandActiveCategory({ isActive, collapsed, - setCollapsed, + updateCollapsed, }: { isActive: boolean; collapsed: boolean; - setCollapsed: (b: boolean) => void; + updateCollapsed: (b: boolean) => void; }) { const wasActive = usePrevious(isActive); useEffect(() => { const justBecameActive = isActive && !wasActive; if (justBecameActive && collapsed) { - setCollapsed(false); + updateCollapsed(false); } - }, [isActive, wasActive, collapsed, setCollapsed]); + }, [isActive, wasActive, collapsed, updateCollapsed]); } /** @@ -105,6 +105,11 @@ export default function DocSidebarItemCategory({ ...props }: Props): JSX.Element { const {items, label, collapsible, className, href} = item; + const { + docs: { + sidebar: {autoCollapseCategories}, + }, + } = useThemeConfig(); const hrefWithSSRFallback = useCategoryHrefWithSSRFallback(item); const isActive = isActiveSidebarItem(item, activePath); @@ -121,17 +126,13 @@ export default function DocSidebarItemCategory({ }, }); - useAutoExpandActiveCategory({isActive, collapsed, setCollapsed}); const {expandedItem, setExpandedItem} = useDocSidebarItemsExpandedState(); - function updateCollapsed(toCollapsed: boolean = !collapsed) { + // Use this instead of `setCollapsed`, because it is also reactive + const updateCollapsed = (toCollapsed: boolean = !collapsed) => { setExpandedItem(toCollapsed ? null : index); setCollapsed(toCollapsed); - } - const { - docs: { - sidebar: {autoCollapseCategories}, - }, - } = useThemeConfig(); + }; + useAutoExpandActiveCategory({isActive, collapsed, updateCollapsed}); useEffect(() => { if ( collapsible && From c17d745533abe54cfde6c886e41c76774420a800 Mon Sep 17 00:00:00 2001 From: Joshua Chen Date: Sat, 14 May 2022 14:08:10 +0800 Subject: [PATCH 02/32] refactor(theme-classic): always collocate stylesheets with components in one folder (#7415) --- .../src/theme/DocPage/Layout/Sidebar/index.tsx | 2 +- .../Layout/Sidebar/{index.module.css => styles.module.css} | 0 .../src/theme/DocPage/Layout/index.tsx | 5 ++--- .../DocPage/Layout/{index.module.css => styles.module.css} | 0 .../DocSidebarItem/{Category.tsx => Category/index.tsx} | 0 .../src/theme/DocSidebarItem/{Html.tsx => Html/index.tsx} | 2 +- .../{Html.module.css => Html/styles.module.css} | 0 .../src/theme/DocSidebarItem/{Link.tsx => Link/index.tsx} | 2 +- .../{Link.module.css => Link/styles.module.css} | 0 .../src/theme/MDXComponents/{Img.tsx => Img/index.tsx} | 3 ++- .../MDXComponents/{Img.module.css => Img/styles.module.css} | 0 .../{CollapseButton.tsx => CollapseButton/index.tsx} | 3 ++- .../styles.module.css} | 0 .../src/theme/TOCCollapsible/index.tsx | 3 ++- .../TOCCollapsible/{index.module.css => styles.module.css} | 0 15 files changed, 11 insertions(+), 9 deletions(-) rename packages/docusaurus-theme-classic/src/theme/DocPage/Layout/Sidebar/{index.module.css => styles.module.css} (100%) rename packages/docusaurus-theme-classic/src/theme/DocPage/Layout/{index.module.css => styles.module.css} (100%) rename packages/docusaurus-theme-classic/src/theme/DocSidebarItem/{Category.tsx => Category/index.tsx} (100%) rename packages/docusaurus-theme-classic/src/theme/DocSidebarItem/{Html.tsx => Html/index.tsx} (95%) rename packages/docusaurus-theme-classic/src/theme/DocSidebarItem/{Html.module.css => Html/styles.module.css} (100%) rename packages/docusaurus-theme-classic/src/theme/DocSidebarItem/{Link.tsx => Link/index.tsx} (97%) rename packages/docusaurus-theme-classic/src/theme/DocSidebarItem/{Link.module.css => Link/styles.module.css} (100%) rename packages/docusaurus-theme-classic/src/theme/MDXComponents/{Img.tsx => Img/index.tsx} (93%) rename packages/docusaurus-theme-classic/src/theme/MDXComponents/{Img.module.css => Img/styles.module.css} (100%) rename packages/docusaurus-theme-classic/src/theme/TOCCollapsible/{CollapseButton.tsx => CollapseButton/index.tsx} (94%) rename packages/docusaurus-theme-classic/src/theme/TOCCollapsible/{CollapseButton.module.css => CollapseButton/styles.module.css} (100%) rename packages/docusaurus-theme-classic/src/theme/TOCCollapsible/{index.module.css => styles.module.css} (100%) diff --git a/packages/docusaurus-theme-classic/src/theme/DocPage/Layout/Sidebar/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocPage/Layout/Sidebar/index.tsx index 438d9f814e79..6585c6ec6888 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocPage/Layout/Sidebar/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocPage/Layout/Sidebar/index.tsx @@ -12,7 +12,7 @@ import type {Props} from '@theme/DocPage/Layout/Sidebar'; import ExpandButton from '@theme/DocPage/Layout/Sidebar/ExpandButton'; import clsx from 'clsx'; -import styles from './index.module.css'; +import styles from './styles.module.css'; import {ThemeClassNames, useDocsSidebar} from '@docusaurus/theme-common'; diff --git a/packages/docusaurus-theme-classic/src/theme/DocPage/Layout/Sidebar/index.module.css b/packages/docusaurus-theme-classic/src/theme/DocPage/Layout/Sidebar/styles.module.css similarity index 100% rename from packages/docusaurus-theme-classic/src/theme/DocPage/Layout/Sidebar/index.module.css rename to packages/docusaurus-theme-classic/src/theme/DocPage/Layout/Sidebar/styles.module.css diff --git a/packages/docusaurus-theme-classic/src/theme/DocPage/Layout/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocPage/Layout/index.tsx index 8f95807481fd..d0269db346b2 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocPage/Layout/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocPage/Layout/index.tsx @@ -11,11 +11,10 @@ import BackToTopButton from '@theme/BackToTopButton'; import type {Props} from '@theme/DocPage/Layout'; import DocPageLayoutSidebar from '@theme/DocPage/Layout/Sidebar'; import DocPageLayoutMain from '@theme/DocPage/Layout/Main'; - -import styles from './index.module.css'; - import {useDocsSidebar} from '@docusaurus/theme-common'; +import styles from './styles.module.css'; + export default function DocPageLayout({children}: Props): JSX.Element { const sidebar = useDocsSidebar(); const [hiddenSidebarContainer, setHiddenSidebarContainer] = useState(false); diff --git a/packages/docusaurus-theme-classic/src/theme/DocPage/Layout/index.module.css b/packages/docusaurus-theme-classic/src/theme/DocPage/Layout/styles.module.css similarity index 100% rename from packages/docusaurus-theme-classic/src/theme/DocPage/Layout/index.module.css rename to packages/docusaurus-theme-classic/src/theme/DocPage/Layout/styles.module.css diff --git a/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Category.tsx b/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Category/index.tsx similarity index 100% rename from packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Category.tsx rename to packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Category/index.tsx diff --git a/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Html.tsx b/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Html/index.tsx similarity index 95% rename from packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Html.tsx rename to packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Html/index.tsx index 0e97ec27788a..7f6bab8f6cc6 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Html.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Html/index.tsx @@ -10,7 +10,7 @@ import clsx from 'clsx'; import {ThemeClassNames} from '@docusaurus/theme-common'; import type {Props} from '@theme/DocSidebarItem/Html'; -import styles from './Html.module.css'; +import styles from './styles.module.css'; export default function DocSidebarItemHtml({ item, diff --git a/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Html.module.css b/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Html/styles.module.css similarity index 100% rename from packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Html.module.css rename to packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Html/styles.module.css diff --git a/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Link.tsx b/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Link/index.tsx similarity index 97% rename from packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Link.tsx rename to packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Link/index.tsx index 28c481eed42f..a6ed60aaf2c6 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Link.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Link/index.tsx @@ -14,7 +14,7 @@ import IconExternalLink from '@theme/IconExternalLink'; import type {Props} from '@theme/DocSidebarItem/Link'; -import styles from './Link.module.css'; +import styles from './styles.module.css'; export default function DocSidebarItemLink({ item, diff --git a/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Link.module.css b/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Link/styles.module.css similarity index 100% rename from packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Link.module.css rename to packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Link/styles.module.css diff --git a/packages/docusaurus-theme-classic/src/theme/MDXComponents/Img.tsx b/packages/docusaurus-theme-classic/src/theme/MDXComponents/Img/index.tsx similarity index 93% rename from packages/docusaurus-theme-classic/src/theme/MDXComponents/Img.tsx rename to packages/docusaurus-theme-classic/src/theme/MDXComponents/Img/index.tsx index a97bedc3e028..7e0c1c542eb5 100644 --- a/packages/docusaurus-theme-classic/src/theme/MDXComponents/Img.tsx +++ b/packages/docusaurus-theme-classic/src/theme/MDXComponents/Img/index.tsx @@ -7,9 +7,10 @@ import React from 'react'; import type {Props} from '@theme/MDXComponents/Img'; -import styles from './Img.module.css'; import clsx from 'clsx'; +import styles from './styles.module.css'; + function transformImgClassName(className?: string): string { return clsx(className, styles.img); } diff --git a/packages/docusaurus-theme-classic/src/theme/MDXComponents/Img.module.css b/packages/docusaurus-theme-classic/src/theme/MDXComponents/Img/styles.module.css similarity index 100% rename from packages/docusaurus-theme-classic/src/theme/MDXComponents/Img.module.css rename to packages/docusaurus-theme-classic/src/theme/MDXComponents/Img/styles.module.css diff --git a/packages/docusaurus-theme-classic/src/theme/TOCCollapsible/CollapseButton.tsx b/packages/docusaurus-theme-classic/src/theme/TOCCollapsible/CollapseButton/index.tsx similarity index 94% rename from packages/docusaurus-theme-classic/src/theme/TOCCollapsible/CollapseButton.tsx rename to packages/docusaurus-theme-classic/src/theme/TOCCollapsible/CollapseButton/index.tsx index 48eeb3afdb19..54d9bf415518 100644 --- a/packages/docusaurus-theme-classic/src/theme/TOCCollapsible/CollapseButton.tsx +++ b/packages/docusaurus-theme-classic/src/theme/TOCCollapsible/CollapseButton/index.tsx @@ -8,9 +8,10 @@ import React from 'react'; import clsx from 'clsx'; import Translate from '@docusaurus/Translate'; -import styles from './CollapseButton.module.css'; import type {Props} from '@theme/TOCCollapsible/CollapseButton'; +import styles from './styles.module.css'; + export default function TOCCollapsibleCollapseButton({ collapsed, ...props diff --git a/packages/docusaurus-theme-classic/src/theme/TOCCollapsible/CollapseButton.module.css b/packages/docusaurus-theme-classic/src/theme/TOCCollapsible/CollapseButton/styles.module.css similarity index 100% rename from packages/docusaurus-theme-classic/src/theme/TOCCollapsible/CollapseButton.module.css rename to packages/docusaurus-theme-classic/src/theme/TOCCollapsible/CollapseButton/styles.module.css diff --git a/packages/docusaurus-theme-classic/src/theme/TOCCollapsible/index.tsx b/packages/docusaurus-theme-classic/src/theme/TOCCollapsible/index.tsx index de818634329c..3a99a4fe7532 100644 --- a/packages/docusaurus-theme-classic/src/theme/TOCCollapsible/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/TOCCollapsible/index.tsx @@ -8,11 +8,12 @@ import React from 'react'; import clsx from 'clsx'; import {useCollapsible, Collapsible} from '@docusaurus/theme-common'; -import styles from './index.module.css'; import TOCItems from '@theme/TOCItems'; import type {Props} from '@theme/TOCCollapsible'; import CollapseButton from '@theme/TOCCollapsible/CollapseButton'; +import styles from './styles.module.css'; + export default function TOCCollapsible({ toc, className, diff --git a/packages/docusaurus-theme-classic/src/theme/TOCCollapsible/index.module.css b/packages/docusaurus-theme-classic/src/theme/TOCCollapsible/styles.module.css similarity index 100% rename from packages/docusaurus-theme-classic/src/theme/TOCCollapsible/index.module.css rename to packages/docusaurus-theme-classic/src/theme/TOCCollapsible/styles.module.css From a4c54aba45476926dd7f375e484870cd053ea035 Mon Sep 17 00:00:00 2001 From: Nitya Narasimhan Date: Sat, 14 May 2022 07:57:43 -0400 Subject: [PATCH 03/32] docs: add Azure SWA as deployment option (#7407) I've linked to the dev.to article (which is a timestamped stable version) - to be consistent with other deployment snippets. The dev.to article references [this GitHub repo](https://github.com/fearlessly-dev/swa-demo-docusaurus) and this[#30DaysOfSWA](https://www.azurestaticwebapps.dev/blog/build-with-docusaurus) site which was the inspiration for writing this article. The repo contains the code for the demo, and its README is the canonical source for the article, in case relevant. --- website/docs/deployment.mdx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/website/docs/deployment.mdx b/website/docs/deployment.mdx index 9674693bce28..23ea588caf49 100644 --- a/website/docs/deployment.mdx +++ b/website/docs/deployment.mdx @@ -778,3 +778,7 @@ See [docs](https://docs.quantcdn.io/docs/cli/continuous-integration) and [blog]( ## Deploying to Cloudflare Pages {#deploying-to-cloudflare-pages} [Cloudflare Pages](https://pages.cloudflare.com/) is a Jamstack platform for frontend developers to collaborate and deploy websites. Get started within a few minutes by following [this article](https://dev.to/apidev234/deploying-docusaurus-to-cloudflare-pages-565g). + +## Deploying to Azure Static Web Apps {#deploying-to-azure-static-web-apps} + +[Azure Static Web Apps](https://docs.microsoft.com/en-us/azure/static-web-apps/overview) is a service that automatically builds and deploys full-stack web apps to Azure directly from the code repository, simplifying the developer experience for CI/CD. Static Web Apps separates the web application's static assets from its dynamic (API) endpoints. Static assets are served from globally-distributed content servers, making it faster for clients to retrieve files using servers nearby. Dynamic APIs are scaled with serverless architectures, using an event-driven functions-based approach that is more cost-effective and scales on demand. Get started in a few minutes by following [this step-by-step guide](https://dev.to/azure/11-share-content-with-docusaurus-azure-static-web-apps-30hc). From 0838884f67c171ef168e10adb1654830a6ffa550 Mon Sep 17 00:00:00 2001 From: Joshua Chen Date: Sat, 14 May 2022 23:39:50 +0800 Subject: [PATCH 04/32] chore: enable import/order rule (#7418) --- .eslintrc.js | 30 ++++++++++++++- __tests__/validate-package-json.test.ts | 2 +- .../functions/codesandbox.ts | 3 +- admin/new.docusaurus.io/functions/index.ts | 3 +- .../new.docusaurus.io/functions/stackblitz.ts | 3 +- admin/scripts/image-resize.mjs | 4 +- jest/snapshotPathNormalizer.ts | 8 ++-- packages/create-docusaurus/bin/index.js | 4 +- packages/create-docusaurus/src/index.ts | 6 +-- .../classic-typescript/src/pages/index.tsx | 5 ++- .../templates/classic/src/pages/index.js | 5 ++- packages/docusaurus-mdx-loader/src/loader.ts | 6 ++- .../src/remark/toc/index.ts | 2 +- .../src/remark/transformImage/index.ts | 10 ++--- .../src/remark/transformLinks/index.ts | 6 +-- packages/docusaurus-migrate/bin/index.mjs | 4 +- .../src/__tests__/index.test.ts | 2 +- packages/docusaurus-migrate/src/index.ts | 11 +++--- .../src/index.d.ts | 2 +- .../src/__tests__/collectRedirects.test.ts | 6 +-- .../src/__tests__/options.test.ts | 2 +- .../src/collectRedirects.ts | 15 ++++---- .../src/createRedirectPageContent.ts | 2 +- .../src/index.ts | 9 ++--- .../src/options.ts | 2 +- .../src/redirectValidation.ts | 2 +- .../src/writeRedirectFiles.ts | 7 ++-- .../src/__tests__/authors.test.ts | 2 +- .../src/__tests__/blogUtils.test.ts | 11 ++---- .../src/__tests__/feed.test.ts | 4 +- .../src/__tests__/frontMatter.test.ts | 2 +- .../src/__tests__/index.test.ts | 8 ++-- .../src/__tests__/options.test.ts | 2 +- .../src/__tests__/translations.test.ts | 9 +++-- .../src/authors.ts | 2 +- .../src/blogUtils.ts | 8 ++-- .../src/feed.ts | 8 ++-- .../src/index.ts | 12 +++--- .../src/plugin-content-blog.d.ts | 2 +- .../src/__tests__/cli.test.ts | Bin 11292 -> 11292 bytes .../src/__tests__/docs.test.ts | 8 ++-- .../src/__tests__/frontMatter.test.ts | 2 +- .../src/__tests__/index.test.ts | 35 ++++++++---------- .../src/__tests__/lastUpdate.test.ts | 2 +- .../src/__tests__/options.test.ts | 4 +- .../src/__tests__/translations.test.ts | 9 +++-- .../src/categoryGeneratedIndex.ts | 4 +- .../docusaurus-plugin-content-docs/src/cli.ts | 10 ++--- .../client/__tests__/docsClientUtils.test.ts | 2 +- .../src/docs.ts | 6 +-- .../src/globalData.ts | 2 +- .../src/index.ts | 34 +++++++++-------- .../src/markdown/__tests__/linkify.test.ts | 2 +- .../src/markdown/linkify.ts | 2 +- .../src/options.ts | 7 ++-- .../src/props.ts | 4 +- .../src/routes.ts | 6 +-- .../src/sidebars/__tests__/generator.test.ts | 2 +- .../src/sidebars/__tests__/index.test.ts | 2 +- .../src/sidebars/__tests__/processor.test.ts | 8 ++-- .../src/sidebars/generator.ts | 10 ++--- .../src/sidebars/index.ts | 14 +++---- .../src/sidebars/normalization.ts | 6 +-- .../src/sidebars/postProcessor.ts | 4 +- .../src/sidebars/processor.ts | 10 ++--- .../src/sidebars/utils.ts | 5 +-- .../src/tags.ts | 2 +- .../src/translations.ts | 17 ++++----- .../src/versions/__tests__/index.test.ts | 2 +- .../src/versions/files.ts | 2 +- .../src/versions/index.ts | 2 +- .../src/__tests__/index.test.ts | 2 +- .../src/__tests__/options.test.ts | 2 +- .../src/index.ts | 2 +- .../src/options.ts | 2 +- packages/docusaurus-plugin-debug/src/index.ts | 4 +- .../src/theme/DebugConfig/index.tsx | 4 +- .../src/theme/DebugGlobalData/index.tsx | 3 +- .../src/theme/DebugRegistry/index.tsx | 3 +- .../src/theme/DebugRoutes/index.tsx | 3 +- .../src/theme/DebugSiteMetadata/index.tsx | 3 +- .../src/index.ts | 4 +- packages/docusaurus-plugin-pwa/src/index.ts | 14 +++---- .../src/theme/PwaReloadPopup/index.tsx | 1 - .../src/__tests__/createSitemap.test.ts | 2 +- .../src/__tests__/options.test.ts | 2 +- .../src/createSitemap.ts | 2 +- .../src/__tests__/index.test.ts | 6 +-- .../src/index.ts | 4 +- .../src/__tests__/translations.test.ts | 2 +- .../src/__tests__/validateThemeConfig.test.ts | 2 +- .../docusaurus-theme-classic/src/index.ts | 8 ++-- .../src/theme/BlogArchivePage/index.tsx | 4 +- .../src/theme/BlogListPage/index.tsx | 10 ++--- .../src/theme/BlogPostAuthors/index.tsx | 2 +- .../src/theme/BlogPostItem/index.tsx | 4 +- .../src/theme/BlogPostPage/index.tsx | 10 ++--- .../src/theme/BlogSidebar/Desktop/index.tsx | 2 +- .../src/theme/BlogSidebar/index.tsx | 2 +- .../src/theme/BlogTagsListPage/index.tsx | 9 ++--- .../src/theme/BlogTagsPostsPage/index.tsx | 11 +++--- .../src/theme/CodeBlock/Content/Element.tsx | 2 +- .../src/theme/CodeBlock/Content/String.tsx | 2 +- .../src/theme/CodeBlock/Line/index.tsx | 1 + .../src/theme/CodeBlock/index.tsx | 2 +- .../src/theme/ColorModeToggle/index.tsx | 4 +- .../src/theme/Details/index.tsx | 1 + .../src/theme/DocBreadcrumbs/index.tsx | 5 ++- .../src/theme/DocCard/index.tsx | 13 ++++--- .../src/theme/DocCardList/index.tsx | 5 +-- .../DocCategoryGeneratedIndexPage/index.tsx | 4 +- .../src/theme/DocItem/index.tsx | 17 +++++---- .../src/theme/DocItemFooter/index.tsx | 5 +-- .../src/theme/DocPage/Layout/Main/index.tsx | 5 +-- .../Layout/Sidebar/ExpandButton/index.tsx | 2 +- .../theme/DocPage/Layout/Sidebar/index.tsx | 9 ++--- .../src/theme/DocPage/Layout/index.tsx | 4 +- .../src/theme/DocPage/index.tsx | 8 ++-- .../Desktop/CollapseButton/index.tsx | 2 +- .../src/theme/DocSidebar/index.tsx | 2 +- .../theme/DocSidebarItem/Category/index.tsx | 4 +- .../src/theme/DocSidebarItem/Link/index.tsx | 1 - .../src/theme/DocSidebarItems/index.tsx | 2 +- .../src/theme/DocTagDocListPage/index.tsx | 7 ++-- .../src/theme/DocTagsListPage/index.tsx | 7 ++-- .../src/theme/DocVersionBadge/index.tsx | 2 +- .../src/theme/DocVersionBanner/index.tsx | 2 +- .../src/theme/EditThisPage/index.tsx | 5 +-- .../theme/Footer/Links/MultiColumn/index.tsx | 2 +- .../src/theme/Footer/Links/Simple/index.tsx | 2 +- .../src/theme/Footer/Links/index.tsx | 2 +- .../src/theme/Footer/Logo/index.tsx | 4 +- .../src/theme/Heading/index.tsx | 2 +- .../src/theme/IconEdit/index.tsx | 1 - .../src/theme/LastUpdated/index.tsx | 2 +- .../src/theme/Layout/index.tsx | 12 +++--- .../src/theme/Logo/index.tsx | 5 +-- .../src/theme/MDXComponents/Img/index.tsx | 2 +- .../src/theme/MDXComponents/Ul.tsx | 4 +- .../src/theme/MDXPage/index.tsx | 8 ++-- .../theme/Navbar/ColorModeToggle/index.tsx | 2 +- .../src/theme/Navbar/Content/index.tsx | 9 +++-- .../src/theme/Navbar/Layout/index.tsx | 4 +- .../Navbar/MobileSidebar/Header/index.tsx | 2 +- .../Navbar/MobileSidebar/Layout/index.tsx | 2 +- .../MobileSidebar/PrimaryMenu/index.tsx | 2 +- .../Navbar/MobileSidebar/Toggle/index.tsx | 2 +- .../src/theme/Navbar/MobileSidebar/index.tsx | 4 +- .../theme/NavbarItem/DefaultNavbarItem.tsx | 5 +-- .../src/theme/NavbarItem/DocNavbarItem.tsx | 6 +-- .../theme/NavbarItem/DocSidebarNavbarItem.tsx | 7 ++-- .../DocsVersionDropdownNavbarItem.tsx | 6 +-- .../NavbarItem/DocsVersionNavbarItem.tsx | 4 +- .../theme/NavbarItem/DropdownNavbarItem.tsx | 5 +-- .../LocaleDropdownNavbarItem/index.tsx | 6 +-- .../src/theme/NavbarItem/NavbarNavLink.tsx | 4 +- .../src/theme/NavbarItem/SearchNavbarItem.tsx | 2 +- .../src/theme/NavbarItem/index.tsx | 3 +- .../src/theme/NotFound.tsx | 2 +- .../src/theme/SiteMetadata/index.tsx | 2 +- .../src/theme/TOC/index.tsx | 3 +- .../src/theme/TOCCollapsible/index.tsx | 2 +- .../src/theme/TOCInline/index.tsx | 3 +- .../src/theme/TOCItems/index.tsx | 4 +- .../src/theme/TabItem/index.tsx | 2 +- .../src/theme/Tabs/__tests__/index.test.tsx | 4 +- .../src/theme/Tabs/index.tsx | 3 +- .../src/theme/TagsListByLetter/index.tsx | 2 +- .../src/theme/ThemedImage/index.tsx | 1 - .../src/translations.ts | 5 +-- .../src/components/Collapsible/index.tsx | 2 +- .../src/components/Details/index.tsx | 2 +- .../src/contexts/colorMode.tsx | 3 +- .../src/contexts/docsPreferredVersion.tsx | 16 ++++---- .../src/contexts/docsSidebar.tsx | 2 +- .../src/contexts/docsVersion.tsx | 2 +- .../src/hooks/usePrismTheme.ts | 2 +- .../src/hooks/useSearchPage.ts | 2 +- .../src/utils/__tests__/docsUtils.test.tsx | 4 +- .../src/utils/__tests__/generalUtils.test.tsx | 2 +- .../src/utils/__tests__/reactUtils.test.ts | 2 +- .../src/utils/__tests__/routesUtils.test.ts | 2 +- .../src/utils/__tests__/tocUtils.test.ts | 2 +- .../__tests__/useAlternatePageUtils.test.tsx | 2 +- .../utils/__tests__/useLocalPathname.test.tsx | 2 +- .../utils/__tests__/usePluralForm.test.tsx | 2 +- .../src/utils/codeBlockUtils.ts | 2 +- .../src/utils/docsUtils.tsx | 16 ++++---- .../src/utils/metadataUtils.tsx | 2 +- .../src/utils/scrollUtils.tsx | 2 +- .../src/utils/searchUtils.ts | 2 +- .../src/utils/useLocationChange.ts | 2 +- .../src/theme/Playground/index.tsx | 7 ++-- .../src/__tests__/validateThemeConfig.test.ts | 2 +- .../src/index.ts | 4 +- .../src/theme/SearchBar/index.tsx | 2 +- .../src/theme/SearchPage/index.tsx | 5 ++- .../locales/__tests__/locales.test.ts | 2 +- .../docusaurus-theme-translations/update.mjs | 2 +- .../src/validationSchemas.ts | 2 +- .../src/validationUtils.ts | 2 +- .../src/__tests__/emitUtils.test.ts | 2 +- .../src/__tests__/gitUtils.test.ts | 2 +- .../src/__tests__/jsUtils.test.ts | 2 +- .../src/__tests__/markdownUtils.test.ts | 2 +- .../src/__tests__/pathUtils.test.ts | 2 +- .../docusaurus-utils/src/dataFileUtils.ts | 4 +- packages/docusaurus-utils/src/globUtils.ts | 2 +- packages/docusaurus-utils/src/i18nUtils.ts | 4 +- packages/docusaurus-utils/src/jsUtils.ts | 2 +- packages/docusaurus-utils/src/urlUtils.ts | 2 +- packages/docusaurus-utils/src/webpackUtils.ts | 2 +- packages/docusaurus/bin/beforeCli.mjs | 6 +-- packages/docusaurus/bin/docusaurus.mjs | 2 +- packages/docusaurus/src/client/App.tsx | 8 ++-- .../src/client/docusaurusContext.tsx | 3 +- .../src/client/exports/ComponentCreator.tsx | 2 +- .../src/client/exports/ErrorBoundary.tsx | 3 +- .../docusaurus/src/client/exports/Link.tsx | 4 +- .../src/client/exports/Translate.tsx | 3 +- .../client/exports/__tests__/Head.test.tsx | 2 +- .../src/client/exports/useRouteContext.tsx | 2 +- .../docusaurus/src/client/serverEntry.tsx | 13 +++---- .../src/client/theme-fallback/Error/index.tsx | 4 +- .../client/theme-fallback/NotFound/index.tsx | 2 +- packages/docusaurus/src/commands/build.ts | 10 ++--- packages/docusaurus/src/commands/deploy.ts | 6 +-- packages/docusaurus/src/commands/external.ts | 2 +- packages/docusaurus/src/commands/serve.ts | 8 ++-- packages/docusaurus/src/commands/start.ts | 6 +-- .../__snapshots__/actions.test.ts.snap | 6 +-- .../__snapshots__/index.test.ts.snap | 8 ++-- .../swizzle/__tests__/actions.test.ts | 6 +-- .../swizzle/__tests__/components.test.ts | 2 +- .../commands/swizzle/__tests__/config.test.ts | 2 +- .../commands/swizzle/__tests__/index.test.ts | 4 +- .../src/commands/swizzle/actions.ts | 6 +-- .../docusaurus/src/commands/swizzle/common.ts | 2 +- .../src/commands/swizzle/components.ts | 12 +++--- .../docusaurus/src/commands/swizzle/config.ts | 6 +-- .../docusaurus/src/commands/swizzle/index.ts | 6 +-- .../src/commands/swizzle/prompts.ts | 2 +- .../docusaurus/src/commands/swizzle/tables.ts | 6 +-- .../docusaurus/src/commands/swizzle/themes.ts | 4 +- .../src/commands/writeTranslations.ts | 3 +- .../src/server/__tests__/siteMetadata.test.ts | 2 +- .../src/server/__tests__/utils.test.ts | 2 +- packages/docusaurus/src/server/brokenLinks.ts | 10 ++--- packages/docusaurus/src/server/config.ts | 2 +- .../docusaurus/src/server/configValidation.ts | 2 +- packages/docusaurus/src/server/getHostPort.ts | 2 +- packages/docusaurus/src/server/htmlTags.ts | 2 +- packages/docusaurus/src/server/i18n.ts | 2 +- packages/docusaurus/src/server/index.ts | 4 +- .../plugins/__tests__/pluginIds.test.ts | 2 +- .../docusaurus/src/server/plugins/index.ts | 12 +++--- .../docusaurus/src/server/plugins/init.ts | 16 ++++---- .../docusaurus/src/server/plugins/presets.ts | 2 +- .../src/server/plugins/routeConfig.ts | 2 +- packages/docusaurus/src/server/routes.ts | 4 +- .../docusaurus/src/server/siteMetadata.ts | 8 ++-- .../__tests__/translations.test.ts | 6 +-- .../__tests__/translationsExtractor.test.ts | 4 +- .../src/server/translations/translations.ts | 2 +- .../translations/translationsExtractor.ts | 8 ++-- packages/docusaurus/src/server/utils.ts | 2 +- .../src/webpack/__tests__/base.test.ts | 5 +-- .../src/webpack/__tests__/utils.test.ts | 2 +- .../docusaurus/src/webpack/aliases/index.ts | 2 +- packages/docusaurus/src/webpack/base.ts | 8 ++-- packages/docusaurus/src/webpack/client.ts | 7 ++-- .../src/webpack/plugins/CleanWebpackPlugin.ts | 2 +- .../src/webpack/plugins/LogPlugin.ts | 2 +- packages/docusaurus/src/webpack/server.ts | 14 +++---- packages/docusaurus/src/webpack/utils.ts | 12 +++--- packages/lqip-loader/src/lqip.ts | 2 +- .../__tests__/index.test.js | 2 +- .../_pages tests/error-boundary-tests.tsx | 2 +- .../_dogfooding/_pages tests/link-tests.tsx | 2 +- website/community/4-canary/Versions.tsx | 2 +- website/docusaurus.config.js | 4 +- .../src/components/ColorGenerator/index.tsx | 5 +-- website/src/components/Playground/index.tsx | 2 +- website/src/components/UpgradeGuide/index.tsx | 4 +- website/src/data/__tests__/user.test.ts | 5 +-- website/src/pages/index.tsx | 7 ++-- .../_components/ShowcaseCard/index.tsx | 7 ++-- .../ShowcaseFilterToggle/index.tsx | 2 +- .../_components/ShowcaseTagSelect/index.tsx | 2 +- website/src/pages/showcase/index.tsx | 26 ++++++------- website/src/pages/versions.tsx | 5 +-- .../theme/ChangelogAuthors/index.tsx | 4 +- .../changelog/theme/ChangelogItem/index.tsx | 2 +- .../changelog/theme/ChangelogList/index.tsx | 12 +++--- .../changelog/theme/ChangelogPage/index.tsx | 12 +++--- .../featureRequests/FeatureRequestsPage.tsx | 2 +- website/src/theme/CodeBlock/index.tsx | 2 +- website/src/theme/ColorModeToggle.tsx | 2 +- .../theme/DocSidebar/Desktop/Content/index.js | 2 +- website/src/theme/Layout/index.tsx | 2 +- 300 files changed, 703 insertions(+), 718 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index d8b7a4584e11..4dc985f0d9f9 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -220,7 +220,35 @@ module.exports = { ], }, ], - 'import/order': OFF, + 'import/order': [ + WARNING, + { + groups: [ + 'builtin', + 'external', + 'internal', + ['parent', 'sibling', 'index'], + 'type', + ], + pathGroups: [ + {pattern: '@jest/globals', group: 'builtin', position: 'before'}, + {pattern: 'react', group: 'builtin', position: 'before'}, + {pattern: 'fs-extra', group: 'builtin'}, + {pattern: 'lodash', group: 'external', position: 'before'}, + {pattern: 'clsx', group: 'external', position: 'before'}, + // 'Bit weird to not use the `import/internal-regex` option, but this + // way, we can make `import type { Props } from "@theme/*"` appear + // before `import styles from "styles.module.css"`, which is what we + // always did. This should be removable once we stop using ambient + // module declarations for theme aliases. + {pattern: '@theme/**', group: 'internal'}, + {pattern: '@site/**', group: 'internal'}, + {pattern: '@theme-init/**', group: 'internal'}, + {pattern: '@theme-original/**', group: 'internal'}, + ], + pathGroupsExcludedImportTypes: [], + }, + ], 'import/prefer-default-export': OFF, 'jest/consistent-test-it': WARNING, diff --git a/__tests__/validate-package-json.test.ts b/__tests__/validate-package-json.test.ts index 8598d7b89247..f6003be9bacf 100644 --- a/__tests__/validate-package-json.test.ts +++ b/__tests__/validate-package-json.test.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import {Globby} from '@docusaurus/utils'; import fs from 'fs-extra'; +import {Globby} from '@docusaurus/utils'; type PackageJsonFile = { file: string; diff --git a/admin/new.docusaurus.io/functions/codesandbox.ts b/admin/new.docusaurus.io/functions/codesandbox.ts index 365ac26911f4..650c45727e6b 100644 --- a/admin/new.docusaurus.io/functions/codesandbox.ts +++ b/admin/new.docusaurus.io/functions/codesandbox.ts @@ -5,9 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import type {Handler} from '@netlify/functions'; - import {createPlaygroundResponse} from '../functionUtils/playgroundUtils'; +import type {Handler} from '@netlify/functions'; export const handler: Handler = async function handler() { return createPlaygroundResponse('codesandbox'); diff --git a/admin/new.docusaurus.io/functions/index.ts b/admin/new.docusaurus.io/functions/index.ts index a137fecb41c3..14a9df8c0632 100644 --- a/admin/new.docusaurus.io/functions/index.ts +++ b/admin/new.docusaurus.io/functions/index.ts @@ -5,13 +5,12 @@ * LICENSE file in the root directory of this source tree. */ -import type {Handler} from '@netlify/functions'; - import { readPlaygroundName, createPlaygroundResponse, createPlaygroundDocumentationResponse, } from '../functionUtils/playgroundUtils'; +import type {Handler} from '@netlify/functions'; export const handler: Handler = async (event) => { const playgroundName = readPlaygroundName(event); diff --git a/admin/new.docusaurus.io/functions/stackblitz.ts b/admin/new.docusaurus.io/functions/stackblitz.ts index e7762f20dce0..bc6a84d31f5a 100644 --- a/admin/new.docusaurus.io/functions/stackblitz.ts +++ b/admin/new.docusaurus.io/functions/stackblitz.ts @@ -5,9 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import type {Handler} from '@netlify/functions'; - import {createPlaygroundResponse} from '../functionUtils/playgroundUtils'; +import type {Handler} from '@netlify/functions'; export const handler: Handler = async function handler() { return createPlaygroundResponse('stackblitz'); diff --git a/admin/scripts/image-resize.mjs b/admin/scripts/image-resize.mjs index cea298ef8038..ce3d11f97680 100644 --- a/admin/scripts/image-resize.mjs +++ b/admin/scripts/image-resize.mjs @@ -5,12 +5,12 @@ * LICENSE file in the root directory of this source tree. */ -import sharp from 'sharp'; import fs from 'fs-extra'; import path from 'path'; -import imageSize from 'image-size'; import {fileURLToPath} from 'url'; import logger from '@docusaurus/logger'; +import sharp from 'sharp'; +import imageSize from 'image-size'; const allImages = ( await fs.readdir(new URL('../../website/src/data/showcase', import.meta.url)) diff --git a/jest/snapshotPathNormalizer.ts b/jest/snapshotPathNormalizer.ts index 957aef8c40bc..a0e9a3f4d38d 100644 --- a/jest/snapshotPathNormalizer.ts +++ b/jest/snapshotPathNormalizer.ts @@ -8,13 +8,13 @@ // Forked from https://github.com/tribou/jest-serializer-path/blob/master/lib/index.js // Added some project-specific handlers -import _ from 'lodash'; -import {escapePath} from '@docusaurus/utils'; -import stripAnsi from 'strip-ansi'; -import {version} from '@docusaurus/core/package.json'; import os from 'os'; import path from 'path'; import fs from 'fs'; +import _ from 'lodash'; +import {escapePath} from '@docusaurus/utils'; +import {version} from '@docusaurus/core/package.json'; +import stripAnsi from 'strip-ansi'; export function print( val: unknown, diff --git a/packages/create-docusaurus/bin/index.js b/packages/create-docusaurus/bin/index.js index 7673e0025a0f..b4b6d47c5ec9 100755 --- a/packages/create-docusaurus/bin/index.js +++ b/packages/create-docusaurus/bin/index.js @@ -8,11 +8,11 @@ // @ts-check +import path from 'path'; +import {createRequire} from 'module'; import logger from '@docusaurus/logger'; import semver from 'semver'; -import path from 'path'; import {program} from 'commander'; -import {createRequire} from 'module'; const packageJson = createRequire(import.meta.url)('../package.json'); const requiredVersion = packageJson.engines.node; diff --git a/packages/create-docusaurus/src/index.ts b/packages/create-docusaurus/src/index.ts index b35e653b0a81..cc9c9408ec30 100755 --- a/packages/create-docusaurus/src/index.ts +++ b/packages/create-docusaurus/src/index.ts @@ -5,13 +5,13 @@ * LICENSE file in the root directory of this source tree. */ -import logger from '@docusaurus/logger'; import fs from 'fs-extra'; import {fileURLToPath} from 'url'; -import prompts, {type Choice} from 'prompts'; import path from 'path'; -import shell from 'shelljs'; import _ from 'lodash'; +import logger from '@docusaurus/logger'; +import shell from 'shelljs'; +import prompts, {type Choice} from 'prompts'; import supportsColor from 'supports-color'; type CLIOptions = { diff --git a/packages/create-docusaurus/templates/classic-typescript/src/pages/index.tsx b/packages/create-docusaurus/templates/classic-typescript/src/pages/index.tsx index 3408a41e7f23..305139fba009 100644 --- a/packages/create-docusaurus/templates/classic-typescript/src/pages/index.tsx +++ b/packages/create-docusaurus/templates/classic-typescript/src/pages/index.tsx @@ -1,11 +1,12 @@ import React from 'react'; import clsx from 'clsx'; -import Layout from '@theme/Layout'; import Link from '@docusaurus/Link'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; -import styles from './index.module.css'; +import Layout from '@theme/Layout'; import HomepageFeatures from '@site/src/components/HomepageFeatures'; +import styles from './index.module.css'; + function HomepageHeader() { const {siteConfig} = useDocusaurusContext(); return ( diff --git a/packages/create-docusaurus/templates/classic/src/pages/index.js b/packages/create-docusaurus/templates/classic/src/pages/index.js index a4fc2d3f03e6..affcd9099c28 100644 --- a/packages/create-docusaurus/templates/classic/src/pages/index.js +++ b/packages/create-docusaurus/templates/classic/src/pages/index.js @@ -1,11 +1,12 @@ import React from 'react'; import clsx from 'clsx'; -import Layout from '@theme/Layout'; import Link from '@docusaurus/Link'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; -import styles from './index.module.css'; +import Layout from '@theme/Layout'; import HomepageFeatures from '@site/src/components/HomepageFeatures'; +import styles from './index.module.css'; + function HomepageHeader() { const {siteConfig} = useDocusaurusContext(); return ( diff --git a/packages/docusaurus-mdx-loader/src/loader.ts b/packages/docusaurus-mdx-loader/src/loader.ts index 68c3f55f904b..06daefccf323 100644 --- a/packages/docusaurus-mdx-loader/src/loader.ts +++ b/packages/docusaurus-mdx-loader/src/loader.ts @@ -6,21 +6,23 @@ */ import fs from 'fs-extra'; -import {createCompiler} from '@mdx-js/mdx'; import logger from '@docusaurus/logger'; -import emoji from 'remark-emoji'; import { parseFrontMatter, parseMarkdownContentTitle, escapePath, getFileLoaderUtils, } from '@docusaurus/utils'; +import {createCompiler} from '@mdx-js/mdx'; +import emoji from 'remark-emoji'; import stringifyObject from 'stringify-object'; + import headings from './remark/headings'; import toc from './remark/toc'; import unwrapMdxCodeBlocks from './remark/unwrapMdxCodeBlocks'; import transformImage from './remark/transformImage'; import transformLinks from './remark/transformLinks'; + import type {LoaderContext} from 'webpack'; import type {Processor, Plugin} from 'unified'; diff --git a/packages/docusaurus-mdx-loader/src/remark/toc/index.ts b/packages/docusaurus-mdx-loader/src/remark/toc/index.ts index b0a888c0790d..1850a2b9c7a4 100644 --- a/packages/docusaurus-mdx-loader/src/remark/toc/index.ts +++ b/packages/docusaurus-mdx-loader/src/remark/toc/index.ts @@ -6,13 +6,13 @@ */ import {parse, type ParserOptions} from '@babel/parser'; -import type {Identifier} from '@babel/types'; import traverse from '@babel/traverse'; import stringifyObject from 'stringify-object'; import toString from 'mdast-util-to-string'; import visit from 'unist-util-visit'; import {toValue} from '../utils'; +import type {Identifier} from '@babel/types'; import type {TOCItem} from '../..'; import type {Node, Parent} from 'unist'; import type {Heading, Literal} from 'mdast'; diff --git a/packages/docusaurus-mdx-loader/src/remark/transformImage/index.ts b/packages/docusaurus-mdx-loader/src/remark/transformImage/index.ts index 691c42703922..d9608d13ed07 100644 --- a/packages/docusaurus-mdx-loader/src/remark/transformImage/index.ts +++ b/packages/docusaurus-mdx-loader/src/remark/transformImage/index.ts @@ -5,6 +5,11 @@ * LICENSE file in the root directory of this source tree. */ +import path from 'path'; +import url from 'url'; +import fs from 'fs-extra'; +import {promisify} from 'util'; +import logger from '@docusaurus/logger'; import { toMessageRelativeFilePath, posixPath, @@ -13,15 +18,10 @@ import { findAsyncSequential, } from '@docusaurus/utils'; import visit from 'unist-util-visit'; -import path from 'path'; -import url from 'url'; -import fs from 'fs-extra'; import escapeHtml from 'escape-html'; import sizeOf from 'image-size'; -import {promisify} from 'util'; import type {Transformer} from 'unified'; import type {Image, Literal} from 'mdast'; -import logger from '@docusaurus/logger'; const { loaders: {inlineMarkdownImageFileLoader}, diff --git a/packages/docusaurus-mdx-loader/src/remark/transformLinks/index.ts b/packages/docusaurus-mdx-loader/src/remark/transformLinks/index.ts index 24a04805a89b..22d52587e1fb 100644 --- a/packages/docusaurus-mdx-loader/src/remark/transformLinks/index.ts +++ b/packages/docusaurus-mdx-loader/src/remark/transformLinks/index.ts @@ -5,6 +5,9 @@ * LICENSE file in the root directory of this source tree. */ +import path from 'path'; +import url from 'url'; +import fs from 'fs-extra'; import { toMessageRelativeFilePath, posixPath, @@ -13,9 +16,6 @@ import { findAsyncSequential, } from '@docusaurus/utils'; import visit from 'unist-util-visit'; -import path from 'path'; -import url from 'url'; -import fs from 'fs-extra'; import escapeHtml from 'escape-html'; import {stringifyContent} from '../utils'; import type {Transformer} from 'unified'; diff --git a/packages/docusaurus-migrate/bin/index.mjs b/packages/docusaurus-migrate/bin/index.mjs index baf72762aeb7..769c5e9e3c08 100755 --- a/packages/docusaurus-migrate/bin/index.mjs +++ b/packages/docusaurus-migrate/bin/index.mjs @@ -8,11 +8,11 @@ // @ts-check +import path from 'path'; +import {createRequire} from 'module'; import logger from '@docusaurus/logger'; import semver from 'semver'; import cli from 'commander'; -import path from 'path'; -import {createRequire} from 'module'; const moduleRequire = createRequire(import.meta.url); const requiredVersion = moduleRequire('../package.json').engines.node; diff --git a/packages/docusaurus-migrate/src/__tests__/index.test.ts b/packages/docusaurus-migrate/src/__tests__/index.test.ts index f4516276d2d9..8eea0cd15849 100644 --- a/packages/docusaurus-migrate/src/__tests__/index.test.ts +++ b/packages/docusaurus-migrate/src/__tests__/index.test.ts @@ -6,10 +6,10 @@ */ import {jest} from '@jest/globals'; -import {migrateDocusaurusProject} from '../index'; import path from 'path'; import fs from 'fs-extra'; import {posixPath} from '@docusaurus/utils'; +import {migrateDocusaurusProject} from '../index'; async function testMigration(siteDir: string, newDir: string) { const writeMock = jest.spyOn(fs, 'outputFile').mockImplementation(() => {}); diff --git a/packages/docusaurus-migrate/src/index.ts b/packages/docusaurus-migrate/src/index.ts index e1e0bcf4d665..81f31e6b874c 100644 --- a/packages/docusaurus-migrate/src/index.ts +++ b/packages/docusaurus-migrate/src/index.ts @@ -5,22 +5,23 @@ * LICENSE file in the root directory of this source tree. */ +import path from 'path'; import fs from 'fs-extra'; -import importFresh from 'import-fresh'; import logger from '@docusaurus/logger'; import {Globby} from '@docusaurus/utils'; +import importFresh from 'import-fresh'; import Color from 'color'; +import extractMetadata, {shouldQuotifyFrontMatter} from './frontMatter'; +import migratePage from './transform'; +import sanitizeMD from './sanitizeMD'; + import type { SidebarEntry, SidebarEntries, VersionOneConfig, VersionTwoConfig, } from './types'; -import extractMetadata, {shouldQuotifyFrontMatter} from './frontMatter'; -import migratePage from './transform'; -import sanitizeMD from './sanitizeMD'; -import path from 'path'; const DOCUSAURUS_VERSION = (importFresh('../package.json') as {version: string}) .version; diff --git a/packages/docusaurus-module-type-aliases/src/index.d.ts b/packages/docusaurus-module-type-aliases/src/index.d.ts index f1e4a003e097..a000e03f2c35 100644 --- a/packages/docusaurus-module-type-aliases/src/index.d.ts +++ b/packages/docusaurus-module-type-aliases/src/index.d.ts @@ -136,8 +136,8 @@ declare module '@docusaurus/ErrorBoundary' { } declare module '@docusaurus/Head' { - import type {HelmetProps} from 'react-helmet-async'; import type {ReactNode} from 'react'; + import type {HelmetProps} from 'react-helmet-async'; export type Props = HelmetProps & {children: ReactNode}; diff --git a/packages/docusaurus-plugin-client-redirects/src/__tests__/collectRedirects.test.ts b/packages/docusaurus-plugin-client-redirects/src/__tests__/collectRedirects.test.ts index 266b36911ee3..fc82c12a37fa 100644 --- a/packages/docusaurus-plugin-client-redirects/src/__tests__/collectRedirects.test.ts +++ b/packages/docusaurus-plugin-client-redirects/src/__tests__/collectRedirects.test.ts @@ -5,12 +5,12 @@ * LICENSE file in the root directory of this source tree. */ -import type {PluginContext} from '../types'; -import collectRedirects from '../collectRedirects'; -import {validateOptions} from '../options'; import {removeTrailingSlash} from '@docusaurus/utils'; import {normalizePluginOptions} from '@docusaurus/utils-validation'; +import collectRedirects from '../collectRedirects'; +import {validateOptions} from '../options'; import type {Options} from '../options'; +import type {PluginContext} from '../types'; function createTestPluginContext( options?: Options, diff --git a/packages/docusaurus-plugin-client-redirects/src/__tests__/options.test.ts b/packages/docusaurus-plugin-client-redirects/src/__tests__/options.test.ts index 3243076acba1..1d526c351b4d 100644 --- a/packages/docusaurus-plugin-client-redirects/src/__tests__/options.test.ts +++ b/packages/docusaurus-plugin-client-redirects/src/__tests__/options.test.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import {validateOptions, DEFAULT_OPTIONS} from '../options'; import {normalizePluginOptions} from '@docusaurus/utils-validation'; +import {validateOptions, DEFAULT_OPTIONS} from '../options'; import type {Options} from '../options'; function testValidate(options: Options) { diff --git a/packages/docusaurus-plugin-client-redirects/src/collectRedirects.ts b/packages/docusaurus-plugin-client-redirects/src/collectRedirects.ts index 8a62cae4f4ab..fa4718eca32f 100644 --- a/packages/docusaurus-plugin-client-redirects/src/collectRedirects.ts +++ b/packages/docusaurus-plugin-client-redirects/src/collectRedirects.ts @@ -6,19 +6,18 @@ */ import _ from 'lodash'; -import type {PluginOptions, RedirectOption} from './options'; -import type {PluginContext, RedirectMetadata} from './types'; +import logger from '@docusaurus/logger'; +import { + applyTrailingSlash, + type ApplyTrailingSlashParams, +} from '@docusaurus/utils-common'; import { createFromExtensionsRedirects, createToExtensionsRedirects, } from './extensionRedirects'; import {validateRedirect} from './redirectValidation'; -import { - applyTrailingSlash, - type ApplyTrailingSlashParams, -} from '@docusaurus/utils-common'; - -import logger from '@docusaurus/logger'; +import type {PluginOptions, RedirectOption} from './options'; +import type {PluginContext, RedirectMetadata} from './types'; export default function collectRedirects( pluginContext: PluginContext, diff --git a/packages/docusaurus-plugin-client-redirects/src/createRedirectPageContent.ts b/packages/docusaurus-plugin-client-redirects/src/createRedirectPageContent.ts index b7bdd7f61c6d..b5d0a21141ff 100644 --- a/packages/docusaurus-plugin-client-redirects/src/createRedirectPageContent.ts +++ b/packages/docusaurus-plugin-client-redirects/src/createRedirectPageContent.ts @@ -5,9 +5,9 @@ * LICENSE file in the root directory of this source tree. */ +import _ from 'lodash'; import * as eta from 'eta'; import redirectPageTemplate from './templates/redirectPage.template.html'; -import _ from 'lodash'; const getCompiledRedirectPageTemplate = _.memoize(() => eta.compile(redirectPageTemplate.trim()), diff --git a/packages/docusaurus-plugin-client-redirects/src/index.ts b/packages/docusaurus-plugin-client-redirects/src/index.ts index 9bfac10d9498..78d117c7ca28 100644 --- a/packages/docusaurus-plugin-client-redirects/src/index.ts +++ b/packages/docusaurus-plugin-client-redirects/src/index.ts @@ -5,16 +5,15 @@ * LICENSE file in the root directory of this source tree. */ -import type {LoadContext, Plugin} from '@docusaurus/types'; -import type {PluginContext, RedirectMetadata} from './types'; -import type {PluginOptions, Options} from './options'; - +import {removePrefix, addLeadingSlash} from '@docusaurus/utils'; import collectRedirects from './collectRedirects'; import writeRedirectFiles, { toRedirectFilesMetadata, type RedirectFileMetadata, } from './writeRedirectFiles'; -import {removePrefix, addLeadingSlash} from '@docusaurus/utils'; +import type {LoadContext, Plugin} from '@docusaurus/types'; +import type {PluginContext, RedirectMetadata} from './types'; +import type {PluginOptions, Options} from './options'; export default function pluginClientRedirectsPages( context: LoadContext, diff --git a/packages/docusaurus-plugin-client-redirects/src/options.ts b/packages/docusaurus-plugin-client-redirects/src/options.ts index 34891a1c9b70..72f3da3010bd 100644 --- a/packages/docusaurus-plugin-client-redirects/src/options.ts +++ b/packages/docusaurus-plugin-client-redirects/src/options.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import type {OptionValidationContext} from '@docusaurus/types'; import {Joi, PathnameSchema} from '@docusaurus/utils-validation'; +import type {OptionValidationContext} from '@docusaurus/types'; export type RedirectOption = { to: string; diff --git a/packages/docusaurus-plugin-client-redirects/src/redirectValidation.ts b/packages/docusaurus-plugin-client-redirects/src/redirectValidation.ts index 5f0ce5b52b46..334453274b1e 100644 --- a/packages/docusaurus-plugin-client-redirects/src/redirectValidation.ts +++ b/packages/docusaurus-plugin-client-redirects/src/redirectValidation.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import type {RedirectMetadata} from './types'; import {Joi, PathnameSchema} from '@docusaurus/utils-validation'; +import type {RedirectMetadata} from './types'; const RedirectSchema = Joi.object({ from: PathnameSchema.required(), diff --git a/packages/docusaurus-plugin-client-redirects/src/writeRedirectFiles.ts b/packages/docusaurus-plugin-client-redirects/src/writeRedirectFiles.ts index 3924f602143c..77a9316c829a 100644 --- a/packages/docusaurus-plugin-client-redirects/src/writeRedirectFiles.ts +++ b/packages/docusaurus-plugin-client-redirects/src/writeRedirectFiles.ts @@ -8,11 +8,12 @@ import fs from 'fs-extra'; import path from 'path'; import _ from 'lodash'; +import logger from '@docusaurus/logger'; +import {normalizeUrl} from '@docusaurus/utils'; -import type {PluginContext, RedirectMetadata} from './types'; import createRedirectPageContent from './createRedirectPageContent'; -import {normalizeUrl} from '@docusaurus/utils'; -import logger from '@docusaurus/logger'; + +import type {PluginContext, RedirectMetadata} from './types'; export type WriteFilesPluginContext = Pick; diff --git a/packages/docusaurus-plugin-content-blog/src/__tests__/authors.test.ts b/packages/docusaurus-plugin-content-blog/src/__tests__/authors.test.ts index 67dd4571eae7..19515459a656 100644 --- a/packages/docusaurus-plugin-content-blog/src/__tests__/authors.test.ts +++ b/packages/docusaurus-plugin-content-blog/src/__tests__/authors.test.ts @@ -5,13 +5,13 @@ * LICENSE file in the root directory of this source tree. */ +import path from 'path'; import { type AuthorsMap, getAuthorsMap, getBlogPostAuthors, validateAuthorsMap, } from '../authors'; -import path from 'path'; describe('getBlogPostAuthors', () => { it('can read no authors', () => { diff --git a/packages/docusaurus-plugin-content-blog/src/__tests__/blogUtils.test.ts b/packages/docusaurus-plugin-content-blog/src/__tests__/blogUtils.test.ts index 5460a4440f9f..1d9cafef920f 100644 --- a/packages/docusaurus-plugin-content-blog/src/__tests__/blogUtils.test.ts +++ b/packages/docusaurus-plugin-content-blog/src/__tests__/blogUtils.test.ts @@ -6,6 +6,8 @@ */ import {jest} from '@jest/globals'; +import fs from 'fs-extra'; +import path from 'path'; import { truncate, parseBlogFileName, @@ -14,13 +16,8 @@ import { paginateBlogPosts, type LinkifyParams, } from '../blogUtils'; -import fs from 'fs-extra'; -import path from 'path'; -import type { - BlogBrokenMarkdownLink, - BlogContentPaths, - BlogPost, -} from '../types'; +import type {BlogBrokenMarkdownLink, BlogContentPaths} from '../types'; +import type {BlogPost} from '@docusaurus/plugin-content-blog'; describe('truncate', () => { it('truncates texts', () => { 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 f7d31a7dbbb0..48c3395f728b 100644 --- a/packages/docusaurus-plugin-content-blog/src/__tests__/feed.test.ts +++ b/packages/docusaurus-plugin-content-blog/src/__tests__/feed.test.ts @@ -8,11 +8,11 @@ import {jest} from '@jest/globals'; import path from 'path'; import fs from 'fs-extra'; +import {DEFAULT_OPTIONS} from '../options'; +import {generateBlogPosts} from '../blogUtils'; import {createBlogFeedFiles} from '../feed'; import type {LoadContext, I18n} from '@docusaurus/types'; import type {BlogContentPaths} from '../types'; -import {DEFAULT_OPTIONS} from '../options'; -import {generateBlogPosts} from '../blogUtils'; import type {PluginOptions} from '@docusaurus/plugin-content-blog'; const DefaultI18N: I18n = { diff --git a/packages/docusaurus-plugin-content-blog/src/__tests__/frontMatter.test.ts b/packages/docusaurus-plugin-content-blog/src/__tests__/frontMatter.test.ts index cb1020c680ef..36cc680df0e0 100644 --- a/packages/docusaurus-plugin-content-blog/src/__tests__/frontMatter.test.ts +++ b/packages/docusaurus-plugin-content-blog/src/__tests__/frontMatter.test.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import {validateBlogPostFrontMatter} from '../frontMatter'; import escapeStringRegexp from 'escape-string-regexp'; +import {validateBlogPostFrontMatter} from '../frontMatter'; import type {BlogPostFrontMatter} from '@docusaurus/plugin-content-blog'; // TODO this abstraction reduce verbosity but it makes it harder to debug 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 7d47e0027ab6..11b33cd2a183 100644 --- a/packages/docusaurus-plugin-content-blog/src/__tests__/index.test.ts +++ b/packages/docusaurus-plugin-content-blog/src/__tests__/index.test.ts @@ -7,13 +7,13 @@ import {jest} from '@jest/globals'; import path from 'path'; -import pluginContentBlog from '../index'; -import type {DocusaurusConfig, LoadContext, I18n} from '@docusaurus/types'; -import {validateOptions} from '../options'; -import type {BlogPost} from '../types'; import {normalizePluginOptions} from '@docusaurus/utils-validation'; import {posixPath, getFileCommitDate} from '@docusaurus/utils'; +import pluginContentBlog from '../index'; +import {validateOptions} from '../options'; +import type {DocusaurusConfig, LoadContext, I18n} from '@docusaurus/types'; import type { + BlogPost, PluginOptions, EditUrlFunction, } from '@docusaurus/plugin-content-blog'; diff --git a/packages/docusaurus-plugin-content-blog/src/__tests__/options.test.ts b/packages/docusaurus-plugin-content-blog/src/__tests__/options.test.ts index 8c8cbf92172c..dd2e562bdabc 100644 --- a/packages/docusaurus-plugin-content-blog/src/__tests__/options.test.ts +++ b/packages/docusaurus-plugin-content-blog/src/__tests__/options.test.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import {validateOptions, DEFAULT_OPTIONS} from '../options'; import {normalizePluginOptions} from '@docusaurus/utils-validation'; +import {validateOptions, DEFAULT_OPTIONS} from '../options'; import type {Options} from '@docusaurus/plugin-content-blog'; function testValidate(options: Options) { diff --git a/packages/docusaurus-plugin-content-blog/src/__tests__/translations.test.ts b/packages/docusaurus-plugin-content-blog/src/__tests__/translations.test.ts index 840a3af4d359..62442bbf8151 100644 --- a/packages/docusaurus-plugin-content-blog/src/__tests__/translations.test.ts +++ b/packages/docusaurus-plugin-content-blog/src/__tests__/translations.test.ts @@ -5,11 +5,14 @@ * LICENSE file in the root directory of this source tree. */ -import type {BlogPost, BlogContent} from '../types'; +import {updateTranslationFileMessages} from '@docusaurus/utils'; import {getTranslationFiles, translateContent} from '../translations'; import {DEFAULT_OPTIONS} from '../options'; -import {updateTranslationFileMessages} from '@docusaurus/utils'; -import type {PluginOptions} from '@docusaurus/plugin-content-blog'; +import type { + PluginOptions, + BlogPost, + BlogContent, +} from '@docusaurus/plugin-content-blog'; const sampleBlogOptions: PluginOptions = { ...DEFAULT_OPTIONS, diff --git a/packages/docusaurus-plugin-content-blog/src/authors.ts b/packages/docusaurus-plugin-content-blog/src/authors.ts index e8e2be323127..cf3bbe5c8522 100644 --- a/packages/docusaurus-plugin-content-blog/src/authors.ts +++ b/packages/docusaurus-plugin-content-blog/src/authors.ts @@ -5,9 +5,9 @@ * LICENSE file in the root directory of this source tree. */ -import type {BlogContentPaths} from './types'; import {getDataFileData} from '@docusaurus/utils'; import {Joi, URISchema} from '@docusaurus/utils-validation'; +import type {BlogContentPaths} from './types'; import type { Author, BlogPostFrontMatter, diff --git a/packages/docusaurus-plugin-content-blog/src/blogUtils.ts b/packages/docusaurus-plugin-content-blog/src/blogUtils.ts index 5daf3983e09a..370ddeb50aa3 100644 --- a/packages/docusaurus-plugin-content-blog/src/blogUtils.ts +++ b/packages/docusaurus-plugin-content-blog/src/blogUtils.ts @@ -7,9 +7,9 @@ import fs from 'fs-extra'; import path from 'path'; -import readingTime from 'reading-time'; import _ from 'lodash'; -import type {BlogContentPaths, BlogMarkdownLoaderOptions} from './types'; +import logger from '@docusaurus/logger'; +import readingTime from 'reading-time'; import { parseMarkdownString, normalizeUrl, @@ -24,10 +24,9 @@ import { getFileCommitDate, getContentPathList, } from '@docusaurus/utils'; -import type {LoadContext} from '@docusaurus/types'; import {validateBlogPostFrontMatter} from './frontMatter'; import {type AuthorsMap, getAuthorsMap, getBlogPostAuthors} from './authors'; -import logger from '@docusaurus/logger'; +import type {LoadContext} from '@docusaurus/types'; import type { PluginOptions, ReadingTimeFunction, @@ -35,6 +34,7 @@ import type { BlogTags, BlogPaginated, } from '@docusaurus/plugin-content-blog'; +import type {BlogContentPaths, BlogMarkdownLoaderOptions} from './types'; export function truncate(fileString: string, truncateMarker: RegExp): string { return fileString.split(truncateMarker, 1).shift()!; diff --git a/packages/docusaurus-plugin-content-blog/src/feed.ts b/packages/docusaurus-plugin-content-blog/src/feed.ts index 390d453f480c..222fcb84b2b5 100644 --- a/packages/docusaurus-plugin-content-blog/src/feed.ts +++ b/packages/docusaurus-plugin-content-blog/src/feed.ts @@ -5,20 +5,20 @@ * LICENSE file in the root directory of this source tree. */ +import path from 'path'; +import fs from 'fs-extra'; +import logger from '@docusaurus/logger'; import {Feed, type Author as FeedAuthor, type Item as FeedItem} from 'feed'; import {normalizeUrl, readOutputHTMLFile} from '@docusaurus/utils'; +import {blogPostContainerID} from '@docusaurus/utils-common'; import {load as cheerioLoad} from 'cheerio'; import type {DocusaurusConfig} from '@docusaurus/types'; -import path from 'path'; -import fs from 'fs-extra'; import type { FeedType, PluginOptions, Author, BlogPost, } from '@docusaurus/plugin-content-blog'; -import {blogPostContainerID} from '@docusaurus/utils-common'; -import logger from '@docusaurus/logger'; async function generateBlogFeed({ blogPosts, diff --git a/packages/docusaurus-plugin-content-blog/src/index.ts b/packages/docusaurus-plugin-content-blog/src/index.ts index 3b19b9bbab2e..a3dddc2404f5 100644 --- a/packages/docusaurus-plugin-content-blog/src/index.ts +++ b/packages/docusaurus-plugin-content-blog/src/index.ts @@ -6,8 +6,6 @@ */ import path from 'path'; -import admonitions from 'remark-admonitions'; -import footnoteIDFixer from './remark/footnoteIDFixer'; import { normalizeUrl, docuHash, @@ -23,17 +21,19 @@ import { type TagsListItem, type TagModule, } from '@docusaurus/utils'; -import {translateContent, getTranslationFiles} from './translations'; - -import type {BlogContentPaths, BlogMarkdownLoaderOptions} from './types'; -import type {LoadContext, Plugin, HtmlTags} from '@docusaurus/types'; +import admonitions from 'remark-admonitions'; import { generateBlogPosts, getSourceToPermalink, getBlogTags, paginateBlogPosts, } from './blogUtils'; +import footnoteIDFixer from './remark/footnoteIDFixer'; +import {translateContent, getTranslationFiles} from './translations'; import {createBlogFeedFiles} from './feed'; + +import type {BlogContentPaths, BlogMarkdownLoaderOptions} from './types'; +import type {LoadContext, Plugin, HtmlTags} from '@docusaurus/types'; import type { PluginOptions, BlogPostFrontMatter, diff --git a/packages/docusaurus-plugin-content-blog/src/plugin-content-blog.d.ts b/packages/docusaurus-plugin-content-blog/src/plugin-content-blog.d.ts index d74bba9fc274..e8a8697fa8cd 100644 --- a/packages/docusaurus-plugin-content-blog/src/plugin-content-blog.d.ts +++ b/packages/docusaurus-plugin-content-blog/src/plugin-content-blog.d.ts @@ -538,11 +538,11 @@ declare module '@theme/BlogTagsListPage' { } declare module '@theme/BlogTagsPostsPage' { + import type {Content} from '@theme/BlogPostPage'; import type { BlogSidebar, BlogPaginatedMetadata, } from '@docusaurus/plugin-content-blog'; - import type {Content} from '@theme/BlogPostPage'; import type {TagModule} from '@docusaurus/utils'; export interface Props { diff --git a/packages/docusaurus-plugin-content-docs/src/__tests__/cli.test.ts b/packages/docusaurus-plugin-content-docs/src/__tests__/cli.test.ts index bd0db4e0ad5a940921aaa503181ffdbda5d034d7..ec29bdcf8b87eb6502b0061ce14a67d4378f5cfa 100644 GIT binary patch delta 33 rcmV++0N($cSe#gp>63H;8!jbtk`Pw4L}!X>tQ&{$yE3z0EpIA2b2(jSSfU 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 bceca516cbfc..3e0f09010925 100644 --- a/packages/docusaurus-plugin-content-docs/src/__tests__/docs.test.ts +++ b/packages/docusaurus-plugin-content-docs/src/__tests__/docs.test.ts @@ -8,6 +8,8 @@ import {jest} from '@jest/globals'; import path from 'path'; import {loadContext} from '@docusaurus/core/src/server/index'; +import {createSlugger, posixPath, DEFAULT_PLUGIN_ID} from '@docusaurus/utils'; +import {createSidebarsUtils} from '../sidebars/utils'; import { processDocMetadata, readVersionDocs, @@ -17,8 +19,9 @@ import { type DocEnv, } from '../docs'; import {loadSidebars} from '../sidebars'; -import type {Sidebars} from '../sidebars/types'; import {readVersionsMetadata} from '../versions'; +import {DEFAULT_OPTIONS} from '../options'; +import type {Sidebars} from '../sidebars/types'; import type {DocFile} from '../types'; import type { MetadataOptions, @@ -29,10 +32,7 @@ import type { PropNavigationLink, } from '@docusaurus/plugin-content-docs'; import type {LoadContext} from '@docusaurus/types'; -import {DEFAULT_OPTIONS} from '../options'; import type {Optional} from 'utility-types'; -import {createSlugger, posixPath, DEFAULT_PLUGIN_ID} from '@docusaurus/utils'; -import {createSidebarsUtils} from '../sidebars/utils'; jest.setTimeout(15000); diff --git a/packages/docusaurus-plugin-content-docs/src/__tests__/frontMatter.test.ts b/packages/docusaurus-plugin-content-docs/src/__tests__/frontMatter.test.ts index 3a0855fe582a..6612927c2d0c 100644 --- a/packages/docusaurus-plugin-content-docs/src/__tests__/frontMatter.test.ts +++ b/packages/docusaurus-plugin-content-docs/src/__tests__/frontMatter.test.ts @@ -5,9 +5,9 @@ * LICENSE file in the root directory of this source tree. */ +import escapeStringRegexp from 'escape-string-regexp'; import {validateDocFrontMatter} from '../frontMatter'; import type {DocFrontMatter} from '@docusaurus/plugin-content-docs'; -import escapeStringRegexp from 'escape-string-regexp'; function testField(params: { prefix: string; 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 0a0627c735a2..0d54d4bc1308 100644 --- a/packages/docusaurus-plugin-content-docs/src/__tests__/index.test.ts +++ b/packages/docusaurus-plugin-content-docs/src/__tests__/index.test.ts @@ -7,32 +7,27 @@ import {jest} from '@jest/globals'; import path from 'path'; +import fs from 'fs-extra'; +import _ from 'lodash'; import {isMatch} from 'picomatch'; import commander from 'commander'; -import _ from 'lodash'; - -import fs from 'fs-extra'; -import pluginContentDocs from '../index'; +import webpack from 'webpack'; import {loadContext} from '@docusaurus/core/src/server/index'; import {applyConfigureWebpack} from '@docusaurus/core/src/webpack/utils'; -import type {RouteConfig} from '@docusaurus/types'; -import {posixPath} from '@docusaurus/utils'; import {sortConfig} from '@docusaurus/core/src/server/plugins/routeConfig'; - -import * as cliDocs from '../cli'; -import {validateOptions} from '../options'; +import {posixPath} from '@docusaurus/utils'; import {normalizePluginOptions} from '@docusaurus/utils-validation'; -import type {LoadedVersion} from '../types'; -import type { - SidebarItem, - SidebarItemsGeneratorOption, - SidebarItemsGeneratorOptionArgs, -} from '../sidebars/types'; -import {toSidebarsProp} from '../props'; -import webpack from 'webpack'; +import pluginContentDocs from '../index'; +import {toSidebarsProp} from '../props'; import {DefaultSidebarItemsGenerator} from '../sidebars/generator'; import {DisabledSidebars} from '../sidebars'; +import * as cliDocs from '../cli'; +import {validateOptions} from '../options'; + +import type {RouteConfig} from '@docusaurus/types'; +import type {LoadedVersion} from '@docusaurus/plugin-content-docs'; +import type {SidebarItem, SidebarItemsGeneratorOption} from '../sidebars/types'; function findDocById(version: LoadedVersion, unversionedId: string) { return version.docs.find((item) => item.unversionedId === unversionedId); @@ -768,14 +763,14 @@ describe('site with custom sidebar items generator', () => { const customSidebarItemsGeneratorMock = jest.fn(async () => []); const {siteDir} = await loadSite(customSidebarItemsGeneratorMock); - const generatorArg: SidebarItemsGeneratorOptionArgs = + const generatorArg: Parameters[0] = customSidebarItemsGeneratorMock.mock.calls[0][0]; // Make test pass even if docs are in different order and paths are // absolutes function makeDeterministic( - arg: SidebarItemsGeneratorOptionArgs, - ): SidebarItemsGeneratorOptionArgs { + arg: Parameters[0], + ): Parameters[0] { return { ...arg, docs: _.orderBy(arg.docs, 'id'), diff --git a/packages/docusaurus-plugin-content-docs/src/__tests__/lastUpdate.test.ts b/packages/docusaurus-plugin-content-docs/src/__tests__/lastUpdate.test.ts index 7f3e41bd195c..47aff760539e 100644 --- a/packages/docusaurus-plugin-content-docs/src/__tests__/lastUpdate.test.ts +++ b/packages/docusaurus-plugin-content-docs/src/__tests__/lastUpdate.test.ts @@ -5,11 +5,11 @@ * LICENSE file in the root directory of this source tree. */ -import {createTempRepo} from '@testing-utils/git'; import {jest} from '@jest/globals'; import fs from 'fs-extra'; import path from 'path'; import shell from 'shelljs'; +import {createTempRepo} from '@testing-utils/git'; import {getFileLastUpdate} from '../lastUpdate'; diff --git a/packages/docusaurus-plugin-content-docs/src/__tests__/options.test.ts b/packages/docusaurus-plugin-content-docs/src/__tests__/options.test.ts index 5d5e330c50c8..bcbaccfe1144 100644 --- a/packages/docusaurus-plugin-content-docs/src/__tests__/options.test.ts +++ b/packages/docusaurus-plugin-content-docs/src/__tests__/options.test.ts @@ -5,14 +5,14 @@ * LICENSE file in the root directory of this source tree. */ -import {validateOptions, DEFAULT_OPTIONS} from '../options'; +import {GlobExcludeDefault} from '@docusaurus/utils'; import {normalizePluginOptions} from '@docusaurus/utils-validation'; +import {validateOptions, DEFAULT_OPTIONS} from '../options'; import {DefaultSidebarItemsGenerator} from '../sidebars/generator'; import { DefaultNumberPrefixParser, DisabledNumberPrefixParser, } from '../numberPrefix'; -import {GlobExcludeDefault} from '@docusaurus/utils'; import type {Options} from '@docusaurus/plugin-content-docs'; // The type of remark/rehype plugins can be function/object diff --git a/packages/docusaurus-plugin-content-docs/src/__tests__/translations.test.ts b/packages/docusaurus-plugin-content-docs/src/__tests__/translations.test.ts index 85af2ef203e0..5d098e355fb7 100644 --- a/packages/docusaurus-plugin-content-docs/src/__tests__/translations.test.ts +++ b/packages/docusaurus-plugin-content-docs/src/__tests__/translations.test.ts @@ -5,14 +5,17 @@ * LICENSE file in the root directory of this source tree. */ -import type {LoadedContent, LoadedVersion} from '../types'; +import {updateTranslationFileMessages} from '@docusaurus/utils'; import {CURRENT_VERSION_NAME} from '../constants'; import { getLoadedContentTranslationFiles, translateLoadedContent, } from '../translations'; -import type {DocMetadata} from '@docusaurus/plugin-content-docs'; -import {updateTranslationFileMessages} from '@docusaurus/utils'; +import type { + DocMetadata, + LoadedContent, + LoadedVersion, +} from '@docusaurus/plugin-content-docs'; function createSampleDoc(doc: Pick): DocMetadata { return { diff --git a/packages/docusaurus-plugin-content-docs/src/categoryGeneratedIndex.ts b/packages/docusaurus-plugin-content-docs/src/categoryGeneratedIndex.ts index 4c87e711a515..6ae97213f155 100644 --- a/packages/docusaurus-plugin-content-docs/src/categoryGeneratedIndex.ts +++ b/packages/docusaurus-plugin-content-docs/src/categoryGeneratedIndex.ts @@ -5,13 +5,13 @@ * LICENSE file in the root directory of this source tree. */ +import {type SidebarsUtils, toNavigationLink} from './sidebars/utils'; +import {createDocsByIdIndex} from './docs'; import type { CategoryGeneratedIndexMetadata, DocMetadataBase, } from '@docusaurus/plugin-content-docs'; import type {SidebarItemCategoryWithGeneratedIndex} from './sidebars/types'; -import {type SidebarsUtils, toNavigationLink} from './sidebars/utils'; -import {createDocsByIdIndex} from './docs'; function getCategoryGeneratedIndexMetadata({ category, diff --git a/packages/docusaurus-plugin-content-docs/src/cli.ts b/packages/docusaurus-plugin-content-docs/src/cli.ts index 4a84ea953089..11fc39b2c400 100644 --- a/packages/docusaurus-plugin-content-docs/src/cli.ts +++ b/packages/docusaurus-plugin-content-docs/src/cli.ts @@ -5,6 +5,10 @@ * LICENSE file in the root directory of this source tree. */ +import fs from 'fs-extra'; +import path from 'path'; +import logger from '@docusaurus/logger'; +import {DEFAULT_PLUGIN_ID} from '@docusaurus/utils'; import { getVersionsFilePath, getVersionDocsDirPath, @@ -12,13 +16,9 @@ import { getDocsDirPathLocalized, } from './versions/files'; import {validateVersionName} from './versions/validation'; -import fs from 'fs-extra'; -import path from 'path'; -import type {PluginOptions} from '@docusaurus/plugin-content-docs'; import {loadSidebarsFileUnsafe} from './sidebars'; import {CURRENT_VERSION_NAME} from './constants'; -import {DEFAULT_PLUGIN_ID} from '@docusaurus/utils'; -import logger from '@docusaurus/logger'; +import type {PluginOptions} from '@docusaurus/plugin-content-docs'; import type {LoadContext} from '@docusaurus/types'; async function createVersionedSidebarFile({ diff --git a/packages/docusaurus-plugin-content-docs/src/client/__tests__/docsClientUtils.test.ts b/packages/docusaurus-plugin-content-docs/src/client/__tests__/docsClientUtils.test.ts index e663dbd43349..093aaad1db93 100644 --- a/packages/docusaurus-plugin-content-docs/src/client/__tests__/docsClientUtils.test.ts +++ b/packages/docusaurus-plugin-content-docs/src/client/__tests__/docsClientUtils.test.ts @@ -5,6 +5,7 @@ * LICENSE file in the root directory of this source tree. */ +import _ from 'lodash'; import { getActivePlugin, getLatestVersion, @@ -17,7 +18,6 @@ import type { GlobalVersion, ActivePlugin, } from '@docusaurus/plugin-content-docs/client'; -import _ from 'lodash'; describe('docsClientUtils', () => { it('getActivePlugin', () => { diff --git a/packages/docusaurus-plugin-content-docs/src/docs.ts b/packages/docusaurus-plugin-content-docs/src/docs.ts index 7f631f21c781..2ea127f99fbb 100644 --- a/packages/docusaurus-plugin-content-docs/src/docs.ts +++ b/packages/docusaurus-plugin-content-docs/src/docs.ts @@ -19,15 +19,12 @@ import { Globby, normalizeFrontMatterTags, } from '@docusaurus/utils'; -import type {LoadContext} from '@docusaurus/types'; import {getFileLastUpdate} from './lastUpdate'; -import type {DocFile} from './types'; import getSlug from './slug'; import {CURRENT_VERSION_NAME} from './constants'; import {stripPathNumberPrefixes} from './numberPrefix'; import {validateDocFrontMatter} from './frontMatter'; -import type {SidebarsUtils} from './sidebars/utils'; import {toDocNavigationLink, toNavigationLink} from './sidebars/utils'; import type { MetadataOptions, @@ -41,6 +38,9 @@ import type { DocFrontMatter, LoadedVersion, } from '@docusaurus/plugin-content-docs'; +import type {LoadContext} from '@docusaurus/types'; +import type {SidebarsUtils} from './sidebars/utils'; +import type {DocFile} from './types'; type LastUpdateOptions = Pick< PluginOptions, diff --git a/packages/docusaurus-plugin-content-docs/src/globalData.ts b/packages/docusaurus-plugin-content-docs/src/globalData.ts index c688ab2c0098..594e14c0f200 100644 --- a/packages/docusaurus-plugin-content-docs/src/globalData.ts +++ b/packages/docusaurus-plugin-content-docs/src/globalData.ts @@ -6,7 +6,6 @@ */ import _ from 'lodash'; -import type {Sidebars} from './sidebars/types'; import {getMainDocId} from './docs'; import type {FullVersion} from './types'; import type { @@ -18,6 +17,7 @@ import type { GlobalSidebar, GlobalDoc, } from '@docusaurus/plugin-content-docs/client'; +import type {Sidebars} from './sidebars/types'; function toGlobalDataDoc(doc: DocMetadata): GlobalDoc { return { diff --git a/packages/docusaurus-plugin-content-docs/src/index.ts b/packages/docusaurus-plugin-content-docs/src/index.ts index b4c72107f312..422dfcbe3ea9 100644 --- a/packages/docusaurus-plugin-content-docs/src/index.ts +++ b/packages/docusaurus-plugin-content-docs/src/index.ts @@ -6,7 +6,8 @@ */ import path from 'path'; - +import _ from 'lodash'; +import logger from '@docusaurus/logger'; import { normalizeUrl, docuHash, @@ -19,20 +20,15 @@ import { createSlugger, DEFAULT_PLUGIN_ID, } from '@docusaurus/utils'; -import type {LoadContext, Plugin} from '@docusaurus/types'; import {loadSidebars, resolveSidebarPathOption} from './sidebars'; import {CategoryMetadataFilenamePattern} from './sidebars/generator'; -import type {DocEnv} from './docs'; -import {readVersionDocs, processDocMetadata, addDocNavigation} from './docs'; +import { + readVersionDocs, + processDocMetadata, + addDocNavigation, + type DocEnv, +} from './docs'; import {readVersionsMetadata} from './versions'; -import type { - SourceToPermalink, - DocFile, - DocsMarkdownOption, - VersionTag, - FullVersion, -} from './types'; -import type {RuleSetRule} from 'webpack'; import {cliDocsVersionCommand} from './cli'; import {VERSIONS_JSON_FILE} from './constants'; import {toGlobalDataVersion} from './globalData'; @@ -42,9 +38,10 @@ import { translateLoadedContent, getLoadedContentTranslationFiles, } from './translations'; -import logger from '@docusaurus/logger'; import {getVersionTags} from './tags'; import {createVersionRoutes} from './routes'; +import {createSidebarsUtils} from './sidebars/utils'; + import type { PropTagsListPage, PluginOptions, @@ -54,8 +51,15 @@ import type { LoadedContent, LoadedVersion, } from '@docusaurus/plugin-content-docs'; -import {createSidebarsUtils} from './sidebars/utils'; -import _ from 'lodash'; +import type {LoadContext, Plugin} from '@docusaurus/types'; +import type { + SourceToPermalink, + DocFile, + DocsMarkdownOption, + VersionTag, + FullVersion, +} from './types'; +import type {RuleSetRule} from 'webpack'; export default async function pluginContentDocs( context: LoadContext, diff --git a/packages/docusaurus-plugin-content-docs/src/markdown/__tests__/linkify.test.ts b/packages/docusaurus-plugin-content-docs/src/markdown/__tests__/linkify.test.ts index 0ca367836157..864d5a39c274 100644 --- a/packages/docusaurus-plugin-content-docs/src/markdown/__tests__/linkify.test.ts +++ b/packages/docusaurus-plugin-content-docs/src/markdown/__tests__/linkify.test.ts @@ -9,13 +9,13 @@ import {jest} from '@jest/globals'; import fs from 'fs-extra'; import path from 'path'; import {linkify} from '../linkify'; +import {VERSIONED_DOCS_DIR, CURRENT_VERSION_NAME} from '../../constants'; import type { DocsMarkdownOption, SourceToPermalink, DocBrokenMarkdownLink, } from '../../types'; import type {VersionMetadata} from '@docusaurus/plugin-content-docs'; -import {VERSIONED_DOCS_DIR, CURRENT_VERSION_NAME} from '../../constants'; function createFakeVersion({ versionName, diff --git a/packages/docusaurus-plugin-content-docs/src/markdown/linkify.ts b/packages/docusaurus-plugin-content-docs/src/markdown/linkify.ts index 704bcbd4974f..ae651cb316a0 100644 --- a/packages/docusaurus-plugin-content-docs/src/markdown/linkify.ts +++ b/packages/docusaurus-plugin-content-docs/src/markdown/linkify.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import type {DocsMarkdownOption} from '../types'; import {replaceMarkdownLinks, getContentPathList} from '@docusaurus/utils'; +import type {DocsMarkdownOption} from '../types'; function getVersion(filePath: string, options: DocsMarkdownOption) { const versionFound = options.versionsMetadata.find((version) => diff --git a/packages/docusaurus-plugin-content-docs/src/options.ts b/packages/docusaurus-plugin-content-docs/src/options.ts index 258236acaaea..047f59ff3940 100644 --- a/packages/docusaurus-plugin-content-docs/src/options.ts +++ b/packages/docusaurus-plugin-content-docs/src/options.ts @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import type {PluginOptions, Options} from '@docusaurus/plugin-content-docs'; +import logger from '@docusaurus/logger'; import { Joi, RemarkPluginsSchema, @@ -14,15 +14,14 @@ import { URISchema, } from '@docusaurus/utils-validation'; import {GlobExcludeDefault} from '@docusaurus/utils'; - -import type {OptionValidationContext} from '@docusaurus/types'; -import logger from '@docusaurus/logger'; import admonitions from 'remark-admonitions'; import {DefaultSidebarItemsGenerator} from './sidebars/generator'; import { DefaultNumberPrefixParser, DisabledNumberPrefixParser, } from './numberPrefix'; +import type {OptionValidationContext} from '@docusaurus/types'; +import type {PluginOptions, Options} from '@docusaurus/plugin-content-docs'; export const DEFAULT_OPTIONS: Omit = { path: 'docs', // Path to data on filesystem, relative to site dir. diff --git a/packages/docusaurus-plugin-content-docs/src/props.ts b/packages/docusaurus-plugin-content-docs/src/props.ts index bf4393c631ff..8505d5de2cd2 100644 --- a/packages/docusaurus-plugin-content-docs/src/props.ts +++ b/packages/docusaurus-plugin-content-docs/src/props.ts @@ -5,6 +5,8 @@ * LICENSE file in the root directory of this source tree. */ +import _ from 'lodash'; +import {createDocsByIdIndex} from './docs'; import type {VersionTag} from './types'; import type { SidebarItemDoc, @@ -24,8 +26,6 @@ import type { DocMetadata, LoadedVersion, } from '@docusaurus/plugin-content-docs'; -import _ from 'lodash'; -import {createDocsByIdIndex} from './docs'; export function toSidebarsProp(loadedVersion: LoadedVersion): PropSidebars { const docsById = createDocsByIdIndex(loadedVersion.docs); diff --git a/packages/docusaurus-plugin-content-docs/src/routes.ts b/packages/docusaurus-plugin-content-docs/src/routes.ts index 57f5722ba1db..9a9205bee1c5 100644 --- a/packages/docusaurus-plugin-content-docs/src/routes.ts +++ b/packages/docusaurus-plugin-content-docs/src/routes.ts @@ -5,15 +5,15 @@ * LICENSE file in the root directory of this source tree. */ -import type {PluginContentLoadedActions, RouteConfig} from '@docusaurus/types'; +import logger from '@docusaurus/logger'; import {docuHash, createSlugger} from '@docusaurus/utils'; +import {toVersionMetadataProp} from './props'; +import type {PluginContentLoadedActions, RouteConfig} from '@docusaurus/types'; import type {FullVersion} from './types'; import type { CategoryGeneratedIndexMetadata, DocMetadata, } from '@docusaurus/plugin-content-docs'; -import {toVersionMetadataProp} from './props'; -import logger from '@docusaurus/logger'; export async function createCategoryGeneratedIndexRoutes({ version, diff --git a/packages/docusaurus-plugin-content-docs/src/sidebars/__tests__/generator.test.ts b/packages/docusaurus-plugin-content-docs/src/sidebars/__tests__/generator.test.ts index 66281f746b68..671c12cfe256 100644 --- a/packages/docusaurus-plugin-content-docs/src/sidebars/__tests__/generator.test.ts +++ b/packages/docusaurus-plugin-content-docs/src/sidebars/__tests__/generator.test.ts @@ -7,9 +7,9 @@ import {jest} from '@jest/globals'; import {DefaultSidebarItemsGenerator} from '../generator'; -import type {SidebarItemsGenerator} from '../types'; import {DefaultNumberPrefixParser} from '../../numberPrefix'; import {isCategoryIndex} from '../../docs'; +import type {SidebarItemsGenerator} from '../types'; describe('DefaultSidebarItemsGenerator', () => { function testDefaultSidebarItemsGenerator( diff --git a/packages/docusaurus-plugin-content-docs/src/sidebars/__tests__/index.test.ts b/packages/docusaurus-plugin-content-docs/src/sidebars/__tests__/index.test.ts index aedcfe0db332..5a1eed4f1d1b 100644 --- a/packages/docusaurus-plugin-content-docs/src/sidebars/__tests__/index.test.ts +++ b/packages/docusaurus-plugin-content-docs/src/sidebars/__tests__/index.test.ts @@ -9,8 +9,8 @@ import {jest} from '@jest/globals'; import path from 'path'; import {createSlugger} from '@docusaurus/utils'; import {loadSidebars, DisabledSidebars} from '../index'; -import type {SidebarProcessorParams} from '../types'; import {DefaultSidebarItemsGenerator} from '../generator'; +import type {SidebarProcessorParams} from '../types'; import type {DocMetadata} from '@docusaurus/plugin-content-docs'; describe('loadSidebars', () => { diff --git a/packages/docusaurus-plugin-content-docs/src/sidebars/__tests__/processor.test.ts b/packages/docusaurus-plugin-content-docs/src/sidebars/__tests__/processor.test.ts index 079040879ac6..d0a530bbd7f2 100644 --- a/packages/docusaurus-plugin-content-docs/src/sidebars/__tests__/processor.test.ts +++ b/packages/docusaurus-plugin-content-docs/src/sidebars/__tests__/processor.test.ts @@ -6,7 +6,11 @@ */ import {jest} from '@jest/globals'; +import {createSlugger} from '@docusaurus/utils'; import {processSidebars} from '../processor'; +import {DefaultSidebarItemsGenerator} from '../generator'; +import {DefaultNumberPrefixParser} from '../../numberPrefix'; +import {isCategoryIndex} from '../../docs'; import type { SidebarItem, SidebarItemsGenerator, @@ -16,11 +20,7 @@ import type { CategoryMetadataFile, ProcessedSidebars, } from '../types'; -import {DefaultSidebarItemsGenerator} from '../generator'; -import {createSlugger} from '@docusaurus/utils'; import type {VersionMetadata} from '@docusaurus/plugin-content-docs'; -import {DefaultNumberPrefixParser} from '../../numberPrefix'; -import {isCategoryIndex} from '../../docs'; describe('processSidebars', () => { function createStaticSidebarItemGenerator( diff --git a/packages/docusaurus-plugin-content-docs/src/sidebars/generator.ts b/packages/docusaurus-plugin-content-docs/src/sidebars/generator.ts index 67320e7888d5..56e0025a81af 100644 --- a/packages/docusaurus-plugin-content-docs/src/sidebars/generator.ts +++ b/packages/docusaurus-plugin-content-docs/src/sidebars/generator.ts @@ -5,6 +5,11 @@ * LICENSE file in the root directory of this source tree. */ +import path from 'path'; +import _ from 'lodash'; +import logger from '@docusaurus/logger'; +import {addTrailingSlash} from '@docusaurus/utils'; +import {createDocsByIdIndex, toCategoryIndexMatcherParam} from '../docs'; import type { SidebarItemDoc, SidebarItemsGenerator, @@ -13,11 +18,6 @@ import type { NormalizedSidebarItem, SidebarItemCategoryLinkConfig, } from './types'; -import _ from 'lodash'; -import {addTrailingSlash} from '@docusaurus/utils'; -import logger from '@docusaurus/logger'; -import path from 'path'; -import {createDocsByIdIndex, toCategoryIndexMatcherParam} from '../docs'; const BreadcrumbSeparator = '/'; diff --git a/packages/docusaurus-plugin-content-docs/src/sidebars/index.ts b/packages/docusaurus-plugin-content-docs/src/sidebars/index.ts index f99b03374a04..36bd576f7f8a 100644 --- a/packages/docusaurus-plugin-content-docs/src/sidebars/index.ts +++ b/packages/docusaurus-plugin-content-docs/src/sidebars/index.ts @@ -6,19 +6,19 @@ */ import fs from 'fs-extra'; +import path from 'path'; +import _ from 'lodash'; +import logger from '@docusaurus/logger'; +import {Globby} from '@docusaurus/utils'; +import Yaml from 'js-yaml'; +import combinePromises from 'combine-promises'; import importFresh from 'import-fresh'; -import type {SidebarsConfig, Sidebars, SidebarProcessorParams} from './types'; import {validateSidebars, validateCategoryMetadataFile} from './validation'; import {normalizeSidebars} from './normalization'; import {processSidebars} from './processor'; import {postProcessSidebars} from './postProcessor'; -import path from 'path'; -import {Globby} from '@docusaurus/utils'; -import logger from '@docusaurus/logger'; import type {PluginOptions} from '@docusaurus/plugin-content-docs'; -import Yaml from 'js-yaml'; -import _ from 'lodash'; -import combinePromises from 'combine-promises'; +import type {SidebarsConfig, Sidebars, SidebarProcessorParams} from './types'; export const DefaultSidebars: SidebarsConfig = { defaultSidebar: [ diff --git a/packages/docusaurus-plugin-content-docs/src/sidebars/normalization.ts b/packages/docusaurus-plugin-content-docs/src/sidebars/normalization.ts index d36be98fcd6a..4d51e254443e 100644 --- a/packages/docusaurus-plugin-content-docs/src/sidebars/normalization.ts +++ b/packages/docusaurus-plugin-content-docs/src/sidebars/normalization.ts @@ -5,6 +5,9 @@ * LICENSE file in the root directory of this source tree. */ +import _ from 'lodash'; +import logger from '@docusaurus/logger'; +import {isCategoriesShorthand} from './utils'; import type { NormalizedSidebarItem, NormalizedSidebar, @@ -16,9 +19,6 @@ import type { SidebarsConfig, NormalizedSidebarItemCategory, } from './types'; -import {isCategoriesShorthand} from './utils'; -import _ from 'lodash'; -import logger from '@docusaurus/logger'; function normalizeCategoriesShorthand( sidebar: SidebarCategoriesShorthand, diff --git a/packages/docusaurus-plugin-content-docs/src/sidebars/postProcessor.ts b/packages/docusaurus-plugin-content-docs/src/sidebars/postProcessor.ts index 717db0860583..307ed9de8675 100644 --- a/packages/docusaurus-plugin-content-docs/src/sidebars/postProcessor.ts +++ b/packages/docusaurus-plugin-content-docs/src/sidebars/postProcessor.ts @@ -5,7 +5,9 @@ * LICENSE file in the root directory of this source tree. */ +import _ from 'lodash'; import {normalizeUrl} from '@docusaurus/utils'; +import {getDocIds} from '../docs'; import type { SidebarItem, Sidebars, @@ -15,8 +17,6 @@ import type { ProcessedSidebars, SidebarItemCategoryLink, } from './types'; -import {getDocIds} from '../docs'; -import _ from 'lodash'; type SidebarPostProcessorParams = SidebarProcessorParams & { draftIds: Set; diff --git a/packages/docusaurus-plugin-content-docs/src/sidebars/processor.ts b/packages/docusaurus-plugin-content-docs/src/sidebars/processor.ts index 7e83dd08a921..7949ad2216fd 100644 --- a/packages/docusaurus-plugin-content-docs/src/sidebars/processor.ts +++ b/packages/docusaurus-plugin-content-docs/src/sidebars/processor.ts @@ -5,6 +5,11 @@ * LICENSE file in the root directory of this source tree. */ +import _ from 'lodash'; +import combinePromises from 'combine-promises'; +import {DefaultSidebarItemsGenerator} from './generator'; +import {validateSidebars} from './validation'; +import {isCategoryIndex} from '../docs'; import type { DocMetadataBase, VersionMetadata, @@ -22,11 +27,6 @@ import type { SidebarProcessorParams, CategoryMetadataFile, } from './types'; -import {DefaultSidebarItemsGenerator} from './generator'; -import {validateSidebars} from './validation'; -import _ from 'lodash'; -import combinePromises from 'combine-promises'; -import {isCategoryIndex} from '../docs'; function toSidebarItemsGeneratorDoc( doc: DocMetadataBase, diff --git a/packages/docusaurus-plugin-content-docs/src/sidebars/utils.ts b/packages/docusaurus-plugin-content-docs/src/sidebars/utils.ts index ee27177c1e4a..a213b2e7dedc 100644 --- a/packages/docusaurus-plugin-content-docs/src/sidebars/utils.ts +++ b/packages/docusaurus-plugin-content-docs/src/sidebars/utils.ts @@ -5,6 +5,8 @@ * LICENSE file in the root directory of this source tree. */ +import _ from 'lodash'; +import {toMessageRelativeFilePath} from '@docusaurus/utils'; import type { Sidebars, Sidebar, @@ -18,9 +20,6 @@ import type { SidebarItemCategoryWithGeneratedIndex, SidebarNavigationItem, } from './types'; - -import _ from 'lodash'; -import {toMessageRelativeFilePath} from '@docusaurus/utils'; import type { DocMetadataBase, PropNavigationLink, diff --git a/packages/docusaurus-plugin-content-docs/src/tags.ts b/packages/docusaurus-plugin-content-docs/src/tags.ts index 1de963d81f56..dfa0e3284587 100644 --- a/packages/docusaurus-plugin-content-docs/src/tags.ts +++ b/packages/docusaurus-plugin-content-docs/src/tags.ts @@ -5,10 +5,10 @@ * LICENSE file in the root directory of this source tree. */ +import _ from 'lodash'; import {groupTaggedItems} from '@docusaurus/utils'; import type {VersionTags} from './types'; import type {DocMetadata} from '@docusaurus/plugin-content-docs'; -import _ from 'lodash'; export function getVersionTags(docs: DocMetadata[]): VersionTags { const groups = groupTaggedItems(docs, (doc) => doc.tags); diff --git a/packages/docusaurus-plugin-content-docs/src/translations.ts b/packages/docusaurus-plugin-content-docs/src/translations.ts index f5f2f7e71916..abc56ac65b93 100644 --- a/packages/docusaurus-plugin-content-docs/src/translations.ts +++ b/packages/docusaurus-plugin-content-docs/src/translations.ts @@ -5,6 +5,14 @@ * LICENSE file in the root directory of this source tree. */ +import _ from 'lodash'; +import {mergeTranslations} from '@docusaurus/utils'; +import {CURRENT_VERSION_NAME} from './constants'; +import { + collectSidebarCategories, + transformSidebarItems, + collectSidebarLinks, +} from './sidebars/utils'; import type { LoadedVersion, LoadedContent, @@ -15,20 +23,11 @@ import type { SidebarItemCategoryLink, Sidebars, } from './sidebars/types'; - -import _ from 'lodash'; -import { - collectSidebarCategories, - transformSidebarItems, - collectSidebarLinks, -} from './sidebars/utils'; import type { TranslationFileContent, TranslationFile, TranslationMessage, } from '@docusaurus/types'; -import {mergeTranslations} from '@docusaurus/utils'; -import {CURRENT_VERSION_NAME} from './constants'; function getVersionFileName(versionName: string): string { if (versionName === CURRENT_VERSION_NAME) { diff --git a/packages/docusaurus-plugin-content-docs/src/versions/__tests__/index.test.ts b/packages/docusaurus-plugin-content-docs/src/versions/__tests__/index.test.ts index c019d8a3ae9a..4a3448460a24 100644 --- a/packages/docusaurus-plugin-content-docs/src/versions/__tests__/index.test.ts +++ b/packages/docusaurus-plugin-content-docs/src/versions/__tests__/index.test.ts @@ -7,9 +7,9 @@ import {jest} from '@jest/globals'; import path from 'path'; +import {DEFAULT_PLUGIN_ID} from '@docusaurus/utils'; import {readVersionsMetadata} from '../index'; import {DEFAULT_OPTIONS} from '../../options'; -import {DEFAULT_PLUGIN_ID} from '@docusaurus/utils'; import type {I18n} from '@docusaurus/types'; import type { PluginOptions, diff --git a/packages/docusaurus-plugin-content-docs/src/versions/files.ts b/packages/docusaurus-plugin-content-docs/src/versions/files.ts index 69660f34a9cc..6b7464ee3049 100644 --- a/packages/docusaurus-plugin-content-docs/src/versions/files.ts +++ b/packages/docusaurus-plugin-content-docs/src/versions/files.ts @@ -7,6 +7,7 @@ import path from 'path'; import fs from 'fs-extra'; +import {getPluginI18nPath, DEFAULT_PLUGIN_ID} from '@docusaurus/utils'; import { VERSIONS_JSON_FILE, VERSIONED_DOCS_DIR, @@ -14,7 +15,6 @@ import { CURRENT_VERSION_NAME, } from '../constants'; import {validateVersionNames} from './validation'; -import {getPluginI18nPath, DEFAULT_PLUGIN_ID} from '@docusaurus/utils'; import type { PluginOptions, VersionMetadata, diff --git a/packages/docusaurus-plugin-content-docs/src/versions/index.ts b/packages/docusaurus-plugin-content-docs/src/versions/index.ts index cd85ddf2137d..369e0fd6efc2 100644 --- a/packages/docusaurus-plugin-content-docs/src/versions/index.ts +++ b/packages/docusaurus-plugin-content-docs/src/versions/index.ts @@ -6,8 +6,8 @@ */ import path from 'path'; -import {CURRENT_VERSION_NAME} from '../constants'; import {normalizeUrl, posixPath} from '@docusaurus/utils'; +import {CURRENT_VERSION_NAME} from '../constants'; import {validateVersionsOptions} from './validation'; import { getDocsDirPathLocalized, diff --git a/packages/docusaurus-plugin-content-pages/src/__tests__/index.test.ts b/packages/docusaurus-plugin-content-pages/src/__tests__/index.test.ts index 89221c819bc8..f3b94d2df5f4 100644 --- a/packages/docusaurus-plugin-content-pages/src/__tests__/index.test.ts +++ b/packages/docusaurus-plugin-content-pages/src/__tests__/index.test.ts @@ -7,10 +7,10 @@ import path from 'path'; import {loadContext} from '@docusaurus/core/lib/server'; +import {normalizePluginOptions} from '@docusaurus/utils-validation'; import pluginContentPages from '../index'; import {validateOptions} from '../options'; -import {normalizePluginOptions} from '@docusaurus/utils-validation'; describe('docusaurus-plugin-content-pages', () => { it('loads simple pages', async () => { diff --git a/packages/docusaurus-plugin-content-pages/src/__tests__/options.test.ts b/packages/docusaurus-plugin-content-pages/src/__tests__/options.test.ts index 9365b614cd9f..d92d691e7dc0 100644 --- a/packages/docusaurus-plugin-content-pages/src/__tests__/options.test.ts +++ b/packages/docusaurus-plugin-content-pages/src/__tests__/options.test.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import {validateOptions, DEFAULT_OPTIONS} from '../options'; import {normalizePluginOptions} from '@docusaurus/utils-validation'; +import {validateOptions, DEFAULT_OPTIONS} from '../options'; import type {Options} from '@docusaurus/plugin-content-pages'; function testValidate(options: Options) { diff --git a/packages/docusaurus-plugin-content-pages/src/index.ts b/packages/docusaurus-plugin-content-pages/src/index.ts index 5bd819610ba1..66bcb0d15712 100644 --- a/packages/docusaurus-plugin-content-pages/src/index.ts +++ b/packages/docusaurus-plugin-content-pages/src/index.ts @@ -21,10 +21,10 @@ import { DEFAULT_PLUGIN_ID, parseMarkdownString, } from '@docusaurus/utils'; -import type {LoadContext, Plugin} from '@docusaurus/types'; import admonitions from 'remark-admonitions'; import {validatePageFrontMatter} from './frontMatter'; +import type {LoadContext, Plugin} from '@docusaurus/types'; import type {PagesContentPaths} from './types'; import type { PluginOptions, diff --git a/packages/docusaurus-plugin-content-pages/src/options.ts b/packages/docusaurus-plugin-content-pages/src/options.ts index 9713fea810dd..475ed8311060 100644 --- a/packages/docusaurus-plugin-content-pages/src/options.ts +++ b/packages/docusaurus-plugin-content-pages/src/options.ts @@ -5,7 +5,6 @@ * LICENSE file in the root directory of this source tree. */ -import type {PluginOptions, Options} from '@docusaurus/plugin-content-pages'; import { Joi, RemarkPluginsSchema, @@ -14,6 +13,7 @@ import { } from '@docusaurus/utils-validation'; import {GlobExcludeDefault} from '@docusaurus/utils'; import type {OptionValidationContext} from '@docusaurus/types'; +import type {PluginOptions, Options} from '@docusaurus/plugin-content-pages'; export const DEFAULT_OPTIONS: PluginOptions = { path: 'src/pages', // Path to data on filesystem, relative to site dir. diff --git a/packages/docusaurus-plugin-debug/src/index.ts b/packages/docusaurus-plugin-debug/src/index.ts index 62e650824f93..7ca3680678cb 100644 --- a/packages/docusaurus-plugin-debug/src/index.ts +++ b/packages/docusaurus-plugin-debug/src/index.ts @@ -5,9 +5,9 @@ * LICENSE file in the root directory of this source tree. */ -import type {LoadContext, Plugin} from '@docusaurus/types'; -import {docuHash, normalizeUrl, posixPath} from '@docusaurus/utils'; import path from 'path'; +import {docuHash, normalizeUrl, posixPath} from '@docusaurus/utils'; +import type {LoadContext, Plugin} from '@docusaurus/types'; export default function pluginDebug({ siteConfig: {baseUrl}, diff --git a/packages/docusaurus-plugin-debug/src/theme/DebugConfig/index.tsx b/packages/docusaurus-plugin-debug/src/theme/DebugConfig/index.tsx index 373fd530efff..6b110b8ab198 100644 --- a/packages/docusaurus-plugin-debug/src/theme/DebugConfig/index.tsx +++ b/packages/docusaurus-plugin-debug/src/theme/DebugConfig/index.tsx @@ -6,12 +6,10 @@ */ import React from 'react'; - +import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; import DebugLayout from '@theme/DebugLayout'; import DebugJsonView from '@theme/DebugJsonView'; -import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; - export default function DebugMetadata(): JSX.Element { const {siteConfig} = useDocusaurusContext(); return ( diff --git a/packages/docusaurus-plugin-debug/src/theme/DebugGlobalData/index.tsx b/packages/docusaurus-plugin-debug/src/theme/DebugGlobalData/index.tsx index 2a1b28b73fa8..f66df5b7dd8d 100644 --- a/packages/docusaurus-plugin-debug/src/theme/DebugGlobalData/index.tsx +++ b/packages/docusaurus-plugin-debug/src/theme/DebugGlobalData/index.tsx @@ -6,10 +6,9 @@ */ import React from 'react'; - +import useGlobalData from '@docusaurus/useGlobalData'; import DebugLayout from '@theme/DebugLayout'; import DebugJsonView from '@theme/DebugJsonView'; -import useGlobalData from '@docusaurus/useGlobalData'; export default function DebugMetadata(): JSX.Element { const globalData = useGlobalData(); diff --git a/packages/docusaurus-plugin-debug/src/theme/DebugRegistry/index.tsx b/packages/docusaurus-plugin-debug/src/theme/DebugRegistry/index.tsx index b937bf9040c4..59cd4c7c2145 100644 --- a/packages/docusaurus-plugin-debug/src/theme/DebugRegistry/index.tsx +++ b/packages/docusaurus-plugin-debug/src/theme/DebugRegistry/index.tsx @@ -6,9 +6,8 @@ */ import React from 'react'; - -import DebugLayout from '@theme/DebugLayout'; import registry from '@generated/registry'; +import DebugLayout from '@theme/DebugLayout'; import styles from './styles.module.css'; export default function DebugRegistry(): JSX.Element { diff --git a/packages/docusaurus-plugin-debug/src/theme/DebugRoutes/index.tsx b/packages/docusaurus-plugin-debug/src/theme/DebugRoutes/index.tsx index d9d3c5b5fa08..43b922ba91ac 100644 --- a/packages/docusaurus-plugin-debug/src/theme/DebugRoutes/index.tsx +++ b/packages/docusaurus-plugin-debug/src/theme/DebugRoutes/index.tsx @@ -6,10 +6,9 @@ */ import React from 'react'; - +import routes from '@generated/routes'; import DebugLayout from '@theme/DebugLayout'; import DebugJsonView from '@theme/DebugJsonView'; -import routes from '@generated/routes'; import styles from './styles.module.css'; export default function DebugRoutes(): JSX.Element { diff --git a/packages/docusaurus-plugin-debug/src/theme/DebugSiteMetadata/index.tsx b/packages/docusaurus-plugin-debug/src/theme/DebugSiteMetadata/index.tsx index a30cc3bbc642..64d3954842c5 100644 --- a/packages/docusaurus-plugin-debug/src/theme/DebugSiteMetadata/index.tsx +++ b/packages/docusaurus-plugin-debug/src/theme/DebugSiteMetadata/index.tsx @@ -6,9 +6,8 @@ */ import React from 'react'; - -import DebugLayout from '@theme/DebugLayout'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; +import DebugLayout from '@theme/DebugLayout'; import styles from './styles.module.css'; export default function DebugMetadata(): JSX.Element { diff --git a/packages/docusaurus-plugin-ideal-image/src/index.ts b/packages/docusaurus-plugin-ideal-image/src/index.ts index 727eb1adc51c..d650e33b1006 100644 --- a/packages/docusaurus-plugin-ideal-image/src/index.ts +++ b/packages/docusaurus-plugin-ideal-image/src/index.ts @@ -5,14 +5,14 @@ * LICENSE file in the root directory of this source tree. */ +import {Joi} from '@docusaurus/utils-validation'; +import {readDefaultCodeTranslationMessages} from '@docusaurus/theme-translations'; import type { LoadContext, Plugin, OptionValidationContext, } from '@docusaurus/types'; import type {PluginOptions} from '@docusaurus/plugin-ideal-image'; -import {Joi} from '@docusaurus/utils-validation'; -import {readDefaultCodeTranslationMessages} from '@docusaurus/theme-translations'; export default function pluginIdealImage( context: LoadContext, diff --git a/packages/docusaurus-plugin-pwa/src/index.ts b/packages/docusaurus-plugin-pwa/src/index.ts index 7150eae5f609..7ec58b25f439 100644 --- a/packages/docusaurus-plugin-pwa/src/index.ts +++ b/packages/docusaurus-plugin-pwa/src/index.ts @@ -5,18 +5,16 @@ * LICENSE file in the root directory of this source tree. */ -import type {HtmlTags, LoadContext, Plugin} from '@docusaurus/types'; -import type {PluginOptions} from '@docusaurus/plugin-pwa'; -import {normalizeUrl} from '@docusaurus/utils'; -import {compile} from '@docusaurus/core/lib/webpack/utils'; -import LogPlugin from '@docusaurus/core/lib/webpack/plugins/LogPlugin'; -import {readDefaultCodeTranslationMessages} from '@docusaurus/theme-translations'; - import path from 'path'; import webpack, {type Configuration} from 'webpack'; import Terser from 'terser-webpack-plugin'; - import {injectManifest} from 'workbox-build'; +import {normalizeUrl} from '@docusaurus/utils'; +import {compile} from '@docusaurus/core/lib/webpack/utils'; +import LogPlugin from '@docusaurus/core/lib/webpack/plugins/LogPlugin'; +import {readDefaultCodeTranslationMessages} from '@docusaurus/theme-translations'; +import type {HtmlTags, LoadContext, Plugin} from '@docusaurus/types'; +import type {PluginOptions} from '@docusaurus/plugin-pwa'; const isProd = process.env.NODE_ENV === 'production'; diff --git a/packages/docusaurus-plugin-pwa/src/theme/PwaReloadPopup/index.tsx b/packages/docusaurus-plugin-pwa/src/theme/PwaReloadPopup/index.tsx index 20e8490fb82b..66d63d70e096 100644 --- a/packages/docusaurus-plugin-pwa/src/theme/PwaReloadPopup/index.tsx +++ b/packages/docusaurus-plugin-pwa/src/theme/PwaReloadPopup/index.tsx @@ -8,7 +8,6 @@ import React, {useState} from 'react'; import clsx from 'clsx'; import Translate, {translate} from '@docusaurus/Translate'; - import type {Props} from '@theme/PwaReloadPopup'; import styles from './styles.module.css'; diff --git a/packages/docusaurus-plugin-sitemap/src/__tests__/createSitemap.test.ts b/packages/docusaurus-plugin-sitemap/src/__tests__/createSitemap.test.ts index c9008bd31004..26fd096caf41 100644 --- a/packages/docusaurus-plugin-sitemap/src/__tests__/createSitemap.test.ts +++ b/packages/docusaurus-plugin-sitemap/src/__tests__/createSitemap.test.ts @@ -6,9 +6,9 @@ */ import React from 'react'; +import {EnumChangefreq} from 'sitemap'; import createSitemap from '../createSitemap'; import type {DocusaurusConfig} from '@docusaurus/types'; -import {EnumChangefreq} from 'sitemap'; describe('createSitemap', () => { it('simple site', async () => { diff --git a/packages/docusaurus-plugin-sitemap/src/__tests__/options.test.ts b/packages/docusaurus-plugin-sitemap/src/__tests__/options.test.ts index c581cbece0ec..8d57746125b9 100644 --- a/packages/docusaurus-plugin-sitemap/src/__tests__/options.test.ts +++ b/packages/docusaurus-plugin-sitemap/src/__tests__/options.test.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import {validateOptions, DEFAULT_OPTIONS, type Options} from '../options'; import {normalizePluginOptions} from '@docusaurus/utils-validation'; +import {validateOptions, DEFAULT_OPTIONS, type Options} from '../options'; function testValidate(options: Options) { return validateOptions({validate: normalizePluginOptions, options}); diff --git a/packages/docusaurus-plugin-sitemap/src/createSitemap.ts b/packages/docusaurus-plugin-sitemap/src/createSitemap.ts index 5e1b619d356f..366714fd3f9b 100644 --- a/packages/docusaurus-plugin-sitemap/src/createSitemap.ts +++ b/packages/docusaurus-plugin-sitemap/src/createSitemap.ts @@ -5,13 +5,13 @@ * LICENSE file in the root directory of this source tree. */ +import type {ReactElement} from 'react'; import {SitemapStream, streamToPromise} from 'sitemap'; import {applyTrailingSlash} from '@docusaurus/utils-common'; import {createMatcher} from '@docusaurus/utils'; import type {DocusaurusConfig} from '@docusaurus/types'; import type {HelmetServerState} from 'react-helmet-async'; import type {PluginOptions} from './options'; -import type {ReactElement} from 'react'; export default async function createSitemap( siteConfig: DocusaurusConfig, diff --git a/packages/docusaurus-remark-plugin-npm2yarn/src/__tests__/index.test.ts b/packages/docusaurus-remark-plugin-npm2yarn/src/__tests__/index.test.ts index 6c6dc300e176..2ed961332463 100644 --- a/packages/docusaurus-remark-plugin-npm2yarn/src/__tests__/index.test.ts +++ b/packages/docusaurus-remark-plugin-npm2yarn/src/__tests__/index.test.ts @@ -5,11 +5,11 @@ * LICENSE file in the root directory of this source tree. */ -import remark from 'remark'; -import npm2yarn from '../index'; -import vfile from 'to-vfile'; import path from 'path'; +import vfile from 'to-vfile'; import mdx from 'remark-mdx'; +import remark from 'remark'; +import npm2yarn from '../index'; const processFixture = async (name: string, options?: {sync?: boolean}) => { const filePath = path.join(__dirname, '__fixtures__', `${name}.md`); diff --git a/packages/docusaurus-remark-plugin-npm2yarn/src/index.ts b/packages/docusaurus-remark-plugin-npm2yarn/src/index.ts index 0764763e9540..28b4c7e89150 100644 --- a/packages/docusaurus-remark-plugin-npm2yarn/src/index.ts +++ b/packages/docusaurus-remark-plugin-npm2yarn/src/index.ts @@ -5,11 +5,11 @@ * LICENSE file in the root directory of this source tree. */ +import visit from 'unist-util-visit'; +import npmToYarn from 'npm-to-yarn'; import type {Code, Content, Literal} from 'mdast'; import type {Plugin} from 'unified'; import type {Node, Parent} from 'unist'; -import visit from 'unist-util-visit'; -import npmToYarn from 'npm-to-yarn'; type PluginOptions = { sync?: boolean; diff --git a/packages/docusaurus-theme-classic/src/__tests__/translations.test.ts b/packages/docusaurus-theme-classic/src/__tests__/translations.test.ts index 1c530f978e86..48a2c70f3ff7 100644 --- a/packages/docusaurus-theme-classic/src/__tests__/translations.test.ts +++ b/packages/docusaurus-theme-classic/src/__tests__/translations.test.ts @@ -5,9 +5,9 @@ * LICENSE file in the root directory of this source tree. */ +import {updateTranslationFileMessages} from '@docusaurus/utils'; import {getTranslationFiles, translateThemeConfig} from '../translations'; import type {ThemeConfig} from '@docusaurus/theme-common'; -import {updateTranslationFileMessages} from '@docusaurus/utils'; const ThemeConfigSample: ThemeConfig = { colorMode: {}, diff --git a/packages/docusaurus-theme-classic/src/__tests__/validateThemeConfig.test.ts b/packages/docusaurus-theme-classic/src/__tests__/validateThemeConfig.test.ts index a4ca7e346018..8d85a4d376aa 100644 --- a/packages/docusaurus-theme-classic/src/__tests__/validateThemeConfig.test.ts +++ b/packages/docusaurus-theme-classic/src/__tests__/validateThemeConfig.test.ts @@ -6,11 +6,11 @@ */ import _ from 'lodash'; -import {ThemeConfigSchema, DEFAULT_CONFIG} from '../validateThemeConfig'; import {normalizeThemeConfig} from '@docusaurus/utils-validation'; import theme from 'prism-react-renderer/themes/github'; import darkTheme from 'prism-react-renderer/themes/dracula'; +import {ThemeConfigSchema, DEFAULT_CONFIG} from '../validateThemeConfig'; function testValidateThemeConfig(partialThemeConfig: {[key: string]: unknown}) { return normalizeThemeConfig(ThemeConfigSchema, { diff --git a/packages/docusaurus-theme-classic/src/index.ts b/packages/docusaurus-theme-classic/src/index.ts index 9fd370a2e5f8..262457201661 100644 --- a/packages/docusaurus-theme-classic/src/index.ts +++ b/packages/docusaurus-theme-classic/src/index.ts @@ -6,13 +6,13 @@ */ import path from 'path'; -import type {LoadContext, Plugin} from '@docusaurus/types'; -import type {ThemeConfig} from '@docusaurus/theme-common'; -import {getTranslationFiles, translateThemeConfig} from './translations'; import {createRequire} from 'module'; -import type {Plugin as PostCssPlugin} from 'postcss'; import rtlcss from 'rtlcss'; import {readDefaultCodeTranslationMessages} from '@docusaurus/theme-translations'; +import {getTranslationFiles, translateThemeConfig} from './translations'; +import type {LoadContext, Plugin} from '@docusaurus/types'; +import type {ThemeConfig} from '@docusaurus/theme-common'; +import type {Plugin as PostCssPlugin} from 'postcss'; import type {Options} from '@docusaurus/theme-classic'; import type webpack from 'webpack'; diff --git a/packages/docusaurus-theme-classic/src/theme/BlogArchivePage/index.tsx b/packages/docusaurus-theme-classic/src/theme/BlogArchivePage/index.tsx index a05afdf43fe8..763d0661e25f 100644 --- a/packages/docusaurus-theme-classic/src/theme/BlogArchivePage/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/BlogArchivePage/index.tsx @@ -6,11 +6,11 @@ */ import React from 'react'; -import Layout from '@theme/Layout'; import Link from '@docusaurus/Link'; -import type {ArchiveBlogPost, Props} from '@theme/BlogArchivePage'; import {translate} from '@docusaurus/Translate'; import {PageMetadata} from '@docusaurus/theme-common'; +import Layout from '@theme/Layout'; +import type {ArchiveBlogPost, Props} from '@theme/BlogArchivePage'; type YearProp = { year: string; diff --git a/packages/docusaurus-theme-classic/src/theme/BlogListPage/index.tsx b/packages/docusaurus-theme-classic/src/theme/BlogListPage/index.tsx index 910328b214ce..72270058d99d 100644 --- a/packages/docusaurus-theme-classic/src/theme/BlogListPage/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/BlogListPage/index.tsx @@ -6,19 +6,19 @@ */ import React from 'react'; +import clsx from 'clsx'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; -import BlogLayout from '@theme/BlogLayout'; -import BlogPostItem from '@theme/BlogPostItem'; -import BlogListPaginator from '@theme/BlogListPaginator'; -import type {Props} from '@theme/BlogListPage'; import { PageMetadata, HtmlClassNameProvider, ThemeClassNames, } from '@docusaurus/theme-common'; +import BlogLayout from '@theme/BlogLayout'; +import BlogPostItem from '@theme/BlogPostItem'; +import BlogListPaginator from '@theme/BlogListPaginator'; import SearchMetadata from '@theme/SearchMetadata'; -import clsx from 'clsx'; +import type {Props} from '@theme/BlogListPage'; function BlogListPageMetadata(props: Props): JSX.Element { const {metadata} = props; diff --git a/packages/docusaurus-theme-classic/src/theme/BlogPostAuthors/index.tsx b/packages/docusaurus-theme-classic/src/theme/BlogPostAuthors/index.tsx index 4e36a7142553..99386d4ae900 100644 --- a/packages/docusaurus-theme-classic/src/theme/BlogPostAuthors/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/BlogPostAuthors/index.tsx @@ -7,8 +7,8 @@ import React from 'react'; import clsx from 'clsx'; -import type {Props} from '@theme/BlogPostAuthors'; import BlogPostAuthor from '@theme/BlogPostAuthor'; +import type {Props} from '@theme/BlogPostAuthors'; import styles from './styles.module.css'; diff --git a/packages/docusaurus-theme-classic/src/theme/BlogPostItem/index.tsx b/packages/docusaurus-theme-classic/src/theme/BlogPostItem/index.tsx index e531b8e9854b..b0fcad3236b4 100644 --- a/packages/docusaurus-theme-classic/src/theme/BlogPostItem/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/BlogPostItem/index.tsx @@ -14,11 +14,11 @@ import {usePluralForm} from '@docusaurus/theme-common'; import {blogPostContainerID} from '@docusaurus/utils-common'; import MDXContent from '@theme/MDXContent'; import EditThisPage from '@theme/EditThisPage'; +import TagsListInline from '@theme/TagsListInline'; +import BlogPostAuthors from '@theme/BlogPostAuthors'; import type {Props} from '@theme/BlogPostItem'; import styles from './styles.module.css'; -import TagsListInline from '@theme/TagsListInline'; -import BlogPostAuthors from '@theme/BlogPostAuthors'; // Very simple pluralization: probably good enough for now function useReadingTimePlural() { diff --git a/packages/docusaurus-theme-classic/src/theme/BlogPostPage/index.tsx b/packages/docusaurus-theme-classic/src/theme/BlogPostPage/index.tsx index c7b9ec88e5d3..3d47fc4dd379 100644 --- a/packages/docusaurus-theme-classic/src/theme/BlogPostPage/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/BlogPostPage/index.tsx @@ -6,17 +6,17 @@ */ import React from 'react'; -import BlogLayout from '@theme/BlogLayout'; -import BlogPostItem from '@theme/BlogPostItem'; -import BlogPostPaginator from '@theme/BlogPostPaginator'; -import type {Props} from '@theme/BlogPostPage'; +import clsx from 'clsx'; import { PageMetadata, HtmlClassNameProvider, ThemeClassNames, } from '@docusaurus/theme-common'; +import BlogLayout from '@theme/BlogLayout'; +import BlogPostItem from '@theme/BlogPostItem'; +import BlogPostPaginator from '@theme/BlogPostPaginator'; import TOC from '@theme/TOC'; -import clsx from 'clsx'; +import type {Props} from '@theme/BlogPostPage'; function BlogPostPageMetadata(props: Props): JSX.Element { const {content: BlogPostContents} = props; diff --git a/packages/docusaurus-theme-classic/src/theme/BlogSidebar/Desktop/index.tsx b/packages/docusaurus-theme-classic/src/theme/BlogSidebar/Desktop/index.tsx index ff74637e9ea5..f010d2144836 100644 --- a/packages/docusaurus-theme-classic/src/theme/BlogSidebar/Desktop/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/BlogSidebar/Desktop/index.tsx @@ -9,9 +9,9 @@ import React from 'react'; import clsx from 'clsx'; import Link from '@docusaurus/Link'; import {translate} from '@docusaurus/Translate'; +import type {Props} from '@theme/BlogSidebar/Desktop'; import styles from './styles.module.css'; -import type {Props} from '@theme/BlogSidebar/Desktop'; export default function BlogSidebarDesktop({sidebar}: Props): JSX.Element { return ( diff --git a/packages/docusaurus-theme-classic/src/theme/BlogSidebar/index.tsx b/packages/docusaurus-theme-classic/src/theme/BlogSidebar/index.tsx index 742f4bd42781..f8458777efdd 100644 --- a/packages/docusaurus-theme-classic/src/theme/BlogSidebar/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/BlogSidebar/index.tsx @@ -6,9 +6,9 @@ */ import React from 'react'; +import {useWindowSize} from '@docusaurus/theme-common'; import BlogSidebarDesktop from '@theme/BlogSidebar/Desktop'; import BlogSidebarMobile from '@theme/BlogSidebar/Mobile'; -import {useWindowSize} from '@docusaurus/theme-common'; import type {Props} from '@theme/BlogSidebar'; export default function BlogSidebar({sidebar}: Props): JSX.Element | null { diff --git a/packages/docusaurus-theme-classic/src/theme/BlogTagsListPage/index.tsx b/packages/docusaurus-theme-classic/src/theme/BlogTagsListPage/index.tsx index 2f53b6ee41fa..017329d478b1 100644 --- a/packages/docusaurus-theme-classic/src/theme/BlogTagsListPage/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/BlogTagsListPage/index.tsx @@ -6,18 +6,17 @@ */ import React from 'react'; - -import BlogLayout from '@theme/BlogLayout'; -import TagsListByLetter from '@theme/TagsListByLetter'; -import type {Props} from '@theme/BlogTagsListPage'; +import clsx from 'clsx'; import { PageMetadata, HtmlClassNameProvider, ThemeClassNames, translateTagsPageTitle, } from '@docusaurus/theme-common'; +import BlogLayout from '@theme/BlogLayout'; +import TagsListByLetter from '@theme/TagsListByLetter'; +import type {Props} from '@theme/BlogTagsListPage'; import SearchMetadata from '../SearchMetadata'; -import clsx from 'clsx'; export default function BlogTagsListPage({tags, sidebar}: Props): JSX.Element { const title = translateTagsPageTitle(); diff --git a/packages/docusaurus-theme-classic/src/theme/BlogTagsPostsPage/index.tsx b/packages/docusaurus-theme-classic/src/theme/BlogTagsPostsPage/index.tsx index fddda0795d75..312bc945e107 100644 --- a/packages/docusaurus-theme-classic/src/theme/BlogTagsPostsPage/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/BlogTagsPostsPage/index.tsx @@ -6,11 +6,7 @@ */ import React from 'react'; - -import Link from '@docusaurus/Link'; -import BlogLayout from '@theme/BlogLayout'; -import BlogPostItem from '@theme/BlogPostItem'; -import type {Props} from '@theme/BlogTagsPostsPage'; +import clsx from 'clsx'; import Translate, {translate} from '@docusaurus/Translate'; import { PageMetadata, @@ -18,9 +14,12 @@ import { ThemeClassNames, usePluralForm, } from '@docusaurus/theme-common'; +import Link from '@docusaurus/Link'; +import BlogLayout from '@theme/BlogLayout'; +import BlogPostItem from '@theme/BlogPostItem'; import BlogListPaginator from '@theme/BlogListPaginator'; import SearchMetadata from '@theme/SearchMetadata'; -import clsx from 'clsx'; +import type {Props} from '@theme/BlogTagsPostsPage'; // Very simple pluralization: probably good enough for now function useBlogPostsPlural() { diff --git a/packages/docusaurus-theme-classic/src/theme/CodeBlock/Content/Element.tsx b/packages/docusaurus-theme-classic/src/theme/CodeBlock/Content/Element.tsx index 3f130e80e6d6..a31cd85731ac 100644 --- a/packages/docusaurus-theme-classic/src/theme/CodeBlock/Content/Element.tsx +++ b/packages/docusaurus-theme-classic/src/theme/CodeBlock/Content/Element.tsx @@ -6,8 +6,8 @@ */ import React from 'react'; -import Container from '@theme/CodeBlock/Container'; import clsx from 'clsx'; +import Container from '@theme/CodeBlock/Container'; import type {Props} from '@theme/CodeBlock/Content/Element'; import styles from './styles.module.css'; diff --git a/packages/docusaurus-theme-classic/src/theme/CodeBlock/Content/String.tsx b/packages/docusaurus-theme-classic/src/theme/CodeBlock/Content/String.tsx index f73819a37f20..5a9384f7b638 100644 --- a/packages/docusaurus-theme-classic/src/theme/CodeBlock/Content/String.tsx +++ b/packages/docusaurus-theme-classic/src/theme/CodeBlock/Content/String.tsx @@ -6,6 +6,7 @@ */ import React from 'react'; +import clsx from 'clsx'; import { useThemeConfig, parseCodeBlockTitle, @@ -15,7 +16,6 @@ import { usePrismTheme, useCodeWordWrap, } from '@docusaurus/theme-common'; -import clsx from 'clsx'; import Highlight, {defaultProps, type Language} from 'prism-react-renderer'; import Line from '@theme/CodeBlock/Line'; import CopyButton from '@theme/CodeBlock/CopyButton'; diff --git a/packages/docusaurus-theme-classic/src/theme/CodeBlock/Line/index.tsx b/packages/docusaurus-theme-classic/src/theme/CodeBlock/Line/index.tsx index e15d70abfa4e..3b6a8a306b0a 100644 --- a/packages/docusaurus-theme-classic/src/theme/CodeBlock/Line/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/CodeBlock/Line/index.tsx @@ -8,6 +8,7 @@ import React from 'react'; import clsx from 'clsx'; import type {Props} from '@theme/CodeBlock/Line'; + import styles from './styles.module.css'; export default function CodeBlockLine({ diff --git a/packages/docusaurus-theme-classic/src/theme/CodeBlock/index.tsx b/packages/docusaurus-theme-classic/src/theme/CodeBlock/index.tsx index 9565932fafcb..e672185a515f 100644 --- a/packages/docusaurus-theme-classic/src/theme/CodeBlock/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/CodeBlock/index.tsx @@ -7,9 +7,9 @@ import React, {isValidElement, type ReactNode} from 'react'; import useIsBrowser from '@docusaurus/useIsBrowser'; -import type {Props} from '@theme/CodeBlock'; import ElementContent from '@theme/CodeBlock/Content/Element'; import StringContent from '@theme/CodeBlock/Content/String'; +import type {Props} from '@theme/CodeBlock'; /** * Best attempt to make the children a plain string so it is copyable. If there diff --git a/packages/docusaurus-theme-classic/src/theme/ColorModeToggle/index.tsx b/packages/docusaurus-theme-classic/src/theme/ColorModeToggle/index.tsx index e119f2ae33ed..2b0407a547be 100644 --- a/packages/docusaurus-theme-classic/src/theme/ColorModeToggle/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/ColorModeToggle/index.tsx @@ -6,13 +6,13 @@ */ import React from 'react'; -import type {Props} from '@theme/ColorModeToggle'; +import clsx from 'clsx'; import useIsBrowser from '@docusaurus/useIsBrowser'; import {translate} from '@docusaurus/Translate'; import IconLightMode from '@theme/IconLightMode'; import IconDarkMode from '@theme/IconDarkMode'; +import type {Props} from '@theme/ColorModeToggle'; -import clsx from 'clsx'; import styles from './styles.module.css'; function ColorModeToggle({className, value, onChange}: Props): JSX.Element { diff --git a/packages/docusaurus-theme-classic/src/theme/Details/index.tsx b/packages/docusaurus-theme-classic/src/theme/Details/index.tsx index 188729351494..b6e7b06f6bd7 100644 --- a/packages/docusaurus-theme-classic/src/theme/Details/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Details/index.tsx @@ -9,6 +9,7 @@ import React from 'react'; import clsx from 'clsx'; import {Details as DetailsGeneric} from '@docusaurus/theme-common/Details'; import type {Props} from '@theme/Details'; + import styles from './styles.module.css'; // Should we have a custom details/summary comp in Infima instead of reusing diff --git a/packages/docusaurus-theme-classic/src/theme/DocBreadcrumbs/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocBreadcrumbs/index.tsx index 0ed00dc1f43a..44200b2f329a 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocBreadcrumbs/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocBreadcrumbs/index.tsx @@ -6,18 +6,19 @@ */ import React, {type ReactNode} from 'react'; +import clsx from 'clsx'; import { ThemeClassNames, useSidebarBreadcrumbs, useHomePageRoute, } from '@docusaurus/theme-common'; -import styles from './styles.module.css'; -import clsx from 'clsx'; import Link from '@docusaurus/Link'; import useBaseUrl from '@docusaurus/useBaseUrl'; import {translate} from '@docusaurus/Translate'; import IconHome from '@theme/IconHome'; +import styles from './styles.module.css'; + // TODO move to design system folder function BreadcrumbsItemLink({ children, diff --git a/packages/docusaurus-theme-classic/src/theme/DocCard/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocCard/index.tsx index 15c8ac155d51..fc63f1949f47 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocCard/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocCard/index.tsx @@ -6,17 +6,18 @@ */ import React, {type ReactNode} from 'react'; +import clsx from 'clsx'; import Link from '@docusaurus/Link'; +import {findFirstCategoryLink, useDocById} from '@docusaurus/theme-common'; +import isInternalUrl from '@docusaurus/isInternalUrl'; +import {translate} from '@docusaurus/Translate'; +import type {Props} from '@theme/DocCard'; + +import styles from './styles.module.css'; import type { PropSidebarItemCategory, PropSidebarItemLink, } from '@docusaurus/plugin-content-docs'; -import type {Props} from '@theme/DocCard'; -import {findFirstCategoryLink, useDocById} from '@docusaurus/theme-common'; -import clsx from 'clsx'; -import styles from './styles.module.css'; -import isInternalUrl from '@docusaurus/isInternalUrl'; -import {translate} from '@docusaurus/Translate'; function CardContainer({ href, diff --git a/packages/docusaurus-theme-classic/src/theme/DocCardList/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocCardList/index.tsx index d2e61b8037c4..3c105378ae81 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocCardList/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocCardList/index.tsx @@ -7,11 +7,10 @@ import React from 'react'; import clsx from 'clsx'; - -import DocCard from '@theme/DocCard'; -import type {PropSidebarItem} from '@docusaurus/plugin-content-docs'; import {findFirstCategoryLink} from '@docusaurus/theme-common'; +import DocCard from '@theme/DocCard'; import type {Props} from '@theme/DocCardList'; +import type {PropSidebarItem} from '@docusaurus/plugin-content-docs'; // Filter categories that don't have a link. function filterItems(items: PropSidebarItem[]): PropSidebarItem[] { diff --git a/packages/docusaurus-theme-classic/src/theme/DocCategoryGeneratedIndexPage/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocCategoryGeneratedIndexPage/index.tsx index a1b183f1705b..0058b71596a5 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocCategoryGeneratedIndexPage/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocCategoryGeneratedIndexPage/index.tsx @@ -10,14 +10,14 @@ import { PageMetadata, useCurrentSidebarCategory, } from '@docusaurus/theme-common'; -import type {Props} from '@theme/DocCategoryGeneratedIndexPage'; +import useBaseUrl from '@docusaurus/useBaseUrl'; import DocCardList from '@theme/DocCardList'; import DocPaginator from '@theme/DocPaginator'; import DocVersionBanner from '@theme/DocVersionBanner'; import DocVersionBadge from '@theme/DocVersionBadge'; import DocBreadcrumbs from '@theme/DocBreadcrumbs'; import Heading from '@theme/Heading'; -import useBaseUrl from '@docusaurus/useBaseUrl'; +import type {Props} from '@theme/DocCategoryGeneratedIndexPage'; import styles from './styles.module.css'; diff --git a/packages/docusaurus-theme-classic/src/theme/DocItem/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocItem/index.tsx index 77265efccbd2..fa75f1c162e5 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocItem/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocItem/index.tsx @@ -7,23 +7,24 @@ import React from 'react'; import clsx from 'clsx'; +import { + PageMetadata, + HtmlClassNameProvider, + ThemeClassNames, + useWindowSize, +} from '@docusaurus/theme-common'; import DocPaginator from '@theme/DocPaginator'; import DocVersionBanner from '@theme/DocVersionBanner'; import DocVersionBadge from '@theme/DocVersionBadge'; -import type {Props} from '@theme/DocItem'; import DocItemFooter from '@theme/DocItemFooter'; import TOC from '@theme/TOC'; import TOCCollapsible from '@theme/TOCCollapsible'; import Heading from '@theme/Heading'; -import styles from './styles.module.css'; -import { - PageMetadata, - HtmlClassNameProvider, - ThemeClassNames, - useWindowSize, -} from '@docusaurus/theme-common'; import DocBreadcrumbs from '@theme/DocBreadcrumbs'; import MDXContent from '@theme/MDXContent'; +import type {Props} from '@theme/DocItem'; + +import styles from './styles.module.css'; function DocItemMetadata(props: Props): JSX.Element { const {content: DocContent} = props; diff --git a/packages/docusaurus-theme-classic/src/theme/DocItemFooter/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocItemFooter/index.tsx index 056391687cb0..c6f998cb61c9 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocItemFooter/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocItemFooter/index.tsx @@ -7,16 +7,15 @@ import React from 'react'; import clsx from 'clsx'; - +import {ThemeClassNames} from '@docusaurus/theme-common'; import LastUpdated from '@theme/LastUpdated'; -import type {Props} from '@theme/DocItem'; import EditThisPage from '@theme/EditThisPage'; import TagsListInline, { type Props as TagsListInlineProps, } from '@theme/TagsListInline'; +import type {Props} from '@theme/DocItem'; import styles from './styles.module.css'; -import {ThemeClassNames} from '@docusaurus/theme-common'; function TagsRow(props: TagsListInlineProps) { return ( diff --git a/packages/docusaurus-theme-classic/src/theme/DocPage/Layout/Main/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocPage/Layout/Main/index.tsx index 3cc4f0479e00..61ccdafdb6cc 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocPage/Layout/Main/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocPage/Layout/Main/index.tsx @@ -6,12 +6,11 @@ */ import React from 'react'; - +import clsx from 'clsx'; import {useDocsSidebar} from '@docusaurus/theme-common'; +import type {Props} from '@theme/DocPage/Layout/Main'; -import clsx from 'clsx'; import styles from './styles.module.css'; -import type {Props} from '@theme/DocPage/Layout/Main'; export default function DocPageLayoutMain({ hiddenSidebarContainer, diff --git a/packages/docusaurus-theme-classic/src/theme/DocPage/Layout/Sidebar/ExpandButton/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocPage/Layout/Sidebar/ExpandButton/index.tsx index 7d68031577fa..0cf889639321 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocPage/Layout/Sidebar/ExpandButton/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocPage/Layout/Sidebar/ExpandButton/index.tsx @@ -6,8 +6,8 @@ */ import React from 'react'; -import IconArrow from '@theme/IconArrow'; import {translate} from '@docusaurus/Translate'; +import IconArrow from '@theme/IconArrow'; import type {Props} from '@theme/DocPage/Layout/Sidebar/ExpandButton'; import styles from './styles.module.css'; diff --git a/packages/docusaurus-theme-classic/src/theme/DocPage/Layout/Sidebar/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocPage/Layout/Sidebar/index.tsx index 6585c6ec6888..150fd888a3ef 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocPage/Layout/Sidebar/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocPage/Layout/Sidebar/index.tsx @@ -6,16 +6,15 @@ */ import React, {type ReactNode, useState, useCallback} from 'react'; -import DocSidebar from '@theme/DocSidebar'; +import clsx from 'clsx'; +import {ThemeClassNames, useDocsSidebar} from '@docusaurus/theme-common'; import {useLocation} from '@docusaurus/router'; -import type {Props} from '@theme/DocPage/Layout/Sidebar'; +import DocSidebar from '@theme/DocSidebar'; import ExpandButton from '@theme/DocPage/Layout/Sidebar/ExpandButton'; +import type {Props} from '@theme/DocPage/Layout/Sidebar'; -import clsx from 'clsx'; import styles from './styles.module.css'; -import {ThemeClassNames, useDocsSidebar} from '@docusaurus/theme-common'; - // Reset sidebar state when sidebar changes // Use React key to unmount/remount the children // See https://github.com/facebook/docusaurus/issues/3414 diff --git a/packages/docusaurus-theme-classic/src/theme/DocPage/Layout/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocPage/Layout/index.tsx index d0269db346b2..d5a48c1a68b1 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocPage/Layout/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocPage/Layout/index.tsx @@ -6,12 +6,12 @@ */ import React, {useState} from 'react'; +import {useDocsSidebar} from '@docusaurus/theme-common'; import Layout from '@theme/Layout'; import BackToTopButton from '@theme/BackToTopButton'; -import type {Props} from '@theme/DocPage/Layout'; import DocPageLayoutSidebar from '@theme/DocPage/Layout/Sidebar'; import DocPageLayoutMain from '@theme/DocPage/Layout/Main'; -import {useDocsSidebar} from '@docusaurus/theme-common'; +import type {Props} from '@theme/DocPage/Layout'; import styles from './styles.module.css'; diff --git a/packages/docusaurus-theme-classic/src/theme/DocPage/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocPage/index.tsx index b1404be79846..3e45dbbda399 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocPage/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocPage/index.tsx @@ -6,12 +6,7 @@ */ import React from 'react'; -import NotFound from '@theme/NotFound'; -import type {Props} from '@theme/DocPage'; -import DocPageLayout from '@theme/DocPage/Layout'; - import clsx from 'clsx'; - import { HtmlClassNameProvider, ThemeClassNames, @@ -20,7 +15,10 @@ import { DocsVersionProvider, useDocRouteMetadata, } from '@docusaurus/theme-common'; +import DocPageLayout from '@theme/DocPage/Layout'; +import NotFound from '@theme/NotFound'; import SearchMetadata from '@theme/SearchMetadata'; +import type {Props} from '@theme/DocPage'; export default function DocPage(props: Props): JSX.Element { const {versionMetadata} = props; diff --git a/packages/docusaurus-theme-classic/src/theme/DocSidebar/Desktop/CollapseButton/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocSidebar/Desktop/CollapseButton/index.tsx index c902ac90d6ca..f5d96d16481f 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocSidebar/Desktop/CollapseButton/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocSidebar/Desktop/CollapseButton/index.tsx @@ -7,8 +7,8 @@ import React from 'react'; import clsx from 'clsx'; -import IconArrow from '@theme/IconArrow'; import {translate} from '@docusaurus/Translate'; +import IconArrow from '@theme/IconArrow'; import type {Props} from '@theme/DocSidebar/Desktop/CollapseButton'; import styles from './styles.module.css'; diff --git a/packages/docusaurus-theme-classic/src/theme/DocSidebar/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocSidebar/index.tsx index 5bbd9e2eb710..f057073d60dd 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocSidebar/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocSidebar/index.tsx @@ -7,9 +7,9 @@ import React from 'react'; import {useWindowSize} from '@docusaurus/theme-common'; -import type {Props} from '@theme/DocSidebar'; import DocSidebarDesktop from '@theme/DocSidebar/Desktop'; import DocSidebarMobile from '@theme/DocSidebar/Mobile'; +import type {Props} from '@theme/DocSidebar'; export default function DocSidebar(props: Props): JSX.Element { const windowSize = useWindowSize(); diff --git a/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Category/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Category/index.tsx index 49b52448bcd1..18047a9225ab 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Category/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Category/index.tsx @@ -20,12 +20,10 @@ import { } from '@docusaurus/theme-common'; import Link from '@docusaurus/Link'; import {translate} from '@docusaurus/Translate'; - +import useIsBrowser from '@docusaurus/useIsBrowser'; import DocSidebarItems from '@theme/DocSidebarItems'; import type {Props} from '@theme/DocSidebarItem/Category'; -import useIsBrowser from '@docusaurus/useIsBrowser'; - // If we navigate to a category and it becomes active, it should automatically // expand itself function useAutoExpandActiveCategory({ diff --git a/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Link/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Link/index.tsx index a6ed60aaf2c6..fc87268e01f0 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Link/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Link/index.tsx @@ -11,7 +11,6 @@ import {isActiveSidebarItem, ThemeClassNames} from '@docusaurus/theme-common'; import Link from '@docusaurus/Link'; import isInternalUrl from '@docusaurus/isInternalUrl'; import IconExternalLink from '@theme/IconExternalLink'; - import type {Props} from '@theme/DocSidebarItem/Link'; import styles from './styles.module.css'; diff --git a/packages/docusaurus-theme-classic/src/theme/DocSidebarItems/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocSidebarItems/index.tsx index fbced08e1416..041c553f284f 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocSidebarItems/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocSidebarItems/index.tsx @@ -6,8 +6,8 @@ */ import React, {memo} from 'react'; -import DocSidebarItem from '@theme/DocSidebarItem'; import {DocSidebarItemsExpandedStateProvider} from '@docusaurus/theme-common'; +import DocSidebarItem from '@theme/DocSidebarItem'; import type {Props} from '@theme/DocSidebarItems'; diff --git a/packages/docusaurus-theme-classic/src/theme/DocTagDocListPage/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocTagDocListPage/index.tsx index 22cf3ff7ac9b..a928644a9bd6 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocTagDocListPage/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocTagDocListPage/index.tsx @@ -6,8 +6,7 @@ */ import React from 'react'; - -import Layout from '@theme/Layout'; +import clsx from 'clsx'; import Link from '@docusaurus/Link'; import { PageMetadata, @@ -16,9 +15,9 @@ import { usePluralForm, } from '@docusaurus/theme-common'; import Translate, {translate} from '@docusaurus/Translate'; -import type {Props} from '@theme/DocTagDocListPage'; +import Layout from '@theme/Layout'; import SearchMetadata from '@theme/SearchMetadata'; -import clsx from 'clsx'; +import type {Props} from '@theme/DocTagDocListPage'; // Very simple pluralization: probably good enough for now function useNDocsTaggedPlural() { diff --git a/packages/docusaurus-theme-classic/src/theme/DocTagsListPage/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocTagsListPage/index.tsx index 5ab4f5a44db9..e848128fedf0 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocTagsListPage/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocTagsListPage/index.tsx @@ -6,18 +6,17 @@ */ import React from 'react'; - -import Layout from '@theme/Layout'; +import clsx from 'clsx'; import { PageMetadata, HtmlClassNameProvider, ThemeClassNames, translateTagsPageTitle, } from '@docusaurus/theme-common'; +import Layout from '@theme/Layout'; import TagsListByLetter from '@theme/TagsListByLetter'; -import type {Props} from '@theme/DocTagsListPage'; import SearchMetadata from '@theme/SearchMetadata'; -import clsx from 'clsx'; +import type {Props} from '@theme/DocTagsListPage'; export default function DocTagsListPage({tags}: Props): JSX.Element { const title = translateTagsPageTitle(); diff --git a/packages/docusaurus-theme-classic/src/theme/DocVersionBadge/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocVersionBadge/index.tsx index 862a33e5e543..dc4a2c90bbb1 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocVersionBadge/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocVersionBadge/index.tsx @@ -6,9 +6,9 @@ */ import React from 'react'; +import clsx from 'clsx'; import Translate from '@docusaurus/Translate'; import {ThemeClassNames, useDocsVersion} from '@docusaurus/theme-common'; -import clsx from 'clsx'; import type {Props} from '@theme/DocVersionBadge'; export default function DocVersionBadge({ diff --git a/packages/docusaurus-theme-classic/src/theme/DocVersionBanner/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocVersionBanner/index.tsx index dd87a4d3673b..979a4f2b90a7 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocVersionBanner/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocVersionBanner/index.tsx @@ -6,6 +6,7 @@ */ import React, {type ComponentType} from 'react'; +import clsx from 'clsx'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; import Link from '@docusaurus/Link'; import Translate from '@docusaurus/Translate'; @@ -21,7 +22,6 @@ import { } from '@docusaurus/theme-common'; import type {Props} from '@theme/DocVersionBanner'; -import clsx from 'clsx'; import type { VersionBanner, PropVersionMetadata, diff --git a/packages/docusaurus-theme-classic/src/theme/EditThisPage/index.tsx b/packages/docusaurus-theme-classic/src/theme/EditThisPage/index.tsx index 5fda42f876b6..f4b55187756f 100644 --- a/packages/docusaurus-theme-classic/src/theme/EditThisPage/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/EditThisPage/index.tsx @@ -7,10 +7,9 @@ import React from 'react'; import Translate from '@docusaurus/Translate'; - -import type {Props} from '@theme/EditThisPage'; -import IconEdit from '@theme/IconEdit'; import {ThemeClassNames} from '@docusaurus/theme-common'; +import IconEdit from '@theme/IconEdit'; +import type {Props} from '@theme/EditThisPage'; export default function EditThisPage({editUrl}: Props): JSX.Element { return ( diff --git a/packages/docusaurus-theme-classic/src/theme/Footer/Links/MultiColumn/index.tsx b/packages/docusaurus-theme-classic/src/theme/Footer/Links/MultiColumn/index.tsx index a2bad28d8682..01b362e520c0 100644 --- a/packages/docusaurus-theme-classic/src/theme/Footer/Links/MultiColumn/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Footer/Links/MultiColumn/index.tsx @@ -6,8 +6,8 @@ */ import React from 'react'; -import type {Props} from '@theme/Footer/Links/MultiColumn'; import LinkItem from '@theme/Footer/LinkItem'; +import type {Props} from '@theme/Footer/Links/MultiColumn'; type ColumnType = Props['columns'][number]; type ColumnItemType = ColumnType['items'][number]; diff --git a/packages/docusaurus-theme-classic/src/theme/Footer/Links/Simple/index.tsx b/packages/docusaurus-theme-classic/src/theme/Footer/Links/Simple/index.tsx index 72fcc0a74a53..e14b77f1f31d 100644 --- a/packages/docusaurus-theme-classic/src/theme/Footer/Links/Simple/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Footer/Links/Simple/index.tsx @@ -6,8 +6,8 @@ */ import React from 'react'; -import type {Props} from '@theme/Footer/Links/Simple'; import LinkItem from '@theme/Footer/LinkItem'; +import type {Props} from '@theme/Footer/Links/Simple'; function Separator() { return ·; diff --git a/packages/docusaurus-theme-classic/src/theme/Footer/Links/index.tsx b/packages/docusaurus-theme-classic/src/theme/Footer/Links/index.tsx index 44e553e5390e..a4b0f3354c23 100644 --- a/packages/docusaurus-theme-classic/src/theme/Footer/Links/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Footer/Links/index.tsx @@ -8,9 +8,9 @@ import React from 'react'; import {isMultiColumnFooterLinks} from '@docusaurus/theme-common'; -import type {Props} from '@theme/Footer/Links'; import FooterLinksMultiColumn from '@theme/Footer/Links/MultiColumn'; import FooterLinksSimple from '@theme/Footer/Links/Simple'; +import type {Props} from '@theme/Footer/Links'; export default function FooterLinks({links}: Props): JSX.Element { return isMultiColumnFooterLinks(links) ? ( diff --git a/packages/docusaurus-theme-classic/src/theme/Footer/Logo/index.tsx b/packages/docusaurus-theme-classic/src/theme/Footer/Logo/index.tsx index f566555a1791..121e08f758a3 100644 --- a/packages/docusaurus-theme-classic/src/theme/Footer/Logo/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Footer/Logo/index.tsx @@ -6,13 +6,13 @@ */ import React from 'react'; - import Link from '@docusaurus/Link'; import {useBaseUrlUtils} from '@docusaurus/useBaseUrl'; -import styles from './styles.module.css'; import ThemedImage from '@theme/ThemedImage'; import type {Props} from '@theme/Footer/Logo'; +import styles from './styles.module.css'; + function LogoImage({logo}: Props) { const {withBaseUrl} = useBaseUrlUtils(); const sources = { diff --git a/packages/docusaurus-theme-classic/src/theme/Heading/index.tsx b/packages/docusaurus-theme-classic/src/theme/Heading/index.tsx index 7f8f80876475..9969fdbb6e55 100644 --- a/packages/docusaurus-theme-classic/src/theme/Heading/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Heading/index.tsx @@ -7,9 +7,9 @@ import React from 'react'; import clsx from 'clsx'; -import type {Props} from '@theme/Heading'; import {translate} from '@docusaurus/Translate'; import {useThemeConfig} from '@docusaurus/theme-common'; +import type {Props} from '@theme/Heading'; import styles from './styles.module.css'; diff --git a/packages/docusaurus-theme-classic/src/theme/IconEdit/index.tsx b/packages/docusaurus-theme-classic/src/theme/IconEdit/index.tsx index 76f8a8168b1f..004c12216598 100644 --- a/packages/docusaurus-theme-classic/src/theme/IconEdit/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/IconEdit/index.tsx @@ -7,7 +7,6 @@ import React from 'react'; import clsx from 'clsx'; - import type {Props} from '@theme/IconEdit'; import styles from './styles.module.css'; diff --git a/packages/docusaurus-theme-classic/src/theme/LastUpdated/index.tsx b/packages/docusaurus-theme-classic/src/theme/LastUpdated/index.tsx index 57937216285f..5ba4c3e2f249 100644 --- a/packages/docusaurus-theme-classic/src/theme/LastUpdated/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/LastUpdated/index.tsx @@ -7,8 +7,8 @@ import React from 'react'; import Translate from '@docusaurus/Translate'; -import type {Props} from '@theme/LastUpdated'; import {ThemeClassNames} from '@docusaurus/theme-common'; +import type {Props} from '@theme/LastUpdated'; function LastUpdatedAtDate({ lastUpdatedAt, diff --git a/packages/docusaurus-theme-classic/src/theme/Layout/index.tsx b/packages/docusaurus-theme-classic/src/theme/Layout/index.tsx index 47ed451b55d9..c5503edcaaa2 100644 --- a/packages/docusaurus-theme-classic/src/theme/Layout/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Layout/index.tsx @@ -8,19 +8,19 @@ import React from 'react'; import clsx from 'clsx'; import ErrorBoundary from '@docusaurus/ErrorBoundary'; -import SkipToContent from '@theme/SkipToContent'; -import AnnouncementBar from '@theme/AnnouncementBar'; -import Navbar from '@theme/Navbar'; -import Footer from '@theme/Footer'; -import LayoutProviders from '@theme/LayoutProviders'; -import type {Props} from '@theme/Layout'; import { PageMetadata, ThemeClassNames, useKeyboardNavigation, } from '@docusaurus/theme-common'; +import SkipToContent from '@theme/SkipToContent'; +import AnnouncementBar from '@theme/AnnouncementBar'; +import Navbar from '@theme/Navbar'; +import Footer from '@theme/Footer'; +import LayoutProviders from '@theme/LayoutProviders'; import ErrorPageContent from '@theme/ErrorPageContent'; import './styles.css'; +import type {Props} from '@theme/Layout'; export default function Layout(props: Props): JSX.Element { const { diff --git a/packages/docusaurus-theme-classic/src/theme/Logo/index.tsx b/packages/docusaurus-theme-classic/src/theme/Logo/index.tsx index eaa89cc1e0cc..13f4126198ed 100644 --- a/packages/docusaurus-theme-classic/src/theme/Logo/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Logo/index.tsx @@ -6,13 +6,12 @@ */ import React from 'react'; -import type {Props} from '@theme/Logo'; - import Link from '@docusaurus/Link'; -import ThemedImage from '@theme/ThemedImage'; import useBaseUrl from '@docusaurus/useBaseUrl'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; import {useThemeConfig} from '@docusaurus/theme-common'; +import ThemedImage from '@theme/ThemedImage'; +import type {Props} from '@theme/Logo'; export default function Logo(props: Props): JSX.Element { const { diff --git a/packages/docusaurus-theme-classic/src/theme/MDXComponents/Img/index.tsx b/packages/docusaurus-theme-classic/src/theme/MDXComponents/Img/index.tsx index 7e0c1c542eb5..c3b76dee9fc5 100644 --- a/packages/docusaurus-theme-classic/src/theme/MDXComponents/Img/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/MDXComponents/Img/index.tsx @@ -6,8 +6,8 @@ */ import React from 'react'; -import type {Props} from '@theme/MDXComponents/Img'; import clsx from 'clsx'; +import type {Props} from '@theme/MDXComponents/Img'; import styles from './styles.module.css'; diff --git a/packages/docusaurus-theme-classic/src/theme/MDXComponents/Ul.tsx b/packages/docusaurus-theme-classic/src/theme/MDXComponents/Ul.tsx index 8a0da274ec2c..080ecaac2a1a 100644 --- a/packages/docusaurus-theme-classic/src/theme/MDXComponents/Ul.tsx +++ b/packages/docusaurus-theme-classic/src/theme/MDXComponents/Ul.tsx @@ -12,8 +12,8 @@ import type {Props} from '@theme/MDXComponents/Ul'; function transformUlClassName(className?: string): string { return clsx( className, - // This class is set globally by GitHub/MDX - // We keep the global class, but add Infima class to get list without styling + // This class is set globally by GitHub/MDX. We keep the global class, and + // add another Infima class to get list without styling // See https://github.com/syntax-tree/mdast-util-to-hast/issues/28 className?.includes('contains-task-list') && 'clean-list', ); diff --git a/packages/docusaurus-theme-classic/src/theme/MDXPage/index.tsx b/packages/docusaurus-theme-classic/src/theme/MDXPage/index.tsx index 44ba2a5c0ffa..64bb180a5634 100644 --- a/packages/docusaurus-theme-classic/src/theme/MDXPage/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/MDXPage/index.tsx @@ -7,15 +7,15 @@ import React from 'react'; import clsx from 'clsx'; -import Layout from '@theme/Layout'; -import MDXContent from '@theme/MDXContent'; -import type {Props} from '@theme/MDXPage'; -import TOC from '@theme/TOC'; import { PageMetadata, HtmlClassNameProvider, ThemeClassNames, } from '@docusaurus/theme-common'; +import Layout from '@theme/Layout'; +import MDXContent from '@theme/MDXContent'; +import TOC from '@theme/TOC'; +import type {Props} from '@theme/MDXPage'; import styles from './styles.module.css'; diff --git a/packages/docusaurus-theme-classic/src/theme/Navbar/ColorModeToggle/index.tsx b/packages/docusaurus-theme-classic/src/theme/Navbar/ColorModeToggle/index.tsx index 5c33ac4a3bed..d1fc9c3ffba1 100644 --- a/packages/docusaurus-theme-classic/src/theme/Navbar/ColorModeToggle/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Navbar/ColorModeToggle/index.tsx @@ -5,10 +5,10 @@ * LICENSE file in the root directory of this source tree. */ +import React from 'react'; import {useColorMode, useThemeConfig} from '@docusaurus/theme-common'; import ColorModeToggle from '@theme/ColorModeToggle'; import type {Props} from '@theme/Navbar/ColorModeToggle'; -import React from 'react'; export default function NavbarColorModeToggle({ className, diff --git a/packages/docusaurus-theme-classic/src/theme/Navbar/Content/index.tsx b/packages/docusaurus-theme-classic/src/theme/Navbar/Content/index.tsx index 9ab92085eca5..89503a675dcb 100644 --- a/packages/docusaurus-theme-classic/src/theme/Navbar/Content/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Navbar/Content/index.tsx @@ -6,18 +6,19 @@ */ import React, {type ReactNode} from 'react'; -import type {Props as NavbarItemConfig} from '@theme/NavbarItem'; -import NavbarItem from '@theme/NavbarItem'; -import NavbarColorModeToggle from '@theme/Navbar/ColorModeToggle'; -import SearchBar from '@theme/SearchBar'; import { splitNavbarItems, useNavbarMobileSidebar, useThemeConfig, } from '@docusaurus/theme-common'; +import NavbarItem from '@theme/NavbarItem'; +import NavbarColorModeToggle from '@theme/Navbar/ColorModeToggle'; +import SearchBar from '@theme/SearchBar'; import NavbarMobileSidebarToggle from '@theme/Navbar/MobileSidebar/Toggle'; import NavbarLogo from '@theme/Navbar/Logo'; import NavbarSearch from '@theme/Navbar/Search'; +import type {Props as NavbarItemConfig} from '@theme/NavbarItem'; + import styles from './styles.module.css'; function useNavbarItems() { diff --git a/packages/docusaurus-theme-classic/src/theme/Navbar/Layout/index.tsx b/packages/docusaurus-theme-classic/src/theme/Navbar/Layout/index.tsx index 00e5736bd8fd..b674fe726985 100644 --- a/packages/docusaurus-theme-classic/src/theme/Navbar/Layout/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Navbar/Layout/index.tsx @@ -7,13 +7,13 @@ import React, {type ComponentProps} from 'react'; import clsx from 'clsx'; -import NavbarMobileSidebar from '@theme/Navbar/MobileSidebar'; -import type {Props} from '@theme/Navbar/Layout'; import { useThemeConfig, useHideableNavbar, useNavbarMobileSidebar, } from '@docusaurus/theme-common'; +import NavbarMobileSidebar from '@theme/Navbar/MobileSidebar'; +import type {Props} from '@theme/Navbar/Layout'; import styles from './styles.module.css'; diff --git a/packages/docusaurus-theme-classic/src/theme/Navbar/MobileSidebar/Header/index.tsx b/packages/docusaurus-theme-classic/src/theme/Navbar/MobileSidebar/Header/index.tsx index c58b42eb014a..139377115323 100644 --- a/packages/docusaurus-theme-classic/src/theme/Navbar/MobileSidebar/Header/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Navbar/MobileSidebar/Header/index.tsx @@ -6,10 +6,10 @@ */ import React from 'react'; +import {useNavbarMobileSidebar} from '@docusaurus/theme-common'; import NavbarColorModeToggle from '@theme/Navbar/ColorModeToggle'; import IconClose from '@theme/IconClose'; import NavbarLogo from '@theme/Navbar/Logo'; -import {useNavbarMobileSidebar} from '@docusaurus/theme-common'; function CloseButton() { const mobileSidebar = useNavbarMobileSidebar(); diff --git a/packages/docusaurus-theme-classic/src/theme/Navbar/MobileSidebar/Layout/index.tsx b/packages/docusaurus-theme-classic/src/theme/Navbar/MobileSidebar/Layout/index.tsx index 4fe7a4f9984c..6d63029dbd31 100644 --- a/packages/docusaurus-theme-classic/src/theme/Navbar/MobileSidebar/Layout/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Navbar/MobileSidebar/Layout/index.tsx @@ -7,8 +7,8 @@ import React from 'react'; import clsx from 'clsx'; -import type {Props} from '@theme/Navbar/MobileSidebar/Layout'; import {useNavbarSecondaryMenu} from '@docusaurus/theme-common'; +import type {Props} from '@theme/Navbar/MobileSidebar/Layout'; export default function NavbarMobileSidebarLayout({ header, diff --git a/packages/docusaurus-theme-classic/src/theme/Navbar/MobileSidebar/PrimaryMenu/index.tsx b/packages/docusaurus-theme-classic/src/theme/Navbar/MobileSidebar/PrimaryMenu/index.tsx index dbde63edb558..d8fa6524a6f0 100644 --- a/packages/docusaurus-theme-classic/src/theme/Navbar/MobileSidebar/PrimaryMenu/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Navbar/MobileSidebar/PrimaryMenu/index.tsx @@ -7,8 +7,8 @@ import React from 'react'; import {useNavbarMobileSidebar, useThemeConfig} from '@docusaurus/theme-common'; +import NavbarItem from '@theme/NavbarItem'; import type {Props as NavbarItemConfig} from '@theme/NavbarItem'; -import NavbarItem from '../../../NavbarItem'; function useNavbarItems() { // TODO temporary casting until ThemeConfig type is improved diff --git a/packages/docusaurus-theme-classic/src/theme/Navbar/MobileSidebar/Toggle/index.tsx b/packages/docusaurus-theme-classic/src/theme/Navbar/MobileSidebar/Toggle/index.tsx index e4ac62a50584..6ac64154d36c 100644 --- a/packages/docusaurus-theme-classic/src/theme/Navbar/MobileSidebar/Toggle/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Navbar/MobileSidebar/Toggle/index.tsx @@ -6,8 +6,8 @@ */ import React from 'react'; -import IconMenu from '@theme/IconMenu'; import {useNavbarMobileSidebar} from '@docusaurus/theme-common'; +import IconMenu from '@theme/IconMenu'; export default function MobileSidebarToggle(): JSX.Element { const mobileSidebar = useNavbarMobileSidebar(); diff --git a/packages/docusaurus-theme-classic/src/theme/Navbar/MobileSidebar/index.tsx b/packages/docusaurus-theme-classic/src/theme/Navbar/MobileSidebar/index.tsx index 4a29c4901525..4ee13c284efc 100644 --- a/packages/docusaurus-theme-classic/src/theme/Navbar/MobileSidebar/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Navbar/MobileSidebar/index.tsx @@ -6,12 +6,12 @@ */ import React from 'react'; -import NavbarMobileSidebarLayout from '@theme/Navbar/MobileSidebar/Layout'; -import NavbarMobileSidebarHeader from '@theme/Navbar/MobileSidebar/Header'; import { useLockBodyScroll, useNavbarMobileSidebar, } from '@docusaurus/theme-common'; +import NavbarMobileSidebarLayout from '@theme/Navbar/MobileSidebar/Layout'; +import NavbarMobileSidebarHeader from '@theme/Navbar/MobileSidebar/Header'; import NavbarMobileSidebarPrimaryMenu from '@theme/Navbar/MobileSidebar/PrimaryMenu'; import NavbarMobileSidebarSecondaryMenu from '@theme/Navbar/MobileSidebar/SecondaryMenu'; diff --git a/packages/docusaurus-theme-classic/src/theme/NavbarItem/DefaultNavbarItem.tsx b/packages/docusaurus-theme-classic/src/theme/NavbarItem/DefaultNavbarItem.tsx index 2c5044682012..7036b2b6c12e 100644 --- a/packages/docusaurus-theme-classic/src/theme/NavbarItem/DefaultNavbarItem.tsx +++ b/packages/docusaurus-theme-classic/src/theme/NavbarItem/DefaultNavbarItem.tsx @@ -7,16 +7,13 @@ import React from 'react'; import clsx from 'clsx'; - import NavbarNavLink from '@theme/NavbarItem/NavbarNavLink'; - +import {getInfimaActiveClassName} from '@theme/NavbarItem/utils'; import type { DesktopOrMobileNavBarItemProps, Props, } from '@theme/NavbarItem/DefaultNavbarItem'; -import {getInfimaActiveClassName} from '@theme/NavbarItem/utils'; - function DefaultNavbarItemDesktop({ className, isDropdownItem = false, diff --git a/packages/docusaurus-theme-classic/src/theme/NavbarItem/DocNavbarItem.tsx b/packages/docusaurus-theme-classic/src/theme/NavbarItem/DocNavbarItem.tsx index 1ed30afe4050..797ef1ec2d50 100644 --- a/packages/docusaurus-theme-classic/src/theme/NavbarItem/DocNavbarItem.tsx +++ b/packages/docusaurus-theme-classic/src/theme/NavbarItem/DocNavbarItem.tsx @@ -6,12 +6,12 @@ */ import React from 'react'; -import DefaultNavbarItem from '@theme/NavbarItem/DefaultNavbarItem'; -import {useActiveDocContext} from '@docusaurus/plugin-content-docs/client'; import clsx from 'clsx'; +import {useActiveDocContext} from '@docusaurus/plugin-content-docs/client'; +import {useLayoutDoc} from '@docusaurus/theme-common'; +import DefaultNavbarItem from '@theme/NavbarItem/DefaultNavbarItem'; import {getInfimaActiveClassName} from '@theme/NavbarItem/utils'; import type {Props} from '@theme/NavbarItem/DocNavbarItem'; -import {useLayoutDoc} from '@docusaurus/theme-common'; export default function DocNavbarItem({ docId, diff --git a/packages/docusaurus-theme-classic/src/theme/NavbarItem/DocSidebarNavbarItem.tsx b/packages/docusaurus-theme-classic/src/theme/NavbarItem/DocSidebarNavbarItem.tsx index 965664855603..874605bcf1a1 100644 --- a/packages/docusaurus-theme-classic/src/theme/NavbarItem/DocSidebarNavbarItem.tsx +++ b/packages/docusaurus-theme-classic/src/theme/NavbarItem/DocSidebarNavbarItem.tsx @@ -6,12 +6,11 @@ */ import React from 'react'; -import DefaultNavbarItem from '@theme/NavbarItem/DefaultNavbarItem'; -import {useActiveDocContext} from '@docusaurus/plugin-content-docs/client'; import clsx from 'clsx'; -import {getInfimaActiveClassName} from '@theme/NavbarItem/utils'; +import {useActiveDocContext} from '@docusaurus/plugin-content-docs/client'; import {useLayoutDocsSidebar} from '@docusaurus/theme-common'; - +import DefaultNavbarItem from '@theme/NavbarItem/DefaultNavbarItem'; +import {getInfimaActiveClassName} from '@theme/NavbarItem/utils'; import type {Props} from '@theme/NavbarItem/DocSidebarNavbarItem'; export default function DocSidebarNavbarItem({ diff --git a/packages/docusaurus-theme-classic/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx b/packages/docusaurus-theme-classic/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx index 9624dc3ddedb..b351eeeef1a8 100644 --- a/packages/docusaurus-theme-classic/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +++ b/packages/docusaurus-theme-classic/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx @@ -6,8 +6,6 @@ */ import React from 'react'; -import DefaultNavbarItem from '@theme/NavbarItem/DefaultNavbarItem'; -import DropdownNavbarItem from '@theme/NavbarItem/DropdownNavbarItem'; import { useVersions, useActiveDocContext, @@ -17,8 +15,10 @@ import { useDocsVersionCandidates, } from '@docusaurus/theme-common'; import {translate} from '@docusaurus/Translate'; -import type {GlobalVersion} from '@docusaurus/plugin-content-docs/client'; +import DefaultNavbarItem from '@theme/NavbarItem/DefaultNavbarItem'; +import DropdownNavbarItem from '@theme/NavbarItem/DropdownNavbarItem'; import type {Props} from '@theme/NavbarItem/DocsVersionDropdownNavbarItem'; +import type {GlobalVersion} from '@docusaurus/plugin-content-docs/client'; const getVersionMainDoc = (version: GlobalVersion) => version.docs.find((doc) => doc.id === version.mainDocId)!; diff --git a/packages/docusaurus-theme-classic/src/theme/NavbarItem/DocsVersionNavbarItem.tsx b/packages/docusaurus-theme-classic/src/theme/NavbarItem/DocsVersionNavbarItem.tsx index db6873764319..aade004e44d4 100644 --- a/packages/docusaurus-theme-classic/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +++ b/packages/docusaurus-theme-classic/src/theme/NavbarItem/DocsVersionNavbarItem.tsx @@ -6,10 +6,10 @@ */ import React from 'react'; -import DefaultNavbarItem from '@theme/NavbarItem/DefaultNavbarItem'; import {useDocsVersionCandidates} from '@docusaurus/theme-common'; -import type {GlobalVersion} from '@docusaurus/plugin-content-docs/client'; +import DefaultNavbarItem from '@theme/NavbarItem/DefaultNavbarItem'; import type {Props} from '@theme/NavbarItem/DocsVersionNavbarItem'; +import type {GlobalVersion} from '@docusaurus/plugin-content-docs/client'; const getVersionMainDoc = (version: GlobalVersion) => version.docs.find((doc) => doc.id === version.mainDocId)!; diff --git a/packages/docusaurus-theme-classic/src/theme/NavbarItem/DropdownNavbarItem.tsx b/packages/docusaurus-theme-classic/src/theme/NavbarItem/DropdownNavbarItem.tsx index 37dd48692452..ca5e03d92f12 100644 --- a/packages/docusaurus-theme-classic/src/theme/NavbarItem/DropdownNavbarItem.tsx +++ b/packages/docusaurus-theme-classic/src/theme/NavbarItem/DropdownNavbarItem.tsx @@ -14,15 +14,14 @@ import { isRegexpStringMatch, useLocalPathname, } from '@docusaurus/theme-common'; +import NavbarNavLink from '@theme/NavbarItem/NavbarNavLink'; +import NavbarItem from '@theme/NavbarItem'; import type { DesktopOrMobileNavBarItemProps, Props, } from '@theme/NavbarItem/DropdownNavbarItem'; import type {LinkLikeNavbarItemProps} from '@theme/NavbarItem'; -import NavbarNavLink from '@theme/NavbarItem/NavbarNavLink'; -import NavbarItem from '@theme/NavbarItem'; - const dropdownLinkActiveClass = 'dropdown__link--active'; function isItemActive( diff --git a/packages/docusaurus-theme-classic/src/theme/NavbarItem/LocaleDropdownNavbarItem/index.tsx b/packages/docusaurus-theme-classic/src/theme/NavbarItem/LocaleDropdownNavbarItem/index.tsx index 620a161b9dee..2bb652c734ac 100644 --- a/packages/docusaurus-theme-classic/src/theme/NavbarItem/LocaleDropdownNavbarItem/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/NavbarItem/LocaleDropdownNavbarItem/index.tsx @@ -6,13 +6,13 @@ */ import React from 'react'; -import DropdownNavbarItem from '@theme/NavbarItem/DropdownNavbarItem'; -import IconLanguage from '@theme/IconLanguage'; -import type {Props} from '@theme/NavbarItem/LocaleDropdownNavbarItem'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; import {useAlternatePageUtils} from '@docusaurus/theme-common'; import {translate} from '@docusaurus/Translate'; +import DropdownNavbarItem from '@theme/NavbarItem/DropdownNavbarItem'; +import IconLanguage from '@theme/IconLanguage'; import type {LinkLikeNavbarItemProps} from '@theme/NavbarItem'; +import type {Props} from '@theme/NavbarItem/LocaleDropdownNavbarItem'; import styles from './styles.module.css'; diff --git a/packages/docusaurus-theme-classic/src/theme/NavbarItem/NavbarNavLink.tsx b/packages/docusaurus-theme-classic/src/theme/NavbarItem/NavbarNavLink.tsx index e19758815f6d..94157e97eec5 100644 --- a/packages/docusaurus-theme-classic/src/theme/NavbarItem/NavbarNavLink.tsx +++ b/packages/docusaurus-theme-classic/src/theme/NavbarItem/NavbarNavLink.tsx @@ -8,10 +8,10 @@ import React from 'react'; import Link from '@docusaurus/Link'; import useBaseUrl from '@docusaurus/useBaseUrl'; -import type {Props} from '@theme/NavbarItem/NavbarNavLink'; -import IconExternalLink from '@theme/IconExternalLink'; import isInternalUrl from '@docusaurus/isInternalUrl'; import {isRegexpStringMatch} from '@docusaurus/theme-common'; +import IconExternalLink from '@theme/IconExternalLink'; +import type {Props} from '@theme/NavbarItem/NavbarNavLink'; const dropdownLinkActiveClass = 'dropdown__link--active'; diff --git a/packages/docusaurus-theme-classic/src/theme/NavbarItem/SearchNavbarItem.tsx b/packages/docusaurus-theme-classic/src/theme/NavbarItem/SearchNavbarItem.tsx index dfefa83dc154..9e95436025b2 100644 --- a/packages/docusaurus-theme-classic/src/theme/NavbarItem/SearchNavbarItem.tsx +++ b/packages/docusaurus-theme-classic/src/theme/NavbarItem/SearchNavbarItem.tsx @@ -6,9 +6,9 @@ */ import React from 'react'; -import type {Props} from '@theme/NavbarItem/SearchNavbarItem'; import SearchBar from '@theme/SearchBar'; import NavbarSearch from '@theme/Navbar/Search'; +import type {Props} from '@theme/NavbarItem/SearchNavbarItem'; export default function SearchNavbarItem({mobile}: Props): JSX.Element | null { if (mobile) { diff --git a/packages/docusaurus-theme-classic/src/theme/NavbarItem/index.tsx b/packages/docusaurus-theme-classic/src/theme/NavbarItem/index.tsx index 7ae0d4990730..ca3253143a16 100644 --- a/packages/docusaurus-theme-classic/src/theme/NavbarItem/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/NavbarItem/index.tsx @@ -6,11 +6,10 @@ */ import React from 'react'; +import ComponentTypes from '@theme/NavbarItem/ComponentTypes'; import {type Props as DropdownNavbarItemProps} from '@theme/NavbarItem/DropdownNavbarItem'; import type {Types, Props} from '@theme/NavbarItem'; -import ComponentTypes from '@theme/NavbarItem/ComponentTypes'; - const getNavbarItemComponent = (type: NonNullable) => { const component = ComponentTypes[type]; if (!component) { diff --git a/packages/docusaurus-theme-classic/src/theme/NotFound.tsx b/packages/docusaurus-theme-classic/src/theme/NotFound.tsx index 2213158d52a6..e6b9542f3d50 100644 --- a/packages/docusaurus-theme-classic/src/theme/NotFound.tsx +++ b/packages/docusaurus-theme-classic/src/theme/NotFound.tsx @@ -6,9 +6,9 @@ */ import React from 'react'; -import Layout from '@theme/Layout'; import Translate, {translate} from '@docusaurus/Translate'; import {PageMetadata} from '@docusaurus/theme-common'; +import Layout from '@theme/Layout'; export default function NotFound(): JSX.Element { return ( diff --git a/packages/docusaurus-theme-classic/src/theme/SiteMetadata/index.tsx b/packages/docusaurus-theme-classic/src/theme/SiteMetadata/index.tsx index ce53ddf1d9e5..5fa827569181 100644 --- a/packages/docusaurus-theme-classic/src/theme/SiteMetadata/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/SiteMetadata/index.tsx @@ -9,7 +9,6 @@ import React from 'react'; import Head from '@docusaurus/Head'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; import useBaseUrl from '@docusaurus/useBaseUrl'; -import SearchMetadata from '@theme/SearchMetadata'; import { PageMetadata, DEFAULT_SEARCH_TAG, @@ -18,6 +17,7 @@ import { keyboardFocusedClassName, } from '@docusaurus/theme-common'; import {useLocation} from '@docusaurus/router'; +import SearchMetadata from '@theme/SearchMetadata'; // TODO move to SiteMetadataDefaults or theme-common ? // Useful for i18n/SEO diff --git a/packages/docusaurus-theme-classic/src/theme/TOC/index.tsx b/packages/docusaurus-theme-classic/src/theme/TOC/index.tsx index 79ca736645e1..08b2ddb4c10c 100644 --- a/packages/docusaurus-theme-classic/src/theme/TOC/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/TOC/index.tsx @@ -7,8 +7,9 @@ import React from 'react'; import clsx from 'clsx'; -import type {Props} from '@theme/TOC'; import TOCItems from '@theme/TOCItems'; +import type {Props} from '@theme/TOC'; + import styles from './styles.module.css'; // Using a custom className diff --git a/packages/docusaurus-theme-classic/src/theme/TOCCollapsible/index.tsx b/packages/docusaurus-theme-classic/src/theme/TOCCollapsible/index.tsx index 3a99a4fe7532..19680832c205 100644 --- a/packages/docusaurus-theme-classic/src/theme/TOCCollapsible/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/TOCCollapsible/index.tsx @@ -9,8 +9,8 @@ import React from 'react'; import clsx from 'clsx'; import {useCollapsible, Collapsible} from '@docusaurus/theme-common'; import TOCItems from '@theme/TOCItems'; -import type {Props} from '@theme/TOCCollapsible'; import CollapseButton from '@theme/TOCCollapsible/CollapseButton'; +import type {Props} from '@theme/TOCCollapsible'; import styles from './styles.module.css'; diff --git a/packages/docusaurus-theme-classic/src/theme/TOCInline/index.tsx b/packages/docusaurus-theme-classic/src/theme/TOCInline/index.tsx index b0bae1aafbc0..9864572f5359 100644 --- a/packages/docusaurus-theme-classic/src/theme/TOCInline/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/TOCInline/index.tsx @@ -6,9 +6,10 @@ */ import React from 'react'; +import TOCItems from '@theme/TOCItems'; import type {Props} from '@theme/TOCInline'; + import styles from './styles.module.css'; -import TOCItems from '@theme/TOCItems'; export default function TOCInline({ toc, diff --git a/packages/docusaurus-theme-classic/src/theme/TOCItems/index.tsx b/packages/docusaurus-theme-classic/src/theme/TOCItems/index.tsx index 544df3db72b6..3743706a4462 100644 --- a/packages/docusaurus-theme-classic/src/theme/TOCItems/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/TOCItems/index.tsx @@ -6,14 +6,14 @@ */ import React, {useMemo} from 'react'; -import type {Props} from '@theme/TOCItems'; -import TOCItemTree from '@theme/TOCItems/Tree'; import { type TOCHighlightConfig, useThemeConfig, useTOCHighlight, useFilteredAndTreeifiedTOC, } from '@docusaurus/theme-common'; +import TOCItemTree from '@theme/TOCItems/Tree'; +import type {Props} from '@theme/TOCItems'; export default function TOCItems({ toc, diff --git a/packages/docusaurus-theme-classic/src/theme/TabItem/index.tsx b/packages/docusaurus-theme-classic/src/theme/TabItem/index.tsx index 7b847dacc89e..b0a6c3cdc0c2 100644 --- a/packages/docusaurus-theme-classic/src/theme/TabItem/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/TabItem/index.tsx @@ -6,8 +6,8 @@ */ import React from 'react'; -import type {Props} from '@theme/TabItem'; import clsx from 'clsx'; +import type {Props} from '@theme/TabItem'; import styles from './styles.module.css'; 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 b609058e80c6..f5d4f2d7f58f 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 @@ -7,12 +7,12 @@ import React from 'react'; import renderer from 'react-test-renderer'; -import Tabs from '../index'; -import TabItem from '../../TabItem'; import { TabGroupChoiceProvider, ScrollControllerProvider, } from '@docusaurus/theme-common'; +import Tabs from '../index'; +import TabItem from '../../TabItem'; describe('Tabs', () => { it('rejects bad Tabs child', () => { diff --git a/packages/docusaurus-theme-classic/src/theme/Tabs/index.tsx b/packages/docusaurus-theme-classic/src/theme/Tabs/index.tsx index 2e64f414607c..5ee9649ac226 100644 --- a/packages/docusaurus-theme-classic/src/theme/Tabs/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Tabs/index.tsx @@ -11,6 +11,7 @@ import React, { isValidElement, type ReactElement, } from 'react'; +import clsx from 'clsx'; import useIsBrowser from '@docusaurus/useIsBrowser'; import { useScrollPositionBlocker, @@ -20,8 +21,6 @@ import { import type {Props} from '@theme/Tabs'; import type {Props as TabItemProps} from '@theme/TabItem'; -import clsx from 'clsx'; - import styles from './styles.module.css'; // A very rough duck type, but good enough to guard against mistakes while diff --git a/packages/docusaurus-theme-classic/src/theme/TagsListByLetter/index.tsx b/packages/docusaurus-theme-classic/src/theme/TagsListByLetter/index.tsx index c301c12e1ac4..326efa0c7767 100644 --- a/packages/docusaurus-theme-classic/src/theme/TagsListByLetter/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/TagsListByLetter/index.tsx @@ -6,9 +6,9 @@ */ import React from 'react'; +import {listTagsByLetters, type TagLetterEntry} from '@docusaurus/theme-common'; import Tag from '@theme/Tag'; import type {Props} from '@theme/TagsListByLetter'; -import {listTagsByLetters, type TagLetterEntry} from '@docusaurus/theme-common'; import styles from './styles.module.css'; diff --git a/packages/docusaurus-theme-classic/src/theme/ThemedImage/index.tsx b/packages/docusaurus-theme-classic/src/theme/ThemedImage/index.tsx index 0255e04805bb..b0b938350278 100644 --- a/packages/docusaurus-theme-classic/src/theme/ThemedImage/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/ThemedImage/index.tsx @@ -7,7 +7,6 @@ import React from 'react'; import clsx from 'clsx'; - import useIsBrowser from '@docusaurus/useIsBrowser'; import {useColorMode} from '@docusaurus/theme-common'; import type {Props} from '@theme/ThemedImage'; diff --git a/packages/docusaurus-theme-classic/src/translations.ts b/packages/docusaurus-theme-classic/src/translations.ts index 8d8bd673b48d..cc087a87d85a 100644 --- a/packages/docusaurus-theme-classic/src/translations.ts +++ b/packages/docusaurus-theme-classic/src/translations.ts @@ -5,6 +5,8 @@ * LICENSE file in the root directory of this source tree. */ +import _ from 'lodash'; +import {mergeTranslations} from '@docusaurus/utils'; import type {TranslationFile, TranslationFileContent} from '@docusaurus/types'; import type { ThemeConfig, @@ -15,9 +17,6 @@ import type { SimpleFooter, } from '@docusaurus/theme-common'; -import _ from 'lodash'; -import {mergeTranslations} from '@docusaurus/utils'; - function getNavbarTranslationFile(navbar: Navbar): TranslationFileContent { // TODO handle properly all the navbar item types here! function flattenNavbarItems(items: NavbarItem[]): NavbarItem[] { diff --git a/packages/docusaurus-theme-common/src/components/Collapsible/index.tsx b/packages/docusaurus-theme-common/src/components/Collapsible/index.tsx index 48ff620fbab7..8b88da3c8ceb 100644 --- a/packages/docusaurus-theme-common/src/components/Collapsible/index.tsx +++ b/packages/docusaurus-theme-common/src/components/Collapsible/index.tsx @@ -5,7 +5,6 @@ * LICENSE file in the root directory of this source tree. */ -import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment'; import React, { useState, useEffect, @@ -17,6 +16,7 @@ import React, { type SetStateAction, type ReactNode, } from 'react'; +import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment'; const DefaultAnimationEasing = 'ease-in-out'; diff --git a/packages/docusaurus-theme-common/src/components/Details/index.tsx b/packages/docusaurus-theme-common/src/components/Details/index.tsx index 0936ccf9db25..41c34097aa86 100644 --- a/packages/docusaurus-theme-common/src/components/Details/index.tsx +++ b/packages/docusaurus-theme-common/src/components/Details/index.tsx @@ -11,8 +11,8 @@ import React, { type ComponentProps, type ReactElement, } from 'react'; -import useIsBrowser from '@docusaurus/useIsBrowser'; import clsx from 'clsx'; +import useIsBrowser from '@docusaurus/useIsBrowser'; import {useCollapsible, Collapsible} from '../Collapsible'; import styles from './styles.module.css'; diff --git a/packages/docusaurus-theme-common/src/contexts/colorMode.tsx b/packages/docusaurus-theme-common/src/contexts/colorMode.tsx index a2347f1c0141..8d0513278eb7 100644 --- a/packages/docusaurus-theme-common/src/contexts/colorMode.tsx +++ b/packages/docusaurus-theme-common/src/contexts/colorMode.tsx @@ -14,9 +14,8 @@ import React, { useRef, type ReactNode, } from 'react'; -import {ReactContextError} from '../utils/reactUtils'; - import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment'; +import {ReactContextError} from '../utils/reactUtils'; import {createStorageSlot} from '../utils/storageUtils'; import {useThemeConfig} from '../utils/useThemeConfig'; diff --git a/packages/docusaurus-theme-common/src/contexts/docsPreferredVersion.tsx b/packages/docusaurus-theme-common/src/contexts/docsPreferredVersion.tsx index 0922c2c33c89..96e941143ff5 100644 --- a/packages/docusaurus-theme-common/src/contexts/docsPreferredVersion.tsx +++ b/packages/docusaurus-theme-common/src/contexts/docsPreferredVersion.tsx @@ -13,22 +13,20 @@ import React, { useCallback, type ReactNode, } from 'react'; -import { - useThemeConfig, - type DocsVersionPersistence, -} from '../utils/useThemeConfig'; -import {isDocsPluginEnabled} from '../utils/docsUtils'; -import {ReactContextError} from '../utils/reactUtils'; -import {createStorageSlot} from '../utils/storageUtils'; - import { useAllDocsData, useDocsData, type GlobalPluginData, type GlobalVersion, } from '@docusaurus/plugin-content-docs/client'; - import {DEFAULT_PLUGIN_ID} from '@docusaurus/constants'; +import { + useThemeConfig, + type DocsVersionPersistence, +} from '../utils/useThemeConfig'; +import {isDocsPluginEnabled} from '../utils/docsUtils'; +import {ReactContextError} from '../utils/reactUtils'; +import {createStorageSlot} from '../utils/storageUtils'; const storageKey = (pluginId: string) => `docs-preferred-version-${pluginId}`; diff --git a/packages/docusaurus-theme-common/src/contexts/docsSidebar.tsx b/packages/docusaurus-theme-common/src/contexts/docsSidebar.tsx index 6b0aab47622e..43f109bf7698 100644 --- a/packages/docusaurus-theme-common/src/contexts/docsSidebar.tsx +++ b/packages/docusaurus-theme-common/src/contexts/docsSidebar.tsx @@ -6,8 +6,8 @@ */ import React, {useMemo, useContext, type ReactNode} from 'react'; -import type {PropSidebar} from '@docusaurus/plugin-content-docs'; import {ReactContextError} from '../utils/reactUtils'; +import type {PropSidebar} from '@docusaurus/plugin-content-docs'; // Using a Symbol because null is a valid context value (a doc with no sidebar) // Inspired by https://github.com/jamiebuilds/unstated-next/blob/master/src/unstated-next.tsx diff --git a/packages/docusaurus-theme-common/src/contexts/docsVersion.tsx b/packages/docusaurus-theme-common/src/contexts/docsVersion.tsx index efa8ffc147d6..4a3ad576f917 100644 --- a/packages/docusaurus-theme-common/src/contexts/docsVersion.tsx +++ b/packages/docusaurus-theme-common/src/contexts/docsVersion.tsx @@ -6,8 +6,8 @@ */ import React, {type ReactNode, useContext} from 'react'; -import type {PropVersionMetadata} from '@docusaurus/plugin-content-docs'; import {ReactContextError} from '../utils/reactUtils'; +import type {PropVersionMetadata} from '@docusaurus/plugin-content-docs'; const Context = React.createContext(null); diff --git a/packages/docusaurus-theme-common/src/hooks/usePrismTheme.ts b/packages/docusaurus-theme-common/src/hooks/usePrismTheme.ts index b791d3119414..df435eeedafd 100644 --- a/packages/docusaurus-theme-common/src/hooks/usePrismTheme.ts +++ b/packages/docusaurus-theme-common/src/hooks/usePrismTheme.ts @@ -5,9 +5,9 @@ * LICENSE file in the root directory of this source tree. */ -import type {PrismTheme} from 'prism-react-renderer'; import {useColorMode} from '../contexts/colorMode'; import {useThemeConfig} from '../utils/useThemeConfig'; +import type {PrismTheme} from 'prism-react-renderer'; /** * Returns a color-mode-dependent Prism theme: whatever the user specified in diff --git a/packages/docusaurus-theme-common/src/hooks/useSearchPage.ts b/packages/docusaurus-theme-common/src/hooks/useSearchPage.ts index 36c1cdaacf0b..10661b17f0d8 100644 --- a/packages/docusaurus-theme-common/src/hooks/useSearchPage.ts +++ b/packages/docusaurus-theme-common/src/hooks/useSearchPage.ts @@ -5,9 +5,9 @@ * LICENSE file in the root directory of this source tree. */ +import {useCallback, useEffect, useState} from 'react'; import {useHistory} from '@docusaurus/router'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; -import {useCallback, useEffect, useState} from 'react'; const SEARCH_PARAM_QUERY = 'q'; diff --git a/packages/docusaurus-theme-common/src/utils/__tests__/docsUtils.test.tsx b/packages/docusaurus-theme-common/src/utils/__tests__/docsUtils.test.tsx index 532fb20a0acf..b8ac8fb9eedd 100644 --- a/packages/docusaurus-theme-common/src/utils/__tests__/docsUtils.test.tsx +++ b/packages/docusaurus-theme-common/src/utils/__tests__/docsUtils.test.tsx @@ -7,6 +7,8 @@ import React from 'react'; import {renderHook} from '@testing-library/react-hooks'; +import {StaticRouter} from 'react-router-dom'; +import {Context} from '@docusaurus/core/src/client/docusaurusContext'; import { findFirstCategoryLink, isActiveSidebarItem, @@ -17,8 +19,6 @@ import { } from '../docsUtils'; import {DocsSidebarProvider} from '../../contexts/docsSidebar'; import {DocsVersionProvider} from '../../contexts/docsVersion'; -import {StaticRouter} from 'react-router-dom'; -import {Context} from '@docusaurus/core/src/client/docusaurusContext'; import type { PropSidebar, PropSidebarItem, diff --git a/packages/docusaurus-theme-common/src/utils/__tests__/generalUtils.test.tsx b/packages/docusaurus-theme-common/src/utils/__tests__/generalUtils.test.tsx index 71c49527abad..6a2680fde148 100644 --- a/packages/docusaurus-theme-common/src/utils/__tests__/generalUtils.test.tsx +++ b/packages/docusaurus-theme-common/src/utils/__tests__/generalUtils.test.tsx @@ -6,9 +6,9 @@ */ import React from 'react'; -import {useTitleFormatter} from '../generalUtils'; import {renderHook} from '@testing-library/react-hooks'; import {Context} from '@docusaurus/core/src/client/docusaurusContext'; +import {useTitleFormatter} from '../generalUtils'; import type {DocusaurusContext} from '@docusaurus/types'; describe('useTitleFormatter', () => { diff --git a/packages/docusaurus-theme-common/src/utils/__tests__/reactUtils.test.ts b/packages/docusaurus-theme-common/src/utils/__tests__/reactUtils.test.ts index 0b3e11fa1d43..3aaec1e34704 100644 --- a/packages/docusaurus-theme-common/src/utils/__tests__/reactUtils.test.ts +++ b/packages/docusaurus-theme-common/src/utils/__tests__/reactUtils.test.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import {usePrevious} from '../reactUtils'; import {renderHook} from '@testing-library/react-hooks'; +import {usePrevious} from '../reactUtils'; describe('usePrevious', () => { it('returns the previous value of a variable', () => { diff --git a/packages/docusaurus-theme-common/src/utils/__tests__/routesUtils.test.ts b/packages/docusaurus-theme-common/src/utils/__tests__/routesUtils.test.ts index a226c13f1156..3302107db271 100644 --- a/packages/docusaurus-theme-common/src/utils/__tests__/routesUtils.test.ts +++ b/packages/docusaurus-theme-common/src/utils/__tests__/routesUtils.test.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import type {RouteConfig} from 'react-router-config'; import {findHomePageRoute, isSamePath} from '../routesUtils'; +import type {RouteConfig} from 'react-router-config'; describe('isSamePath', () => { it('returns true for compared path without trailing slash', () => { diff --git a/packages/docusaurus-theme-common/src/utils/__tests__/tocUtils.test.ts b/packages/docusaurus-theme-common/src/utils/__tests__/tocUtils.test.ts index 0ae93d7024b6..6424f8d341a9 100644 --- a/packages/docusaurus-theme-common/src/utils/__tests__/tocUtils.test.ts +++ b/packages/docusaurus-theme-common/src/utils/__tests__/tocUtils.test.ts @@ -5,9 +5,9 @@ * LICENSE file in the root directory of this source tree. */ -import type {TOCItem} from '@docusaurus/types'; import {renderHook} from '@testing-library/react-hooks'; import {useFilteredAndTreeifiedTOC, useTreeifiedTOC} from '../tocUtils'; +import type {TOCItem} from '@docusaurus/mdx-loader'; const mockTOC: TOCItem[] = [ { diff --git a/packages/docusaurus-theme-common/src/utils/__tests__/useAlternatePageUtils.test.tsx b/packages/docusaurus-theme-common/src/utils/__tests__/useAlternatePageUtils.test.tsx index 79ebd6cbca7f..e10b938baa4b 100644 --- a/packages/docusaurus-theme-common/src/utils/__tests__/useAlternatePageUtils.test.tsx +++ b/packages/docusaurus-theme-common/src/utils/__tests__/useAlternatePageUtils.test.tsx @@ -6,10 +6,10 @@ */ import React from 'react'; -import {useAlternatePageUtils} from '../useAlternatePageUtils'; import {renderHook} from '@testing-library/react-hooks'; import {StaticRouter} from 'react-router-dom'; import {Context} from '@docusaurus/core/src/client/docusaurusContext'; +import {useAlternatePageUtils} from '../useAlternatePageUtils'; import type {DocusaurusContext} from '@docusaurus/types'; describe('useAlternatePageUtils', () => { diff --git a/packages/docusaurus-theme-common/src/utils/__tests__/useLocalPathname.test.tsx b/packages/docusaurus-theme-common/src/utils/__tests__/useLocalPathname.test.tsx index 163e2f69bdb7..f2f6e189393a 100644 --- a/packages/docusaurus-theme-common/src/utils/__tests__/useLocalPathname.test.tsx +++ b/packages/docusaurus-theme-common/src/utils/__tests__/useLocalPathname.test.tsx @@ -6,10 +6,10 @@ */ import React from 'react'; -import {useLocalPathname} from '../useLocalPathname'; import {renderHook} from '@testing-library/react-hooks'; import {StaticRouter} from 'react-router-dom'; import {Context} from '@docusaurus/core/src/client/docusaurusContext'; +import {useLocalPathname} from '../useLocalPathname'; import type {DocusaurusContext} from '@docusaurus/types'; describe('useLocalPathname', () => { diff --git a/packages/docusaurus-theme-common/src/utils/__tests__/usePluralForm.test.tsx b/packages/docusaurus-theme-common/src/utils/__tests__/usePluralForm.test.tsx index 10c471d2eb1e..f7618dbb258c 100644 --- a/packages/docusaurus-theme-common/src/utils/__tests__/usePluralForm.test.tsx +++ b/packages/docusaurus-theme-common/src/utils/__tests__/usePluralForm.test.tsx @@ -7,9 +7,9 @@ import {jest} from '@jest/globals'; import React from 'react'; -import {usePluralForm} from '../usePluralForm'; import {renderHook} from '@testing-library/react-hooks'; import {Context} from '@docusaurus/core/src/client/docusaurusContext'; +import {usePluralForm} from '../usePluralForm'; import type {DocusaurusContext} from '@docusaurus/types'; describe('usePluralForm', () => { diff --git a/packages/docusaurus-theme-common/src/utils/codeBlockUtils.ts b/packages/docusaurus-theme-common/src/utils/codeBlockUtils.ts index fa091fe7a1b1..97c9056eb297 100644 --- a/packages/docusaurus-theme-common/src/utils/codeBlockUtils.ts +++ b/packages/docusaurus-theme-common/src/utils/codeBlockUtils.ts @@ -5,9 +5,9 @@ * LICENSE file in the root directory of this source tree. */ +import type {CSSProperties} from 'react'; import rangeParser from 'parse-numeric-range'; import type {PrismTheme} from 'prism-react-renderer'; -import type {CSSProperties} from 'react'; const codeBlockTitleRegex = /title=(?["'])(?.*?)\1/; const metastringLinesRangeRegex = /\{(?<range>[\d,-]+)\}/; diff --git a/packages/docusaurus-theme-common/src/utils/docsUtils.tsx b/packages/docusaurus-theme-common/src/utils/docsUtils.tsx index 706504118b35..fd9cfb7ab141 100644 --- a/packages/docusaurus-theme-common/src/utils/docsUtils.tsx +++ b/packages/docusaurus-theme-common/src/utils/docsUtils.tsx @@ -6,6 +6,8 @@ */ import {useMemo} from 'react'; +import {matchPath, useLocation} from '@docusaurus/router'; +import renderRoutes from '@docusaurus/renderRoutes'; import { useAllDocsData, useActivePlugin, @@ -15,6 +17,12 @@ import { type GlobalSidebar, type GlobalDoc, } from '@docusaurus/plugin-content-docs/client'; +import type {Props as DocPageProps} from '@theme/DocPage'; +import {useDocsPreferredVersion} from '../contexts/docsPreferredVersion'; +import {useDocsVersion} from '../contexts/docsVersion'; +import {useDocsSidebar} from '../contexts/docsSidebar'; +import {uniq} from './jsUtils'; +import {isSamePath} from './routesUtils'; import type { PropSidebar, PropSidebarItem, @@ -22,14 +30,6 @@ import type { PropVersionDoc, PropSidebarBreadcrumbsItem, } from '@docusaurus/plugin-content-docs'; -import type {Props as DocPageProps} from '@theme/DocPage'; -import {useDocsPreferredVersion} from '../contexts/docsPreferredVersion'; -import {useDocsVersion} from '../contexts/docsVersion'; -import {useDocsSidebar} from '../contexts/docsSidebar'; -import {uniq} from './jsUtils'; -import {isSamePath} from './routesUtils'; -import {matchPath, useLocation} from '@docusaurus/router'; -import renderRoutes from '@docusaurus/renderRoutes'; // TODO not ideal, see also "useDocs" export const isDocsPluginEnabled: boolean = !!useAllDocsData; diff --git a/packages/docusaurus-theme-common/src/utils/metadataUtils.tsx b/packages/docusaurus-theme-common/src/utils/metadataUtils.tsx index 9610faa2e40b..af91c55a3a3c 100644 --- a/packages/docusaurus-theme-common/src/utils/metadataUtils.tsx +++ b/packages/docusaurus-theme-common/src/utils/metadataUtils.tsx @@ -6,8 +6,8 @@ */ import React, {type ReactNode} from 'react'; -import Head from '@docusaurus/Head'; import clsx from 'clsx'; +import Head from '@docusaurus/Head'; import useRouteContext from '@docusaurus/useRouteContext'; import {useBaseUrlUtils} from '@docusaurus/useBaseUrl'; import {useTitleFormatter} from './generalUtils'; diff --git a/packages/docusaurus-theme-common/src/utils/scrollUtils.tsx b/packages/docusaurus-theme-common/src/utils/scrollUtils.tsx index 79799c37fc24..32095c3feac3 100644 --- a/packages/docusaurus-theme-common/src/utils/scrollUtils.tsx +++ b/packages/docusaurus-theme-common/src/utils/scrollUtils.tsx @@ -14,9 +14,9 @@ import React, { useRef, type ReactNode, } from 'react'; -import {useDynamicCallback, ReactContextError} from './reactUtils'; import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment'; import useIsBrowser from '@docusaurus/useIsBrowser'; +import {useDynamicCallback, ReactContextError} from './reactUtils'; type ScrollController = { /** A boolean ref tracking whether scroll events are enabled. */ diff --git a/packages/docusaurus-theme-common/src/utils/searchUtils.ts b/packages/docusaurus-theme-common/src/utils/searchUtils.ts index 463c69a90fa6..7f6fe91e48f0 100644 --- a/packages/docusaurus-theme-common/src/utils/searchUtils.ts +++ b/packages/docusaurus-theme-common/src/utils/searchUtils.ts @@ -9,8 +9,8 @@ import { useAllDocsData, useActivePluginAndVersion, } from '@docusaurus/plugin-content-docs/client'; -import {useDocsPreferredVersionByPluginId} from '../contexts/docsPreferredVersion'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; +import {useDocsPreferredVersionByPluginId} from '../contexts/docsPreferredVersion'; export const DEFAULT_SEARCH_TAG = 'default'; diff --git a/packages/docusaurus-theme-common/src/utils/useLocationChange.ts b/packages/docusaurus-theme-common/src/utils/useLocationChange.ts index dd8ec1d0249c..515493996e26 100644 --- a/packages/docusaurus-theme-common/src/utils/useLocationChange.ts +++ b/packages/docusaurus-theme-common/src/utils/useLocationChange.ts @@ -7,8 +7,8 @@ import {useEffect} from 'react'; import {useLocation} from '@docusaurus/router'; -import type {Location} from 'history'; import {useDynamicCallback, usePrevious} from './reactUtils'; +import type {Location} from 'history'; /** * Fires an effect when the location changes (which includes hash, query, etc.). diff --git a/packages/docusaurus-theme-live-codeblock/src/theme/Playground/index.tsx b/packages/docusaurus-theme-live-codeblock/src/theme/Playground/index.tsx index 7ca4c62f326d..64a6cc354517 100644 --- a/packages/docusaurus-theme-live-codeblock/src/theme/Playground/index.tsx +++ b/packages/docusaurus-theme-live-codeblock/src/theme/Playground/index.tsx @@ -6,15 +6,16 @@ */ import React from 'react'; -import {LiveProvider, LiveEditor, LiveError, LivePreview} from 'react-live'; import clsx from 'clsx'; +import useIsBrowser from '@docusaurus/useIsBrowser'; +import {LiveProvider, LiveEditor, LiveError, LivePreview} from 'react-live'; import Translate from '@docusaurus/Translate'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; import BrowserOnly from '@docusaurus/BrowserOnly'; import {usePrismTheme} from '@docusaurus/theme-common'; -import styles from './styles.module.css'; -import useIsBrowser from '@docusaurus/useIsBrowser'; import type {Props} from '@theme/Playground'; + +import styles from './styles.module.css'; import type {ThemeConfig} from '@docusaurus/theme-live-codeblock'; function Header({children}: {children: React.ReactNode}) { diff --git a/packages/docusaurus-theme-search-algolia/src/__tests__/validateThemeConfig.test.ts b/packages/docusaurus-theme-search-algolia/src/__tests__/validateThemeConfig.test.ts index 71c13896b4d3..23be336647ec 100644 --- a/packages/docusaurus-theme-search-algolia/src/__tests__/validateThemeConfig.test.ts +++ b/packages/docusaurus-theme-search-algolia/src/__tests__/validateThemeConfig.test.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import type {Joi} from '@docusaurus/utils-validation'; import {validateThemeConfig, DEFAULT_CONFIG} from '../validateThemeConfig'; +import type {Joi} from '@docusaurus/utils-validation'; function testValidateThemeConfig(themeConfig: {[key: string]: unknown}) { function validate(schema: Joi.Schema, cfg: {[key: string]: unknown}) { diff --git a/packages/docusaurus-theme-search-algolia/src/index.ts b/packages/docusaurus-theme-search-algolia/src/index.ts index 46f80161652c..dbd2a58db30c 100644 --- a/packages/docusaurus-theme-search-algolia/src/index.ts +++ b/packages/docusaurus-theme-search-algolia/src/index.ts @@ -7,12 +7,12 @@ import path from 'path'; import fs from 'fs-extra'; +import _ from 'lodash'; +import logger from '@docusaurus/logger'; import {defaultConfig, compile} from 'eta'; import {normalizeUrl} from '@docusaurus/utils'; import {readDefaultCodeTranslationMessages} from '@docusaurus/theme-translations'; -import logger from '@docusaurus/logger'; import openSearchTemplate from './templates/opensearch'; -import _ from 'lodash'; import type {LoadContext, Plugin} from '@docusaurus/types'; import type {ThemeConfig} from '@docusaurus/theme-search-algolia'; diff --git a/packages/docusaurus-theme-search-algolia/src/theme/SearchBar/index.tsx b/packages/docusaurus-theme-search-algolia/src/theme/SearchBar/index.tsx index 6217dbf50b41..217555ad316d 100644 --- a/packages/docusaurus-theme-search-algolia/src/theme/SearchBar/index.tsx +++ b/packages/docusaurus-theme-search-algolia/src/theme/SearchBar/index.tsx @@ -14,7 +14,6 @@ import Link from '@docusaurus/Link'; import Head from '@docusaurus/Head'; import {isRegexpStringMatch, useSearchPage} from '@docusaurus/theme-common'; import {DocSearchButton, useDocSearchKeyboardEvents} from '@docsearch/react'; -import type {SearchClient} from 'algoliasearch/lite'; import {useAlgoliaContextualFacetFilters} from '@docusaurus/theme-search-algolia/client'; import Translate, {translate} from '@docusaurus/Translate'; @@ -26,6 +25,7 @@ import type { InternalDocSearchHit, StoredDocSearchHit, } from '@docsearch/react/dist/esm/types'; +import type {SearchClient} from 'algoliasearch/lite'; import type {AutocompleteState} from '@algolia/autocomplete-core'; type DocSearchProps = Omit< diff --git a/packages/docusaurus-theme-search-algolia/src/theme/SearchPage/index.tsx b/packages/docusaurus-theme-search-algolia/src/theme/SearchPage/index.tsx index 5a79ce31050f..7be755278b12 100644 --- a/packages/docusaurus-theme-search-algolia/src/theme/SearchPage/index.tsx +++ b/packages/docusaurus-theme-search-algolia/src/theme/SearchPage/index.tsx @@ -8,10 +8,10 @@ /* eslint-disable jsx-a11y/no-autofocus */ import React, {useEffect, useState, useReducer, useRef} from 'react'; +import clsx from 'clsx'; import algoliaSearch from 'algoliasearch/lite'; import algoliaSearchHelper from 'algoliasearch-helper'; -import clsx from 'clsx'; import Head from '@docusaurus/Head'; import Link from '@docusaurus/Link'; @@ -26,8 +26,9 @@ import { } from '@docusaurus/theme-common'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; import {useAllDocsData} from '@docusaurus/plugin-content-docs/client'; -import Layout from '@theme/Layout'; import Translate, {translate} from '@docusaurus/Translate'; +import Layout from '@theme/Layout'; + import styles from './styles.module.css'; import type {ThemeConfig} from '@docusaurus/theme-search-algolia'; diff --git a/packages/docusaurus-theme-translations/locales/__tests__/locales.test.ts b/packages/docusaurus-theme-translations/locales/__tests__/locales.test.ts index 7bf0bf22a430..3b7a611cbcd6 100644 --- a/packages/docusaurus-theme-translations/locales/__tests__/locales.test.ts +++ b/packages/docusaurus-theme-translations/locales/__tests__/locales.test.ts @@ -6,10 +6,10 @@ */ import {jest} from '@jest/globals'; -import {extractThemeCodeMessages} from '../../src/utils'; import path from 'path'; import fs from 'fs-extra'; import _ from 'lodash'; +import {extractThemeCodeMessages} from '../../src/utils'; // Seems the 5s default timeout fails sometimes jest.setTimeout(15000); diff --git a/packages/docusaurus-theme-translations/update.mjs b/packages/docusaurus-theme-translations/update.mjs index 85736bf696e4..73fa9c6c5fe1 100644 --- a/packages/docusaurus-theme-translations/update.mjs +++ b/packages/docusaurus-theme-translations/update.mjs @@ -7,11 +7,11 @@ // @ts-check -import logger from '@docusaurus/logger'; import path from 'path'; import {fileURLToPath} from 'url'; import fs from 'fs-extra'; import _ from 'lodash'; +import logger from '@docusaurus/logger'; import {getThemes, extractThemeCodeMessages} from './lib/utils.js'; const LocalesDirPath = fileURLToPath(new URL('locales', import.meta.url)); diff --git a/packages/docusaurus-utils-validation/src/validationSchemas.ts b/packages/docusaurus-utils-validation/src/validationSchemas.ts index f8e9a1c36e0c..eea887bea2a5 100644 --- a/packages/docusaurus-utils-validation/src/validationSchemas.ts +++ b/packages/docusaurus-utils-validation/src/validationSchemas.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import Joi from './Joi'; import {isValidPathname, DEFAULT_PLUGIN_ID, type Tag} from '@docusaurus/utils'; +import Joi from './Joi'; import {JoiFrontMatter} from './JoiFrontMatter'; export const PluginIdSchema = Joi.string() diff --git a/packages/docusaurus-utils-validation/src/validationUtils.ts b/packages/docusaurus-utils-validation/src/validationUtils.ts index 33145624da4d..5d87c1a5e8e4 100644 --- a/packages/docusaurus-utils-validation/src/validationUtils.ts +++ b/packages/docusaurus-utils-validation/src/validationUtils.ts @@ -5,10 +5,10 @@ * LICENSE file in the root directory of this source tree. */ -import type Joi from './Joi'; import logger from '@docusaurus/logger'; import Yaml from 'js-yaml'; import {PluginIdSchema} from './validationSchemas'; +import type Joi from './Joi'; /** Print warnings returned from Joi validation. */ export function printWarning(warning?: Joi.ValidationError): void { diff --git a/packages/docusaurus-utils/src/__tests__/emitUtils.test.ts b/packages/docusaurus-utils/src/__tests__/emitUtils.test.ts index 236d9c224dc8..0e97013b9ece 100644 --- a/packages/docusaurus-utils/src/__tests__/emitUtils.test.ts +++ b/packages/docusaurus-utils/src/__tests__/emitUtils.test.ts @@ -6,9 +6,9 @@ */ import {jest} from '@jest/globals'; -import {readOutputHTMLFile, generate} from '../emitUtils'; import path from 'path'; import fs from 'fs-extra'; +import {readOutputHTMLFile, generate} from '../emitUtils'; describe('readOutputHTMLFile', () => { it('reads both files with trailing slash undefined', async () => { diff --git a/packages/docusaurus-utils/src/__tests__/gitUtils.test.ts b/packages/docusaurus-utils/src/__tests__/gitUtils.test.ts index 1d4519536cc4..d701b8bca347 100644 --- a/packages/docusaurus-utils/src/__tests__/gitUtils.test.ts +++ b/packages/docusaurus-utils/src/__tests__/gitUtils.test.ts @@ -5,10 +5,10 @@ * LICENSE file in the root directory of this source tree. */ -import {FileNotTrackedError, getFileCommitDate} from '../gitUtils'; import fs from 'fs-extra'; import path from 'path'; import {createTempRepo} from '@testing-utils/git'; +import {FileNotTrackedError, getFileCommitDate} from '../gitUtils'; /* eslint-disable no-restricted-properties */ function initializeTempRepo() { diff --git a/packages/docusaurus-utils/src/__tests__/jsUtils.test.ts b/packages/docusaurus-utils/src/__tests__/jsUtils.test.ts index 6db16ef20f31..ca7218ab02ad 100644 --- a/packages/docusaurus-utils/src/__tests__/jsUtils.test.ts +++ b/packages/docusaurus-utils/src/__tests__/jsUtils.test.ts @@ -6,6 +6,7 @@ */ import {jest} from '@jest/globals'; +import _ from 'lodash'; import { removeSuffix, removePrefix, @@ -13,7 +14,6 @@ import { findAsyncSequential, reportMessage, } from '../jsUtils'; -import _ from 'lodash'; describe('removeSuffix', () => { it("is no-op when suffix doesn't exist", () => { diff --git a/packages/docusaurus-utils/src/__tests__/markdownUtils.test.ts b/packages/docusaurus-utils/src/__tests__/markdownUtils.test.ts index 09488bc4a6c0..2f4baa74ccd6 100644 --- a/packages/docusaurus-utils/src/__tests__/markdownUtils.test.ts +++ b/packages/docusaurus-utils/src/__tests__/markdownUtils.test.ts @@ -5,6 +5,7 @@ * LICENSE file in the root directory of this source tree. */ +import dedent from 'dedent'; import { createExcerpt, parseMarkdownContentTitle, @@ -12,7 +13,6 @@ import { parseMarkdownHeadingId, writeMarkdownHeadingId, } from '../markdownUtils'; -import dedent from 'dedent'; describe('createExcerpt', () => { it('creates excerpt for text-only content', () => { diff --git a/packages/docusaurus-utils/src/__tests__/pathUtils.test.ts b/packages/docusaurus-utils/src/__tests__/pathUtils.test.ts index eaf2b61cd906..eb6cc8d13f07 100644 --- a/packages/docusaurus-utils/src/__tests__/pathUtils.test.ts +++ b/packages/docusaurus-utils/src/__tests__/pathUtils.test.ts @@ -6,6 +6,7 @@ */ import {jest} from '@jest/globals'; +import path from 'path'; import { isNameTooLong, shortName, @@ -15,7 +16,6 @@ import { toMessageRelativeFilePath, addTrailingPathSeparator, } from '../pathUtils'; -import path from 'path'; describe('isNameTooLong', () => { it('works', () => { diff --git a/packages/docusaurus-utils/src/dataFileUtils.ts b/packages/docusaurus-utils/src/dataFileUtils.ts index 34ed9befeb83..937d22b9cf2b 100644 --- a/packages/docusaurus-utils/src/dataFileUtils.ts +++ b/packages/docusaurus-utils/src/dataFileUtils.ts @@ -6,11 +6,11 @@ */ import fs from 'fs-extra'; -import Yaml from 'js-yaml'; import path from 'path'; +import logger from '@docusaurus/logger'; +import Yaml from 'js-yaml'; import {findAsyncSequential} from './index'; import type {ContentPaths} from './markdownLinks'; -import logger from '@docusaurus/logger'; type DataFileParams = { /** Path to the potential data file, relative to `contentPaths` */ diff --git a/packages/docusaurus-utils/src/globUtils.ts b/packages/docusaurus-utils/src/globUtils.ts index 67af9051eeae..d95fa35b54be 100644 --- a/packages/docusaurus-utils/src/globUtils.ts +++ b/packages/docusaurus-utils/src/globUtils.ts @@ -7,8 +7,8 @@ // Globby/Micromatch are the 2 libs we use in Docusaurus consistently -import Micromatch from 'micromatch'; // Note: Micromatch is used by Globby import path from 'path'; +import Micromatch from 'micromatch'; // Note: Micromatch is used by Globby /** A re-export of the globby instance. */ export {default as Globby} from 'globby'; diff --git a/packages/docusaurus-utils/src/i18nUtils.ts b/packages/docusaurus-utils/src/i18nUtils.ts index e7e29815beb2..a6d08cf83749 100644 --- a/packages/docusaurus-utils/src/i18nUtils.ts +++ b/packages/docusaurus-utils/src/i18nUtils.ts @@ -7,13 +7,13 @@ import path from 'path'; import _ from 'lodash'; +import {DEFAULT_PLUGIN_ID, I18N_DIR_NAME} from './constants'; +import {normalizeUrl} from './urlUtils'; import type { TranslationFileContent, TranslationFile, I18n, } from '@docusaurus/types'; -import {DEFAULT_PLUGIN_ID, I18N_DIR_NAME} from './constants'; -import {normalizeUrl} from './urlUtils'; /** * Takes a list of translation file contents, and shallow-merges them into one. diff --git a/packages/docusaurus-utils/src/jsUtils.ts b/packages/docusaurus-utils/src/jsUtils.ts index 1e2858fe620c..2d1f228f1eb7 100644 --- a/packages/docusaurus-utils/src/jsUtils.ts +++ b/packages/docusaurus-utils/src/jsUtils.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import type {ReportingSeverity} from '@docusaurus/types'; import logger from '@docusaurus/logger'; +import type {ReportingSeverity} from '@docusaurus/types'; /** Removes a given string suffix from `str`. */ export function removeSuffix(str: string, suffix: string): string { diff --git a/packages/docusaurus-utils/src/urlUtils.ts b/packages/docusaurus-utils/src/urlUtils.ts index c6ad13d2d88e..708d50dbfe57 100644 --- a/packages/docusaurus-utils/src/urlUtils.ts +++ b/packages/docusaurus-utils/src/urlUtils.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import {removeSuffix} from './jsUtils'; import resolvePathnameUnsafe from 'resolve-pathname'; +import {removeSuffix} from './jsUtils'; /** * Much like `path.join`, but much better. Takes an array of URL segments, and diff --git a/packages/docusaurus-utils/src/webpackUtils.ts b/packages/docusaurus-utils/src/webpackUtils.ts index 4116867c9dff..fa579e06b470 100644 --- a/packages/docusaurus-utils/src/webpackUtils.ts +++ b/packages/docusaurus-utils/src/webpackUtils.ts @@ -5,13 +5,13 @@ * LICENSE file in the root directory of this source tree. */ -import type {RuleSetRule} from 'webpack'; import path from 'path'; import {escapePath} from './pathUtils'; import { WEBPACK_URL_LOADER_LIMIT, OUTPUT_STATIC_ASSETS_DIR_NAME, } from './constants'; +import type {RuleSetRule} from 'webpack'; type AssetFolder = 'images' | 'files' | 'fonts' | 'medias'; diff --git a/packages/docusaurus/bin/beforeCli.mjs b/packages/docusaurus/bin/beforeCli.mjs index 0c374dba1722..fa4cecdbc77c 100644 --- a/packages/docusaurus/bin/beforeCli.mjs +++ b/packages/docusaurus/bin/beforeCli.mjs @@ -7,13 +7,13 @@ // @ts-check -import logger from '@docusaurus/logger'; import fs from 'fs-extra'; -import semver from 'semver'; import path from 'path'; +import {createRequire} from 'module'; +import logger from '@docusaurus/logger'; +import semver from 'semver'; import updateNotifier from 'update-notifier'; import boxen from 'boxen'; -import {createRequire} from 'module'; import {DOCUSAURUS_VERSION} from '@docusaurus/utils'; const packageJson = createRequire(import.meta.url)('../package.json'); diff --git a/packages/docusaurus/bin/docusaurus.mjs b/packages/docusaurus/bin/docusaurus.mjs index 759aad41cc98..ec6a5cfffb88 100755 --- a/packages/docusaurus/bin/docusaurus.mjs +++ b/packages/docusaurus/bin/docusaurus.mjs @@ -8,8 +8,8 @@ // @ts-check -import logger from '@docusaurus/logger'; import fs from 'fs-extra'; +import logger from '@docusaurus/logger'; import cli from 'commander'; import {DOCUSAURUS_VERSION} from '@docusaurus/utils'; import { diff --git a/packages/docusaurus/src/client/App.tsx b/packages/docusaurus/src/client/App.tsx index c709c2e8515f..da3a1ef22f0a 100644 --- a/packages/docusaurus/src/client/App.tsx +++ b/packages/docusaurus/src/client/App.tsx @@ -10,18 +10,20 @@ import '@generated/client-modules'; import routes from '@generated/routes'; import {useLocation} from '@docusaurus/router'; -import normalizeLocation from './normalizeLocation'; import renderRoutes from '@docusaurus/renderRoutes'; +import Root from '@theme/Root'; +import SiteMetadata from '@theme/SiteMetadata'; +import normalizeLocation from './normalizeLocation'; import {BrowserContextProvider} from './browserContext'; import {DocusaurusContextProvider} from './docusaurusContext'; import PendingNavigation from './PendingNavigation'; import BaseUrlIssueBanner from './BaseUrlIssueBanner'; import SiteMetadataDefaults from './SiteMetadataDefaults'; -import Root from '@theme/Root'; -import SiteMetadata from '@theme/SiteMetadata'; // TODO, quick fix for CSS insertion order +// eslint-disable-next-line import/order import ErrorBoundary from '@docusaurus/ErrorBoundary'; +// eslint-disable-next-line import/order import Error from '@theme/Error'; export default function App(): JSX.Element { diff --git a/packages/docusaurus/src/client/docusaurusContext.tsx b/packages/docusaurus/src/client/docusaurusContext.tsx index 5023b1eced70..5bed42737f37 100644 --- a/packages/docusaurus/src/client/docusaurusContext.tsx +++ b/packages/docusaurus/src/client/docusaurusContext.tsx @@ -6,13 +6,12 @@ */ import React, {type ReactNode} from 'react'; -import type {DocusaurusContext} from '@docusaurus/types'; - import siteConfig from '@generated/docusaurus.config'; import globalData from '@generated/globalData'; import i18n from '@generated/i18n'; import codeTranslations from '@generated/codeTranslations'; import siteMetadata from '@generated/site-metadata'; +import type {DocusaurusContext} from '@docusaurus/types'; // Static value on purpose: don't make it dynamic! // Using context is still useful for testability reasons. diff --git a/packages/docusaurus/src/client/exports/ComponentCreator.tsx b/packages/docusaurus/src/client/exports/ComponentCreator.tsx index 0caf13bebc39..77439b36425a 100644 --- a/packages/docusaurus/src/client/exports/ComponentCreator.tsx +++ b/packages/docusaurus/src/client/exports/ComponentCreator.tsx @@ -7,9 +7,9 @@ import React from 'react'; import Loadable from 'react-loadable'; -import Loading from '@theme/Loading'; import routesChunkNames from '@generated/routesChunkNames'; import registry from '@generated/registry'; +import Loading from '@theme/Loading'; import flat from '../flat'; import {RouteContextProvider} from '../routeContext'; diff --git a/packages/docusaurus/src/client/exports/ErrorBoundary.tsx b/packages/docusaurus/src/client/exports/ErrorBoundary.tsx index 11880aa67f70..b8dd78fe1a78 100644 --- a/packages/docusaurus/src/client/exports/ErrorBoundary.tsx +++ b/packages/docusaurus/src/client/exports/ErrorBoundary.tsx @@ -6,10 +6,9 @@ */ import React, {type ReactNode} from 'react'; - import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment'; -import type {Props} from '@docusaurus/ErrorBoundary'; import DefaultFallback from '@theme/Error'; +import type {Props} from '@docusaurus/ErrorBoundary'; type State = { error: Error | null; diff --git a/packages/docusaurus/src/client/exports/Link.tsx b/packages/docusaurus/src/client/exports/Link.tsx index 3628e7495439..78a3f91a6b7b 100644 --- a/packages/docusaurus/src/client/exports/Link.tsx +++ b/packages/docusaurus/src/client/exports/Link.tsx @@ -11,15 +11,13 @@ import React, { useRef, type ComponentType, } from 'react'; - import {NavLink, Link as RRLink} from 'react-router-dom'; +import {applyTrailingSlash} from '@docusaurus/utils-common'; import useDocusaurusContext from './useDocusaurusContext'; import isInternalUrl from './isInternalUrl'; import ExecutionEnvironment from './ExecutionEnvironment'; import {useLinksCollector} from '../LinksCollector'; import {useBaseUrlUtils} from './useBaseUrl'; -import {applyTrailingSlash} from '@docusaurus/utils-common'; - import type {Props} from '@docusaurus/Link'; // TODO all this wouldn't be necessary if we used ReactRouter basename feature diff --git a/packages/docusaurus/src/client/exports/Translate.tsx b/packages/docusaurus/src/client/exports/Translate.tsx index 5cfbef7edb5c..b88606563871 100644 --- a/packages/docusaurus/src/client/exports/Translate.tsx +++ b/packages/docusaurus/src/client/exports/Translate.tsx @@ -7,10 +7,9 @@ import React from 'react'; import {interpolate, type InterpolateValues} from '@docusaurus/Interpolate'; -import type {TranslateParam, TranslateProps} from '@docusaurus/Translate'; - // Can't read it from context, due to exposing imperative API import codeTranslations from '@generated/codeTranslations'; +import type {TranslateParam, TranslateProps} from '@docusaurus/Translate'; function getLocalizedMessage({ id, diff --git a/packages/docusaurus/src/client/exports/__tests__/Head.test.tsx b/packages/docusaurus/src/client/exports/__tests__/Head.test.tsx index 847fa52391f7..067fc9ea25ee 100644 --- a/packages/docusaurus/src/client/exports/__tests__/Head.test.tsx +++ b/packages/docusaurus/src/client/exports/__tests__/Head.test.tsx @@ -6,9 +6,9 @@ */ import React from 'react'; -import Head from '../Head'; import {type FilledContext, HelmetProvider} from 'react-helmet-async'; import renderer from 'react-test-renderer'; +import Head from '../Head'; describe('Head', () => { it('does exactly what Helmet does', () => { diff --git a/packages/docusaurus/src/client/exports/useRouteContext.tsx b/packages/docusaurus/src/client/exports/useRouteContext.tsx index 9ba1a1f57039..ea80925c3208 100644 --- a/packages/docusaurus/src/client/exports/useRouteContext.tsx +++ b/packages/docusaurus/src/client/exports/useRouteContext.tsx @@ -6,8 +6,8 @@ */ import React from 'react'; -import type {PluginRouteContext} from '@docusaurus/types'; import {Context} from '../routeContext'; +import type {PluginRouteContext} from '@docusaurus/types'; export default function useRouteContext(): PluginRouteContext { const context = React.useContext(Context); diff --git a/packages/docusaurus/src/client/serverEntry.tsx b/packages/docusaurus/src/client/serverEntry.tsx index 408bfee0e3dc..27902e72e872 100644 --- a/packages/docusaurus/src/client/serverEntry.tsx +++ b/packages/docusaurus/src/client/serverEntry.tsx @@ -5,26 +5,25 @@ * LICENSE file in the root directory of this source tree. */ -import * as eta from 'eta'; import React from 'react'; +import path from 'path'; +import fs from 'fs-extra'; +// eslint-disable-next-line no-restricted-imports +import _ from 'lodash'; +import logger from '@docusaurus/logger'; +import * as eta from 'eta'; import {StaticRouter} from 'react-router-dom'; import ReactDOMServer from 'react-dom/server'; import {HelmetProvider, type FilledContext} from 'react-helmet-async'; import {getBundles, type Manifest} from 'react-loadable-ssr-addon-v5-slorber'; import Loadable from 'react-loadable'; - import {minify} from 'html-minifier-terser'; -import path from 'path'; -import fs from 'fs-extra'; import preload from './preload'; import App from './App'; import { createStatefulLinksCollector, LinksCollectorProvider, } from './LinksCollector'; -import logger from '@docusaurus/logger'; -// eslint-disable-next-line no-restricted-imports -import _ from 'lodash'; import type {Locals} from '@slorber/static-site-generator-webpack-plugin'; const getCompiledSSRTemplate = _.memoize((template: string) => diff --git a/packages/docusaurus/src/client/theme-fallback/Error/index.tsx b/packages/docusaurus/src/client/theme-fallback/Error/index.tsx index 3376d906eaee..513348cce4d7 100644 --- a/packages/docusaurus/src/client/theme-fallback/Error/index.tsx +++ b/packages/docusaurus/src/client/theme-fallback/Error/index.tsx @@ -9,10 +9,10 @@ /* eslint-disable @docusaurus/no-untranslated-text */ import React from 'react'; -import Layout from '@theme/Layout'; +import Head from '@docusaurus/Head'; import ErrorBoundary from '@docusaurus/ErrorBoundary'; +import Layout from '@theme/Layout'; import type {Props} from '@theme/Error'; -import Head from '@docusaurus/Head'; function ErrorDisplay({error, tryAgain}: Props): JSX.Element { return ( diff --git a/packages/docusaurus/src/client/theme-fallback/NotFound/index.tsx b/packages/docusaurus/src/client/theme-fallback/NotFound/index.tsx index 78f83dcc2c05..b7d5ea8b39ea 100644 --- a/packages/docusaurus/src/client/theme-fallback/NotFound/index.tsx +++ b/packages/docusaurus/src/client/theme-fallback/NotFound/index.tsx @@ -9,8 +9,8 @@ /* eslint-disable @docusaurus/no-untranslated-text */ import React from 'react'; -import Layout from '@theme/Layout'; import Head from '@docusaurus/Head'; +import Layout from '@theme/Layout'; export default function NotFound(): JSX.Element { return ( diff --git a/packages/docusaurus/src/commands/build.ts b/packages/docusaurus/src/commands/build.ts index 555cb76bd66b..d13d7039fec5 100644 --- a/packages/docusaurus/src/commands/build.ts +++ b/packages/docusaurus/src/commands/build.ts @@ -5,18 +5,17 @@ * LICENSE file in the root directory of this source tree. */ -import logger from '@docusaurus/logger'; -import CopyWebpackPlugin from 'copy-webpack-plugin'; import fs from 'fs-extra'; import path from 'path'; +import logger from '@docusaurus/logger'; +import {mapAsyncSequential} from '@docusaurus/utils'; +import CopyWebpackPlugin from 'copy-webpack-plugin'; import ReactLoadableSSRAddon from 'react-loadable-ssr-addon-v5-slorber'; -import type {Configuration} from 'webpack'; import {BundleAnalyzerPlugin} from 'webpack-bundle-analyzer'; import merge from 'webpack-merge'; import {load, loadContext, type LoadContextOptions} from '../server'; import {handleBrokenLinks} from '../server/brokenLinks'; -import type {Props} from '@docusaurus/types'; import createClientConfig from '../webpack/client'; import createServerConfig from '../webpack/server'; import { @@ -26,8 +25,9 @@ import { } from '../webpack/utils'; import CleanWebpackPlugin from '../webpack/plugins/CleanWebpackPlugin'; import {loadI18n} from '../server/i18n'; -import {mapAsyncSequential} from '@docusaurus/utils'; import type {HelmetServerState} from 'react-helmet-async'; +import type {Configuration} from 'webpack'; +import type {Props} from '@docusaurus/types'; export type BuildCLIOptions = Pick< LoadContextOptions, diff --git a/packages/docusaurus/src/commands/deploy.ts b/packages/docusaurus/src/commands/deploy.ts index 485c3940049d..e35783ddb745 100644 --- a/packages/docusaurus/src/commands/deploy.ts +++ b/packages/docusaurus/src/commands/deploy.ts @@ -6,13 +6,13 @@ */ import fs from 'fs-extra'; -import shell from 'shelljs'; +import path from 'path'; +import os from 'os'; import logger from '@docusaurus/logger'; +import shell from 'shelljs'; import {hasSSHProtocol, buildSshUrl, buildHttpsUrl} from '@docusaurus/utils'; import {loadContext, type LoadContextOptions} from '../server'; import {build} from './build'; -import path from 'path'; -import os from 'os'; export type DeployCLIOptions = Pick< LoadContextOptions, diff --git a/packages/docusaurus/src/commands/external.ts b/packages/docusaurus/src/commands/external.ts index eb8c1b94f26b..2a9f67ee288b 100644 --- a/packages/docusaurus/src/commands/external.ts +++ b/packages/docusaurus/src/commands/external.ts @@ -5,9 +5,9 @@ * LICENSE file in the root directory of this source tree. */ -import type {CommanderStatic} from 'commander'; import {loadContext} from '../server'; import {initPlugins} from '../server/plugins/init'; +import type {CommanderStatic} from 'commander'; export async function externalCommand( cli: CommanderStatic, diff --git a/packages/docusaurus/src/commands/serve.ts b/packages/docusaurus/src/commands/serve.ts index 044bd04ee684..da94dc86678d 100644 --- a/packages/docusaurus/src/commands/serve.ts +++ b/packages/docusaurus/src/commands/serve.ts @@ -6,14 +6,14 @@ */ import http from 'http'; -import serveHandler from 'serve-handler'; -import logger from '@docusaurus/logger'; import path from 'path'; -import type {LoadContextOptions} from '../server'; +import logger from '@docusaurus/logger'; +import {DEFAULT_BUILD_DIR_NAME} from '@docusaurus/utils'; +import serveHandler from 'serve-handler'; import {loadSiteConfig} from '../server/config'; import {build} from './build'; import {getHostPort, type HostPortOptions} from '../server/getHostPort'; -import {DEFAULT_BUILD_DIR_NAME} from '@docusaurus/utils'; +import type {LoadContextOptions} from '../server'; export type ServeCLIOptions = HostPortOptions & Pick<LoadContextOptions, 'config'> & { diff --git a/packages/docusaurus/src/commands/start.ts b/packages/docusaurus/src/commands/start.ts index 8dee7788911b..551bca65cc0e 100644 --- a/packages/docusaurus/src/commands/start.ts +++ b/packages/docusaurus/src/commands/start.ts @@ -5,12 +5,12 @@ * LICENSE file in the root directory of this source tree. */ -import {normalizeUrl, posixPath} from '@docusaurus/utils'; +import path from 'path'; +import _ from 'lodash'; import logger from '@docusaurus/logger'; +import {normalizeUrl, posixPath} from '@docusaurus/utils'; import chokidar from 'chokidar'; import HtmlWebpackPlugin from 'html-webpack-plugin'; -import path from 'path'; -import _ from 'lodash'; import openBrowser from 'react-dev-utils/openBrowser'; import {prepareUrls} from 'react-dev-utils/WebpackDevServerUtils'; import evalSourceMapMiddleware from 'react-dev-utils/evalSourceMapMiddleware'; diff --git a/packages/docusaurus/src/commands/swizzle/__tests__/__snapshots__/actions.test.ts.snap b/packages/docusaurus/src/commands/swizzle/__tests__/__snapshots__/actions.test.ts.snap index 3483ffb8a487..2608fd767172 100644 --- a/packages/docusaurus/src/commands/swizzle/__tests__/__snapshots__/actions.test.ts.snap +++ b/packages/docusaurus/src/commands/swizzle/__tests__/__snapshots__/actions.test.ts.snap @@ -44,8 +44,8 @@ export default function FirstLevelComponentWrapper(props) { exports[`wrap TypeScript wrap ComponentInFolder 2`] = ` "import React, {ComponentProps} from 'react'; -import type ComponentInFolderType from '@theme/ComponentInFolder'; import ComponentInFolder from '@theme-original/ComponentInFolder'; +import type ComponentInFolderType from '@theme/ComponentInFolder'; type Props = ComponentProps<typeof ComponentInFolderType>; @@ -61,8 +61,8 @@ export default function ComponentInFolderWrapper(props: Props): JSX.Element { exports[`wrap TypeScript wrap ComponentInFolder/ComponentInSubFolder 2`] = ` "import React, {ComponentProps} from 'react'; -import type ComponentInSubFolderType from '@theme/ComponentInFolder/ComponentInSubFolder'; import ComponentInSubFolder from '@theme-original/ComponentInFolder/ComponentInSubFolder'; +import type ComponentInSubFolderType from '@theme/ComponentInFolder/ComponentInSubFolder'; type Props = ComponentProps<typeof ComponentInSubFolderType>; @@ -78,8 +78,8 @@ export default function ComponentInSubFolderWrapper(props: Props): JSX.Element { exports[`wrap TypeScript wrap FirstLevelComponent 2`] = ` "import React, {ComponentProps} from 'react'; -import type FirstLevelComponentType from '@theme/FirstLevelComponent'; import FirstLevelComponent from '@theme-original/FirstLevelComponent'; +import type FirstLevelComponentType from '@theme/FirstLevelComponent'; type Props = ComponentProps<typeof FirstLevelComponentType>; diff --git a/packages/docusaurus/src/commands/swizzle/__tests__/__snapshots__/index.test.ts.snap b/packages/docusaurus/src/commands/swizzle/__tests__/__snapshots__/index.test.ts.snap index 84e98d772af6..a686e30fae35 100644 --- a/packages/docusaurus/src/commands/swizzle/__tests__/__snapshots__/index.test.ts.snap +++ b/packages/docusaurus/src/commands/swizzle/__tests__/__snapshots__/index.test.ts.snap @@ -274,8 +274,8 @@ exports[`swizzle wrap ComponentInFolder JS: theme dir tree 1`] = ` exports[`swizzle wrap ComponentInFolder TS: ComponentInFolder/index.tsx 1`] = ` "import React, {ComponentProps} from 'react'; -import type ComponentInFolderType from '@theme/ComponentInFolder'; import ComponentInFolder from '@theme-original/ComponentInFolder'; +import type ComponentInFolderType from '@theme/ComponentInFolder'; type Props = ComponentProps<typeof ComponentInFolderType>; @@ -318,8 +318,8 @@ exports[`swizzle wrap ComponentInFolder/ComponentInSubFolder JS: theme dir tree exports[`swizzle wrap ComponentInFolder/ComponentInSubFolder TS: ComponentInFolder/ComponentInSubFolder/index.tsx 1`] = ` "import React, {ComponentProps} from 'react'; -import type ComponentInSubFolderType from '@theme/ComponentInFolder/ComponentInSubFolder'; import ComponentInSubFolder from '@theme-original/ComponentInFolder/ComponentInSubFolder'; +import type ComponentInSubFolderType from '@theme/ComponentInFolder/ComponentInSubFolder'; type Props = ComponentProps<typeof ComponentInSubFolderType>; @@ -362,8 +362,8 @@ exports[`swizzle wrap ComponentInFolder/Sibling JS: theme dir tree 1`] = ` exports[`swizzle wrap ComponentInFolder/Sibling TS: ComponentInFolder/Sibling.tsx 1`] = ` "import React, {ComponentProps} from 'react'; -import type SiblingType from '@theme/ComponentInFolder/Sibling'; import Sibling from '@theme-original/ComponentInFolder/Sibling'; +import type SiblingType from '@theme/ComponentInFolder/Sibling'; type Props = ComponentProps<typeof SiblingType>; @@ -404,8 +404,8 @@ exports[`swizzle wrap FirstLevelComponent JS: theme dir tree 1`] = ` exports[`swizzle wrap FirstLevelComponent TS: FirstLevelComponent.tsx 1`] = ` "import React, {ComponentProps} from 'react'; -import type FirstLevelComponentType from '@theme/FirstLevelComponent'; import FirstLevelComponent from '@theme-original/FirstLevelComponent'; +import type FirstLevelComponentType from '@theme/FirstLevelComponent'; type Props = ComponentProps<typeof FirstLevelComponentType>; diff --git a/packages/docusaurus/src/commands/swizzle/__tests__/actions.test.ts b/packages/docusaurus/src/commands/swizzle/__tests__/actions.test.ts index d73521076160..d73280553085 100644 --- a/packages/docusaurus/src/commands/swizzle/__tests__/actions.test.ts +++ b/packages/docusaurus/src/commands/swizzle/__tests__/actions.test.ts @@ -7,11 +7,11 @@ import path from 'path'; import fs from 'fs-extra'; -import {ThemePath, Components, createTempSiteDir} from './testUtils'; -import type {SwizzleAction} from '@docusaurus/types'; import tree from 'tree-node-cli'; -import {eject, wrap} from '../actions'; import {posixPath} from '@docusaurus/utils'; +import {eject, wrap} from '../actions'; +import {ThemePath, Components, createTempSiteDir} from './testUtils'; +import type {SwizzleAction} from '@docusaurus/types'; // Use relative paths and sort files for tests function stableCreatedFiles( diff --git a/packages/docusaurus/src/commands/swizzle/__tests__/components.test.ts b/packages/docusaurus/src/commands/swizzle/__tests__/components.test.ts index eb0b28445708..c16a7a0d619a 100644 --- a/packages/docusaurus/src/commands/swizzle/__tests__/components.test.ts +++ b/packages/docusaurus/src/commands/swizzle/__tests__/components.test.ts @@ -7,8 +7,8 @@ import path from 'path'; import {getThemeComponents, readComponentNames} from '../components'; -import type {SwizzleConfig} from '@docusaurus/types'; import {Components} from './testUtils'; +import type {SwizzleConfig} from '@docusaurus/types'; const FixtureThemePath = path.join(__dirname, '__fixtures__/theme'); diff --git a/packages/docusaurus/src/commands/swizzle/__tests__/config.test.ts b/packages/docusaurus/src/commands/swizzle/__tests__/config.test.ts index 7dd867a08270..cb924a626ffc 100644 --- a/packages/docusaurus/src/commands/swizzle/__tests__/config.test.ts +++ b/packages/docusaurus/src/commands/swizzle/__tests__/config.test.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import type {SwizzleConfig} from '@docusaurus/types'; import {normalizeSwizzleConfig} from '../config'; +import type {SwizzleConfig} from '@docusaurus/types'; describe('normalizeSwizzleConfig', () => { it(`validate no components config`, async () => { diff --git a/packages/docusaurus/src/commands/swizzle/__tests__/index.test.ts b/packages/docusaurus/src/commands/swizzle/__tests__/index.test.ts index 0f55edac837d..c2317cb41c22 100644 --- a/packages/docusaurus/src/commands/swizzle/__tests__/index.test.ts +++ b/packages/docusaurus/src/commands/swizzle/__tests__/index.test.ts @@ -8,10 +8,10 @@ import {jest} from '@jest/globals'; import path from 'path'; import fs from 'fs-extra'; -import {ThemePath, createTempSiteDir, Components} from './testUtils'; import tree from 'tree-node-cli'; -import {swizzle} from '../index'; import {escapePath, Globby, posixPath} from '@docusaurus/utils'; +import {ThemePath, createTempSiteDir, Components} from './testUtils'; +import {swizzle} from '../index'; const FixtureThemeName = 'fixture-theme-name'; diff --git a/packages/docusaurus/src/commands/swizzle/actions.ts b/packages/docusaurus/src/commands/swizzle/actions.ts index d6be9f902731..e295f8c2bd2d 100644 --- a/packages/docusaurus/src/commands/swizzle/actions.ts +++ b/packages/docusaurus/src/commands/swizzle/actions.ts @@ -5,14 +5,14 @@ * LICENSE file in the root directory of this source tree. */ -import logger from '@docusaurus/logger'; import fs from 'fs-extra'; import path from 'path'; import _ from 'lodash'; +import logger from '@docusaurus/logger'; import {Globby, posixPath, THEME_PATH} from '@docusaurus/utils'; +import {askSwizzleAction} from './prompts'; import type {SwizzleAction, SwizzleComponentConfig} from '@docusaurus/types'; import type {SwizzleCLIOptions} from './common'; -import {askSwizzleAction} from './prompts'; export const SwizzleActions: SwizzleAction[] = ['wrap', 'eject']; @@ -122,8 +122,8 @@ export async function wrap({ const content = typescript ? `import React, {ComponentProps} from 'react'; -import type ${componentName}Type from '@theme/${themeComponentName}'; import ${componentName} from '@theme-${importType}/${themeComponentName}'; +import type ${componentName}Type from '@theme/${themeComponentName}'; type Props = ComponentProps<typeof ${componentName}Type>; diff --git a/packages/docusaurus/src/commands/swizzle/common.ts b/packages/docusaurus/src/commands/swizzle/common.ts index 4fdf01e4f2a0..fad472d6b140 100644 --- a/packages/docusaurus/src/commands/swizzle/common.ts +++ b/packages/docusaurus/src/commands/swizzle/common.ts @@ -5,9 +5,9 @@ * LICENSE file in the root directory of this source tree. */ -import leven from 'leven'; import _ from 'lodash'; import logger from '@docusaurus/logger'; +import leven from 'leven'; import type {NormalizedPluginConfig} from '../../server/plugins/configs'; import type { InitializedPlugin, diff --git a/packages/docusaurus/src/commands/swizzle/components.ts b/packages/docusaurus/src/commands/swizzle/components.ts index f9dc0d7beb81..9475ce33dbc9 100644 --- a/packages/docusaurus/src/commands/swizzle/components.ts +++ b/packages/docusaurus/src/commands/swizzle/components.ts @@ -5,21 +5,21 @@ * LICENSE file in the root directory of this source tree. */ -import logger from '@docusaurus/logger'; import fs from 'fs-extra'; import path from 'path'; import _ from 'lodash'; +import logger from '@docusaurus/logger'; +import {posixPath} from '@docusaurus/utils'; +import {askComponentName} from './prompts'; +import {findClosestValue, findStringIgnoringCase} from './common'; +import {helpTables, themeComponentsTable} from './tables'; +import {SwizzleActions} from './actions'; import type { SwizzleAction, SwizzleActionStatus, SwizzleComponentConfig, SwizzleConfig, } from '@docusaurus/types'; -import {posixPath} from '@docusaurus/utils'; -import {askComponentName} from './prompts'; -import {findClosestValue, findStringIgnoringCase} from './common'; -import {helpTables, themeComponentsTable} from './tables'; -import {SwizzleActions} from './actions'; export type ThemeComponents = { themeName: string; diff --git a/packages/docusaurus/src/commands/swizzle/config.ts b/packages/docusaurus/src/commands/swizzle/config.ts index f62b0ad7959e..83f0bbe75101 100644 --- a/packages/docusaurus/src/commands/swizzle/config.ts +++ b/packages/docusaurus/src/commands/swizzle/config.ts @@ -5,12 +5,12 @@ * LICENSE file in the root directory of this source tree. */ +import logger from '@docusaurus/logger'; import {Joi} from '@docusaurus/utils-validation'; -import type {SwizzleComponentConfig, SwizzleConfig} from '@docusaurus/types'; -import type {SwizzlePlugin} from './common'; import {SwizzleActions, SwizzleActionsStatuses} from './common'; import {getPluginByThemeName} from './themes'; -import logger from '@docusaurus/logger'; +import type {SwizzleComponentConfig, SwizzleConfig} from '@docusaurus/types'; +import type {SwizzlePlugin} from './common'; function getModuleSwizzleConfig( swizzlePlugin: SwizzlePlugin, diff --git a/packages/docusaurus/src/commands/swizzle/index.ts b/packages/docusaurus/src/commands/swizzle/index.ts index 0d13d7387aab..9262e7d154f1 100644 --- a/packages/docusaurus/src/commands/swizzle/index.ts +++ b/packages/docusaurus/src/commands/swizzle/index.ts @@ -9,14 +9,14 @@ import logger from '@docusaurus/logger'; import {getThemeName, getThemePath, getThemeNames} from './themes'; import {getThemeComponents, getComponentName} from './components'; import {helpTables, themeComponentsTable} from './tables'; -import type {SwizzleAction, SwizzleComponentConfig} from '@docusaurus/types'; -import type {SwizzleCLIOptions, SwizzlePlugin} from './common'; import {normalizeOptions} from './common'; -import type {ActionResult} from './actions'; import {eject, getAction, wrap} from './actions'; import {getThemeSwizzleConfig} from './config'; import {askSwizzleDangerousComponent} from './prompts'; import {initSwizzleContext} from './context'; +import type {SwizzleAction, SwizzleComponentConfig} from '@docusaurus/types'; +import type {SwizzleCLIOptions, SwizzlePlugin} from './common'; +import type {ActionResult} from './actions'; async function listAllThemeComponents({ themeNames, diff --git a/packages/docusaurus/src/commands/swizzle/prompts.ts b/packages/docusaurus/src/commands/swizzle/prompts.ts index fb6ab4f13db9..6aa1d1e0e9f6 100644 --- a/packages/docusaurus/src/commands/swizzle/prompts.ts +++ b/packages/docusaurus/src/commands/swizzle/prompts.ts @@ -7,9 +7,9 @@ import logger from '@docusaurus/logger'; import prompts from 'prompts'; +import {actionStatusSuffix, PartiallySafeHint} from './common'; import type {ThemeComponents} from './components'; import type {SwizzleAction, SwizzleComponentConfig} from '@docusaurus/types'; -import {actionStatusSuffix, PartiallySafeHint} from './common'; const ExitTitle = logger.yellow('[Exit]'); diff --git a/packages/docusaurus/src/commands/swizzle/tables.ts b/packages/docusaurus/src/commands/swizzle/tables.ts index 28b9b5188b42..73ccf077d865 100644 --- a/packages/docusaurus/src/commands/swizzle/tables.ts +++ b/packages/docusaurus/src/commands/swizzle/tables.ts @@ -5,13 +5,13 @@ * LICENSE file in the root directory of this source tree. */ +import _ from 'lodash'; import logger from '@docusaurus/logger'; import Table from 'cli-table3'; -import _ from 'lodash'; -import type {ThemeComponents} from './components'; import {SwizzleActions} from './actions'; -import type {SwizzleActionStatus} from '@docusaurus/types'; import {actionStatusColor, actionStatusLabel} from './common'; +import type {SwizzleActionStatus} from '@docusaurus/types'; +import type {ThemeComponents} from './components'; function tableStatusLabel(status: SwizzleActionStatus): string { return actionStatusColor(status, actionStatusLabel(status)); diff --git a/packages/docusaurus/src/commands/swizzle/themes.ts b/packages/docusaurus/src/commands/swizzle/themes.ts index 49381089dd18..c31b0f28dd8b 100644 --- a/packages/docusaurus/src/commands/swizzle/themes.ts +++ b/packages/docusaurus/src/commands/swizzle/themes.ts @@ -5,10 +5,10 @@ * LICENSE file in the root directory of this source tree. */ -import logger from '@docusaurus/logger'; import path from 'path'; -import leven from 'leven'; import _ from 'lodash'; +import logger from '@docusaurus/logger'; +import leven from 'leven'; import {askThemeName} from './prompts'; import {findStringIgnoringCase, type SwizzlePlugin} from './common'; diff --git a/packages/docusaurus/src/commands/writeTranslations.ts b/packages/docusaurus/src/commands/writeTranslations.ts index 606c8447d698..14ae1e64adc6 100644 --- a/packages/docusaurus/src/commands/writeTranslations.ts +++ b/packages/docusaurus/src/commands/writeTranslations.ts @@ -5,11 +5,9 @@ * LICENSE file in the root directory of this source tree. */ -import type {InitializedPlugin} from '@docusaurus/types'; import path from 'path'; import {loadContext, type LoadContextOptions} from '../server'; import {initPlugins} from '../server/plugins/init'; - import { writePluginTranslations, writeCodeTranslations, @@ -22,6 +20,7 @@ import { globSourceCodeFilePaths, } from '../server/translations/translationsExtractor'; import {getCustomBabelConfigFilePath, getBabelOptions} from '../webpack/utils'; +import type {InitializedPlugin} from '@docusaurus/types'; export type WriteTranslationsCLIOptions = Pick< LoadContextOptions, diff --git a/packages/docusaurus/src/server/__tests__/siteMetadata.test.ts b/packages/docusaurus/src/server/__tests__/siteMetadata.test.ts index d33e301382be..30a40bb7521d 100644 --- a/packages/docusaurus/src/server/__tests__/siteMetadata.test.ts +++ b/packages/docusaurus/src/server/__tests__/siteMetadata.test.ts @@ -6,8 +6,8 @@ */ import {jest} from '@jest/globals'; -import {getPluginVersion, loadSiteMetadata} from '../siteMetadata'; import path from 'path'; +import {getPluginVersion, loadSiteMetadata} from '../siteMetadata'; describe('getPluginVersion', () => { it('detects external packages plugins versions', async () => { diff --git a/packages/docusaurus/src/server/__tests__/utils.test.ts b/packages/docusaurus/src/server/__tests__/utils.test.ts index b8ef5b59faaa..646657350522 100644 --- a/packages/docusaurus/src/server/__tests__/utils.test.ts +++ b/packages/docusaurus/src/server/__tests__/utils.test.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import type {RouteConfig} from '@docusaurus/types'; import {getAllFinalRoutes} from '../utils'; +import type {RouteConfig} from '@docusaurus/types'; describe('getAllFinalRoutes', () => { it('gets final routes correctly', () => { diff --git a/packages/docusaurus/src/server/brokenLinks.ts b/packages/docusaurus/src/server/brokenLinks.ts index 4ce32b2deaf5..22f466772de5 100644 --- a/packages/docusaurus/src/server/brokenLinks.ts +++ b/packages/docusaurus/src/server/brokenLinks.ts @@ -5,10 +5,12 @@ * LICENSE file in the root directory of this source tree. */ -import {matchRoutes} from 'react-router-config'; import fs from 'fs-extra'; +import path from 'path'; import _ from 'lodash'; -import type {RouteConfig, ReportingSeverity} from '@docusaurus/types'; +import logger from '@docusaurus/logger'; +import combinePromises from 'combine-promises'; +import {matchRoutes} from 'react-router-config'; import { removePrefix, removeSuffix, @@ -16,9 +18,7 @@ import { resolvePathname, } from '@docusaurus/utils'; import {getAllFinalRoutes} from './utils'; -import path from 'path'; -import combinePromises from 'combine-promises'; -import logger from '@docusaurus/logger'; +import type {RouteConfig, ReportingSeverity} from '@docusaurus/types'; type BrokenLink = { link: string; diff --git a/packages/docusaurus/src/server/config.ts b/packages/docusaurus/src/server/config.ts index 84b4975f1249..13ab71215c25 100644 --- a/packages/docusaurus/src/server/config.ts +++ b/packages/docusaurus/src/server/config.ts @@ -9,8 +9,8 @@ import path from 'path'; import fs from 'fs-extra'; import importFresh from 'import-fresh'; import {DEFAULT_CONFIG_FILE_NAME} from '@docusaurus/utils'; -import type {LoadContext} from '@docusaurus/types'; import {validateConfig} from './configValidation'; +import type {LoadContext} from '@docusaurus/types'; export async function loadSiteConfig({ siteDir, diff --git a/packages/docusaurus/src/server/configValidation.ts b/packages/docusaurus/src/server/configValidation.ts index f8a0985903a8..d1c009ae66dd 100644 --- a/packages/docusaurus/src/server/configValidation.ts +++ b/packages/docusaurus/src/server/configValidation.ts @@ -5,12 +5,12 @@ * LICENSE file in the root directory of this source tree. */ -import type {DocusaurusConfig, I18nConfig} from '@docusaurus/types'; import { DEFAULT_CONFIG_FILE_NAME, DEFAULT_STATIC_DIR_NAME, } from '@docusaurus/utils'; import {Joi, URISchema, printWarning} from '@docusaurus/utils-validation'; +import type {DocusaurusConfig, I18nConfig} from '@docusaurus/types'; const DEFAULT_I18N_LOCALE = 'en'; diff --git a/packages/docusaurus/src/server/getHostPort.ts b/packages/docusaurus/src/server/getHostPort.ts index c9792a45ec65..40960bdfff9a 100644 --- a/packages/docusaurus/src/server/getHostPort.ts +++ b/packages/docusaurus/src/server/getHostPort.ts @@ -6,8 +6,8 @@ */ import {execSync, type ExecSyncOptionsWithStringEncoding} from 'child_process'; -import detect from 'detect-port'; import logger from '@docusaurus/logger'; +import detect from 'detect-port'; import {DEFAULT_PORT} from '@docusaurus/utils'; import prompts from 'prompts'; diff --git a/packages/docusaurus/src/server/htmlTags.ts b/packages/docusaurus/src/server/htmlTags.ts index c1e67b23c191..81cce416352a 100644 --- a/packages/docusaurus/src/server/htmlTags.ts +++ b/packages/docusaurus/src/server/htmlTags.ts @@ -5,10 +5,10 @@ * LICENSE file in the root directory of this source tree. */ +import _ from 'lodash'; import htmlTags from 'html-tags'; import voidHtmlTags from 'html-tags/void'; import escapeHTML from 'escape-html'; -import _ from 'lodash'; import type { Props, HtmlTagObject, diff --git a/packages/docusaurus/src/server/i18n.ts b/packages/docusaurus/src/server/i18n.ts index 57f639c14098..cd9bbe4990ea 100644 --- a/packages/docusaurus/src/server/i18n.ts +++ b/packages/docusaurus/src/server/i18n.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import {getLangDir} from 'rtl-detect'; import logger from '@docusaurus/logger'; +import {getLangDir} from 'rtl-detect'; import type {I18n, DocusaurusConfig, I18nLocaleConfig} from '@docusaurus/types'; import type {LoadContextOptions} from './index'; diff --git a/packages/docusaurus/src/server/index.ts b/packages/docusaurus/src/server/index.ts index 55b2466d11c9..4417f0f7f515 100644 --- a/packages/docusaurus/src/server/index.ts +++ b/packages/docusaurus/src/server/index.ts @@ -5,6 +5,8 @@ * LICENSE file in the root directory of this source tree. */ +import path from 'path'; +import _ from 'lodash'; import { generate, escapePath, @@ -13,8 +15,6 @@ import { DEFAULT_CONFIG_FILE_NAME, GENERATED_FILES_DIR_NAME, } from '@docusaurus/utils'; -import _ from 'lodash'; -import path from 'path'; import {loadSiteConfig} from './config'; import {loadClientModules} from './clientModules'; import {loadPlugins} from './plugins'; diff --git a/packages/docusaurus/src/server/plugins/__tests__/pluginIds.test.ts b/packages/docusaurus/src/server/plugins/__tests__/pluginIds.test.ts index 0c04a3fc03bd..a6315f59a813 100644 --- a/packages/docusaurus/src/server/plugins/__tests__/pluginIds.test.ts +++ b/packages/docusaurus/src/server/plugins/__tests__/pluginIds.test.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import type {InitializedPlugin} from '@docusaurus/types'; import {ensureUniquePluginInstanceIds} from '../pluginIds'; +import type {InitializedPlugin} from '@docusaurus/types'; function createTestPlugin(name: string, id?: string): InitializedPlugin { // @ts-expect-error: good enough for tests diff --git a/packages/docusaurus/src/server/plugins/index.ts b/packages/docusaurus/src/server/plugins/index.ts index 93553d18202d..812ea7b2e80e 100644 --- a/packages/docusaurus/src/server/plugins/index.ts +++ b/packages/docusaurus/src/server/plugins/index.ts @@ -5,8 +5,13 @@ * LICENSE file in the root directory of this source tree. */ -import {docuHash, generate} from '@docusaurus/utils'; import path from 'path'; +import _ from 'lodash'; +import {docuHash, generate} from '@docusaurus/utils'; +import {initPlugins} from './init'; +import {createBootstrapPlugin, createMDXFallbackPlugin} from './synthetic'; +import {localizePluginTranslationFile} from '../translations/translations'; +import {applyRouteTrailingSlash, sortConfig} from './routeConfig'; import type { LoadContext, PluginContentLoadedActions, @@ -17,11 +22,6 @@ import type { InitializedPlugin, PluginRouteContext, } from '@docusaurus/types'; -import {initPlugins} from './init'; -import {createBootstrapPlugin, createMDXFallbackPlugin} from './synthetic'; -import _ from 'lodash'; -import {localizePluginTranslationFile} from '../translations/translations'; -import {applyRouteTrailingSlash, sortConfig} from './routeConfig'; /** * Initializes the plugins, runs `loadContent`, `translateContent`, diff --git a/packages/docusaurus/src/server/plugins/init.ts b/packages/docusaurus/src/server/plugins/init.ts index 4bc0aa92da42..771a407cccb5 100644 --- a/packages/docusaurus/src/server/plugins/init.ts +++ b/packages/docusaurus/src/server/plugins/init.ts @@ -7,6 +7,14 @@ import {createRequire} from 'module'; import path from 'path'; +import {DEFAULT_PLUGIN_ID} from '@docusaurus/utils'; +import { + normalizePluginOptions, + normalizeThemeConfig, +} from '@docusaurus/utils-validation'; +import {getPluginVersion} from '../siteMetadata'; +import {ensureUniquePluginInstanceIds} from './pluginIds'; +import {loadPluginConfigs, type NormalizedPluginConfig} from './configs'; import type { PluginVersionInformation, LoadContext, @@ -14,14 +22,6 @@ import type { PluginOptions, InitializedPlugin, } from '@docusaurus/types'; -import {DEFAULT_PLUGIN_ID} from '@docusaurus/utils'; -import {getPluginVersion} from '../siteMetadata'; -import {ensureUniquePluginInstanceIds} from './pluginIds'; -import { - normalizePluginOptions, - normalizeThemeConfig, -} from '@docusaurus/utils-validation'; -import {loadPluginConfigs, type NormalizedPluginConfig} from './configs'; function getOptionValidationFunction( normalizedPluginConfig: NormalizedPluginConfig, diff --git a/packages/docusaurus/src/server/plugins/presets.ts b/packages/docusaurus/src/server/plugins/presets.ts index b45b06915b21..04b73357f38f 100644 --- a/packages/docusaurus/src/server/plugins/presets.ts +++ b/packages/docusaurus/src/server/plugins/presets.ts @@ -7,13 +7,13 @@ import {createRequire} from 'module'; import importFresh from 'import-fresh'; +import {resolveModuleName} from './moduleShorthand'; import type { LoadContext, PluginConfig, PresetModule, DocusaurusConfig, } from '@docusaurus/types'; -import {resolveModuleName} from './moduleShorthand'; type ImportedPresetModule = PresetModule & {default?: PresetModule}; diff --git a/packages/docusaurus/src/server/plugins/routeConfig.ts b/packages/docusaurus/src/server/plugins/routeConfig.ts index e5664dd1693f..e9b7c589408f 100644 --- a/packages/docusaurus/src/server/plugins/routeConfig.ts +++ b/packages/docusaurus/src/server/plugins/routeConfig.ts @@ -5,11 +5,11 @@ * LICENSE file in the root directory of this source tree. */ -import type {RouteConfig} from '@docusaurus/types'; import { applyTrailingSlash, type ApplyTrailingSlashParams, } from '@docusaurus/utils-common'; +import type {RouteConfig} from '@docusaurus/types'; /** Recursively applies trailing slash config to all nested routes. */ export function applyRouteTrailingSlash( diff --git a/packages/docusaurus/src/server/routes.ts b/packages/docusaurus/src/server/routes.ts index 87cfedf87a82..ab97b1a7b9d7 100644 --- a/packages/docusaurus/src/server/routes.ts +++ b/packages/docusaurus/src/server/routes.ts @@ -5,6 +5,8 @@ * LICENSE file in the root directory of this source tree. */ +import query from 'querystring'; +import _ from 'lodash'; import { docuHash, normalizeUrl, @@ -12,8 +14,6 @@ import { escapePath, reportMessage, } from '@docusaurus/utils'; -import _ from 'lodash'; -import query from 'querystring'; import {getAllFinalRoutes} from './utils'; import type { Module, diff --git a/packages/docusaurus/src/server/siteMetadata.ts b/packages/docusaurus/src/server/siteMetadata.ts index bde32ad967c3..b442eed15292 100644 --- a/packages/docusaurus/src/server/siteMetadata.ts +++ b/packages/docusaurus/src/server/siteMetadata.ts @@ -5,15 +5,15 @@ * LICENSE file in the root directory of this source tree. */ +import fs from 'fs-extra'; +import path from 'path'; +import logger from '@docusaurus/logger'; +import {DOCUSAURUS_VERSION} from '@docusaurus/utils'; import type { LoadedPlugin, PluginVersionInformation, SiteMetadata, } from '@docusaurus/types'; -import {DOCUSAURUS_VERSION} from '@docusaurus/utils'; -import fs from 'fs-extra'; -import path from 'path'; -import logger from '@docusaurus/logger'; async function getPackageJsonVersion( packageJsonPath: string, diff --git a/packages/docusaurus/src/server/translations/__tests__/translations.test.ts b/packages/docusaurus/src/server/translations/__tests__/translations.test.ts index 89240e3ea05e..f34318cd4707 100644 --- a/packages/docusaurus/src/server/translations/__tests__/translations.test.ts +++ b/packages/docusaurus/src/server/translations/__tests__/translations.test.ts @@ -6,6 +6,9 @@ */ import {jest} from '@jest/globals'; +import fs from 'fs-extra'; +import path from 'path'; +import tmp from 'tmp-promise'; import { writePluginTranslations, writeCodeTranslations, @@ -15,14 +18,11 @@ import { getPluginsDefaultCodeTranslationMessages, applyDefaultCodeTranslations, } from '../translations'; -import fs from 'fs-extra'; -import tmp from 'tmp-promise'; import type { InitializedPlugin, TranslationFile, TranslationFileContent, } from '@docusaurus/types'; -import path from 'path'; async function createTmpSiteDir() { const {path: siteDirPath} = await tmp.dir({ diff --git a/packages/docusaurus/src/server/translations/__tests__/translationsExtractor.test.ts b/packages/docusaurus/src/server/translations/__tests__/translationsExtractor.test.ts index 5b80021d7043..e06bc5f57d1f 100644 --- a/packages/docusaurus/src/server/translations/__tests__/translationsExtractor.test.ts +++ b/packages/docusaurus/src/server/translations/__tests__/translationsExtractor.test.ts @@ -6,16 +6,16 @@ */ import {jest} from '@jest/globals'; +import path from 'path'; import fs from 'fs-extra'; import tmp from 'tmp-promise'; +import {SRC_DIR_NAME} from '@docusaurus/utils'; import { extractSourceCodeFileTranslations, extractSiteSourceCodeTranslations, } from '../translationsExtractor'; import {getBabelOptions} from '../../../webpack/utils'; -import path from 'path'; import type {InitializedPlugin} from '@docusaurus/types'; -import {SRC_DIR_NAME} from '@docusaurus/utils'; const TestBabelOptions = getBabelOptions({ isServer: true, diff --git a/packages/docusaurus/src/server/translations/translations.ts b/packages/docusaurus/src/server/translations/translations.ts index 3e768b8a9041..fcbe5f5e1184 100644 --- a/packages/docusaurus/src/server/translations/translations.ts +++ b/packages/docusaurus/src/server/translations/translations.ts @@ -8,6 +8,7 @@ import path from 'path'; import fs from 'fs-extra'; import _ from 'lodash'; +import logger from '@docusaurus/logger'; import { getPluginI18nPath, toMessageRelativeFilePath, @@ -15,7 +16,6 @@ import { CODE_TRANSLATIONS_FILE_NAME, } from '@docusaurus/utils'; import {Joi} from '@docusaurus/utils-validation'; -import logger from '@docusaurus/logger'; import type { TranslationFileContent, TranslationFile, diff --git a/packages/docusaurus/src/server/translations/translationsExtractor.ts b/packages/docusaurus/src/server/translations/translationsExtractor.ts index 73a1a0cbfe7c..569c3314b112 100644 --- a/packages/docusaurus/src/server/translations/translationsExtractor.ts +++ b/packages/docusaurus/src/server/translations/translationsExtractor.ts @@ -5,23 +5,23 @@ * LICENSE file in the root directory of this source tree. */ +import nodePath from 'path'; import fs from 'fs-extra'; +import logger from '@docusaurus/logger'; import traverse, {type Node} from '@babel/traverse'; import generate from '@babel/generator'; -import logger from '@docusaurus/logger'; import { parse, type types as t, type NodePath, type TransformOptions, } from '@babel/core'; +import {SRC_DIR_NAME} from '@docusaurus/utils'; +import {safeGlobby} from '../utils'; import type { InitializedPlugin, TranslationFileContent, } from '@docusaurus/types'; -import nodePath from 'path'; -import {SRC_DIR_NAME} from '@docusaurus/utils'; -import {safeGlobby} from '../utils'; // We only support extracting source code translations from these kind of files const TranslatableSourceCodeExtension = new Set([ diff --git a/packages/docusaurus/src/server/utils.ts b/packages/docusaurus/src/server/utils.ts index e4e22df7d9da..e0e67454c7ea 100644 --- a/packages/docusaurus/src/server/utils.ts +++ b/packages/docusaurus/src/server/utils.ts @@ -5,9 +5,9 @@ * LICENSE file in the root directory of this source tree. */ -import type {RouteConfig} from '@docusaurus/types'; import path from 'path'; import {posixPath, Globby} from '@docusaurus/utils'; +import type {RouteConfig} from '@docusaurus/types'; // Recursively get the final routes (routes with no subroutes) export function getAllFinalRoutes(routeConfig: RouteConfig[]): RouteConfig[] { diff --git a/packages/docusaurus/src/webpack/__tests__/base.test.ts b/packages/docusaurus/src/webpack/__tests__/base.test.ts index 93b1de8c19d8..3e39adfda435 100644 --- a/packages/docusaurus/src/webpack/__tests__/base.test.ts +++ b/packages/docusaurus/src/webpack/__tests__/base.test.ts @@ -7,11 +7,10 @@ import {jest} from '@jest/globals'; import path from 'path'; - -import {excludeJS, clientDir, createBaseConfig} from '../base'; +import _ from 'lodash'; import * as utils from '@docusaurus/utils/lib/webpackUtils'; import {posixPath} from '@docusaurus/utils'; -import _ from 'lodash'; +import {excludeJS, clientDir, createBaseConfig} from '../base'; import type {Props} from '@docusaurus/types'; describe('babel transpilation exclude logic', () => { diff --git a/packages/docusaurus/src/webpack/__tests__/utils.test.ts b/packages/docusaurus/src/webpack/__tests__/utils.test.ts index 664679e3f689..411ed9180469 100644 --- a/packages/docusaurus/src/webpack/__tests__/utils.test.ts +++ b/packages/docusaurus/src/webpack/__tests__/utils.test.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import webpack, {type Configuration, type RuleSetRule} from 'webpack'; import path from 'path'; +import webpack, {type Configuration, type RuleSetRule} from 'webpack'; import { getCustomizableJSLoader, diff --git a/packages/docusaurus/src/webpack/aliases/index.ts b/packages/docusaurus/src/webpack/aliases/index.ts index b48184b8ab8b..dbade3a77e36 100644 --- a/packages/docusaurus/src/webpack/aliases/index.ts +++ b/packages/docusaurus/src/webpack/aliases/index.ts @@ -7,6 +7,7 @@ import fs from 'fs-extra'; import path from 'path'; +import _ from 'lodash'; import { THEME_PATH, fileToPath, @@ -14,7 +15,6 @@ import { normalizeUrl, Globby, } from '@docusaurus/utils'; -import _ from 'lodash'; import type {LoadedPlugin} from '@docusaurus/types'; /** diff --git a/packages/docusaurus/src/webpack/base.ts b/packages/docusaurus/src/webpack/base.ts index 45a81c1031a4..4e00fecefaf1 100644 --- a/packages/docusaurus/src/webpack/base.ts +++ b/packages/docusaurus/src/webpack/base.ts @@ -6,10 +6,9 @@ */ import fs from 'fs-extra'; -import MiniCssExtractPlugin from 'mini-css-extract-plugin'; import path from 'path'; -import type {Configuration} from 'webpack'; -import type {Props} from '@docusaurus/types'; +import MiniCssExtractPlugin from 'mini-css-extract-plugin'; +import {md5Hash, getFileLoaderUtils} from '@docusaurus/utils'; import { getCustomizableJSLoader, getStyleLoaders, @@ -17,7 +16,8 @@ import { getMinimizer, } from './utils'; import {loadThemeAliases, loadDocusaurusAliases} from './aliases'; -import {md5Hash, getFileLoaderUtils} from '@docusaurus/utils'; +import type {Configuration} from 'webpack'; +import type {Props} from '@docusaurus/types'; const CSS_REGEX = /\.css$/i; const CSS_MODULE_REGEX = /\.module\.css$/i; diff --git a/packages/docusaurus/src/webpack/client.ts b/packages/docusaurus/src/webpack/client.ts index f7ca7de770b2..cd2d59720a32 100644 --- a/packages/docusaurus/src/webpack/client.ts +++ b/packages/docusaurus/src/webpack/client.ts @@ -5,15 +5,14 @@ * LICENSE file in the root directory of this source tree. */ -import logger from '@docusaurus/logger'; import path from 'path'; -import type {Configuration} from 'webpack'; +import logger from '@docusaurus/logger'; import merge from 'webpack-merge'; - -import type {Props} from '@docusaurus/types'; import {createBaseConfig} from './base'; import ChunkAssetPlugin from './plugins/ChunkAssetPlugin'; import LogPlugin from './plugins/LogPlugin'; +import type {Props} from '@docusaurus/types'; +import type {Configuration} from 'webpack'; export default async function createClientConfig( props: Props, diff --git a/packages/docusaurus/src/webpack/plugins/CleanWebpackPlugin.ts b/packages/docusaurus/src/webpack/plugins/CleanWebpackPlugin.ts index 46b4ca424fde..5a8f4770102a 100644 --- a/packages/docusaurus/src/webpack/plugins/CleanWebpackPlugin.ts +++ b/packages/docusaurus/src/webpack/plugins/CleanWebpackPlugin.ts @@ -29,9 +29,9 @@ // Modified to optimize performance for Docusaurus specific use case // More context: https://github.com/facebook/docusaurus/pull/1839 -import type {Compiler, Stats} from 'webpack'; import path from 'path'; import {sync as delSync} from 'del'; +import type {Compiler, Stats} from 'webpack'; export type Options = { /** diff --git a/packages/docusaurus/src/webpack/plugins/LogPlugin.ts b/packages/docusaurus/src/webpack/plugins/LogPlugin.ts index e8e79b008057..a1703d2bcac6 100644 --- a/packages/docusaurus/src/webpack/plugins/LogPlugin.ts +++ b/packages/docusaurus/src/webpack/plugins/LogPlugin.ts @@ -6,8 +6,8 @@ */ import WebpackBar from 'webpackbar'; -import type {Compiler} from 'webpack'; import formatWebpackMessages from 'react-dev-utils/formatWebpackMessages'; +import type {Compiler} from 'webpack'; function showError(arr: string[]) { console.log(`\n\n${arr.join('\n')}`); diff --git a/packages/docusaurus/src/webpack/server.ts b/packages/docusaurus/src/webpack/server.ts index c0aab9ed99d9..7f93c86a4bb9 100644 --- a/packages/docusaurus/src/webpack/server.ts +++ b/packages/docusaurus/src/webpack/server.ts @@ -6,24 +6,22 @@ */ import path from 'path'; -import type {Configuration} from 'webpack'; import merge from 'webpack-merge'; - -import type {Props} from '@docusaurus/types'; -import {createBaseConfig} from './base'; -import WaitPlugin from './plugins/WaitPlugin'; -import LogPlugin from './plugins/LogPlugin'; import { NODE_MAJOR_VERSION, NODE_MINOR_VERSION, DOCUSAURUS_VERSION, } from '@docusaurus/utils'; -import ssrDefaultTemplate from './templates/ssr.html.template'; - // Forked for Docusaurus: https://github.com/slorber/static-site-generator-webpack-plugin import StaticSiteGeneratorPlugin, { type Locals, } from '@slorber/static-site-generator-webpack-plugin'; +import {createBaseConfig} from './base'; +import WaitPlugin from './plugins/WaitPlugin'; +import LogPlugin from './plugins/LogPlugin'; +import ssrDefaultTemplate from './templates/ssr.html.template'; +import type {Props} from '@docusaurus/types'; +import type {Configuration} from 'webpack'; export default async function createServerConfig({ props, diff --git a/packages/docusaurus/src/webpack/utils.ts b/packages/docusaurus/src/webpack/utils.ts index 8f32ddc27703..79362887679e 100644 --- a/packages/docusaurus/src/webpack/utils.ts +++ b/packages/docusaurus/src/webpack/utils.ts @@ -5,6 +5,11 @@ * LICENSE file in the root directory of this source tree. */ +import fs from 'fs-extra'; +import path from 'path'; +import crypto from 'crypto'; +import logger from '@docusaurus/logger'; +import {BABEL_CONFIG_FILE_NAME} from '@docusaurus/utils'; import MiniCssExtractPlugin from 'mini-css-extract-plugin'; import { mergeWithCustomize, @@ -16,20 +21,15 @@ import webpack, { type RuleSetRule, type WebpackPluginInstance, } from 'webpack'; -import fs from 'fs-extra'; import TerserPlugin from 'terser-webpack-plugin'; -import type {CustomOptions, CssNanoOptions} from 'css-minimizer-webpack-plugin'; import CssMinimizerPlugin from 'css-minimizer-webpack-plugin'; -import path from 'path'; -import crypto from 'crypto'; -import logger from '@docusaurus/logger'; +import type {CustomOptions, CssNanoOptions} from 'css-minimizer-webpack-plugin'; import type {TransformOptions} from '@babel/core'; import type { Plugin, PostCssOptions, ConfigureWebpackUtils, } from '@docusaurus/types'; -import {BABEL_CONFIG_FILE_NAME} from '@docusaurus/utils'; // Utility method to get style loaders export function getStyleLoaders( diff --git a/packages/lqip-loader/src/lqip.ts b/packages/lqip-loader/src/lqip.ts index b6286872b44d..c26956f19e9c 100644 --- a/packages/lqip-loader/src/lqip.ts +++ b/packages/lqip-loader/src/lqip.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import logger from '@docusaurus/logger'; import path from 'path'; +import logger from '@docusaurus/logger'; import sharp from 'sharp'; // eslint-disable-next-line @typescript-eslint/no-var-requires diff --git a/packages/stylelint-copyright/__tests__/index.test.js b/packages/stylelint-copyright/__tests__/index.test.js index 20de7dbae8f2..d2373e3d9988 100644 --- a/packages/stylelint-copyright/__tests__/index.test.js +++ b/packages/stylelint-copyright/__tests__/index.test.js @@ -6,8 +6,8 @@ */ /* eslint-disable jest/no-conditional-expect */ -const stylelint = require('stylelint'); const path = require('path'); +const stylelint = require('stylelint'); const rule = require('..'); const {ruleName, messages} = rule; diff --git a/website/_dogfooding/_pages tests/error-boundary-tests.tsx b/website/_dogfooding/_pages tests/error-boundary-tests.tsx index a669c7f2afb3..100c7e6c0d2f 100644 --- a/website/_dogfooding/_pages tests/error-boundary-tests.tsx +++ b/website/_dogfooding/_pages tests/error-boundary-tests.tsx @@ -6,8 +6,8 @@ */ import React from 'react'; -import Layout from '@theme/Layout'; import Interpolate from '@docusaurus/Interpolate'; +import Layout from '@theme/Layout'; import ErrorBoundaryTestButton from '@site/src/components/ErrorBoundaryTestButton'; diff --git a/website/_dogfooding/_pages tests/link-tests.tsx b/website/_dogfooding/_pages tests/link-tests.tsx index d0afa2ef4f0a..d1c7c448079c 100644 --- a/website/_dogfooding/_pages tests/link-tests.tsx +++ b/website/_dogfooding/_pages tests/link-tests.tsx @@ -6,8 +6,8 @@ */ import React, {useRef} from 'react'; -import Layout from '@theme/Layout'; import Link from '@docusaurus/Link'; +import Layout from '@theme/Layout'; export default function LinkTest(): JSX.Element { const anchorRef = useRef<HTMLAnchorElement>(null); diff --git a/website/community/4-canary/Versions.tsx b/website/community/4-canary/Versions.tsx index 10e1fdd1ec25..a36907b10cf4 100644 --- a/website/community/4-canary/Versions.tsx +++ b/website/community/4-canary/Versions.tsx @@ -8,8 +8,8 @@ import React, {useContext, useEffect, useState, type ReactNode} from 'react'; import {useDocsPreferredVersion} from '@docusaurus/theme-common'; import {useVersions} from '@docusaurus/plugin-content-docs/client'; -import CodeBlock from '@theme/CodeBlock'; import Translate from '@docusaurus/Translate'; +import CodeBlock from '@theme/CodeBlock'; type ContextValue = { name: string; diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js index 4c373b359cd1..6fb03a168d59 100644 --- a/website/docusaurus.config.js +++ b/website/docusaurus.config.js @@ -7,14 +7,14 @@ // @ts-check const path = require('path'); -const versions = require('./versions.json'); const math = require('remark-math'); +const npm2yarn = require('@docusaurus/remark-plugin-npm2yarn'); +const versions = require('./versions.json'); const VersionsArchived = require('./versionsArchived.json'); const { dogfoodingPluginInstances, dogfoodingThemeInstances, } = require('./_dogfooding/dogfooding.config'); -const npm2yarn = require('@docusaurus/remark-plugin-npm2yarn'); const ArchivedVersionsDropdownItems = Object.entries(VersionsArchived).splice( 0, diff --git a/website/src/components/ColorGenerator/index.tsx b/website/src/components/ColorGenerator/index.tsx index 0ce0d508e358..2fba54627f99 100644 --- a/website/src/components/ColorGenerator/index.tsx +++ b/website/src/components/ColorGenerator/index.tsx @@ -8,12 +8,11 @@ import React, {useEffect, useState} from 'react'; import clsx from 'clsx'; import Color from 'color'; -import CodeBlock from '@theme/CodeBlock'; -import Admonition from '@theme/Admonition'; import Link from '@docusaurus/Link'; import Translate from '@docusaurus/Translate'; import {useColorMode} from '@docusaurus/theme-common'; - +import CodeBlock from '@theme/CodeBlock'; +import Admonition from '@theme/Admonition'; import { type ColorState, COLOR_SHADES, diff --git a/website/src/components/Playground/index.tsx b/website/src/components/Playground/index.tsx index 45c4186fa397..a661c965c270 100644 --- a/website/src/components/Playground/index.tsx +++ b/website/src/components/Playground/index.tsx @@ -8,10 +8,10 @@ /* eslint-disable global-require */ import React from 'react'; +import clsx from 'clsx'; import Translate from '@docusaurus/Translate'; import Link from '@docusaurus/Link'; import Image from '@theme/IdealImage'; -import clsx from 'clsx'; const Playgrounds = [ { diff --git a/website/src/components/UpgradeGuide/index.tsx b/website/src/components/UpgradeGuide/index.tsx index 0ba1913aae74..01d1131cc9b5 100644 --- a/website/src/components/UpgradeGuide/index.tsx +++ b/website/src/components/UpgradeGuide/index.tsx @@ -11,11 +11,11 @@ import { useActiveDocContext, useVersions, } from '@docusaurus/plugin-content-docs/client'; -import Admonition from '@theme/Admonition'; import Link from '@docusaurus/Link'; -import CodeBlock from '@theme/CodeBlock'; import useIsBrowser from '@docusaurus/useIsBrowser'; import Translate from '@docusaurus/Translate'; +import Admonition from '@theme/Admonition'; +import CodeBlock from '@theme/CodeBlock'; function PackageJson() { const latestVersion = useLatestVersion(); diff --git a/website/src/data/__tests__/user.test.ts b/website/src/data/__tests__/user.test.ts index 1cd0f4ebe529..06f76b53d1cb 100644 --- a/website/src/data/__tests__/user.test.ts +++ b/website/src/data/__tests__/user.test.ts @@ -5,12 +5,11 @@ * LICENSE file in the root directory of this source tree. */ -import {TagList, sortedUsers, type User} from '../users'; -import {Joi} from '@docusaurus/utils-validation'; - import fs from 'fs-extra'; import path from 'path'; import imageSize from 'image-size'; +import {Joi} from '@docusaurus/utils-validation'; +import {TagList, sortedUsers, type User} from '../users'; declare global { namespace jest { diff --git a/website/src/pages/index.tsx b/website/src/pages/index.tsx index d2ccfc69aaca..62363cbbd647 100644 --- a/website/src/pages/index.tsx +++ b/website/src/pages/index.tsx @@ -6,6 +6,9 @@ */ import React from 'react'; +import clsx from 'clsx'; +import LiteYouTubeEmbed from 'react-lite-youtube-embed'; +import 'react-lite-youtube-embed/dist/LiteYouTubeEmbed.css'; import Link from '@docusaurus/Link'; import Translate, {translate} from '@docusaurus/Translate'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; @@ -18,10 +21,6 @@ import Tweet from '@site/src/components/Tweet'; import Tweets, {type TweetItem} from '@site/src/data/tweets'; import Quotes from '@site/src/data/quotes'; import Features, {type FeatureItem} from '@site/src/data/features'; -import LiteYouTubeEmbed from 'react-lite-youtube-embed'; -import 'react-lite-youtube-embed/dist/LiteYouTubeEmbed.css'; - -import clsx from 'clsx'; import styles from './styles.module.css'; diff --git a/website/src/pages/showcase/_components/ShowcaseCard/index.tsx b/website/src/pages/showcase/_components/ShowcaseCard/index.tsx index a09b4c5e4909..39c6c07f19dd 100644 --- a/website/src/pages/showcase/_components/ShowcaseCard/index.tsx +++ b/website/src/pages/showcase/_components/ShowcaseCard/index.tsx @@ -7,13 +7,10 @@ import React from 'react'; import clsx from 'clsx'; -import Image from '@theme/IdealImage'; import Link from '@docusaurus/Link'; import Translate from '@docusaurus/Translate'; - -import styles from './styles.module.css'; +import Image from '@theme/IdealImage'; import FavoriteIcon from '@site/src/components/svgIcons/FavoriteIcon'; -import Tooltip from '../ShowcaseTooltip'; import { Tags, TagList, @@ -22,6 +19,8 @@ import { type Tag, } from '@site/src/data/users'; import {sortBy} from '@site/src/utils/jsUtils'; +import Tooltip from '../ShowcaseTooltip'; +import styles from './styles.module.css'; const TagComp = React.forwardRef<HTMLLIElement, Tag>( ({label, color, description}, ref) => ( diff --git a/website/src/pages/showcase/_components/ShowcaseFilterToggle/index.tsx b/website/src/pages/showcase/_components/ShowcaseFilterToggle/index.tsx index 8df064852eec..acb4516d111f 100644 --- a/website/src/pages/showcase/_components/ShowcaseFilterToggle/index.tsx +++ b/website/src/pages/showcase/_components/ShowcaseFilterToggle/index.tsx @@ -6,12 +6,12 @@ */ import React, {useState, useEffect, useCallback} from 'react'; +import clsx from 'clsx'; import {useHistory, useLocation} from '@docusaurus/router'; import {prepareUserState} from '../../index'; import styles from './styles.module.css'; -import clsx from 'clsx'; export type Operator = 'OR' | 'AND'; diff --git a/website/src/pages/showcase/_components/ShowcaseTagSelect/index.tsx b/website/src/pages/showcase/_components/ShowcaseTagSelect/index.tsx index 29ed978841b9..7495cf42eb58 100644 --- a/website/src/pages/showcase/_components/ShowcaseTagSelect/index.tsx +++ b/website/src/pages/showcase/_components/ShowcaseTagSelect/index.tsx @@ -15,9 +15,9 @@ import React, { } from 'react'; import {useHistory, useLocation} from '@docusaurus/router'; import {toggleListItem} from '@site/src/utils/jsUtils'; -import {prepareUserState} from '../../index'; import type {TagType} from '@site/src/data/users'; +import {prepareUserState} from '../../index'; import styles from './styles.module.css'; interface Props extends ComponentProps<'input'> { diff --git a/website/src/pages/showcase/index.tsx b/website/src/pages/showcase/index.tsx index e3a576ca3c1c..0cfd04de3d27 100644 --- a/website/src/pages/showcase/index.tsx +++ b/website/src/pages/showcase/index.tsx @@ -6,11 +6,21 @@ */ import React, {useState, useMemo, useEffect} from 'react'; - -import Layout from '@theme/Layout'; import clsx from 'clsx'; +import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment'; +import Translate, {translate} from '@docusaurus/Translate'; +import {useHistory, useLocation} from '@docusaurus/router'; +import {usePluralForm} from '@docusaurus/theme-common'; +import Layout from '@theme/Layout'; import FavoriteIcon from '@site/src/components/svgIcons/FavoriteIcon'; +import { + sortedUsers, + Tags, + TagList, + type User, + type TagType, +} from '@site/src/data/users'; import ShowcaseTagSelect, { readSearchTags, } from './_components/ShowcaseTagSelect'; @@ -19,20 +29,8 @@ import ShowcaseFilterToggle, { readOperator, } from './_components/ShowcaseFilterToggle'; import ShowcaseCard from './_components/ShowcaseCard'; -import { - sortedUsers, - Tags, - TagList, - type User, - type TagType, -} from '@site/src/data/users'; import ShowcaseTooltip from './_components/ShowcaseTooltip'; -import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment'; -import Translate, {translate} from '@docusaurus/Translate'; -import {useHistory, useLocation} from '@docusaurus/router'; -import {usePluralForm} from '@docusaurus/theme-common'; - import styles from './styles.module.css'; const TITLE = 'Docusaurus Site Showcase'; diff --git a/website/src/pages/versions.tsx b/website/src/pages/versions.tsx index c9239d28edb6..9db0ec5d10ee 100644 --- a/website/src/pages/versions.tsx +++ b/website/src/pages/versions.tsx @@ -8,14 +8,13 @@ import React from 'react'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; import Link from '@docusaurus/Link'; -import Layout from '@theme/Layout'; -import Heading from '@theme/Heading'; import Translate from '@docusaurus/Translate'; import { useVersions, useLatestVersion, } from '@docusaurus/plugin-content-docs/client'; - +import Layout from '@theme/Layout'; +import Heading from '@theme/Heading'; import VersionsArchived from '@site/versionsArchived.json'; const VersionsArchivedList = Object.entries(VersionsArchived); diff --git a/website/src/plugins/changelog/theme/ChangelogAuthors/index.tsx b/website/src/plugins/changelog/theme/ChangelogAuthors/index.tsx index 0ca25fbe7cb9..57be25cbd4a0 100644 --- a/website/src/plugins/changelog/theme/ChangelogAuthors/index.tsx +++ b/website/src/plugins/changelog/theme/ChangelogAuthors/index.tsx @@ -7,11 +7,11 @@ import React, {useState} from 'react'; import clsx from 'clsx'; -import type {Props} from '@theme/BlogPostAuthors'; import ChangelogAuthor from '@theme/ChangelogAuthor'; +import IconExpand from '@theme/IconExpand'; +import type {Props} from '@theme/BlogPostAuthors'; import styles from './styles.module.css'; -import IconExpand from '@theme/IconExpand'; // Component responsible for the authors layout export default function BlogPostAuthors({ diff --git a/website/src/plugins/changelog/theme/ChangelogItem/index.tsx b/website/src/plugins/changelog/theme/ChangelogItem/index.tsx index fea34d46bcad..fee206306260 100644 --- a/website/src/plugins/changelog/theme/ChangelogItem/index.tsx +++ b/website/src/plugins/changelog/theme/ChangelogItem/index.tsx @@ -12,10 +12,10 @@ import Link from '@docusaurus/Link'; import {useBaseUrlUtils} from '@docusaurus/useBaseUrl'; import {blogPostContainerID} from '@docusaurus/utils-common'; import MDXComponents from '@theme/MDXComponents'; +import ChangelogAuthors from '@theme/ChangelogAuthors'; import type {Props} from '@theme/BlogPostItem'; import styles from './styles.module.css'; -import ChangelogAuthors from '@theme/ChangelogAuthors'; export default function ChangelogItem(props: Props): JSX.Element { const {withBaseUrl} = useBaseUrlUtils(); diff --git a/website/src/plugins/changelog/theme/ChangelogList/index.tsx b/website/src/plugins/changelog/theme/ChangelogList/index.tsx index cf0d7b7297a3..17aceebb6f01 100644 --- a/website/src/plugins/changelog/theme/ChangelogList/index.tsx +++ b/website/src/plugins/changelog/theme/ChangelogList/index.tsx @@ -6,21 +6,21 @@ */ import React from 'react'; -import BlogLayout from '@theme/BlogLayout'; -import BlogListPaginator from '@theme/BlogListPaginator'; +import clsx from 'clsx'; import Translate from '@docusaurus/Translate'; -import type {Props} from '@theme/BlogListPage'; +import Link from '@docusaurus/Link'; import { PageMetadata, HtmlClassNameProvider, ThemeClassNames, } from '@docusaurus/theme-common'; -import Link from '@docusaurus/Link'; +import BlogLayout from '@theme/BlogLayout'; +import BlogListPaginator from '@theme/BlogListPaginator'; +import SearchMetadata from '@theme/SearchMetadata'; import ChangelogItem from '@theme/ChangelogItem'; +import type {Props} from '@theme/BlogListPage'; import styles from './styles.module.css'; -import SearchMetadata from '@theme/SearchMetadata'; -import clsx from 'clsx'; function ChangelogListMetadata(props: Props): JSX.Element { const {metadata} = props; diff --git a/website/src/plugins/changelog/theme/ChangelogPage/index.tsx b/website/src/plugins/changelog/theme/ChangelogPage/index.tsx index ef45aa304e6b..7ce92e1707d2 100644 --- a/website/src/plugins/changelog/theme/ChangelogPage/index.tsx +++ b/website/src/plugins/changelog/theme/ChangelogPage/index.tsx @@ -6,19 +6,19 @@ */ import React from 'react'; +import clsx from 'clsx'; import Translate from '@docusaurus/Translate'; -import BlogLayout from '@theme/BlogLayout'; -import ChangelogItem from '@theme/ChangelogItem'; -import ChangelogPaginator from '@theme/ChangelogPaginator'; -import type {Props} from '@theme/BlogPostPage'; +import Link from '@docusaurus/Link'; import { PageMetadata, HtmlClassNameProvider, ThemeClassNames, } from '@docusaurus/theme-common'; +import BlogLayout from '@theme/BlogLayout'; +import ChangelogItem from '@theme/ChangelogItem'; +import ChangelogPaginator from '@theme/ChangelogPaginator'; import TOC from '@theme/TOC'; -import Link from '@docusaurus/Link'; -import clsx from 'clsx'; +import type {Props} from '@theme/BlogPostPage'; function ChangelogPageMetadata(props: Props): JSX.Element { const {content: BlogPostContents} = props; diff --git a/website/src/plugins/featureRequests/FeatureRequestsPage.tsx b/website/src/plugins/featureRequests/FeatureRequestsPage.tsx index 516f490485d2..f5d836130b53 100644 --- a/website/src/plugins/featureRequests/FeatureRequestsPage.tsx +++ b/website/src/plugins/featureRequests/FeatureRequestsPage.tsx @@ -6,10 +6,10 @@ */ import React, {useEffect} from 'react'; +import clsx from 'clsx'; import Layout from '@theme/Layout'; import cannyScript from './cannyScript'; -import clsx from 'clsx'; import styles from './styles.module.css'; const BOARD_TOKEN = '054e0e53-d951-b14c-7e74-9eb8f9ed2f91'; diff --git a/website/src/theme/CodeBlock/index.tsx b/website/src/theme/CodeBlock/index.tsx index dd5aedfc18de..82dc1b0f5f14 100644 --- a/website/src/theme/CodeBlock/index.tsx +++ b/website/src/theme/CodeBlock/index.tsx @@ -6,8 +6,8 @@ */ import React from 'react'; -import type {Props} from '@theme/CodeBlock'; import CodeBlock from '@theme-original/CodeBlock'; +import type {Props} from '@theme/CodeBlock'; // This component does nothing on purpose // Dogfood: wrapping a theme component already enhanced by another theme diff --git a/website/src/theme/ColorModeToggle.tsx b/website/src/theme/ColorModeToggle.tsx index e9e653d163ab..44f81a00ff66 100644 --- a/website/src/theme/ColorModeToggle.tsx +++ b/website/src/theme/ColorModeToggle.tsx @@ -7,7 +7,6 @@ import React from 'react'; import OriginalToggle from '@theme-original/ColorModeToggle'; -import type {Props} from '@theme/ColorModeToggle'; import { lightStorage, darkStorage, @@ -19,6 +18,7 @@ import { DARK_BACKGROUND_COLOR, COLOR_SHADES, } from '@site/src/utils/colorUtils'; +import type {Props} from '@theme/ColorModeToggle'; // The ColorGenerator modifies the DOM styles. The styles are persisted in // session storage, and we need to apply the same style when toggling modes even diff --git a/website/src/theme/DocSidebar/Desktop/Content/index.js b/website/src/theme/DocSidebar/Desktop/Content/index.js index 0d47b8eec978..19d30bc26001 100644 --- a/website/src/theme/DocSidebar/Desktop/Content/index.js +++ b/website/src/theme/DocSidebar/Desktop/Content/index.js @@ -6,8 +6,8 @@ */ import React from 'react'; -import Content from '@theme-original/DocSidebar/Desktop/Content'; import {useLocation} from '@docusaurus/router'; +import Content from '@theme-original/DocSidebar/Desktop/Content'; function SidebarAd() { return ( diff --git a/website/src/theme/Layout/index.tsx b/website/src/theme/Layout/index.tsx index 78f03a793f88..44034528edcd 100644 --- a/website/src/theme/Layout/index.tsx +++ b/website/src/theme/Layout/index.tsx @@ -6,8 +6,8 @@ */ import React from 'react'; -import type {Props} from '@theme/Layout'; import Layout from '@theme-original/Layout'; +import type {Props} from '@theme/Layout'; // This component is only used to test for CSS insertion order import './styles.module.css'; From 8277b0bec7d4c4270f36525b8f3688c4a2a45e00 Mon Sep 17 00:00:00 2001 From: Joshua Chen <sidachen2003@gmail.com> Date: Sat, 14 May 2022 23:47:40 +0800 Subject: [PATCH 05/32] docs: add FAST to showcase (#7384) * add fast to showcase * add fast png to showcase * update tags, update website link, and upload new screenshot * optimize image Co-authored-by: Steph Huynh <steph@huynhicode.dev> --- website/src/data/showcase/fast.png | Bin 0 -> 38221 bytes website/src/data/users.tsx | 8 ++++++++ 2 files changed, 8 insertions(+) create mode 100644 website/src/data/showcase/fast.png diff --git a/website/src/data/showcase/fast.png b/website/src/data/showcase/fast.png new file mode 100644 index 0000000000000000000000000000000000000000..c69425f7660c78981b656ea20c9c6f6359604368 GIT binary patch literal 38221 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ࡊqk7#z0^W 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 V0SnQ;bf^FT002ovPDHLkV1o5veBJ;6 literal 0 HcmV?d00001 diff --git a/website/src/data/users.tsx b/website/src/data/users.tsx index 94855cab381e..8769a9746c1d 100644 --- a/website/src/data/users.tsx +++ b/website/src/data/users.tsx @@ -631,6 +631,14 @@ const Users: User[] = [ source: 'https://github.com/eta-dev/eta-docs', tags: ['opensource'], }, + { + title: 'FAST', + description: 'The adaptive interface system for modern web experiences.', + preview: require('./showcase/fast.png'), + website: 'https://www.fast.design/docs/introduction/', + source: 'https://github.com/microsoft/fast/tree/master/sites/website', + tags: ['opensource', 'product'], + }, { title: 'FBT', description: 'An internationalization framework', From 7ea59b4e55ed9ced374db639dbd3b68161a336a3 Mon Sep 17 00:00:00 2001 From: Joshua Chen <sidachen2003@gmail.com> Date: Sun, 15 May 2022 12:47:33 +0800 Subject: [PATCH 06/32] refactor(pwa): migrate client modules to TS (#7421) --- .../src/{registerSw.js => registerSw.ts} | 29 +++++++++++++++---- ...erReloadPopup.js => renderReloadPopup.tsx} | 10 ++++--- .../tsconfig.browser.json | 7 ++++- .../tsconfig.server.json | 8 ++++- 4 files changed, 43 insertions(+), 11 deletions(-) rename packages/docusaurus-plugin-pwa/src/{registerSw.js => registerSw.ts} (93%) rename packages/docusaurus-plugin-pwa/src/{renderReloadPopup.js => renderReloadPopup.tsx} (75%) diff --git a/packages/docusaurus-plugin-pwa/src/registerSw.js b/packages/docusaurus-plugin-pwa/src/registerSw.ts similarity index 93% rename from packages/docusaurus-plugin-pwa/src/registerSw.js rename to packages/docusaurus-plugin-pwa/src/registerSw.ts index 9226d9a6f054..a215a656aa58 100644 --- a/packages/docusaurus-plugin-pwa/src/registerSw.js +++ b/packages/docusaurus-plugin-pwa/src/registerSw.ts @@ -7,6 +7,14 @@ import {createStorageSlot} from '@docusaurus/theme-common'; +declare global { + namespace NodeJS { + interface ProcessEnv { + PWA_OFFLINE_MODE_ACTIVATION_STRATEGIES: (keyof typeof OfflineModeActivationStrategiesImplementations)[]; + } + } +} + // First: read the env variables (provided by Webpack) /* eslint-disable prefer-destructuring */ const PWA_SERVICE_WORKER_URL = process.env.PWA_SERVICE_WORKER_URL; @@ -34,7 +42,7 @@ async function clearRegistrations() { } await Promise.all( registrations.map(async (registration) => { - const result = await registration?.registration?.unregister(); + const result = await registration?.unregister(); if (debug) { console.log( `[Docusaurus-PWA][registerSw]: unregister() service worker registration`, @@ -65,6 +73,14 @@ https://stackoverflow.com/questions/51735869/check-if-user-has-already-installed async function isAppInstalledEventFired() { return AppInstalledEventFiredStorage.get() === 'true'; } + +declare global { + interface Navigator { + getInstalledRelatedApps: () => Promise<{platform: string}[]>; + connection: {saveData: boolean}; + } +} + async function isAppInstalledRelatedApps() { if ('getInstalledRelatedApps' in window.navigator) { const relatedApps = await navigator.getInstalledRelatedApps(); @@ -90,7 +106,9 @@ const OfflineModeActivationStrategiesImplementations = { new URLSearchParams(window.location.search).get('offlineMode') === 'true', }; -async function isStrategyActive(strategyName) { +async function isStrategyActive( + strategyName: keyof typeof OfflineModeActivationStrategiesImplementations, +) { return OfflineModeActivationStrategiesImplementations[strategyName](); } @@ -127,7 +145,7 @@ async function isOfflineModeEnabled() { return enabled; } -function createServiceWorkerUrl(params) { +function createServiceWorkerUrl(params: object) { const paramsQueryString = JSON.stringify(params); const url = `${PWA_SERVICE_WORKER_URL}?params=${encodeURIComponent( paramsQueryString, @@ -173,7 +191,7 @@ async function registerSW() { } }; - if (debug) { + if (debug && registration) { if (registration.active) { console.log( '[Docusaurus-PWA][registerSw]: registration.active', @@ -205,6 +223,7 @@ async function registerSW() { // Update current service worker if the next one finishes installing and // moves to waiting state in another tab. + // @ts-expect-error: not present in the API typings anymore wb.addEventListener('externalwaiting', (event) => { if (debug) { console.log('[Docusaurus-PWA][registerSw]: event externalwaiting', event); @@ -214,7 +233,7 @@ async function registerSW() { // Update service worker if the next one is already in the waiting state. // This happens when the user doesn't click on `reload` in the popup. - if (registration.waiting) { + if (registration?.waiting) { await handleServiceWorkerWaiting(); } } diff --git a/packages/docusaurus-plugin-pwa/src/renderReloadPopup.js b/packages/docusaurus-plugin-pwa/src/renderReloadPopup.tsx similarity index 75% rename from packages/docusaurus-plugin-pwa/src/renderReloadPopup.js rename to packages/docusaurus-plugin-pwa/src/renderReloadPopup.tsx index b26202ac3c5b..d4cac3601736 100644 --- a/packages/docusaurus-plugin-pwa/src/renderReloadPopup.js +++ b/packages/docusaurus-plugin-pwa/src/renderReloadPopup.tsx @@ -6,7 +6,7 @@ */ import React from 'react'; -import {render} from 'react-dom'; +import ReactDOM from 'react-dom'; const POPUP_CONTAINER_ID = 'pwa-popup-container'; @@ -19,8 +19,10 @@ const createContainer = () => { return container; }; -export default async function renderReloadPopup(props) { +export default async function renderReloadPopup(props: { + onReload: () => void; +}): Promise<void> { const container = getContainer() || createContainer(); - const {default: ReloadPopup} = await import(process.env.PWA_RELOAD_POPUP); - render(<ReloadPopup {...props} />, container); + const {default: ReloadPopup} = await import(process.env.PWA_RELOAD_POPUP!); + ReactDOM.render(<ReloadPopup {...props} />, container); } diff --git a/packages/docusaurus-plugin-pwa/tsconfig.browser.json b/packages/docusaurus-plugin-pwa/tsconfig.browser.json index 3af8257cdf8d..147b109fe030 100644 --- a/packages/docusaurus-plugin-pwa/tsconfig.browser.json +++ b/packages/docusaurus-plugin-pwa/tsconfig.browser.json @@ -4,5 +4,10 @@ "module": "esnext", "jsx": "react-native" }, - "include": ["src/theme/", "src/*.d.ts"] + "include": [ + "src/theme/", + "src/*.d.ts", + "src/registerSw.ts", + "src/renderReloadPopup.tsx" + ] } diff --git a/packages/docusaurus-plugin-pwa/tsconfig.server.json b/packages/docusaurus-plugin-pwa/tsconfig.server.json index 1a463cd83a52..40f95c1d1c14 100644 --- a/packages/docusaurus-plugin-pwa/tsconfig.server.json +++ b/packages/docusaurus-plugin-pwa/tsconfig.server.json @@ -1,4 +1,10 @@ { "extends": "./tsconfig.json", - "include": ["src/*.ts"] + "include": ["src/*.ts"], + "exclude": [ + "src/theme/", + "src/*.d.ts", + "src/registerSw.ts", + "src/renderReloadPopup.tsx" + ] } From 90eee091acc638b5c680f8ea2b655007bfd9e9ca Mon Sep 17 00:00:00 2001 From: Oluwatobi Sofela <60105594+oluwatobiss@users.noreply.github.com> Date: Mon, 16 May 2022 05:44:21 +0100 Subject: [PATCH 07/32] docs: add CodeSweetly to showcase (#7425) * Add CodeSweetly to Showcase * Add CodeSweetly to showcase * optimize image Co-authored-by: Joshua Chen <sidachen2003@gmail.com> --- website/src/data/showcase/codesweetly.png | Bin 0 -> 17716 bytes website/src/data/users.tsx | 8 ++++++++ 2 files changed, 8 insertions(+) create mode 100644 website/src/data/showcase/codesweetly.png diff --git a/website/src/data/showcase/codesweetly.png b/website/src/data/showcase/codesweetly.png new file mode 100644 index 0000000000000000000000000000000000000000..6d848fee6aadd7af95b6e2f778e5f5d051323d72 GIT binary patch literal 17716 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≪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 CrJyGO literal 0 HcmV?d00001 diff --git a/website/src/data/users.tsx b/website/src/data/users.tsx index 8769a9746c1d..8fac345ab984 100644 --- a/website/src/data/users.tsx +++ b/website/src/data/users.tsx @@ -371,6 +371,14 @@ const Users: User[] = [ source: 'https://github.com/lyft/clutch/tree/main/docs/_website', tags: ['opensource'], }, + { + title: 'CodeSweetly', + description: 'The Home of Simplified Web Development Tutorials', + preview: require('./showcase/codesweetly.png'), + website: 'https://codesweetly.com/', + source: null, + tags: ['personal'], + }, { title: 'CodeYourFuture', description: From c39406e6d8529e85f05e93ec668675ffd89976fc Mon Sep 17 00:00:00 2001 From: Nitya Narasimhan <nitya@users.noreply.github.com> Date: Mon, 16 May 2022 00:44:45 -0400 Subject: [PATCH 08/32] docs: add '30 Days of SWA' to showcase (#7427) * Adding '30 Days of SWA` app to Showcase * Added file for showcase * minor tweaks Co-authored-by: Joshua Chen <sidachen2003@gmail.com> --- website/src/data/showcase/30-days-swa.png | Bin 0 -> 74852 bytes website/src/data/users.tsx | 8 ++++++++ 2 files changed, 8 insertions(+) create mode 100644 website/src/data/showcase/30-days-swa.png diff --git a/website/src/data/showcase/30-days-swa.png b/website/src/data/showcase/30-days-swa.png new file mode 100644 index 0000000000000000000000000000000000000000..06c294bce4f65134b571acaa25ddd424ff5a4d40 GIT binary patch literal 74852 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�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 CDvQMc literal 0 HcmV?d00001 diff --git a/website/src/data/users.tsx b/website/src/data/users.tsx index 8fac345ab984..216a183438f8 100644 --- a/website/src/data/users.tsx +++ b/website/src/data/users.tsx @@ -2085,6 +2085,14 @@ const Users: User[] = [ source: null, tags: ['meta'], }, + { + title: '30 Days Of SWA', + description: 'A 30-Day Developer Guide to Azure Static Web Apps', + preview: require('./showcase/30-days-swa.png'), + website: 'https://www.azurestaticwebapps.dev', + source: 'https://github.com/staticwebdev/30DaysOfSWA/tree/main/www', + tags: ['opensource', 'product'], + }, { title: 'TiDB Community Books', description: 'A website for co-created books by TiDB Community users.', From b7448865fe78ae1ed7585f9793ffeebd7a75a52f Mon Sep 17 00:00:00 2001 From: Ggicci <ggicci.t@gmail.com> Date: Mon, 16 May 2022 15:19:50 +0800 Subject: [PATCH 09/32] docs: add httpin to showcase (#7428) * Add httpin project for showcase * Add files via upload * optimize image Co-authored-by: Joshua Chen <sidachen2003@gmail.com> --- website/src/data/showcase/httpin.png | Bin 0 -> 23053 bytes website/src/data/users.tsx | 8 ++++++++ 2 files changed, 8 insertions(+) create mode 100644 website/src/data/showcase/httpin.png diff --git a/website/src/data/showcase/httpin.png b/website/src/data/showcase/httpin.png new file mode 100644 index 0000000000000000000000000000000000000000..97cc4c84e256b9f35b7a192a6f9e05624b2e9ba6 GIT binary patch literal 23053 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 literal 0 HcmV?d00001 diff --git a/website/src/data/users.tsx b/website/src/data/users.tsx index 216a183438f8..f2f2ff00db70 100644 --- a/website/src/data/users.tsx +++ b/website/src/data/users.tsx @@ -869,6 +869,14 @@ const Users: User[] = [ source: 'https://github.com/home-assistant/developers.home-assistant', tags: ['opensource'], }, + { + title: 'httpin', + description: 'Decode an HTTP request into a custom struct in Go', + preview: require('./showcase/httpin.png'), + website: 'https://ggicci.github.io/httpin/', + source: 'https://github.com/ggicci/httpin/tree/documentation/docs', + tags: ['opensource'], + }, { title: 'icodex', description: 'Front end engineer personal website', From c16a08cba59bea5e48d3a79cee82c23aaae29876 Mon Sep 17 00:00:00 2001 From: Joshua Chen <sidachen2003@gmail.com> Date: Mon, 16 May 2022 19:14:47 +0800 Subject: [PATCH 10/32] fix(website): restore expand button style on changelog (#7431) --- .../changelog/theme/ChangelogAuthors/styles.module.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/src/plugins/changelog/theme/ChangelogAuthors/styles.module.css b/website/src/plugins/changelog/theme/ChangelogAuthors/styles.module.css index 08d003d4e0e6..19ec3dd69dd2 100644 --- a/website/src/plugins/changelog/theme/ChangelogAuthors/styles.module.css +++ b/website/src/plugins/changelog/theme/ChangelogAuthors/styles.module.css @@ -28,8 +28,8 @@ margin-left: 0.3rem; margin-right: 0.3rem; border-radius: 50%; - width: var(--ifm-avatar-photo-size-md); - height: var(--ifm-avatar-photo-size-md); + width: var(--ifm-avatar-photo-size); + height: var(--ifm-avatar-photo-size); background-color: var(--ifm-color-emphasis-100); } From 22b0504b4a12f59a5d7f06ab791cf2c6411942a3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 May 2022 10:01:40 +0800 Subject: [PATCH 11/32] chore(deps): bump github/codeql-action (#7432) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 75b4f1c4669133dc294b06c2794e969efa2e5316 to 2.1.10. This release includes the previously tagged commit. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/75b4f1c4669133dc294b06c2794e969efa2e5316...2f58583a1b24a7d3c7034f6bf9fa506d23b1183b) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/codeql-analysis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 4fb9c9ab407d..91f6c42c4f64 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -34,9 +34,9 @@ jobs: uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3 - name: Initialize CodeQL - uses: github/codeql-action/init@75b4f1c4669133dc294b06c2794e969efa2e5316 # v2 + uses: github/codeql-action/init@2f58583a1b24a7d3c7034f6bf9fa506d23b1183b # v2 with: languages: ${{ matrix.language }} - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@75b4f1c4669133dc294b06c2794e969efa2e5316 # v2 + uses: github/codeql-action/analyze@2f58583a1b24a7d3c7034f6bf9fa506d23b1183b # v2 From 6ac745dde466ac745f29f86c591b1bede5fa0e0d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 May 2022 10:02:11 +0800 Subject: [PATCH 12/32] chore(deps): bump actions/setup-node from 3.1.1 to 3.2.0 (#7433) Bumps [actions/setup-node](https://github.com/actions/setup-node) from 3.1.1 to 3.2.0. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/56337c425554a6be30cdef71bf441f15be286854...17f8bd926464a1afa4c6a11669539e9c1ba77048) --- updated-dependencies: - dependency-name: actions/setup-node dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build-blog-only.yml | 2 +- .github/workflows/build-perf.yml | 4 ++-- .github/workflows/canary-release.yml | 2 +- .github/workflows/lint.yml | 2 +- .github/workflows/showcase-test.yml | 2 +- .github/workflows/tests-e2e.yml | 8 ++++---- .github/workflows/tests-swizzle.yml | 2 +- .github/workflows/tests-windows.yml | 2 +- .github/workflows/tests.yml | 2 +- 9 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build-blog-only.yml b/.github/workflows/build-blog-only.yml index 8b16422415e0..032f8ae3455f 100644 --- a/.github/workflows/build-blog-only.yml +++ b/.github/workflows/build-blog-only.yml @@ -23,7 +23,7 @@ jobs: - name: Checkout uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3 - name: Set up Node - uses: actions/setup-node@56337c425554a6be30cdef71bf441f15be286854 # v3 + uses: actions/setup-node@17f8bd926464a1afa4c6a11669539e9c1ba77048 # v3 with: node-version: '16' cache: yarn diff --git a/.github/workflows/build-perf.yml b/.github/workflows/build-perf.yml index c7c99b0e782f..2fa8b482a7fc 100644 --- a/.github/workflows/build-perf.yml +++ b/.github/workflows/build-perf.yml @@ -35,7 +35,7 @@ jobs: - name: Checkout uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3 - name: Set up Node - uses: actions/setup-node@56337c425554a6be30cdef71bf441f15be286854 # v3 + uses: actions/setup-node@17f8bd926464a1afa4c6a11669539e9c1ba77048 # v3 with: node-version: '16' cache: yarn @@ -55,7 +55,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3 - - uses: actions/setup-node@56337c425554a6be30cdef71bf441f15be286854 # v3 + - uses: actions/setup-node@17f8bd926464a1afa4c6a11669539e9c1ba77048 # v3 with: cache: yarn - name: Installation diff --git a/.github/workflows/canary-release.yml b/.github/workflows/canary-release.yml index f11d805b6461..23353fa1d9e1 100644 --- a/.github/workflows/canary-release.yml +++ b/.github/workflows/canary-release.yml @@ -20,7 +20,7 @@ jobs: with: fetch-depth: 0 # Needed to get the commit number with "git rev-list --count HEAD" - name: Set up Node - uses: actions/setup-node@56337c425554a6be30cdef71bf441f15be286854 # v3 + uses: actions/setup-node@17f8bd926464a1afa4c6a11669539e9c1ba77048 # v3 with: node-version: '16' cache: yarn diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index a49bf9c28037..6162382297f6 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -21,7 +21,7 @@ jobs: - name: Checkout uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3 - name: Set up Node - uses: actions/setup-node@56337c425554a6be30cdef71bf441f15be286854 # v3 + uses: actions/setup-node@17f8bd926464a1afa4c6a11669539e9c1ba77048 # v3 with: node-version: '16' cache: yarn diff --git a/.github/workflows/showcase-test.yml b/.github/workflows/showcase-test.yml index 8bba764dd61e..0403ea3fa1a2 100644 --- a/.github/workflows/showcase-test.yml +++ b/.github/workflows/showcase-test.yml @@ -23,7 +23,7 @@ jobs: - name: Checkout uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3 - name: Set up Node - uses: actions/setup-node@56337c425554a6be30cdef71bf441f15be286854 # v3 + uses: actions/setup-node@17f8bd926464a1afa4c6a11669539e9c1ba77048 # v3 with: node-version: '16' cache: yarn diff --git a/.github/workflows/tests-e2e.yml b/.github/workflows/tests-e2e.yml index cfaff3b7749b..f10f08f65786 100644 --- a/.github/workflows/tests-e2e.yml +++ b/.github/workflows/tests-e2e.yml @@ -34,7 +34,7 @@ jobs: - name: Checkout uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3 - name: Use Node.js ${{ matrix.node }} - uses: actions/setup-node@56337c425554a6be30cdef71bf441f15be286854 # v3 + uses: actions/setup-node@17f8bd926464a1afa4c6a11669539e9c1ba77048 # v3 with: node-version: ${{ matrix.node }} cache: yarn @@ -73,7 +73,7 @@ jobs: - name: Checkout uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3 - name: Use Node.js 16 - uses: actions/setup-node@56337c425554a6be30cdef71bf441f15be286854 # v3 + uses: actions/setup-node@17f8bd926464a1afa4c6a11669539e9c1ba77048 # v3 with: node-version: '16' cache: yarn @@ -119,7 +119,7 @@ jobs: - name: Checkout uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3 - name: Use Node.js 16 - uses: actions/setup-node@56337c425554a6be30cdef71bf441f15be286854 # v3 + uses: actions/setup-node@17f8bd926464a1afa4c6a11669539e9c1ba77048 # v3 with: node-version: '16' cache: yarn @@ -149,7 +149,7 @@ jobs: - name: Checkout uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3 - name: Use Node.js 16 - uses: actions/setup-node@56337c425554a6be30cdef71bf441f15be286854 # v3 + uses: actions/setup-node@17f8bd926464a1afa4c6a11669539e9c1ba77048 # v3 with: node-version: '16' cache: yarn diff --git a/.github/workflows/tests-swizzle.yml b/.github/workflows/tests-swizzle.yml index 4887565a4eb4..00a7f388a2ac 100644 --- a/.github/workflows/tests-swizzle.yml +++ b/.github/workflows/tests-swizzle.yml @@ -27,7 +27,7 @@ jobs: - name: Checkout uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3 - name: Set up Node - uses: actions/setup-node@56337c425554a6be30cdef71bf441f15be286854 # v3 + uses: actions/setup-node@17f8bd926464a1afa4c6a11669539e9c1ba77048 # v3 with: node-version: '16' cache: yarn diff --git a/.github/workflows/tests-windows.yml b/.github/workflows/tests-windows.yml index ade80a4f646f..186833e7d080 100644 --- a/.github/workflows/tests-windows.yml +++ b/.github/workflows/tests-windows.yml @@ -29,7 +29,7 @@ jobs: - name: Checkout uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3 - name: Use Node.js ${{ matrix.node }} - uses: actions/setup-node@56337c425554a6be30cdef71bf441f15be286854 # v3 + uses: actions/setup-node@17f8bd926464a1afa4c6a11669539e9c1ba77048 # v3 with: node-version: ${{ matrix.node }} - name: Installation diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 89bb9fa13f00..a078a2bf3639 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -27,7 +27,7 @@ jobs: - name: Checkout uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3 - name: Use Node.js ${{ matrix.node }} - uses: actions/setup-node@56337c425554a6be30cdef71bf441f15be286854 # v3 + uses: actions/setup-node@17f8bd926464a1afa4c6a11669539e9c1ba77048 # v3 with: node-version: ${{ matrix.node }} cache: yarn From 3390e2378e52a9de34b5fbb011297bd704c77b85 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 May 2022 10:02:24 +0800 Subject: [PATCH 13/32] chore(deps): bump actions/github-script from 6.0.0 to 6.1.0 (#7434) Bumps [actions/github-script](https://github.com/actions/github-script) from 6.0.0 to 6.1.0. - [Release notes](https://github.com/actions/github-script/releases) - [Commits](https://github.com/actions/github-script/compare/9ac08808f993958e9de277fe43a64532a609130e...7a5c598405937d486b0331594b5da2b14db670da) --- updated-dependencies: - dependency-name: actions/github-script dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/lighthouse-report.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lighthouse-report.yml b/.github/workflows/lighthouse-report.yml index 3f57a9956b14..ec141b243774 100644 --- a/.github/workflows/lighthouse-report.yml +++ b/.github/workflows/lighthouse-report.yml @@ -36,7 +36,7 @@ jobs: PR_NUMBER: ${{ github.event.pull_request.number}} - name: Format lighthouse score id: format_lighthouse_score - uses: actions/github-script@9ac08808f993958e9de277fe43a64532a609130e # v6 + uses: actions/github-script@7a5c598405937d486b0331594b5da2b14db670da # v6 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | From 4419beb86f0f060dfc77a5aba8c914ae64017219 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 May 2022 10:02:40 +0800 Subject: [PATCH 14/32] chore(deps): bump actions/dependency-review-action (#7435) Bumps [actions/dependency-review-action](https://github.com/actions/dependency-review-action) from 3f943b86c9a289f4e632c632695e2e0898d9d67d to 1. This release includes the previously tagged commit. - [Release notes](https://github.com/actions/dependency-review-action/releases) - [Commits](https://github.com/actions/dependency-review-action/compare/3f943b86c9a289f4e632c632695e2e0898d9d67d...39e692fa323107ef86d8fdac0067ce647f239bd7) --- updated-dependencies: - dependency-name: actions/dependency-review-action dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/dependency-review.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml index a8b388ccc1bd..32fc4d96a997 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -15,4 +15,4 @@ jobs: - name: Checkout uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b #v3 - name: Dependency Review - uses: actions/dependency-review-action@3f943b86c9a289f4e632c632695e2e0898d9d67d # v1 + uses: actions/dependency-review-action@39e692fa323107ef86d8fdac0067ce647f239bd7 # v1 From 1bec5f673a4a797c8d2d81838c0cc8a04d351d72 Mon Sep 17 00:00:00 2001 From: Joshua Chen <sidachen2003@gmail.com> Date: Tue, 17 May 2022 13:11:20 +0800 Subject: [PATCH 15/32] chore: upgrade dependencies (#7436) --- package.json | 14 +- .../templates/classic-typescript/package.json | 2 +- .../templates/classic/package.json | 2 +- .../docusaurus-cssnano-preset/package.json | 2 +- packages/docusaurus-mdx-loader/package.json | 4 +- packages/docusaurus-migrate/package.json | 2 +- packages/docusaurus-plugin-pwa/package.json | 4 +- .../docusaurus-theme-classic/package.json | 6 +- packages/docusaurus-theme-common/package.json | 2 +- packages/docusaurus-utils/package.json | 2 +- packages/docusaurus/package.json | 20 +- packages/eslint-plugin/package.json | 4 +- website/docusaurus.config.js | 6 +- website/package.json | 8 +- yarn.lock | 1454 ++++++++--------- 15 files changed, 682 insertions(+), 850 deletions(-) diff --git a/package.json b/package.json index 16f2f3be15ba..78812855f38f 100644 --- a/package.json +++ b/package.json @@ -63,22 +63,22 @@ }, "devDependencies": { "@crowdin/cli": "^3.7.8", - "@swc/core": "^1.2.181", + "@swc/core": "^1.2.185", "@swc/jest": "^0.2.21", "@testing-library/react-hooks": "^8.0.0", "@types/fs-extra": "^9.0.13", - "@types/jest": "^27.5.0", + "@types/jest": "^27.5.1", "@types/lodash": "^4.14.182", - "@types/node": "^17.0.31", + "@types/node": "^17.0.34", "@types/prompts": "^2.0.14", "@types/react": "^18.0.9", "@types/react-dev-utils": "^9.0.10", "@types/react-test-renderer": "^18.0.0", "@types/semver": "^7.3.9", "@types/shelljs": "^0.8.11", - "@typescript-eslint/eslint-plugin": "^5.23.0", - "@typescript-eslint/parser": "^5.23.0", - "concurrently": "^7.1.0", + "@typescript-eslint/eslint-plugin": "^5.24.0", + "@typescript-eslint/parser": "^5.24.0", + "concurrently": "^7.2.0", "cross-env": "^7.0.3", "cspell": "^5.20.0", "eslint": "^8.15.0", @@ -86,7 +86,7 @@ "eslint-config-prettier": "^8.5.0", "eslint-plugin-header": "^3.1.1", "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^26.1.5", + "eslint-plugin-jest": "^26.2.2", "eslint-plugin-jsx-a11y": "^6.5.1", "eslint-plugin-react": "^7.29.4", "eslint-plugin-react-hooks": "^4.5.0", diff --git a/packages/create-docusaurus/templates/classic-typescript/package.json b/packages/create-docusaurus/templates/classic-typescript/package.json index 3f98e42c9f79..22520824356d 100644 --- a/packages/create-docusaurus/templates/classic-typescript/package.json +++ b/packages/create-docusaurus/templates/classic-typescript/package.json @@ -19,7 +19,7 @@ "@docusaurus/preset-classic": "2.0.0-beta.20", "@mdx-js/react": "^1.6.22", "clsx": "^1.1.1", - "prism-react-renderer": "^1.3.1", + "prism-react-renderer": "^1.3.3", "react": "^17.0.2", "react-dom": "^17.0.2" }, diff --git a/packages/create-docusaurus/templates/classic/package.json b/packages/create-docusaurus/templates/classic/package.json index bc39e6d4c02b..c7be6e72caaa 100644 --- a/packages/create-docusaurus/templates/classic/package.json +++ b/packages/create-docusaurus/templates/classic/package.json @@ -18,7 +18,7 @@ "@docusaurus/preset-classic": "2.0.0-beta.20", "@mdx-js/react": "^1.6.22", "clsx": "^1.1.1", - "prism-react-renderer": "^1.3.1", + "prism-react-renderer": "^1.3.3", "react": "^17.0.2", "react-dom": "^17.0.2" }, diff --git a/packages/docusaurus-cssnano-preset/package.json b/packages/docusaurus-cssnano-preset/package.json index 48b9c5697748..35b39ae66833 100644 --- a/packages/docusaurus-cssnano-preset/package.json +++ b/packages/docusaurus-cssnano-preset/package.json @@ -13,7 +13,7 @@ "directory": "packages/docusaurus-cssnano-preset" }, "dependencies": { - "cssnano-preset-advanced": "^5.3.3", + "cssnano-preset-advanced": "^5.3.4", "postcss": "^8.4.13", "postcss-sort-media-queries": "^4.2.1" }, diff --git a/packages/docusaurus-mdx-loader/package.json b/packages/docusaurus-mdx-loader/package.json index c05708cd9f4b..4d1d2ca70b26 100644 --- a/packages/docusaurus-mdx-loader/package.json +++ b/packages/docusaurus-mdx-loader/package.json @@ -18,8 +18,8 @@ }, "license": "MIT", "dependencies": { - "@babel/parser": "^7.17.10", - "@babel/traverse": "^7.17.10", + "@babel/parser": "^7.17.12", + "@babel/traverse": "^7.17.12", "@docusaurus/logger": "2.0.0-beta.20", "@docusaurus/utils": "2.0.0-beta.20", "@mdx-js/mdx": "^1.6.22", diff --git a/packages/docusaurus-migrate/package.json b/packages/docusaurus-migrate/package.json index 475dd592c6ad..e8ad7c2d91c6 100644 --- a/packages/docusaurus-migrate/package.json +++ b/packages/docusaurus-migrate/package.json @@ -22,7 +22,7 @@ "docusaurus-migrate": "bin/index.mjs" }, "dependencies": { - "@babel/preset-env": "^7.17.10", + "@babel/preset-env": "^7.17.12", "@docusaurus/logger": "2.0.0-beta.20", "@docusaurus/utils": "2.0.0-beta.20", "@mapbox/hast-util-to-jsx": "^2.0.0", diff --git a/packages/docusaurus-plugin-pwa/package.json b/packages/docusaurus-plugin-pwa/package.json index 3f0a4f8201c5..f904d38a701d 100644 --- a/packages/docusaurus-plugin-pwa/package.json +++ b/packages/docusaurus-plugin-pwa/package.json @@ -20,8 +20,8 @@ }, "license": "MIT", "dependencies": { - "@babel/core": "^7.17.10", - "@babel/preset-env": "^7.17.10", + "@babel/core": "^7.17.12", + "@babel/preset-env": "^7.17.12", "@docusaurus/core": "2.0.0-beta.20", "@docusaurus/theme-common": "2.0.0-beta.20", "@docusaurus/theme-translations": "2.0.0-beta.20", diff --git a/packages/docusaurus-theme-classic/package.json b/packages/docusaurus-theme-classic/package.json index e2b20b238174..ab0e902cfc34 100644 --- a/packages/docusaurus-theme-classic/package.json +++ b/packages/docusaurus-theme-classic/package.json @@ -37,15 +37,15 @@ "lodash": "^4.17.21", "nprogress": "^0.2.0", "postcss": "^8.4.13", - "prism-react-renderer": "^1.3.1", + "prism-react-renderer": "^1.3.3", "prismjs": "^1.28.0", "react-router-dom": "^5.2.0", "rtlcss": "^3.5.0" }, "devDependencies": { "@babel/cli": "^7.17.10", - "@babel/core": "^7.17.10", - "@babel/preset-typescript": "^7.16.7", + "@babel/core": "^7.17.12", + "@babel/preset-typescript": "^7.17.12", "@docusaurus/module-type-aliases": "2.0.0-beta.20", "@docusaurus/types": "2.0.0-beta.20", "@types/mdx-js__react": "^1.5.5", diff --git a/packages/docusaurus-theme-common/package.json b/packages/docusaurus-theme-common/package.json index 7a7244429472..4cd433a79e1b 100644 --- a/packages/docusaurus-theme-common/package.json +++ b/packages/docusaurus-theme-common/package.json @@ -32,7 +32,7 @@ "@docusaurus/plugin-content-pages": "2.0.0-beta.20", "clsx": "^1.1.1", "parse-numeric-range": "^1.3.0", - "prism-react-renderer": "^1.3.1", + "prism-react-renderer": "^1.3.3", "tslib": "^2.4.0", "utility-types": "^3.10.0" }, diff --git a/packages/docusaurus-utils/package.json b/packages/docusaurus-utils/package.json index cdddacda8d11..36dd648ff13d 100644 --- a/packages/docusaurus-utils/package.json +++ b/packages/docusaurus-utils/package.json @@ -42,7 +42,7 @@ "@types/dedent": "^0.7.0", "@types/github-slugger": "^1.3.0", "@types/micromatch": "^4.0.2", - "@types/react-dom": "^18.0.3", + "@types/react-dom": "^18.0.4", "dedent": "^0.7.0" } } diff --git a/packages/docusaurus/package.json b/packages/docusaurus/package.json index 4019070675f0..a2aaee6796a9 100644 --- a/packages/docusaurus/package.json +++ b/packages/docusaurus/package.json @@ -31,16 +31,16 @@ "url": "https://github.com/facebook/docusaurus/issues" }, "dependencies": { - "@babel/core": "^7.17.10", - "@babel/generator": "^7.17.10", + "@babel/core": "^7.17.12", + "@babel/generator": "^7.17.12", "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-transform-runtime": "^7.17.10", - "@babel/preset-env": "^7.17.10", - "@babel/preset-react": "^7.16.7", - "@babel/preset-typescript": "^7.16.7", + "@babel/plugin-transform-runtime": "^7.17.12", + "@babel/preset-env": "^7.17.12", + "@babel/preset-react": "^7.17.12", + "@babel/preset-typescript": "^7.17.12", "@babel/runtime": "^7.17.9", "@babel/runtime-corejs3": "^7.17.9", - "@babel/traverse": "^7.17.10", + "@babel/traverse": "^7.17.12", "@docusaurus/cssnano-preset": "2.0.0-beta.20", "@docusaurus/logger": "2.0.0-beta.20", "@docusaurus/mdx-loader": "2.0.0-beta.20", @@ -63,8 +63,8 @@ "core-js": "^3.22.5", "css-loader": "^6.7.1", "css-minimizer-webpack-plugin": "^3.4.1", - "cssnano": "^5.1.7", - "del": "^6.0.0", + "cssnano": "^5.1.8", + "del": "^6.1.0", "detect-port": "^1.3.0", "escape-html": "^1.0.3", "eta": "^1.12.3", @@ -107,7 +107,7 @@ "@docusaurus/module-type-aliases": "2.0.0-beta.20", "@docusaurus/types": "2.0.0-beta.20", "@types/detect-port": "^1.3.2", - "@types/react-dom": "^18.0.3", + "@types/react-dom": "^18.0.4", "@types/react-router-config": "^5.0.6", "@types/rtl-detect": "^1.0.0", "@types/serve-handler": "^6.1.1", diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index e7b1e4b58cfb..5d7aed9712b1 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -21,11 +21,11 @@ "build": "tsc" }, "dependencies": { - "@typescript-eslint/utils": "^5.23.0", + "@typescript-eslint/utils": "^5.24.0", "tslib": "^2.4.0" }, "devDependencies": { - "eslint-plugin-eslint-plugin": "^4.1.0" + "eslint-plugin-eslint-plugin": "^4.2.0" }, "peerDependencies": { "eslint": ">=6" diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js index 6fb03a168d59..27e3b73c556c 100644 --- a/website/docusaurus.config.js +++ b/website/docusaurus.config.js @@ -375,11 +375,7 @@ const config = { content: `⭐️ If you like Docusaurus, give it a star on <a target="_blank" rel="noopener noreferrer" href="https://github.com/facebook/docusaurus">GitHub</a> and follow us on <a target="_blank" rel="noopener noreferrer" href="https://twitter.com/docusaurus">Twitter ${TwitterSvg}</a>`, }, prism: { - // We need to load markdown again so that YAML is loaded before MD - // and the YAML front matter is highlighted correctly. - // TODO after we have forked prism-react-renderer, we should tweak the - // import order and fix it there - additionalLanguages: ['java', 'markdown', 'latex'], + additionalLanguages: ['java', 'latex'], magicComments: [ { className: 'theme-code-block-highlighted-line', diff --git a/website/package.json b/website/package.json index ee7a44bc87d4..734cd2e4faf4 100644 --- a/website/package.json +++ b/website/package.json @@ -49,7 +49,7 @@ "@docusaurus/utils": "2.0.0-beta.20", "@docusaurus/utils-common": "2.0.0-beta.20", "@popperjs/core": "^2.11.5", - "@swc/core": "^1.2.181", + "@swc/core": "^1.2.185", "clsx": "^1.1.1", "color": "^4.2.3", "fs-extra": "^10.1.0", @@ -58,11 +58,11 @@ "react": "^17.0.2", "react-dom": "^17.0.2", "react-lite-youtube-embed": "^2.2.2", - "react-medium-image-zoom": "^4.3.7", + "react-medium-image-zoom": "^4.4.0", "react-popper": "^2.3.0", "rehype-katex": "^6.0.2", "remark-math": "^3.0.1", - "swc-loader": "^0.2.0", + "swc-loader": "^0.2.1", "unist-util-visit": "^2.0.3", "workbox-routing": "^6.5.3", "workbox-strategies": "^6.5.3" @@ -82,7 +82,7 @@ "devDependencies": { "@docusaurus/eslint-plugin": "2.0.0-beta.20", "@tsconfig/docusaurus": "^1.0.5", - "@types/jest": "^27.5.0", + "@types/jest": "^27.5.1", "cross-env": "^7.0.3", "rimraf": "^3.0.2" } diff --git a/yarn.lock b/yarn.lock index 5374e67cd0de..426e56929cb1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -170,7 +170,7 @@ dependencies: "@babel/highlight" "^7.16.7" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.17.0", "@babel/compat-data@^7.17.10": +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.17.10": version "7.17.10" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.10.tgz#711dc726a492dfc8be8220028b1b92482362baab" integrity sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw== @@ -197,21 +197,21 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.15.5", "@babel/core@^7.17.10": - version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.10.tgz#74ef0fbf56b7dfc3f198fc2d927f4f03e12f4b05" - integrity sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA== +"@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.15.5", "@babel/core@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.12.tgz#b4eb2d7ebc3449b062381644c93050db545b70ee" + integrity sha512-44ODe6O1IVz9s2oJE3rZ4trNNKTX9O7KpQpfAP4t8QII/zwrVRHL7i2pxhqtcY7tqMLrrKfMlBKnm1QlrRFs5w== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.10" + "@babel/generator" "^7.17.12" "@babel/helper-compilation-targets" "^7.17.10" - "@babel/helper-module-transforms" "^7.17.7" + "@babel/helper-module-transforms" "^7.17.12" "@babel/helpers" "^7.17.9" - "@babel/parser" "^7.17.10" + "@babel/parser" "^7.17.12" "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.10" - "@babel/types" "^7.17.10" + "@babel/traverse" "^7.17.12" + "@babel/types" "^7.17.12" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -227,13 +227,13 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.0" -"@babel/generator@^7.12.5", "@babel/generator@^7.17.10", "@babel/generator@^7.7.2": - version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.10.tgz#c281fa35b0c349bbe9d02916f4ae08fc85ed7189" - integrity sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg== +"@babel/generator@^7.12.5", "@babel/generator@^7.17.12", "@babel/generator@^7.7.2": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.12.tgz#5970e6160e9be0428e02f4aba62d8551ec366cc8" + integrity sha512-V49KtZiiiLjH/CnIW6OjJdrenrGoyh6AmKQ3k2AZFKozC1h846Q4NYlZ5nqAigPDUXfGzC88+LOUuG8yKd2kCw== dependencies: - "@babel/types" "^7.17.10" - "@jridgewell/gen-mapping" "^0.1.0" + "@babel/types" "^7.17.12" + "@jridgewell/gen-mapping" "^0.3.0" jsesc "^2.5.1" "@babel/helper-annotate-as-pure@^7.16.7": @@ -261,10 +261,10 @@ browserslist "^4.20.2" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.6": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz#71835d7fb9f38bd9f1378e40a4c0902fdc2ea49d" - integrity sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ== +"@babel/helper-create-class-features-plugin@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.12.tgz#d4f8393fc4838cbff6b7c199af5229aee16d07cf" + integrity sha512-sZoOeUTkFJMyhqCei2+Z+wtH/BehW8NVKQt7IRUQlRiOARuXymJYfN/FCcI8CvVbR0XVyDM6eLFOlR7YtiXnew== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/helper-environment-visitor" "^7.16.7" @@ -274,10 +274,10 @@ "@babel/helper-replace-supers" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" -"@babel/helper-create-regexp-features-plugin@^7.16.7", "@babel/helper-create-regexp-features-plugin@^7.17.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz#1dcc7d40ba0c6b6b25618997c5dbfd310f186fe1" - integrity sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA== +"@babel/helper-create-regexp-features-plugin@^7.16.7", "@babel/helper-create-regexp-features-plugin@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.12.tgz#bb37ca467f9694bbe55b884ae7a5cc1e0084e4fd" + integrity sha512-b2aZrV4zvutr9AIa6/gA3wsZKRwTKYoDxYiFKcESS3Ug2GTXzwBEvMuuFLhCQpEnRXs1zng4ISAXSUxxKBIcxw== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" regexpu-core "^5.0.1" @@ -339,10 +339,10 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.16.7", "@babel/helper-module-transforms@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz#3943c7f777139e7954a5355c815263741a9c1cbd" - integrity sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw== +"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.12.tgz#bec00139520cb3feb078ef7a4578562480efb77e" + integrity sha512-t5s2BeSWIghhFRPh9XMn6EIGmvn8Lmw5RVASJzkIx1mSemubQQBNIZiQD7WzaFmaHIrjAec4x8z9Yx8SjJ1/LA== dependencies: "@babel/helper-environment-visitor" "^7.16.7" "@babel/helper-module-imports" "^7.16.7" @@ -350,8 +350,8 @@ "@babel/helper-split-export-declaration" "^7.16.7" "@babel/helper-validator-identifier" "^7.16.7" "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.3" - "@babel/types" "^7.17.0" + "@babel/traverse" "^7.17.12" + "@babel/types" "^7.17.12" "@babel/helper-optimise-call-expression@^7.16.7": version "7.16.7" @@ -365,10 +365,10 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" - integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.17.12", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz#86c2347da5acbf5583ba0a10aed4c9bf9da9cf96" + integrity sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA== "@babel/helper-remap-async-to-generator@^7.16.8": version "7.16.8" @@ -441,59 +441,59 @@ "@babel/types" "^7.17.0" "@babel/highlight@^7.16.7": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.9.tgz#61b2ee7f32ea0454612def4fccdae0de232b73e3" - integrity sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg== + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.12.tgz#257de56ee5afbd20451ac0a75686b6b404257351" + integrity sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg== dependencies: "@babel/helper-validator-identifier" "^7.16.7" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.12.7", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.10": - version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.10.tgz#873b16db82a8909e0fbd7f115772f4b739f6ce78" - integrity sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ== +"@babel/parser@^7.1.0", "@babel/parser@^7.12.7", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.12.tgz#36c2ed06944e3691ba82735fc4cf62d12d491a23" + integrity sha512-FLzHmN9V3AJIrWfOpvRlZCeVg/WLdicSnTMsLur6uDj9TT8ymUlG9XxURdW/XvuygK+2CW0poOJABdA4m/YKxA== -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz#4eda6d6c2a0aa79c70fa7b6da67763dfe2141050" - integrity sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.17.12.tgz#1dca338caaefca368639c9ffb095afbd4d420b1e" + integrity sha512-xCJQXl4EeQ3J9C4yOmpTrtVGmzpm2iSzyxbkZHw7UCnZBftHpF/hpII80uWVyVrc40ytIClHjgWGTG1g/yB+aw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz#cc001234dfc139ac45f6bcf801866198c8c72ff9" - integrity sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.17.12.tgz#0d498ec8f0374b1e2eb54b9cb2c4c78714c77753" + integrity sha512-/vt0hpIw0x4b6BLKUkwlvEoiGZYYLNZ96CzyHYPbtG2jZGz6LBe7/V+drYrc/d+ovrF9NBi0pmtvmNb/FsWtRQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" - "@babel/plugin-proposal-optional-chaining" "^7.16.7" + "@babel/plugin-proposal-optional-chaining" "^7.17.12" -"@babel/plugin-proposal-async-generator-functions@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz#3bdd1ebbe620804ea9416706cd67d60787504bc8" - integrity sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ== +"@babel/plugin-proposal-async-generator-functions@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.17.12.tgz#094a417e31ce7e692d84bab06c8e2a607cbeef03" + integrity sha512-RWVvqD1ooLKP6IqWTA5GyFVX2isGEgC5iFxKzfYOIy/QEFdxYyCybBDtIGjipHpb9bDWHzcqGqFakf+mVmBTdQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-remap-async-to-generator" "^7.16.8" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz#925cad7b3b1a2fcea7e59ecc8eb5954f961f91b0" - integrity sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww== +"@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.17.12.tgz#84f65c0cc247d46f40a6da99aadd6438315d80a4" + integrity sha512-U0mI9q8pW5Q9EaTHFPwSVusPMV/DV9Mm8p7csqROFLtIE9rBF5piLqyrBGigftALrBcsBGu4m38JneAe7ZDLXw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-proposal-class-static-block@^7.17.6": - version "7.17.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz#164e8fd25f0d80fa48c5a4d1438a6629325ad83c" - integrity sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA== +"@babel/plugin-proposal-class-static-block@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.12.tgz#947f09dd496322c9543ec3b318bf52b4d9833334" + integrity sha512-8ILyDG6eL14F8iub97dVc8q35Md0PJYAnA5Kz9NACFOkt6ffCcr0FISyUPKHsvuAy36fkpIitxZ9bVYPFMGQHA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.17.6" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-proposal-dynamic-import@^7.16.7": @@ -504,36 +504,36 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-proposal-export-namespace-from@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz#09de09df18445a5786a305681423ae63507a6163" - integrity sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA== +"@babel/plugin-proposal-export-namespace-from@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.17.12.tgz#b22864ccd662db9606edb2287ea5fd1709f05378" + integrity sha512-j7Ye5EWdwoXOpRmo5QmRyHPsDIe6+u70ZYZrd7uz+ebPYFKfRcLcNu3Ro0vOlJ5zuv8rU7xa+GttNiRzX56snQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz#9732cb1d17d9a2626a08c5be25186c195b6fa6e8" - integrity sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ== +"@babel/plugin-proposal-json-strings@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.17.12.tgz#f4642951792437233216d8c1af370bb0fbff4664" + integrity sha512-rKJ+rKBoXwLnIn7n6o6fulViHMrOThz99ybH+hKHcOZbnN14VuMnH9fo2eHE69C8pO4uX1Q7t2HYYIDmv8VYkg== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-proposal-logical-assignment-operators@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz#be23c0ba74deec1922e639832904be0bea73cdea" - integrity sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg== +"@babel/plugin-proposal-logical-assignment-operators@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.17.12.tgz#c64a1bcb2b0a6d0ed2ff674fd120f90ee4b88a23" + integrity sha512-EqFo2s1Z5yy+JeJu7SFfbIUtToJTVlC61/C7WLKDntSw4Sz6JNAIfL7zQ74VvirxpjB5kz/kIx0gCcb+5OEo2Q== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8", "@babel/plugin-proposal-nullish-coalescing-operator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz#141fc20b6857e59459d430c850a0011e36561d99" - integrity sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8", "@babel/plugin-proposal-nullish-coalescing-operator@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz#1e93079bbc2cbc756f6db6a1925157c4a92b94be" + integrity sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" "@babel/plugin-proposal-numeric-separator@^7.16.7": @@ -553,16 +553,16 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-transform-parameters" "^7.12.1" -"@babel/plugin-proposal-object-rest-spread@^7.17.3": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz#d9eb649a54628a51701aef7e0ea3d17e2b9dd390" - integrity sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw== +"@babel/plugin-proposal-object-rest-spread@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.12.tgz#f94a91715a7f2f8cfb3c06af820c776440bc0148" + integrity sha512-6l9cO3YXXRh4yPCPRA776ZyJ3RobG4ZKJZhp7NDRbKIOeV3dBPG8FXCF7ZtiO2RTCIOkQOph1xDDcc01iWVNjQ== dependencies: - "@babel/compat-data" "^7.17.0" - "@babel/helper-compilation-targets" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/compat-data" "^7.17.10" + "@babel/helper-compilation-targets" "^7.17.10" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.16.7" + "@babel/plugin-transform-parameters" "^7.17.12" "@babel/plugin-proposal-optional-catch-binding@^7.16.7": version "7.16.7" @@ -572,40 +572,40 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz#7cd629564724816c0e8a969535551f943c64c39a" - integrity sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA== +"@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz#f96949e9bacace3a9066323a5cf90cfb9de67174" + integrity sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-private-methods@^7.16.11": - version "7.16.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz#e8df108288555ff259f4527dbe84813aac3a1c50" - integrity sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw== +"@babel/plugin-proposal-private-methods@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.17.12.tgz#c2ca3a80beb7539289938da005ad525a038a819c" + integrity sha512-SllXoxo19HmxhDWm3luPz+cPhtoTSKLJE9PXshsfrOzBqs60QP0r8OaJItrPhAj0d7mZMnNF0Y1UUggCDgMz1A== dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.10" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-proposal-private-property-in-object@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz#b0b8cef543c2c3d57e59e2c611994861d46a3fce" - integrity sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ== +"@babel/plugin-proposal-private-property-in-object@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.17.12.tgz#b02efb7f106d544667d91ae97405a9fd8c93952d" + integrity sha512-/6BtVi57CJfrtDNKfK5b66ydK2J5pXUKBKSPD2G1whamMuEnZWgoOIfO8Vf9F/DoD4izBLD/Au4NMQfruzzykg== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-create-class-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-proposal-unicode-property-regex@^7.16.7", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz#635d18eb10c6214210ffc5ff4932552de08188a2" - integrity sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg== +"@babel/plugin-proposal-unicode-property-regex@^7.17.12", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.17.12.tgz#3dbd7a67bd7f94c8238b394da112d86aaf32ad4d" + integrity sha512-Wb9qLjXf3ZazqXA7IvI7ozqRIXIGPtSo+L5coFmEkhTQK18ao4UDDD0zdTGAarmbLj2urpRwrc6893cu5Bfh0A== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-regexp-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -649,12 +649,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-flow@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.16.7.tgz#202b147e5892b8452bbb0bb269c7ed2539ab8832" - integrity sha512-UDo3YGQO0jH6ytzVwgSLv9i/CzMcUjbKenL67dTrAZPPv6GFAtDhe6jqnvmoKzC/7htNTohhos+onPtDMqJwaQ== +"@babel/plugin-syntax-flow@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.17.12.tgz#23d852902acd19f42923fca9d0f196984d124e73" + integrity sha512-B8QIgBvkIG6G2jgsOHQUist7Sm0EBLDCx8sen072IwqNuzMegZNXrYnSv77cYzA8mLDZAfQYqsLIhimiP1s2HQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" @@ -677,12 +677,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-jsx@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz#50b6571d13f764266a113d77c82b4a6508bbe665" - integrity sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q== +"@babel/plugin-syntax-jsx@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.17.12.tgz#834035b45061983a491f60096f61a2e7c5674a47" + integrity sha512-spyY3E3AURfxh/RHtjx5j6hs8am5NbUBGfcZ2vB3uShSpZdQyXSf5rR5Mk76vbtlAZOelyVQ71Fg0x9SG4fsog== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" @@ -740,27 +740,27 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.16.7", "@babel/plugin-syntax-typescript@^7.7.2": - version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.10.tgz#80031e6042cad6a95ed753f672ebd23c30933195" - integrity sha512-xJefea1DWXW09pW4Tm9bjwVlPDyYA2it3fWlmEjpYz6alPvTUjL0EOzNzI/FEOyI3r4/J7uVH5UqKgl1TQ5hqQ== +"@babel/plugin-syntax-typescript@^7.17.12", "@babel/plugin-syntax-typescript@^7.7.2": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.12.tgz#b54fc3be6de734a56b87508f99d6428b5b605a7b" + integrity sha512-TYY0SXFiO31YXtNg3HtFwNJHjLsAyIIhAhNWkQ5whPPS7HWUFlg9z0Ta4qAQNjQbP1wsSt/oKkmZ/4/WWdMUpw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-arrow-functions@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz#44125e653d94b98db76369de9c396dc14bef4154" - integrity sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ== +"@babel/plugin-transform-arrow-functions@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.17.12.tgz#dddd783b473b1b1537ef46423e3944ff24898c45" + integrity sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-async-to-generator@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz#b83dff4b970cf41f1b819f8b49cc0cfbaa53a808" - integrity sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg== +"@babel/plugin-transform-async-to-generator@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.17.12.tgz#dbe5511e6b01eee1496c944e35cdfe3f58050832" + integrity sha512-J8dbrWIOO3orDzir57NRsjg4uxucvhby0L/KZuGsWDj0g7twWK3g7JhJhOrXtuXiw8MeiSdJ3E0OW9H8LYEzLQ== dependencies: "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-remap-async-to-generator" "^7.16.8" "@babel/plugin-transform-block-scoped-functions@^7.16.7": @@ -770,40 +770,40 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-block-scoping@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz#f50664ab99ddeaee5bc681b8f3a6ea9d72ab4f87" - integrity sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ== +"@babel/plugin-transform-block-scoping@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.17.12.tgz#68fc3c4b3bb7dfd809d97b7ed19a584052a2725c" + integrity sha512-jw8XW/B1i7Lqwqj2CbrViPcZijSxfguBWZP2aN59NHgxUyO/OcO1mfdCxH13QhN5LbWhPkX+f+brKGhZTiqtZQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-classes@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz#8f4b9562850cd973de3b498f1218796eb181ce00" - integrity sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ== +"@babel/plugin-transform-classes@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.17.12.tgz#da889e89a4d38375eeb24985218edeab93af4f29" + integrity sha512-cvO7lc7pZat6BsvH6l/EGaI8zpl8paICaoGk+7x7guvtfak/TbIf66nYmJOH13EuG0H+Xx3M+9LQDtSvZFKXKw== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" + "@babel/helper-function-name" "^7.17.9" "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-replace-supers" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz#66dee12e46f61d2aae7a73710f591eb3df616470" - integrity sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw== +"@babel/plugin-transform-computed-properties@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.17.12.tgz#bca616a83679698f3258e892ed422546e531387f" + integrity sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-destructuring@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz#49dc2675a7afa9a5e4c6bdee636061136c3408d1" - integrity sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ== +"@babel/plugin-transform-destructuring@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.12.tgz#0861d61e75e2401aca30f2570d46dfc85caacf35" + integrity sha512-P8pt0YiKtX5UMUL5Xzsc9Oyij+pJE6JuC+F1k0/brq/OOGs5jDa1If3OY0LRWGvJsJhI+8tsiecL3nJLc0WTlg== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.16.7" @@ -813,12 +813,12 @@ "@babel/helper-create-regexp-features-plugin" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-duplicate-keys@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz#2207e9ca8f82a0d36a5a67b6536e7ef8b08823c9" - integrity sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw== +"@babel/plugin-transform-duplicate-keys@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.17.12.tgz#a09aa709a3310013f8e48e0e23bc7ace0f21477c" + integrity sha512-EA5eYFUG6xeerdabina/xIoB95jJ17mAkR8ivx6ZSu9frKShBjpOGZPn511MTDTkiCO+zXnzNczvUM69YSf3Zw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-transform-exponentiation-operator@^7.16.7": version "7.16.7" @@ -828,20 +828,20 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-flow-strip-types@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.16.7.tgz#291fb140c78dabbf87f2427e7c7c332b126964b8" - integrity sha512-mzmCq3cNsDpZZu9FADYYyfZJIOrSONmHcop2XEKPdBNMa4PDC4eEvcOvzZaCNcjKu72v0XQlA5y1g58aLRXdYg== +"@babel/plugin-transform-flow-strip-types@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.17.12.tgz#5e070f99a4152194bd9275de140e83a92966cab3" + integrity sha512-g8cSNt+cHCpG/uunPQELdq/TeV3eg1OLJYwxypwHtAWo9+nErH3lQx9CSO2uI9lF74A0mR0t4KoMjs1snSgnTw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-flow" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-flow" "^7.17.12" -"@babel/plugin-transform-for-of@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz#649d639d4617dff502a9a158c479b3b556728d8c" - integrity sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg== +"@babel/plugin-transform-for-of@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.17.12.tgz#5397c22554ec737a27918e7e7e0e7b679b05f5ec" + integrity sha512-76lTwYaCxw8ldT7tNmye4LLwSoKDbRCBzu6n/DcK/P3FOR29+38CIIaVIZfwol9By8W/QHORYEnYSLuvcQKrsg== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-transform-function-name@^7.16.7": version "7.16.7" @@ -852,12 +852,12 @@ "@babel/helper-function-name" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-literals@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz#254c9618c5ff749e87cb0c0cef1a0a050c0bdab1" - integrity sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ== +"@babel/plugin-transform-literals@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.17.12.tgz#97131fbc6bbb261487105b4b3edbf9ebf9c830ae" + integrity sha512-8iRkvaTjJciWycPIZ9k9duu663FT7VrBdNqNgxnVXEFwOIp55JWcZd23VBRySYbnS3PwQ3rGiabJBBBGj5APmQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-transform-member-expression-literals@^7.16.7": version "7.16.7" @@ -866,57 +866,58 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-modules-amd@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz#b28d323016a7daaae8609781d1f8c9da42b13186" - integrity sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g== +"@babel/plugin-transform-modules-amd@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.17.12.tgz#08ec1f10f854c15bb3b44952e60f1fc126d7d481" + integrity sha512-p5rt9tB5Ndcc2Za7CeNxVf7YAjRcUMR6yi8o8tKjb9KhRkEvXwa+C0hj6DA5bVDkKRxB0NYhMUGbVKoFu4+zEA== dependencies: - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-module-transforms" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.17.9": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz#274be1a2087beec0254d4abd4d86e52442e1e5b6" - integrity sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw== +"@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.12.tgz#37691c7404320d007288edd5a2d8600bcef61c34" + integrity sha512-tVPs6MImAJz+DiX8Y1xXEMdTk5Lwxu9jiPjlS+nv5M2A59R7+/d1+9A8C/sbuY0b3QjIxqClkj6KAplEtRvzaA== dependencies: - "@babel/helper-module-transforms" "^7.17.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-module-transforms" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-simple-access" "^7.17.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.17.8": - version "7.17.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz#81fd834024fae14ea78fbe34168b042f38703859" - integrity sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw== +"@babel/plugin-transform-modules-systemjs@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.12.tgz#e631b151b99d25401cd9679476cc35e6e5bbc7d4" + integrity sha512-NVhDb0q00hqZcuLduUf/kMzbOQHiocmPbIxIvk23HLiEqaTKC/l4eRxeC7lO63M72BmACoiKOcb9AkOAJRerpw== dependencies: "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-module-transforms" "^7.17.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-module-transforms" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-validator-identifier" "^7.16.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-umd@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz#23dad479fa585283dbd22215bff12719171e7618" - integrity sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ== +"@babel/plugin-transform-modules-umd@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.17.12.tgz#b37be3ecf198c1fea10e6268461729ced05644e1" + integrity sha512-BnsPkrUHsjzZGpnrmJeDFkOMMljWFHPjDc9xDcz71/C+ybF3lfC3V4m3dwXPLZrE5b3bgd4V+3/Pj+3620d7IA== dependencies: - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-module-transforms" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-named-capturing-groups-regex@^7.17.10": - version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.10.tgz#715dbcfafdb54ce8bccd3d12e8917296a4ba66a4" - integrity sha512-v54O6yLaJySCs6mGzaVOUw9T967GnH38T6CQSAtnzdNPwu84l2qAjssKzo/WSO8Yi7NF+7ekm5cVbF/5qiIgNA== +"@babel/plugin-transform-named-capturing-groups-regex@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.12.tgz#9c4a5a5966e0434d515f2675c227fd8cc8606931" + integrity sha512-vWoWFM5CKaTeHrdUJ/3SIOTRV+MBVGybOC9mhJkaprGNt5demMymDW24yC74avb915/mIRe3TgNb/d8idvnCRA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.17.0" + "@babel/helper-create-regexp-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-new-target@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz#9967d89a5c243818e0800fdad89db22c5f514244" - integrity sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg== +"@babel/plugin-transform-new-target@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.17.12.tgz#10842cd605a620944e81ea6060e9e65c265742e3" + integrity sha512-CaOtzk2fDYisbjAD4Sd1MTKGVIpRtx9bWLyj24Y/k6p4s4gQ3CqDGJauFJxt8M/LEx003d0i3klVqnN73qvK3w== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-transform-object-super@^7.16.7": version "7.16.7" @@ -926,12 +927,12 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-replace-supers" "^7.16.7" -"@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz#a1721f55b99b736511cb7e0152f61f17688f331f" - integrity sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw== +"@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.17.12.tgz#eb467cd9586ff5ff115a9880d6fdbd4a846b7766" + integrity sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-transform-property-literals@^7.16.7": version "7.16.7" @@ -941,11 +942,11 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-transform-react-constant-elements@^7.14.5": - version "7.17.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.17.6.tgz#6cc273c2f612a6a50cb657e63ee1303e5e68d10a" - integrity sha512-OBv9VkyyKtsHZiHLoSfCn+h6yU7YKX8nrs32xUmOa1SRSk+t03FosB6fBZ0Yz4BpD1WV7l73Nsad+2Tz7APpqw== + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.17.12.tgz#cc580857696b6dd9e5e3d079e673d060a0657f37" + integrity sha512-maEkX2xs2STuv2Px8QuqxqjhV2LsFobT1elCgyU5704fcyTu9DyD/bJXxD/mrRiVyhpHweOQ00OJ5FKhHq9oEw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-transform-react-display-name@^7.16.7": version "7.16.7" @@ -961,16 +962,16 @@ dependencies: "@babel/plugin-transform-react-jsx" "^7.16.7" -"@babel/plugin-transform-react-jsx@^7.16.7": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz#eac1565da176ccb1a715dae0b4609858808008c1" - integrity sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ== +"@babel/plugin-transform-react-jsx@^7.16.7", "@babel/plugin-transform-react-jsx@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.12.tgz#2aa20022709cd6a3f40b45d60603d5f269586dba" + integrity sha512-Lcaw8bxd1DKht3thfD4A12dqo1X16he1Lm8rIv8sTwjAYNInRS1qHa9aJoqvzpscItXvftKDCfaEQzwoVyXpEQ== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-jsx" "^7.16.7" - "@babel/types" "^7.17.0" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-jsx" "^7.17.12" + "@babel/types" "^7.17.12" "@babel/plugin-transform-react-pure-annotations@^7.16.7": version "7.16.7" @@ -987,20 +988,20 @@ dependencies: regenerator-transform "^0.15.0" -"@babel/plugin-transform-reserved-words@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz#1d798e078f7c5958eec952059c460b220a63f586" - integrity sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg== +"@babel/plugin-transform-reserved-words@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.17.12.tgz#7dbd349f3cdffba751e817cf40ca1386732f652f" + integrity sha512-1KYqwbJV3Co03NIi14uEHW8P50Md6KqFgt0FfpHdK6oyAHQVTosgPuPSiWud1HX0oYJ1hGRRlk0fP87jFpqXZA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-runtime@^7.17.10": - version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.10.tgz#b89d821c55d61b5e3d3c3d1d636d8d5a81040ae1" - integrity sha512-6jrMilUAJhktTr56kACL8LnWC5hx3Lf27BS0R0DSyW/OoJfb/iTHeE96V3b1dgKG3FSFdd/0culnYWMkjcKCig== +"@babel/plugin-transform-runtime@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.12.tgz#5dc79735c4038c6f4fc0490f68f2798ce608cadd" + integrity sha512-xsl5MeGjWnmV6Ui9PfILM2+YRpa3GqLOrczPpXV3N2KCgQGU+sU8OfzuMbjkIdfvZEZIm+3y0V7w58sk0SGzlw== dependencies: "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" babel-plugin-polyfill-corejs2 "^0.3.0" babel-plugin-polyfill-corejs3 "^0.5.0" babel-plugin-polyfill-regenerator "^0.3.0" @@ -1013,12 +1014,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-spread@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz#a303e2122f9f12e0105daeedd0f30fb197d8ff44" - integrity sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg== +"@babel/plugin-transform-spread@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.17.12.tgz#c112cad3064299f03ea32afed1d659223935d1f5" + integrity sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" "@babel/plugin-transform-sticky-regex@^7.16.7": @@ -1028,28 +1029,28 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-template-literals@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz#f3d1c45d28967c8e80f53666fc9c3e50618217ab" - integrity sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA== +"@babel/plugin-transform-template-literals@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.17.12.tgz#4aec0a18f39dd86c442e1d077746df003e362c6e" + integrity sha512-kAKJ7DX1dSRa2s7WN1xUAuaQmkTpN+uig4wCKWivVXIObqGbVTUlSavHyfI2iZvz89GFAMGm9p2DBJ4Y1Tp0hw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-typeof-symbol@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz#9cdbe622582c21368bd482b660ba87d5545d4f7e" - integrity sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ== +"@babel/plugin-transform-typeof-symbol@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.17.12.tgz#0f12f57ac35e98b35b4ed34829948d42bd0e6889" + integrity sha512-Q8y+Jp7ZdtSPXCThB6zjQ74N3lj0f6TDh1Hnf5B+sYlzQ8i5Pjp8gW0My79iekSpT4WnI06blqP6DT0OmaXXmw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-typescript@^7.16.7": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz#591ce9b6b83504903fa9dd3652c357c2ba7a1ee0" - integrity sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ== +"@babel/plugin-transform-typescript@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.17.12.tgz#9654587131bc776ff713218d929fa9a2e98ca16d" + integrity sha512-ICbXZqg6hgenjmwciVI/UfqZtExBrZOrS8sLB5mTHGO/j08Io3MmooULBiijWk9JBknjM3CbbtTc/0ZsqLrjXQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-typescript" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-typescript" "^7.17.12" "@babel/plugin-transform-unicode-escapes@^7.16.7": version "7.16.7" @@ -1066,32 +1067,32 @@ "@babel/helper-create-regexp-features-plugin" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.15.6", "@babel/preset-env@^7.17.10": - version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.17.10.tgz#a81b093669e3eb6541bb81a23173c5963c5de69c" - integrity sha512-YNgyBHZQpeoBSRBg0xixsZzfT58Ze1iZrajvv0lJc70qDDGuGfonEnMGfWeSY0mQ3JTuCWFbMkzFRVafOyJx4g== +"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.15.6", "@babel/preset-env@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.17.12.tgz#b81ae0bb762b683d68b07b6d2d4020ccbef8d67a" + integrity sha512-Kke30Rj3Lmcx97bVs71LO0s8M6FmJ7tUAQI9fNId62rf0cYG1UAWwdNO9/sE0/pLEahAw1MqMorymoD12bj5Fg== dependencies: "@babel/compat-data" "^7.17.10" "@babel/helper-compilation-targets" "^7.17.10" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-validator-option" "^7.16.7" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.7" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.7" - "@babel/plugin-proposal-async-generator-functions" "^7.16.8" - "@babel/plugin-proposal-class-properties" "^7.16.7" - "@babel/plugin-proposal-class-static-block" "^7.17.6" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.17.12" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.17.12" + "@babel/plugin-proposal-async-generator-functions" "^7.17.12" + "@babel/plugin-proposal-class-properties" "^7.17.12" + "@babel/plugin-proposal-class-static-block" "^7.17.12" "@babel/plugin-proposal-dynamic-import" "^7.16.7" - "@babel/plugin-proposal-export-namespace-from" "^7.16.7" - "@babel/plugin-proposal-json-strings" "^7.16.7" - "@babel/plugin-proposal-logical-assignment-operators" "^7.16.7" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.7" + "@babel/plugin-proposal-export-namespace-from" "^7.17.12" + "@babel/plugin-proposal-json-strings" "^7.17.12" + "@babel/plugin-proposal-logical-assignment-operators" "^7.17.12" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.17.12" "@babel/plugin-proposal-numeric-separator" "^7.16.7" - "@babel/plugin-proposal-object-rest-spread" "^7.17.3" + "@babel/plugin-proposal-object-rest-spread" "^7.17.12" "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" - "@babel/plugin-proposal-optional-chaining" "^7.16.7" - "@babel/plugin-proposal-private-methods" "^7.16.11" - "@babel/plugin-proposal-private-property-in-object" "^7.16.7" - "@babel/plugin-proposal-unicode-property-regex" "^7.16.7" + "@babel/plugin-proposal-optional-chaining" "^7.17.12" + "@babel/plugin-proposal-private-methods" "^7.17.12" + "@babel/plugin-proposal-private-property-in-object" "^7.17.12" + "@babel/plugin-proposal-unicode-property-regex" "^7.17.12" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" "@babel/plugin-syntax-class-static-block" "^7.14.5" @@ -1106,40 +1107,40 @@ "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.16.7" - "@babel/plugin-transform-async-to-generator" "^7.16.8" + "@babel/plugin-transform-arrow-functions" "^7.17.12" + "@babel/plugin-transform-async-to-generator" "^7.17.12" "@babel/plugin-transform-block-scoped-functions" "^7.16.7" - "@babel/plugin-transform-block-scoping" "^7.16.7" - "@babel/plugin-transform-classes" "^7.16.7" - "@babel/plugin-transform-computed-properties" "^7.16.7" - "@babel/plugin-transform-destructuring" "^7.17.7" + "@babel/plugin-transform-block-scoping" "^7.17.12" + "@babel/plugin-transform-classes" "^7.17.12" + "@babel/plugin-transform-computed-properties" "^7.17.12" + "@babel/plugin-transform-destructuring" "^7.17.12" "@babel/plugin-transform-dotall-regex" "^7.16.7" - "@babel/plugin-transform-duplicate-keys" "^7.16.7" + "@babel/plugin-transform-duplicate-keys" "^7.17.12" "@babel/plugin-transform-exponentiation-operator" "^7.16.7" - "@babel/plugin-transform-for-of" "^7.16.7" + "@babel/plugin-transform-for-of" "^7.17.12" "@babel/plugin-transform-function-name" "^7.16.7" - "@babel/plugin-transform-literals" "^7.16.7" + "@babel/plugin-transform-literals" "^7.17.12" "@babel/plugin-transform-member-expression-literals" "^7.16.7" - "@babel/plugin-transform-modules-amd" "^7.16.7" - "@babel/plugin-transform-modules-commonjs" "^7.17.9" - "@babel/plugin-transform-modules-systemjs" "^7.17.8" - "@babel/plugin-transform-modules-umd" "^7.16.7" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.17.10" - "@babel/plugin-transform-new-target" "^7.16.7" + "@babel/plugin-transform-modules-amd" "^7.17.12" + "@babel/plugin-transform-modules-commonjs" "^7.17.12" + "@babel/plugin-transform-modules-systemjs" "^7.17.12" + "@babel/plugin-transform-modules-umd" "^7.17.12" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.17.12" + "@babel/plugin-transform-new-target" "^7.17.12" "@babel/plugin-transform-object-super" "^7.16.7" - "@babel/plugin-transform-parameters" "^7.16.7" + "@babel/plugin-transform-parameters" "^7.17.12" "@babel/plugin-transform-property-literals" "^7.16.7" "@babel/plugin-transform-regenerator" "^7.17.9" - "@babel/plugin-transform-reserved-words" "^7.16.7" + "@babel/plugin-transform-reserved-words" "^7.17.12" "@babel/plugin-transform-shorthand-properties" "^7.16.7" - "@babel/plugin-transform-spread" "^7.16.7" + "@babel/plugin-transform-spread" "^7.17.12" "@babel/plugin-transform-sticky-regex" "^7.16.7" - "@babel/plugin-transform-template-literals" "^7.16.7" - "@babel/plugin-transform-typeof-symbol" "^7.16.7" + "@babel/plugin-transform-template-literals" "^7.17.12" + "@babel/plugin-transform-typeof-symbol" "^7.17.12" "@babel/plugin-transform-unicode-escapes" "^7.16.7" "@babel/plugin-transform-unicode-regex" "^7.16.7" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.17.10" + "@babel/types" "^7.17.12" babel-plugin-polyfill-corejs2 "^0.3.0" babel-plugin-polyfill-corejs3 "^0.5.0" babel-plugin-polyfill-regenerator "^0.3.0" @@ -1147,13 +1148,13 @@ semver "^6.3.0" "@babel/preset-flow@^7.13.13": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.16.7.tgz#7fd831323ab25eeba6e4b77a589f680e30581cbd" - integrity sha512-6ceP7IyZdUYQ3wUVqyRSQXztd1YmFHWI4Xv11MIqAlE4WqxBSd/FZ61V9k+TS5Gd4mkHOtQtPp9ymRpxH4y1Ug== + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.17.12.tgz#664a5df59190260939eee862800a255bef3bd66f" + integrity sha512-7QDz7k4uiaBdu7N89VKjUn807pJRXmdirQu0KyR9LXnQrr5Jt41eIMKTS7ljej+H29erwmMrwq9Io9mJHLI3Lw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-validator-option" "^7.16.7" - "@babel/plugin-transform-flow-strip-types" "^7.16.7" + "@babel/plugin-transform-flow-strip-types" "^7.17.12" "@babel/preset-modules@^0.1.5": version "0.1.5" @@ -1166,26 +1167,26 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-react@^7.14.5", "@babel/preset-react@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.16.7.tgz#4c18150491edc69c183ff818f9f2aecbe5d93852" - integrity sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA== +"@babel/preset-react@^7.14.5", "@babel/preset-react@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.17.12.tgz#62adbd2d1870c0de3893095757ed5b00b492ab3d" + integrity sha512-h5U+rwreXtZaRBEQhW1hOJLMq8XNJBQ/9oymXiCXTuT/0uOwpbT0gUt+sXeOqoXBgNuUKI7TaObVwoEyWkpFgA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-validator-option" "^7.16.7" "@babel/plugin-transform-react-display-name" "^7.16.7" - "@babel/plugin-transform-react-jsx" "^7.16.7" + "@babel/plugin-transform-react-jsx" "^7.17.12" "@babel/plugin-transform-react-jsx-development" "^7.16.7" "@babel/plugin-transform-react-pure-annotations" "^7.16.7" -"@babel/preset-typescript@^7.13.0", "@babel/preset-typescript@^7.15.0", "@babel/preset-typescript@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz#ab114d68bb2020afc069cd51b37ff98a046a70b9" - integrity sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ== +"@babel/preset-typescript@^7.13.0", "@babel/preset-typescript@^7.15.0", "@babel/preset-typescript@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.17.12.tgz#40269e0a0084d56fc5731b6c40febe1c9a4a3e8c" + integrity sha512-S1ViF8W2QwAKUGJXxP9NAfNaqGDdEBJKpYkxHf5Yy2C4NPPzXGeR3Lhk7G8xJaaLcFTRfNjVbtbVtm8Gb0mqvg== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-validator-option" "^7.16.7" - "@babel/plugin-transform-typescript" "^7.16.7" + "@babel/plugin-transform-typescript" "^7.17.12" "@babel/register@^7.13.16": version "7.17.7" @@ -1222,26 +1223,26 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.10", "@babel/traverse@^7.17.3", "@babel/traverse@^7.17.9", "@babel/traverse@^7.7.2": - version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.10.tgz#1ee1a5ac39f4eac844e6cf855b35520e5eb6f8b5" - integrity sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw== +"@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.12", "@babel/traverse@^7.17.9", "@babel/traverse@^7.7.2": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.12.tgz#011874d2abbca0ccf1adbe38f6f7a4ff1747599c" + integrity sha512-zULPs+TbCvOkIFd4FrG53xrpxvCBwLIgo6tO0tJorY7YV2IWFxUfS/lXDJbGgfyYt9ery/Gxj2niwttNnB0gIw== dependencies: "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.10" + "@babel/generator" "^7.17.12" "@babel/helper-environment-visitor" "^7.16.7" "@babel/helper-function-name" "^7.17.9" "@babel/helper-hoist-variables" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.17.10" - "@babel/types" "^7.17.10" + "@babel/parser" "^7.17.12" + "@babel/types" "^7.17.12" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.12.7", "@babel/types@^7.15.6", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.10", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.10.tgz#d35d7b4467e439fcf06d195f8100e0fea7fc82c4" - integrity sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A== +"@babel/types@^7.0.0", "@babel/types@^7.12.7", "@babel/types@^7.15.6", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.12", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.12.tgz#1210690a516489c0200f355d87619157fbbd69a0" + integrity sha512-rH8i29wcZ6x9xjzI5ILHL/yZkbQnCERdHlogKuIb4PUr7do4iT8DPekrTbBLWTnRQm6U0GYABbTMSzijmEqlAg== dependencies: "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" @@ -1393,9 +1394,9 @@ integrity sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g== "@cspell/dict-en_us@^2.2.2": - version "2.2.4" - resolved "https://registry.yarnpkg.com/@cspell/dict-en_us/-/dict-en_us-2.2.4.tgz#20abce3eabe048aa5d858de7b9475c6c290cdc1e" - integrity sha512-gblsvIPLNAK+pRR/Mn2m2kRQLVFeoORQJeaZKlGHWckA3s0iuTN49hSSTbK66k3aWlzhirtSoux7IdvT2RpgnQ== + version "2.2.5" + resolved "https://registry.yarnpkg.com/@cspell/dict-en_us/-/dict-en_us-2.2.5.tgz#7a1c325d54a7c9b8171da6e61f095ad34395ff68" + integrity sha512-gRHem02ZY83AQUTYBxtiVNmtM6gWFCJKumRoAKLj7vWYelmNLcCBsMA3BOOOJ7cZNKCI04lDEdh0u2f2akKZtQ== "@cspell/dict-filetypes@^2.0.1": version "2.0.1" @@ -1443,9 +1444,9 @@ integrity sha512-9f5LDATlAiXRGqxLxgqbOLlQxuMW2zcN7tBgxwtN+4u90vM03ZUOR/gKIuDV/y0ZuAiWBIjA73cjk8DJ13Q1eA== "@cspell/dict-latex@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@cspell/dict-latex/-/dict-latex-2.0.0.tgz#0b13b6522d305f5842833ec0179078d900714f65" - integrity sha512-H6RRwbHhQ9ARoO1R57SDqB+q/J5jUDdVnkdfukJkA+HNlJBhCcDuzGOIJqr+GBkJYDkF3obZ3LEOk2lUfT+Eyg== + version "2.0.2" + resolved "https://registry.yarnpkg.com/@cspell/dict-latex/-/dict-latex-2.0.2.tgz#f34150db2c4c781ccc7d551dbd8431c0a3938529" + integrity sha512-4tjuaieh5NJsYLco45lWu9SRT5H61aC1vtUNKS0+bpA+JaRJYvlpv/wAsq5HB0I9Iz17XHATDvX1zkp3QJ89gw== "@cspell/dict-lorem-ipsum@^2.0.0": version "2.0.0" @@ -1508,9 +1509,9 @@ integrity sha512-MUwA2YKpqaQOSR4V1/CVGRNk8Ii5kf6I8Ch+4/BhRZRQXuwWbi21rDRYWPqdQWps7VNzAbbMA+PQDWsD5YY38g== "@cspell/dict-software-terms@^2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@cspell/dict-software-terms/-/dict-software-terms-2.1.5.tgz#4e2aa08839f37aa933cf1ac5196dbc7005bc8d3e" - integrity sha512-ylXWCsOJlYuucaMoHaHQLVaB8HeDrsCZ42a3jrTC/i6F/SF9I+4tBg4lMivd4w31bXBgILdbIvVHtWzJf+5m0A== + version "2.1.7" + resolved "https://registry.yarnpkg.com/@cspell/dict-software-terms/-/dict-software-terms-2.1.7.tgz#30d45d23003980e01854d57788c6c134fa0387f5" + integrity sha512-2FW5MlbazmWPFHzMh2xKYFcYnX+E5MdOPRrfYkbVXvWecA0466l54V+op2zlh1CbngMk4eY7AY3qahfWv6gDHA== "@cspell/dict-swift@^1.0.2": version "1.0.2" @@ -1847,6 +1848,15 @@ "@jridgewell/set-array" "^1.0.0" "@jridgewell/sourcemap-codec" "^1.4.10" +"@jridgewell/gen-mapping@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz#cf92a983c83466b8c0ce9124fadeaf09f7c66ea9" + integrity sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + "@jridgewell/resolve-uri@^3.0.3": version "3.0.7" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz#30cd49820a962aff48c8fffc5cd760151fca61fe" @@ -1863,9 +1873,9 @@ integrity sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w== "@jridgewell/trace-mapping@^0.3.7", "@jridgewell/trace-mapping@^0.3.8", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.10" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.10.tgz#db436f0917d655393851bc258918c00226c9b183" - integrity sha512-Q0YbBd6OTsXm8Y21+YUSDXupHnodNC2M4O18jtd3iwJ3+vMZNdKGols0a9G6JOK0dcJ3IdUUHoh908ZI6qhk8Q== + version "0.3.13" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" + integrity sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w== dependencies: "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" @@ -3025,89 +3035,89 @@ "@svgr/plugin-jsx" "^6.2.1" "@svgr/plugin-svgo" "^6.2.0" -"@swc/core-android-arm-eabi@1.2.181": - version "1.2.181" - resolved "https://registry.yarnpkg.com/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.181.tgz#8317b96dbcf43f30bc0a9c139f7dbe2ffea4ce2f" - integrity sha512-H3HNf8j6M13uIbSruef8iMsCElJJDZOhp5qxwm/+P1jAG4eQ4vPfajIlTVdFJes8Adrbr4WQaVvl+m4BQw51JQ== - -"@swc/core-android-arm64@1.2.181": - version "1.2.181" - resolved "https://registry.yarnpkg.com/@swc/core-android-arm64/-/core-android-arm64-1.2.181.tgz#23ee887e08993d26a2b31a5dce5232a5cf4e17b1" - integrity sha512-b1apYKeosBaXl28xE/By4QVHYrXaR2+nOdcP6rsDXg6nyLBArtoiS5YUFikFN/VQbSAQqNeJQ+rovT5zITrgSQ== - -"@swc/core-darwin-arm64@1.2.181": - version "1.2.181" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.181.tgz#33d44c0aed28baebc797892d2243a845f5b49905" - integrity sha512-M3/PPeO6NTN7GYa1mOWPNMaAPxEQH8xd+X6FHMa7OBCi+Qxkarafu4DZRfzR88TcS3XikqFLgmmzSP7Z/tye2w== - -"@swc/core-darwin-x64@1.2.181": - version "1.2.181" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.2.181.tgz#6da604c4c4e85c1baad9c355f25a4e0cceff52cb" - integrity sha512-8Uc6gx7YN5+eSnk3h7aHqp1f3RFoBJPDPeH9cURm4mfE4BTgkVgkctUm0IE5sS5AotazVbrOwhEFrl7TONSfPA== - -"@swc/core-freebsd-x64@1.2.181": - version "1.2.181" - resolved "https://registry.yarnpkg.com/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.181.tgz#41b26a7fd1214c9947e8a433231bcb3166916a33" - integrity sha512-SbnsbJHGFNY7VSTA5OhBh2PmLgQumIGerAxTCTYO1IgtbADCTL+gCjU0TK0viG/zpH4jnjaL965BI4JTo/bpRg== - -"@swc/core-linux-arm-gnueabihf@1.2.181": - version "1.2.181" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.181.tgz#780f37f6b611ccd5c04d484b7b33e436e2ea8568" - integrity sha512-aWO6Lr9wea96Z7AEagzf4reKgDb3UWXZnClwJK7baScwF8KV+Mh99vVgkSe1nj2gKOZ31pBLp62RDJkc3gdlnA== - -"@swc/core-linux-arm64-gnu@1.2.181": - version "1.2.181" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.181.tgz#34a4639fdcf3cf6c30087f719200c2fb1eac8792" - integrity sha512-+7fzDwsvcbhPafKdminMQrU3Ej1NHltXy7k+zgjj8BDPZbfi8hRzQcONeBV7sfl4xvw3d3roNHu2UMmKzLNs0w== - -"@swc/core-linux-arm64-musl@1.2.181": - version "1.2.181" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.181.tgz#c1388644df35ad30b71c0d09fd9a96d31405299f" - integrity sha512-U9k8pv2oCxYYfu9DdOO1ZZgqbmF97NgJzSaIu3PsTedF4RcGIiPcuGOFqrUECsGUW2i6uKejE8onbXPj9UmaZQ== - -"@swc/core-linux-x64-gnu@1.2.181": - version "1.2.181" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.181.tgz#2384b58d35bb2e31521005869acbc6ea2e0700b4" - integrity sha512-9AQXrvZ9BFQJeqYMpKQZRf9h/DEwhfHIR39krehO+g594i+mkkp+UNTToez6Ifn+NBYl58xyEcQGwsYIqtdYVw== - -"@swc/core-linux-x64-musl@1.2.181": - version "1.2.181" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.181.tgz#4938a87eae011daaf9f360a1452ece8a2e9c5816" - integrity sha512-Pq/aBMj3F4CR4tXq85t7IW3piu76a677nIoo6QtBkAjrQ5QuJqpaez/5aewipG+kIXpiu/DNFIN+cISa1QeC8A== - -"@swc/core-win32-arm64-msvc@1.2.181": - version "1.2.181" - resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.181.tgz#553b16cfb5aa918f191227abe929619263142ea5" - integrity sha512-m24036tVFDE8ZJ3fBVBfsHw4tHd0BG6g3TvT2MLAiW2MezYeTdrGpmvPBz4Woz686I/06cWeSg7cZF1/ZcZMMA== - -"@swc/core-win32-ia32-msvc@1.2.181": - version "1.2.181" - resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.181.tgz#e520b9caa136c283fa789805bfe46966faec6d81" - integrity sha512-OPROzGapmr29qqwvB/aP9SA80r2eIukj+q7gghdQVptJrQU4GrTyzW1TpnGtpzj8rLZz4hEG6KtyPUh54bJZ/g== - -"@swc/core-win32-x64-msvc@1.2.181": - version "1.2.181" - resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.181.tgz#5cc5843e2aad673abb76231971faca140c711709" - integrity sha512-YrIaS63XsGiQ9AgxUVZ7Irt4pwQc3c2TPN7PyQP7ok9zBZxY5pBTwRTdLctlF4LNsSavlHE5+rvdPzcYAG0ekQ== - -"@swc/core@^1.2.181": - version "1.2.181" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.2.181.tgz#87a856be4581be4da5515287a2120544f9d733ba" - integrity sha512-evQX+Br/gC+FYLbUIF1dOQa7hUzBpowrcbgPkIRCEvi4HrCn7pGBZ2ZHBXmwEtBdLfOlyQvN/8USClApQKK4Rw== +"@swc/core-android-arm-eabi@1.2.185": + version "1.2.185" + resolved "https://registry.yarnpkg.com/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.185.tgz#6fca8a364428c3ff17fd960176a8c5a1047748c4" + integrity sha512-/ZTj5yaPkPC0UwggYN+y4d2DNZJI+b1y1gi4twrQJz997OMU032Hi9/59VxHFzHNxlzhIuCJYcbxOxi1Aqk2bA== + +"@swc/core-android-arm64@1.2.185": + version "1.2.185" + resolved "https://registry.yarnpkg.com/@swc/core-android-arm64/-/core-android-arm64-1.2.185.tgz#592fa96fb17036d920f57c8f36c859acf1dacb53" + integrity sha512-TgidzM+7H0YTIABu2ILI8MRDiIzcFULz5vIUWbhLwypPH9vJCFcDnAv5rBpg/4KBMzuSI6BNNBIcf/8Wc9e0HA== + +"@swc/core-darwin-arm64@1.2.185": + version "1.2.185" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.185.tgz#5dfbb3425ddf479c8875a3737e1de5b127e335b2" + integrity sha512-segMc9FVYz+M5KzpPJR+M20Mmeq4ZQw4gi6rt0HXNpSPykm+oe/wb1CZbMk/9SpMaevpXOOZa0HHBM2ue+WhVA== + +"@swc/core-darwin-x64@1.2.185": + version "1.2.185" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.2.185.tgz#e97ed012ff08fb39dcc51fc07233f4425fa89408" + integrity sha512-PL1Xq6R5zpBbYZsWJU0xK2/WQlhag/Kiq1eZd6ftSLaxn0q00wdSGPpzOqK5FTYAqi+5R1CWM/kCOHFoSlYDfg== + +"@swc/core-freebsd-x64@1.2.185": + version "1.2.185" + resolved "https://registry.yarnpkg.com/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.185.tgz#ba12147270c754c47eee9a99f08de75172ae4bb1" + integrity sha512-scaFxGfV7RhJrrCGzouwFe1XOzJvY/WjYWysHuD+slSdn3pjSnxXtX2Q9jPIYF0bmIcbTp4D6V8VITLhmfkzEA== + +"@swc/core-linux-arm-gnueabihf@1.2.185": + version "1.2.185" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.185.tgz#4bd8ff733e06c8ea0dc916208f8fdeb907f25256" + integrity sha512-WQ84BVGF0al3ynWBeXuEpO7y6h8Bh4AXr+Ys2YaEgyZtAZ6zWUi3Ca4ktFWwpACSm0XUUB3lhlapUcqXJE8lZg== + +"@swc/core-linux-arm64-gnu@1.2.185": + version "1.2.185" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.185.tgz#8abe168271f4ba6767da87fb4386ccea388fc324" + integrity sha512-INrmHqV5ti0ROS9FeGXPF5ZcIAWZ9Sp+Xbn5isWZ9owqT0c2CU4f9+w+OzNMMDKVFe2ARvlH/D927mLIgwqDmQ== + +"@swc/core-linux-arm64-musl@1.2.185": + version "1.2.185" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.185.tgz#2352673452ac2553d45181d53351cb00d378d848" + integrity sha512-OEwVBlypM7SOZqpa82hIh9jeiu/eSXG+J+R0vekcWz7EkW5zb504uyGPeZJKMqX23I5GZtBpk96UUbhnNCaYUg== + +"@swc/core-linux-x64-gnu@1.2.185": + version "1.2.185" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.185.tgz#058444fa372374f2f7f2f2d09c03085f928c8f12" + integrity sha512-H8LnCdViP7JsFlDE02w5czlKQWnAAM9ZN3oZnvAuTod2gJBjTJ4eZ3h9d+EQdcszw7Csh+IwXbmPz0mPwaR0vQ== + +"@swc/core-linux-x64-musl@1.2.185": + version "1.2.185" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.185.tgz#a8f473965e87acb03057d6b4790f86857e5ce4ea" + integrity sha512-DRHmhjCsA2FloF+6/HMxJ8bkdfddAY/wqnpuW/l3CPUyL3VMDmvSiZICN8f/J8LKpGfDV2FdczztmbGi14jO+g== + +"@swc/core-win32-arm64-msvc@1.2.185": + version "1.2.185" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.185.tgz#d8fc5bf11e67664d54a84ad37d9ac7d69df1a317" + integrity sha512-0BmuvU+Lfz5n1/ihh30UF2Viu9JJn3S3YC9QD9BfF80ueEl8KT4JihhJGuEG3XuZk5+35o2oZiCRkn6NKI/qpA== + +"@swc/core-win32-ia32-msvc@1.2.185": + version "1.2.185" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.185.tgz#cbd3a4ad67bf40754143fafc87baed6021e9a780" + integrity sha512-yRNa/frm5MeXJMpj6V6uQy5a0yfO9q6ZOQ4L+439UH8vBcgIZYOG07bJGvxeUjaKkkrhfzEu5Q8fdXTzPgGeAA== + +"@swc/core-win32-x64-msvc@1.2.185": + version "1.2.185" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.185.tgz#f2459a88783ed95257229e41034fd913b487c5b4" + integrity sha512-nLF0AKADjeR3Rr05lWoKOeDbGBFpmbFnGkpLJK9EAwAIQUC9lDRYIps5yinPZsgqBwa0RCUsxzS3PjbWEY18bg== + +"@swc/core@^1.2.185": + version "1.2.185" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.2.185.tgz#26cdc7f9417fd2f04fde7f97d0b217aaa1bc8d3b" + integrity sha512-dDNzDrJ4bzMVWeFWqLJojjv5XZJZ84Zia7kQdJjp+kfOMdEhS+onrAwrk5Q88PlAvbrhY6kQbWD2LZ8JdyEaSQ== optionalDependencies: - "@swc/core-android-arm-eabi" "1.2.181" - "@swc/core-android-arm64" "1.2.181" - "@swc/core-darwin-arm64" "1.2.181" - "@swc/core-darwin-x64" "1.2.181" - "@swc/core-freebsd-x64" "1.2.181" - "@swc/core-linux-arm-gnueabihf" "1.2.181" - "@swc/core-linux-arm64-gnu" "1.2.181" - "@swc/core-linux-arm64-musl" "1.2.181" - "@swc/core-linux-x64-gnu" "1.2.181" - "@swc/core-linux-x64-musl" "1.2.181" - "@swc/core-win32-arm64-msvc" "1.2.181" - "@swc/core-win32-ia32-msvc" "1.2.181" - "@swc/core-win32-x64-msvc" "1.2.181" + "@swc/core-android-arm-eabi" "1.2.185" + "@swc/core-android-arm64" "1.2.185" + "@swc/core-darwin-arm64" "1.2.185" + "@swc/core-darwin-x64" "1.2.185" + "@swc/core-freebsd-x64" "1.2.185" + "@swc/core-linux-arm-gnueabihf" "1.2.185" + "@swc/core-linux-arm64-gnu" "1.2.185" + "@swc/core-linux-arm64-musl" "1.2.185" + "@swc/core-linux-x64-gnu" "1.2.185" + "@swc/core-linux-x64-musl" "1.2.185" + "@swc/core-win32-arm64-msvc" "1.2.185" + "@swc/core-win32-ia32-msvc" "1.2.185" + "@swc/core-win32-x64-msvc" "1.2.185" "@swc/jest@^0.2.21": version "0.2.21" @@ -3406,19 +3416,14 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@^27.5.0": - version "27.5.0" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.5.0.tgz#e04ed1824ca6b1dd0438997ba60f99a7405d4c7b" - integrity sha512-9RBFx7r4k+msyj/arpfaa0WOOEcaAZNmN+j80KFbFCoSqCJGHTz7YMAMGQW9Xmqm5w6l5c25vbSjMwlikJi5+g== +"@types/jest@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.5.1.tgz#2c8b6dc6ff85c33bcd07d0b62cb3d19ddfdb3ab9" + integrity sha512-fUy7YRpT+rHXto1YlL+J9rs0uLGyiqVt3ZOTQR+4ROc47yNl8WLdVLgUloBRhOxP1PZvguHl44T3H0wAWxahYQ== dependencies: jest-matcher-utils "^27.0.0" pretty-format "^27.0.0" -"@types/js-cookie@^2.2.6": - version "2.2.7" - resolved "https://registry.yarnpkg.com/@types/js-cookie/-/js-cookie-2.2.7.tgz#226a9e31680835a6188e887f3988e60c04d3f6a3" - integrity sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA== - "@types/js-yaml@^4.0.5": version "4.0.5" resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-4.0.5.tgz#738dd390a6ecc5442f35e7f03fa1431353f7e138" @@ -3497,10 +3502,10 @@ resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== -"@types/node@*", "@types/node@^17.0.31", "@types/node@^17.0.5": - version "17.0.31" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.31.tgz#a5bb84ecfa27eec5e1c802c6bbf8139bdb163a5d" - integrity sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q== +"@types/node@*", "@types/node@^17.0.34", "@types/node@^17.0.5": + version "17.0.34" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.34.tgz#3b0b6a50ff797280b8d000c6281d229f9c538cef" + integrity sha512-XImEz7XwTvDBtzlTnm8YvMqGW/ErMWBsKZ+hMTvnDIjGCKxwK5Xpc+c/oQjOauwq8M4OS11hEkpjX8rrI/eEgA== "@types/normalize-package-data@^2.4.0": version "2.4.1" @@ -3533,9 +3538,9 @@ integrity sha512-O397rnSS9iQI4OirieAtsDqvCj4+3eY1J+EPdNTKuHuRWIfUoGyzX294o8C4KJYaLqgSrd2o60c5EqCU8Zv02g== "@types/prettier@^2.1.5": - version "2.6.0" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.6.0.tgz#efcbd41937f9ae7434c714ab698604822d890759" - integrity sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw== + version "2.6.1" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.6.1.tgz#76e72d8a775eef7ce649c63c8acae1a0824bbaed" + integrity sha512-XFjFHmaLVifrAKaZ+EKghFHtHSUonyw8P2Qmy2/+osBnrKbH9UYtlK10zg8/kCt47MFilll/DEDKy3DHfJ0URw== "@types/prismjs@^1.26.0": version "1.26.0" @@ -3575,10 +3580,10 @@ "@types/webpack" "^4" "@types/webpack-dev-server" "3" -"@types/react-dom@^18.0.3": - version "18.0.3" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.3.tgz#a022ea08c75a476fe5e96b675c3e673363853831" - integrity sha512-1RRW9kst+67gveJRYPxGmVy8eVJ05O43hg77G2j5m76/RFJtMbcfAs2viQ2UNsvvDg8F7OfQZx8qQcl6ymygaQ== +"@types/react-dom@^18.0.4": + version "18.0.4" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.4.tgz#dcbcadb277bcf6c411ceff70069424c57797d375" + integrity sha512-FgTtbqPOCI3dzZPZoC2T/sx3L34qxy99ITWn4eoSA95qPyXDMH0ALoAqUp49ITniiJFsXUVBtalh/KffMpg21Q== dependencies: "@types/react" "*" @@ -3843,85 +3848,85 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^5.23.0": - version "5.23.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.23.0.tgz#bc4cbcf91fbbcc2e47e534774781b82ae25cc3d8" - integrity sha512-hEcSmG4XodSLiAp1uxv/OQSGsDY6QN3TcRU32gANp+19wGE1QQZLRS8/GV58VRUoXhnkuJ3ZxNQ3T6Z6zM59DA== +"@typescript-eslint/eslint-plugin@^5.24.0": + version "5.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.24.0.tgz#59f9ed21fc4490444b75b250e4ce81e4b7bba18f" + integrity sha512-6bqFGk6wa9+6RrU++eLknKyDqXU1Oc8nyoLu5a1fU17PNRJd9UBr56rMF7c4DRaRtnarlkQ4jwxUbvBo8cNlpw== dependencies: - "@typescript-eslint/scope-manager" "5.23.0" - "@typescript-eslint/type-utils" "5.23.0" - "@typescript-eslint/utils" "5.23.0" - debug "^4.3.2" + "@typescript-eslint/scope-manager" "5.24.0" + "@typescript-eslint/type-utils" "5.24.0" + "@typescript-eslint/utils" "5.24.0" + debug "^4.3.4" functional-red-black-tree "^1.0.1" - ignore "^5.1.8" + ignore "^5.2.0" regexpp "^3.2.0" - semver "^7.3.5" + semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/parser@^5.23.0": - version "5.23.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.23.0.tgz#443778e1afc9a8ff180f91b5e260ac3bec5e2de1" - integrity sha512-V06cYUkqcGqpFjb8ttVgzNF53tgbB/KoQT/iB++DOIExKmzI9vBJKjZKt/6FuV9c+zrDsvJKbJ2DOCYwX91cbw== +"@typescript-eslint/parser@^5.24.0": + version "5.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.24.0.tgz#fe6563483f264aa9fe48b7fd9b329aa5f985841a" + integrity sha512-4q29C6xFYZ5B2CXqSBBdcS0lPyfM9M09DoQLtHS5kf+WbpV8pBBhHDLNhXfgyVwFnhrhYzOu7xmg02DzxeF2Uw== dependencies: - "@typescript-eslint/scope-manager" "5.23.0" - "@typescript-eslint/types" "5.23.0" - "@typescript-eslint/typescript-estree" "5.23.0" - debug "^4.3.2" + "@typescript-eslint/scope-manager" "5.24.0" + "@typescript-eslint/types" "5.24.0" + "@typescript-eslint/typescript-estree" "5.24.0" + debug "^4.3.4" -"@typescript-eslint/scope-manager@5.23.0": - version "5.23.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.23.0.tgz#4305e61c2c8e3cfa3787d30f54e79430cc17ce1b" - integrity sha512-EhjaFELQHCRb5wTwlGsNMvzK9b8Oco4aYNleeDlNuL6qXWDF47ch4EhVNPh8Rdhf9tmqbN4sWDk/8g+Z/J8JVw== +"@typescript-eslint/scope-manager@5.24.0": + version "5.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.24.0.tgz#ac8c4d65064204b596909c204fe9b7e30c3f51b2" + integrity sha512-WpMWipcDzGmMzdT7NtTjRXFabx10WleLUGrJpuJLGaxSqpcyq5ACpKSD5VE40h2nz3melQ91aP4Du7lh9FliCA== dependencies: - "@typescript-eslint/types" "5.23.0" - "@typescript-eslint/visitor-keys" "5.23.0" + "@typescript-eslint/types" "5.24.0" + "@typescript-eslint/visitor-keys" "5.24.0" -"@typescript-eslint/type-utils@5.23.0": - version "5.23.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.23.0.tgz#f852252f2fc27620d5bb279d8fed2a13d2e3685e" - integrity sha512-iuI05JsJl/SUnOTXA9f4oI+/4qS/Zcgk+s2ir+lRmXI+80D8GaGwoUqs4p+X+4AxDolPpEpVUdlEH4ADxFy4gw== +"@typescript-eslint/type-utils@5.24.0": + version "5.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.24.0.tgz#aad47227e89cceec9175b1a67df69ebcd79f9421" + integrity sha512-uGi+sQiM6E5CeCZYBXiaIvIChBXru4LZ1tMoeKbh1Lze+8BO9syUG07594C4lvN2YPT4KVeIupOJkVI+9/DAmQ== dependencies: - "@typescript-eslint/utils" "5.23.0" - debug "^4.3.2" + "@typescript-eslint/utils" "5.24.0" + debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/types@5.23.0": - version "5.23.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.23.0.tgz#8733de0f58ae0ed318dbdd8f09868cdbf9f9ad09" - integrity sha512-NfBsV/h4dir/8mJwdZz7JFibaKC3E/QdeMEDJhiAE3/eMkoniZ7MjbEMCGXw6MZnZDMN3G9S0mH/6WUIj91dmw== +"@typescript-eslint/types@5.24.0": + version "5.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.24.0.tgz#565ff94a4b89073265e27514dc65225d18aabe6c" + integrity sha512-Tpg1c3shTDgTmZd3qdUyd+16r/pGmVaVEbLs+ufuWP0EruVbUiEOmpBBQxBb9a8iPRxi8Rb2oiwOxuZJzSq11A== -"@typescript-eslint/typescript-estree@5.23.0": - version "5.23.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.23.0.tgz#dca5f10a0a85226db0796e8ad86addc9aee52065" - integrity sha512-xE9e0lrHhI647SlGMl+m+3E3CKPF1wzvvOEWnuE3CCjjT7UiRnDGJxmAcVKJIlFgK6DY9RB98eLr1OPigPEOGg== +"@typescript-eslint/typescript-estree@5.24.0": + version "5.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.24.0.tgz#30b9cbc1af475b9e02aca34cfe9ba9e1bb820143" + integrity sha512-zcor6vQkQmZAQfebSPVwUk/FD+CvnsnlfKXYeQDsWXRF+t7SBPmIfNia/wQxCSeu1h1JIjwV2i9f5/DdSp/uDw== dependencies: - "@typescript-eslint/types" "5.23.0" - "@typescript-eslint/visitor-keys" "5.23.0" - debug "^4.3.2" - globby "^11.0.4" + "@typescript-eslint/types" "5.24.0" + "@typescript-eslint/visitor-keys" "5.24.0" + debug "^4.3.4" + globby "^11.1.0" is-glob "^4.0.3" - semver "^7.3.5" + semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.23.0", "@typescript-eslint/utils@^5.10.0", "@typescript-eslint/utils@^5.23.0": - version "5.23.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.23.0.tgz#4691c3d1b414da2c53d8943310df36ab1c50648a" - integrity sha512-dbgaKN21drqpkbbedGMNPCtRPZo1IOUr5EI9Jrrh99r5UW5Q0dz46RKXeSBoPV+56R6dFKpbrdhgUNSJsDDRZA== +"@typescript-eslint/utils@5.24.0", "@typescript-eslint/utils@^5.10.0", "@typescript-eslint/utils@^5.24.0": + version "5.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.24.0.tgz#7a854028040a305ddea129328e45cfb2c6406e75" + integrity sha512-K05sbWoeCBJH8KXu6hetBJ+ukG0k2u2KlgD3bN+v+oBKm8adJqVHpSSLHNzqyuv0Lh4GVSAUgZ5lB4icmPmWLw== dependencies: "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.23.0" - "@typescript-eslint/types" "5.23.0" - "@typescript-eslint/typescript-estree" "5.23.0" + "@typescript-eslint/scope-manager" "5.24.0" + "@typescript-eslint/types" "5.24.0" + "@typescript-eslint/typescript-estree" "5.24.0" eslint-scope "^5.1.1" eslint-utils "^3.0.0" -"@typescript-eslint/visitor-keys@5.23.0": - version "5.23.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.23.0.tgz#057c60a7ca64667a39f991473059377a8067c87b" - integrity sha512-Vd4mFNchU62sJB8pX19ZSPog05B0Y0CE2UxAZPT5k4iqhRYjPnqyY3woMxCd0++t9OTqkgjST+1ydLBi7e2Fvg== +"@typescript-eslint/visitor-keys@5.24.0": + version "5.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.24.0.tgz#bb3e9a788ccd50c53e03557e4e203599880c3123" + integrity sha512-qzGwSXMyMnogcAo+/2fU+jhlPPVMXlIH2PeAonIKjJSoDKl1+lJVvG5Z5Oud36yU0TWK2cs1p/FaSN5J2OUFYA== dependencies: - "@typescript-eslint/types" "5.23.0" - eslint-visitor-keys "^3.0.0" + "@typescript-eslint/types" "5.24.0" + eslint-visitor-keys "^3.3.0" "@webassemblyjs/ast@1.11.1": version "1.11.1" @@ -4044,11 +4049,6 @@ "@webassemblyjs/ast" "1.11.1" "@xtuc/long" "4.2.2" -"@xobotyi/scrollbar-width@^1.9.5": - version "1.9.5" - resolved "https://registry.yarnpkg.com/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.5.tgz#80224a6919272f405b87913ca13b92929bdf3c4d" - integrity sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ== - "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" @@ -4530,9 +4530,9 @@ aws4@^1.8.0: integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== axe-core@^4.3.5: - version "4.4.1" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.1.tgz#7dbdc25989298f9ad006645cd396782443757413" - integrity sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw== + version "4.4.2" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.2.tgz#dcf7fb6dea866166c3eab33d68208afe4d5f670c" + integrity sha512-LVAaGp/wkkgYJcjmHsoKx4juT1aQvJyPcW09MLCjVTh3V2cc6PnyempiLMNH5iMdfIX/zdbjUx2KDjMLCTdPeA== axios@0.21.3: version "0.21.3" @@ -4960,9 +4960,9 @@ buffers@~0.1.1: integrity sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ== builtin-modules@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" - integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== + version "3.3.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" + integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== builtins@^1.0.3: version "1.0.3" @@ -5097,9 +5097,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001332, caniuse-lite@^1.0.30001335: - version "1.0.30001339" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001339.tgz#f9aece4ea8156071613b27791547ba0b33f176cf" - integrity sha512-Es8PiVqCe+uXdms0Gu5xP5PF2bxLR7OBp3wUzUnuO7OHzhOfCyg3hdiGWVPVxhiuniOzng+hTc1u3fEQ0TlkSQ== + version "1.0.30001341" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001341.tgz#59590c8ffa8b5939cf4161f00827b8873ad72498" + integrity sha512-2SodVrFFtvGENGCv0ChVJIDQ0KPaS1cg7/qtfMaICgeMolDdo/Z2OD32F0Aq9yl6F4YFwGPBS5AaPqNYiW4PoA== caseless@~0.12.0: version "0.12.0" @@ -5255,9 +5255,9 @@ ci-info@^2.0.0: integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== ci-info@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.0.tgz#b4ed1fb6818dea4803a55c623041f9165d2066b2" - integrity sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw== + version "3.3.1" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.1.tgz#58331f6f472a25fe3a50a351ae3052936c2c7f32" + integrity sha512-SXgeMX9VwDe7iFFaEWkA5AstuER9YKqy4EhHqr4DVqkwmD9rpVimkMKWHdjn30Ja45txyjhSn63lVX69eVCckg== cjs-module-lexer@^1.0.0: version "1.2.2" @@ -5629,19 +5629,20 @@ concat-stream@^2.0.0: readable-stream "^3.0.2" typedarray "^0.0.6" -concurrently@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-7.1.0.tgz#477b49b8cfc630bb491f9b02e9ed7fb7bff02942" - integrity sha512-Bz0tMlYKZRUDqJlNiF/OImojMB9ruKUz6GCfmhFnSapXgPe+3xzY4byqoKG9tUZ7L2PGEUjfLPOLfIX3labnmw== +concurrently@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-7.2.0.tgz#4d9b4d1e527b8a8cb101bc2aee317e09496fad43" + integrity sha512-4KIVY5HopDRhN3ndAgfFOLsMk1PZUPgghlgTMZ5Pb5aTrqYg86RcZaIZC2Cz+qpZ9DsX36WHGjvWnXPqdnblhw== dependencies: chalk "^4.1.0" date-fns "^2.16.1" lodash "^4.17.21" rxjs "^6.6.3" + shell-quote "^1.7.3" spawn-command "^0.0.2-1" supports-color "^8.1.0" tree-kill "^1.2.2" - yargs "^16.2.0" + yargs "^17.3.1" config-chain@^1.1.12: version "1.1.13" @@ -5814,13 +5815,6 @@ copy-text-to-clipboard@^3.0.1: resolved "https://registry.yarnpkg.com/copy-text-to-clipboard/-/copy-text-to-clipboard-3.0.1.tgz#8cbf8f90e0a47f12e4a24743736265d157bce69c" integrity sha512-rvVsHrpFcL4F2P8ihsoLdFHmd404+CMg71S756oRSeQgqk51U3kicGdnvfkrxva0xXH92SjGS62B0XIJsbh+9Q== -copy-to-clipboard@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz#115aa1a9998ffab6196f93076ad6da3b913662ae" - integrity sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw== - dependencies: - toggle-selection "^1.0.6" - copy-webpack-plugin@^10.2.4: version "10.2.4" resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz#6c854be3fdaae22025da34b9112ccf81c63308fe" @@ -6001,14 +5995,6 @@ css-functions-list@^3.0.1: resolved "https://registry.yarnpkg.com/css-functions-list/-/css-functions-list-3.0.1.tgz#1460df7fb584d1692c30b105151dbb988c8094f9" integrity sha512-PriDuifDt4u4rkDgnqRCLnjfMatufLmWNfQnGCq34xZwpY3oabwhB9SqRBmuvWUgndbemCFlKqg+nO7C2q0SBw== -css-in-js-utils@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz#3b472b398787291b47cfe3e44fecfdd9e914ba99" - integrity sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA== - dependencies: - hyphenate-style-name "^1.0.2" - isobject "^3.0.1" - css-loader@^6.7.1: version "6.7.1" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.7.1.tgz#e98106f154f6e1baf3fc3bc455cb9981c1d5fd2e" @@ -6079,28 +6065,28 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssnano-preset-advanced@^5.3.3: - version "5.3.3" - resolved "https://registry.yarnpkg.com/cssnano-preset-advanced/-/cssnano-preset-advanced-5.3.3.tgz#848422118d7a62b5b29a53edc160f58c7f7f7539" - integrity sha512-AB9SmTSC2Gd8T7PpKUsXFJ3eNsg7dc4CTZ0+XAJ29MNxyJsrCEk7N1lw31bpHrsQH2PVJr21bbWgGAfA9j0dIA== +cssnano-preset-advanced@^5.3.4: + version "5.3.4" + resolved "https://registry.yarnpkg.com/cssnano-preset-advanced/-/cssnano-preset-advanced-5.3.4.tgz#91e79c253d3f0176608f7814636242132924195b" + integrity sha512-mZovba9FGPmwGPgeMAE/ChrgmluEFyxQzkGZbBUcDYKfhI263BPV2NSiCyqdy8wSmVYEgyRi8TxiPwI4ZO/yGQ== dependencies: autoprefixer "^10.3.7" - cssnano-preset-default "^5.2.7" + cssnano-preset-default "^5.2.8" postcss-discard-unused "^5.1.0" postcss-merge-idents "^5.1.1" postcss-reduce-idents "^5.2.0" postcss-zindex "^5.1.0" -cssnano-preset-default@^5.2.7: - version "5.2.7" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.7.tgz#791e3603fb8f1b46717ac53b47e3c418e950f5f3" - integrity sha512-JiKP38ymZQK+zVKevphPzNSGHSlTI+AOwlasoSRtSVMUU285O7/6uZyd5NbW92ZHp41m0sSHe6JoZosakj63uA== +cssnano-preset-default@^5.2.8: + version "5.2.8" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.8.tgz#d7886e8cf6d075ae2298d7526b4cccf0eacdcbdc" + integrity sha512-6xQXUhTAPupvib3KC0Gl0d1jIwGFcJyuWQiMcA6grprGdmIzt1cxG5z78VuZu6DRRS6qin6ETkQsH6ixxb/SQw== dependencies: css-declaration-sorter "^6.2.2" cssnano-utils "^3.1.0" postcss-calc "^8.2.3" postcss-colormin "^5.3.0" - postcss-convert-values "^5.1.0" + postcss-convert-values "^5.1.1" postcss-discard-comments "^5.1.1" postcss-discard-duplicates "^5.1.0" postcss-discard-empty "^5.1.1" @@ -6109,7 +6095,7 @@ cssnano-preset-default@^5.2.7: postcss-merge-rules "^5.1.1" postcss-minify-font-values "^5.1.0" postcss-minify-gradients "^5.1.1" - postcss-minify-params "^5.1.2" + postcss-minify-params "^5.1.3" postcss-minify-selectors "^5.2.0" postcss-normalize-charset "^5.1.0" postcss-normalize-display-values "^5.1.0" @@ -6131,12 +6117,12 @@ cssnano-utils@^3.1.0: resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== -cssnano@^5.0.6, cssnano@^5.1.7: - version "5.1.7" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.7.tgz#99858bef6c76c9240f0cdc9239570bc7db8368be" - integrity sha512-pVsUV6LcTXif7lvKKW9ZrmX+rGRzxkEdJuVJcp5ftUjWITgwam5LMZOgaTvUrWPkcORBey6he7JKb4XAJvrpKg== +cssnano@^5.0.6, cssnano@^5.1.8: + version "5.1.8" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.8.tgz#6add8a61c8ae493184689af347e61b1bc7cd57dd" + integrity sha512-5lma/yQlK+6eOHSUqNAS11b4/fbiuasoxmCHoVYxSg6lQsyX7bGGIqiLi4o3Pe2CrUTrgcD2udW7JIgzC2806g== dependencies: - cssnano-preset-default "^5.2.7" + cssnano-preset-default "^5.2.8" lilconfig "^2.0.3" yaml "^1.10.2" @@ -6164,10 +6150,10 @@ cssstyle@^2.3.0: dependencies: cssom "~0.3.6" -csstype@^3.0.2, csstype@^3.0.6: - version "3.0.11" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.11.tgz#d66700c5eacfac1940deb4e3ee5642792d85cd33" - integrity sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw== +csstype@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.0.tgz#4ddcac3718d787cf9df0d1b7d15033925c8f29f2" + integrity sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA== damerau-levenshtein@^1.0.7: version "1.0.8" @@ -6342,10 +6328,10 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" -del@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/del/-/del-6.0.0.tgz#0b40d0332cea743f1614f818be4feb717714c952" - integrity sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ== +del@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/del/-/del-6.1.0.tgz#aa79a5b0a2a9ecc985c0a075e8ad9a5b23bf949c" + integrity sha512-OpcRktOt7G7HBfyxP0srBH4Djg4824EQORX8E1qvIhIzthNNArxxhrB/Mm7dRMiLi1nvFyUpDhzD2cTtbBhV8A== dependencies: globby "^11.0.1" graceful-fs "^4.2.4" @@ -6639,9 +6625,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== ejs@^3.1.6: - version "3.1.7" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.7.tgz#c544d9c7f715783dd92f0bddcf73a59e6962d006" - integrity sha512-BIar7R6abbUxDA3bfXrO4DSgwo8I+fB5/1zgujl3HLLjwd6+9iOnrT+t3grn2qbk9vOgBubXOFwX2m9axoFaGw== + version "3.1.8" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" + integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== dependencies: jake "^10.8.5" @@ -6739,17 +6725,10 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -error-stack-parser@^2.0.6: - version "2.0.7" - resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.7.tgz#b0c6e2ce27d0495cf78ad98715e0cad1219abb57" - integrity sha512-chLOW0ZGRf4s8raLrDxa5sdkvPec5YdvwbFnqJme4rk0rFajP8mPtrDL1+I+CwrQDCjswDA5sREX7jYQDQs9vA== - dependencies: - stackframe "^1.1.1" - es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5: - version "1.20.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.0.tgz#b2d526489cceca004588296334726329e0a6bfb6" - integrity sha512-URbD8tgRthKD3YcC39vbvSDrX23upXnPcnGAjQfgxXF5ID75YcENawc9ZX/9iTP9ptUyfCLIxTTuMYoRfiOVKA== + version "1.20.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.1.tgz#027292cd6ef44bd12b1913b828116f54787d1814" + integrity sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA== dependencies: call-bind "^1.0.2" es-to-primitive "^1.2.1" @@ -6770,7 +6749,7 @@ es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19 object-inspect "^1.12.0" object-keys "^1.1.1" object.assign "^4.1.2" - regexp.prototype.flags "^1.4.1" + regexp.prototype.flags "^1.4.3" string.prototype.trimend "^1.0.5" string.prototype.trimstart "^1.0.5" unbox-primitive "^1.0.2" @@ -6878,10 +6857,10 @@ eslint-module-utils@^2.7.3: debug "^3.2.7" find-up "^2.1.0" -eslint-plugin-eslint-plugin@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-eslint-plugin/-/eslint-plugin-eslint-plugin-4.1.0.tgz#40ae944d79e845dc9d4a85328eea3c5bf4ae0f7d" - integrity sha512-QJVw+WYXJuG2469gx5G929bz7crfxySDlK1i569FkuT6dpeHDeP7MmDrKaswCx17snG25LRFD6wmVX+AO5x7Qg== +eslint-plugin-eslint-plugin@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-eslint-plugin/-/eslint-plugin-eslint-plugin-4.2.0.tgz#64c5ba82f9b1073c89a79a1c8f451f278be6603a" + integrity sha512-ZDyUUlZJw85hmc9pGciNFiQwojXKxV7KAAVnQtojk1W/I8YYHxYV9JBuzhfAYfVemiQzDPNwj1zwAqQwGN1ROw== dependencies: eslint-utils "^3.0.0" estraverse "^5.2.0" @@ -6910,10 +6889,10 @@ eslint-plugin-import@^2.26.0: resolve "^1.22.0" tsconfig-paths "^3.14.1" -eslint-plugin-jest@^26.1.5: - version "26.1.5" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-26.1.5.tgz#6cfca264818d6d6aa120b019dab4d62b6aa8e775" - integrity sha512-su89aDuljL9bTjEufTXmKUMSFe2kZUL9bi7+woq+C2ukHZordhtfPm4Vg+tdioHBaKf8v3/FXW9uV0ksqhYGFw== +eslint-plugin-jest@^26.2.2: + version "26.2.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-26.2.2.tgz#74e000544259f1ef0462a609a3fc9e5da3768f6c" + integrity sha512-etSFZ8VIFX470aA6kTqDPhIq7YWe0tjBcboFNV3WeiC18PJ/AVonGhuTwlmuz2fBkH8FJHA7JQ4k7GsQIj1Gew== dependencies: "@typescript-eslint/utils" "^5.10.0" @@ -7002,7 +6981,7 @@ eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.3.0: +eslint-visitor-keys@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== @@ -7308,11 +7287,6 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== -fast-shallow-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fast-shallow-equal/-/fast-shallow-equal-1.0.0.tgz#d4dcaf6472440dcefa6f88b98e3251e27f25628b" - integrity sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw== - fast-url-parser@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/fast-url-parser/-/fast-url-parser-1.1.3.tgz#f4af3ea9f34d8a271cf58ad2b3759f431f0b318d" @@ -7325,11 +7299,6 @@ fastest-levenshtein@^1.0.12: resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== -fastest-stable-stringify@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/fastest-stable-stringify/-/fastest-stable-stringify-2.0.2.tgz#3757a6774f6ec8de40c4e86ec28ea02417214c76" - integrity sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q== - fastq@^1.6.0: version "1.13.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" @@ -7413,9 +7382,9 @@ file-loader@^6.2.0: schema-utils "^3.0.0" filelist@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.3.tgz#448607750376484932f67ef1b9ff07386b036c83" - integrity sha512-LwjCsruLWQULGYKy7TX0OPtrL9kLpojOFKc5VCTxdFTV7w5zbsgqVKfnkKG7Qgjtq50gKfO56hJv88OfcGb70Q== + version "1.0.4" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== dependencies: minimatch "^5.0.1" @@ -7521,9 +7490,9 @@ flatted@^3.1.0: integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== flow-parser@0.*: - version "0.177.0" - resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.177.0.tgz#653092470c8e79ed737cb38e3be1d1de0d25feac" - integrity sha512-Ac1OwHjSoUALrcnHTTD6oaEPITaxYmP34iiEEcuCxeeD+tOKR7/Toaw4RpJKcDmYxLX79ZP9E7z+Q8ze9pESbQ== + version "0.178.0" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.178.0.tgz#85d300e29b146b54cb79e277e092ffd401b05f0c" + integrity sha512-OviMR2Y/sMSyUzR1xLLAmQvmHXTsD1Sq69OTmP5AckVulld7sVNsCfwsw7t3uK00dO9A7k4fD+wodbzzaaEn5g== flux@^4.0.1: version "4.0.3" @@ -7533,10 +7502,10 @@ flux@^4.0.1: fbemitter "^3.0.0" fbjs "^3.0.1" -focus-options-polyfill@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/focus-options-polyfill/-/focus-options-polyfill-1.2.0.tgz#9800ffb230bc9db63eea6d27694a62ac2e355946" - integrity sha512-4sgXxV/zU4WHM2IHWpjUmEWazbF6ie+M93/uo8ipfAbQ1GHopn+/V+Ca+PR0ndxswNQbisCNrjbnvWEq14MkTA== +focus-options-polyfill@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/focus-options-polyfill/-/focus-options-polyfill-1.5.1.tgz#0f422580d9d1fb65651f2968b547032eb17dab3c" + integrity sha512-7yH20IePROHJLLbJvqqtsG420jE6DuukccapiB/WagtUpnc98r9NzHbX5rnjCDgdZqLgcqlzGjn+8l0Zb8Zf9w== follow-redirects@^1.0.0, follow-redirects@^1.14.0, follow-redirects@^1.14.7: version "1.15.0" @@ -7891,28 +7860,27 @@ glob-to-regexp@^0.4.1: integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== glob@^7.0.0, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.0.4" + minimatch "^3.1.1" once "^1.3.0" path-is-absolute "^1.0.0" glob@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.1.tgz#00308f5c035aa0b2a447cd37ead267ddff1577d3" - integrity sha512-cF7FYZZ47YzmCu7dDy50xSRRfO3ErRfrXuLZcNIuyiJEco0XSrGtuilG19L5xp3NcwTx7Gn+X6Tv3fmsUPTbow== + version "8.0.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" + integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" minimatch "^5.0.1" once "^1.3.0" - path-is-absolute "^1.0.0" global-dirs@^0.1.1: version "0.1.1" @@ -7950,9 +7918,9 @@ globals@^11.1.0: integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^13.6.0, globals@^13.9.0: - version "13.14.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.14.0.tgz#daf3ff9b4336527cf56e98330b6f64bea9aff9df" - integrity sha512-ERO68sOYwm5UuLvSJTY7w7NP2c8S4UcXs3X1GBX8cwOr+ShOcDBbCY5mH4zxz0jsYCdJ8ve8Mv9n2YGJMB1aeg== + version "13.15.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.15.0.tgz#38113218c907d2f7e98658af246cef8b77e90bac" + integrity sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog== dependencies: type-fest "^0.20.2" @@ -8537,11 +8505,6 @@ husky@^8.0.1: resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.1.tgz#511cb3e57de3e3190514ae49ed50f6bc3f50b3e9" integrity sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw== -hyphenate-style-name@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d" - integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== - iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -8578,7 +8541,7 @@ ignore-walk@^3.0.3: dependencies: minimatch "^3.0.4" -ignore@^5.1.8, ignore@^5.1.9, ignore@^5.2.0: +ignore@^5.1.9, ignore@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== @@ -8591,9 +8554,9 @@ image-size@^1.0.1: queue "6.0.2" immer@^9.0.7: - version "9.0.12" - resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.12.tgz#2d33ddf3ee1d247deab9d707ca472c8c942a0f20" - integrity sha512-lk7UNmSbAukB5B6dh9fnh5D0bJTOFKxVg2cyJWTYrWRfhLrLMBquONcUs3aFq507hNoIZEDDh8lb8UtOizSMhA== + version "9.0.14" + resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.14.tgz#e05b83b63999d26382bb71676c9d827831248a48" + integrity sha512-ubBeqQutOSLIFCUBN03jGeOS6a3DoYlSYwYJTa+gSKEZKU5redJIqkIdZ3JVv/4RZpfcXdAWH5zCNLWPRv2WDw== import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" @@ -8687,13 +8650,6 @@ inline-style-parser@0.1.1: resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1" integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== -inline-style-prefixer@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-6.0.1.tgz#c5c0e43ba8831707afc5f5bbfd97edf45c1fa7ae" - integrity sha512-AsqazZ8KcRzJ9YPN1wMH2aNM7lkWQ8tSPrW5uDk1ziYwiAPWSZnUsC7lfZq+BDqLqz0B4Pho5wscWcJzVvRzDQ== - dependencies: - css-in-js-utils "^2.0.0" - inquirer@^7.3.3: version "7.3.3" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" @@ -8735,9 +8691,9 @@ invariant@^2.2.4: loose-envify "^1.0.0" ip@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.6.tgz#5a651a37644586e18b6ba3b48ca122bf56495f67" - integrity sha512-/dAvCivFs/VexXAtiAoMIqyhkhStNC9CPD0h1noonimOgB1xrCkexF2c5CjlqQ72GgMPjN6tiV+oreoPv3Ft1g== + version "1.1.8" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.8.tgz#ae05948f6b075435ed3307acce04629da8cdbf48" + integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg== ipaddr.js@1.9.1: version "1.9.1" @@ -9667,11 +9623,6 @@ joi@^17.6.0: "@sideway/formula" "^3.0.0" "@sideway/pinpoint" "^2.0.0" -js-cookie@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.2.1.tgz#69e106dc5d5806894562902aa5baec3744e9b2b8" - integrity sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ== - "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -10641,7 +10592,7 @@ minimatch@3.0.4: dependencies: brace-expansion "^1.1.7" -minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.2: +minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -10649,9 +10600,9 @@ minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.2: brace-expansion "^1.1.7" minimatch@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" - integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== + version "5.1.0" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" + integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== dependencies: brace-expansion "^2.0.1" @@ -10806,9 +10757,9 @@ ms@2.1.3, ms@^2.0.0, ms@^2.1.1: integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== multicast-dns@^7.2.4: - version "7.2.4" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.4.tgz#cf0b115c31e922aeb20b64e6556cbeb34cf0dd19" - integrity sha512-XkCYOU+rr2Ft3LI6w4ye51M3VK31qJXFIxu0XLw169PtKG0Zx47OrXeVW/GCYOfpC9s1yyyf1S+L8/4LY0J9Zw== + version "7.2.5" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" + integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== dependencies: dns-packet "^5.2.2" thunky "^1.0.2" @@ -10838,20 +10789,6 @@ mz@^2.4.0: object-assign "^4.0.1" thenify-all "^1.0.0" -nano-css@^5.3.1: - version "5.3.4" - resolved "https://registry.yarnpkg.com/nano-css/-/nano-css-5.3.4.tgz#40af6a83a76f84204f346e8ccaa9169cdae9167b" - integrity sha512-wfcviJB6NOxDIDfr7RFn/GlaN7I/Bhe4d39ZRCJ3xvZX60LVe2qZ+rDqM49nm4YT81gAjzS+ZklhKP/Gnfnubg== - dependencies: - css-tree "^1.1.2" - csstype "^3.0.6" - fastest-stable-stringify "^2.0.2" - inline-style-prefixer "^6.0.0" - rtl-css-js "^1.14.0" - sourcemap-codec "^1.4.8" - stacktrace-js "^2.0.2" - stylis "^4.0.6" - nanoid@^3.3.3: version "3.3.4" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" @@ -11814,11 +11751,12 @@ postcss-colormin@^5.3.0: colord "^2.9.1" postcss-value-parser "^4.2.0" -postcss-convert-values@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.0.tgz#f8d3abe40b4ce4b1470702a0706343eac17e7c10" - integrity sha512-GkyPbZEYJiWtQB0KZ0X6qusqFHUepguBCNFi9t5JJc7I2OTXG7C0twbTLvCfaKOLl3rSXmpAwV7W5txd91V84g== +postcss-convert-values@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.1.tgz#31c8ffba650e86dc750631cafcf1db022c5bb6f1" + integrity sha512-UjcYfl3wJJdcabGKk8lgetPvhi1Et7VDc3sYr9EyhNBeB00YD4vHgPBp+oMVoG/dDWCc6ASbmzPNV6jADTwh8Q== dependencies: + browserslist "^4.20.3" postcss-value-parser "^4.2.0" postcss-discard-comments@^5.1.1: @@ -11912,10 +11850,10 @@ postcss-minify-gradients@^5.1.1: cssnano-utils "^3.1.0" postcss-value-parser "^4.2.0" -postcss-minify-params@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.2.tgz#77e250780c64198289c954884ebe3ee4481c3b1c" - integrity sha512-aEP+p71S/urY48HWaRHasyx4WHQJyOYaKpQ6eXl8k0kxg66Wt/30VR6/woh8THgcpRbonJD5IeD+CzNhPi1L8g== +postcss-minify-params@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.3.tgz#ac41a6465be2db735099bbd1798d85079a6dc1f9" + integrity sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg== dependencies: browserslist "^4.16.6" cssnano-utils "^3.1.0" @@ -12192,10 +12130,10 @@ pretty-time@^1.1.0: resolved "https://registry.yarnpkg.com/pretty-time/-/pretty-time-1.1.0.tgz#ffb7429afabb8535c346a34e41873adf3d74dd0e" integrity sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA== -prism-react-renderer@^1.0.1, prism-react-renderer@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-1.3.1.tgz#88fc9d0df6bed06ca2b9097421349f8c2f24e30d" - integrity sha512-xUeDMEz074d0zc5y6rxiMp/dlC7C+5IDDlaEUlcBOFE2wddz7hz5PNupb087mPwTt7T9BrFmewObfCBuf/LKwQ== +prism-react-renderer@^1.0.1, prism-react-renderer@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-1.3.3.tgz#9b5a4211a6756eee3c96fee9a05733abc0b0805c" + integrity sha512-Viur/7tBTCH2HmYzwCHmt2rEFn+rdIWNIINXyg0StiISbDiIhHKhrFuEK8eMkKgvsIYSjgGqy/hNyucHp6FpoQ== prismjs@^1.28.0: version "1.28.0" @@ -12547,14 +12485,13 @@ react-loadable-ssr-addon-v5-slorber@^1.0.1: dependencies: "@babel/runtime" "^7.10.3" -react-medium-image-zoom@^4.3.7: - version "4.3.7" - resolved "https://registry.yarnpkg.com/react-medium-image-zoom/-/react-medium-image-zoom-4.3.7.tgz#06c0771401c6de312a85843d1feebd15641a969b" - integrity sha512-Vg1M8CIX1EfhfSsmNc2tHP+8KjPDo9e5/zEDaSsfeTBHI82wjEvW3Lgb4k3jdWILPZVOWhM+7QHyDaAzghlvaQ== +react-medium-image-zoom@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/react-medium-image-zoom/-/react-medium-image-zoom-4.4.0.tgz#aa9f63dc08ffc2c2c919f16f3918f13951998a41" + integrity sha512-Y+1enQKyeM/ASAmvlKkLw0USbHePP5dbdjNSclHDBvzGLD8+tUqgxjjtTS54tMvvll7OSxTThVaXxrvO0uYO6A== dependencies: - focus-options-polyfill "1.2.0" - react-use "^17.2.1" - tslib "^2.1.0" + focus-options-polyfill "1.5.1" + tslib "^2.4.0" react-popper@^2.3.0: version "2.3.0" @@ -12572,22 +12509,22 @@ react-router-config@^5.1.1: "@babel/runtime" "^7.1.2" react-router-dom@^5.2.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.1.tgz#0151baf2365c5fcd8493f6ec9b9b31f34d0f8ae1" - integrity sha512-f0pj/gMAbv9e8gahTmCEY20oFhxhrmHwYeIwH5EO5xu0qme+wXtsdB8YfUOAZzUz4VaXmb58m3ceiLtjMhqYmQ== + version "5.3.2" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.2.tgz#93a82c95732963d137c02b3aee0505956baeb69e" + integrity sha512-j8sAq4YdWsrkM2DfDX26GnjtDKWUSd65LzHyBz8NcgFcK0ct7oTvYlwhOr532xpXsYP1HONq6QqUGA7GhbAY5w== dependencies: "@babel/runtime" "^7.12.13" history "^4.9.0" loose-envify "^1.3.1" prop-types "^15.6.2" - react-router "5.3.1" + react-router "5.3.2" tiny-invariant "^1.0.2" tiny-warning "^1.0.0" -react-router@5.3.1, react-router@^5.2.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.3.1.tgz#b13e84a016c79b9e80dde123ca4112c4f117e3cf" - integrity sha512-v+zwjqb7bakqgF+wMVKlAPTca/cEmPOvQ9zt7gpSNyPXau1+0qvuYZ5BWzzNDP1y6s15zDwgb9rPN63+SIniRQ== +react-router@5.3.2, react-router@^5.2.0: + version "5.3.2" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.3.2.tgz#87614394781e75cc6aa3b61cdfd147a1361cd890" + integrity sha512-GlsSUckZ4JthgsW5lV9oSCs5CoQ7q0t0Ump/Y5YQ8qhiS+WjaAhaoJhc7otpZW9eVhO6N06vYPt40SpEzuuZeg== dependencies: "@babel/runtime" "^7.12.13" history "^4.9.0" @@ -12632,31 +12569,6 @@ react-textarea-autosize@^8.3.2: use-composed-ref "^1.0.0" use-latest "^1.0.0" -react-universal-interface@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/react-universal-interface/-/react-universal-interface-0.6.2.tgz#5e8d438a01729a4dbbcbeeceb0b86be146fe2b3b" - integrity sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw== - -react-use@^17.2.1: - version "17.3.2" - resolved "https://registry.yarnpkg.com/react-use/-/react-use-17.3.2.tgz#448abf515f47c41c32455024db28167cb6e53be8" - integrity sha512-bj7OD0/1wL03KyWmzFXAFe425zziuTf7q8olwCYBfOeFHY1qfO1FAMjROQLsLZYwG4Rx63xAfb7XAbBrJsZmEw== - dependencies: - "@types/js-cookie" "^2.2.6" - "@xobotyi/scrollbar-width" "^1.9.5" - copy-to-clipboard "^3.3.1" - fast-deep-equal "^3.1.3" - fast-shallow-equal "^1.0.0" - js-cookie "^2.2.1" - nano-css "^5.3.1" - react-universal-interface "^0.6.2" - resize-observer-polyfill "^1.5.1" - screenfull "^5.1.0" - set-harmonic-interval "^1.0.1" - throttle-debounce "^3.0.1" - ts-easing "^0.2.0" - tslib "^2.1.0" - react-waypoint@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/react-waypoint/-/react-waypoint-10.1.0.tgz#6ab522a61bd52946260e4a78b3182759a97b40ec" @@ -12908,7 +12820,7 @@ regexp-ast-analysis@^0.5.1: refa "^0.9.0" regexpp "^3.2.0" -regexp.prototype.flags@^1.4.1: +regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== @@ -13197,11 +13109,6 @@ requires-port@^1.0.0: resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== -resize-observer-polyfill@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" - integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== - resolve-cwd@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" @@ -13330,19 +13237,12 @@ rollup-plugin-terser@^7.0.0: terser "^5.0.0" rollup@^2.43.1: - version "2.72.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.72.1.tgz#861c94790537b10008f0ca0fbc60e631aabdd045" - integrity sha512-NTc5UGy/NWFGpSqF1lFY8z9Adri6uhyMLI6LvPAXdBKoPRFhIIiBUpt+Qg2awixqO3xvzSijjhnb4+QEZwJmxA== + version "2.73.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.73.0.tgz#128fef4b333fd92d02d6929afbb6ee38d7feb32d" + integrity sha512-h/UngC3S4Zt28mB3g0+2YCMegT5yoftnQplwzPqGZcKvlld5e+kT/QRmJiL+qxGyZKOYpgirWGdLyEO1b0dpLQ== optionalDependencies: fsevents "~2.3.2" -rtl-css-js@^1.14.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/rtl-css-js/-/rtl-css-js-1.15.0.tgz#680ed816e570a9ebccba9e1cd0f202c6a8bb2dc0" - integrity sha512-99Cu4wNNIhrI10xxUaABHsdDqzalrSRTie4GeCmbGVuehm4oj+fIy8fTzB+16pmKe8Bv9rl+hxIBez6KxExTew== - dependencies: - "@babel/runtime" "^7.1.2" - rtl-detect@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/rtl-detect/-/rtl-detect-1.0.4.tgz#40ae0ea7302a150b96bc75af7d749607392ecac6" @@ -13463,11 +13363,6 @@ schema-utils@^4.0.0: ajv-formats "^2.1.1" ajv-keywords "^5.0.0" -screenfull@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/screenfull/-/screenfull-5.2.0.tgz#6533d524d30621fc1283b9692146f3f13a93d1ba" - integrity sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA== - scslre@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/scslre/-/scslre-0.1.6.tgz#71a2832e4bf3a9254973a04fbed90aec94f75757" @@ -13601,11 +13496,6 @@ set-blocking@~2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== -set-harmonic-interval@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-harmonic-interval/-/set-harmonic-interval-1.0.1.tgz#e1773705539cdfb80ce1c3d99e7f298bb3995249" - integrity sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g== - set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" @@ -13919,11 +13809,6 @@ source-map-url@^0.4.0: resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== -source-map@0.5.6: - version "0.5.6" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" - integrity sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA== - source-map@^0.5.0, source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" @@ -14078,13 +13963,6 @@ stable@^0.1.8: resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== -stack-generator@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/stack-generator/-/stack-generator-2.0.5.tgz#fb00e5b4ee97de603e0773ea78ce944d81596c36" - integrity sha512-/t1ebrbHkrLrDuNMdeAcsvynWgoH/i4o8EGGfX7dEYDoTXOYVAkEpFdtshlvabzc6JlJ8Kf9YdFEoz7JkzGN9Q== - dependencies: - stackframe "^1.1.1" - stack-utils@^2.0.3: version "2.0.5" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" @@ -14092,28 +13970,6 @@ stack-utils@^2.0.3: dependencies: escape-string-regexp "^2.0.0" -stackframe@^1.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.1.tgz#1033a3473ee67f08e2f2fc8eba6aef4f845124e1" - integrity sha512-h88QkzREN/hy8eRdyNhhsO7RSJ5oyTqxxmmn0dzBIMUclZsjpfmrsg81vp8mjjAs2vAZ72nyWxRUwSwmh0e4xg== - -stacktrace-gps@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/stacktrace-gps/-/stacktrace-gps-3.0.4.tgz#7688dc2fc09ffb3a13165ebe0dbcaf41bcf0c69a" - integrity sha512-qIr8x41yZVSldqdqe6jciXEaSCKw1U8XTXpjDuy0ki/apyTn/r3w9hDAAQOhZdxvsC93H+WwwEu5cq5VemzYeg== - dependencies: - source-map "0.5.6" - stackframe "^1.1.1" - -stacktrace-js@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stacktrace-js/-/stacktrace-js-2.0.2.tgz#4ca93ea9f494752d55709a081d400fdaebee897b" - integrity sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg== - dependencies: - error-stack-parser "^2.0.6" - stack-generator "^2.0.5" - stacktrace-gps "^3.0.4" - state-toggle@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" @@ -14407,11 +14263,6 @@ stylelint@^14.8.2: v8-compile-cache "^2.3.0" write-file-atomic "^4.0.1" -stylis@^4.0.6: - version "4.1.1" - resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.1.1.tgz#e46c6a9bbf7c58db1e65bb730be157311ae1fe12" - integrity sha512-lVrM/bNdhVX2OgBFNa2YJ9Lxj7kPzylieHd3TNjuGE0Re9JB7joL5VUKOVH1kdNNJTgGPpT8hmwIAPLaSyEVFQ== - supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -14474,10 +14325,10 @@ svgo@^2.5.0, svgo@^2.7.0: picocolors "^1.0.0" stable "^0.1.8" -swc-loader@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/swc-loader/-/swc-loader-0.2.0.tgz#c26621f9fdeb5e28ba4a8ec19e25b1f3d03791c6" - integrity sha512-HefatIgiOaAekVcUPwT5hRNrWF3nULGv5nqGuXeHR7wz1HNN/VGlgmJE830yhIA7X3dHPln4yUTPnZ3ws7B5Fg== +swc-loader@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/swc-loader/-/swc-loader-0.2.1.tgz#43f2d1a746cf985476ca75ecac6234c7314fd9f8" + integrity sha512-opJG9R5Dl+Fa0QihOZO9v6vueB+JzRhJZw+c4ZRCqUHG2RZL10eHZRHMdQoDz6bvLp7XWe7XBIMUkuWtoGfMJw== symbol-tree@^3.2.4: version "3.2.4" @@ -14661,11 +14512,6 @@ throat@^6.0.1: resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== -throttle-debounce@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-3.0.1.tgz#32f94d84dfa894f786c9a1f290e7a645b6a19abb" - integrity sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg== - through2@^2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" @@ -14777,11 +14623,6 @@ to-vfile@^6.1.0: is-buffer "^2.0.0" vfile "^4.0.0" -toggle-selection@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" - integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ== - toidentifier@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" @@ -14879,11 +14720,6 @@ trough@^2.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-2.1.0.tgz#0f7b511a4fde65a46f18477ab38849b22c554876" integrity sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g== -ts-easing@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/ts-easing/-/ts-easing-0.2.0.tgz#c8a8a35025105566588d87dbda05dd7fbfa5a4ec" - integrity sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ== - tsconfig-paths@^3.14.1: version "3.14.1" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" @@ -15013,9 +14849,9 @@ ua-parser-js@^0.7.30: integrity sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ== uglify-js@^3.1.4: - version "3.15.4" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.15.4.tgz#fa95c257e88f85614915b906204b9623d4fa340d" - integrity sha512-vMOPGDuvXecPs34V74qDKk4iJ/SN4vL3Ow/23ixafENYvtrNvtbcgUeugTcUGRGsOF/5fU8/NYSL5Hyb3l1OJA== + version "3.15.5" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.15.5.tgz#2b10f9e0bfb3f5c15a8e8404393b6361eaeb33b3" + integrity sha512-hNM5q5GbBRB5xB+PMqVRcgYe4c8jbyZ1pzZhS6jbq54/4F2gFK869ZheiE5A8/t+W5jtTNpWef/5Q9zk639FNQ== uid-number@0.0.6: version "0.0.6" @@ -16214,9 +16050,9 @@ yargs@^16.0.0, yargs@^16.2.0: yargs-parser "^20.2.2" yargs@^17.1.0, yargs@^17.3.1: - version "17.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.4.1.tgz#ebe23284207bb75cee7c408c33e722bfb27b5284" - integrity sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g== + version "17.5.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.5.1.tgz#e109900cab6fcb7fd44b1d8249166feb0b36e58e" + integrity sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA== dependencies: cliui "^7.0.2" escalade "^3.1.1" From 7613ecb9ea833768b20c9a4390f77d8783f03d6f Mon Sep 17 00:00:00 2001 From: Joshua Chen <sidachen2003@gmail.com> Date: Tue, 17 May 2022 15:21:44 +0800 Subject: [PATCH 16/32] refactor: use TS project references instead of running tsc multiple times (#7437) * refactor: use TS project references instead of running tsc multiple times * deduplicate * dedup * eliminate --project * add swc config * add target --- jest.config.mjs | 13 ++++++++++++- packages/create-docusaurus/.npmignore | 2 +- packages/create-docusaurus/package.json | 4 ++-- packages/create-docusaurus/tsconfig.build.json | 1 + packages/create-docusaurus/tsconfig.json | 7 ++++--- packages/docusaurus-logger/.npmignore | 2 +- packages/docusaurus-mdx-loader/.npmignore | 2 +- packages/docusaurus-migrate/.npmignore | 2 +- packages/docusaurus-migrate/package.json | 4 ++-- .../docusaurus-migrate/tsconfig.build.json | 1 + packages/docusaurus-migrate/tsconfig.json | 6 +++--- .../.npmignore | 2 +- .../docusaurus-plugin-content-blog/.npmignore | 2 +- .../docusaurus-plugin-content-docs/.npmignore | 2 +- .../package.json | 2 +- .../src/plugin-content-docs.d.ts | 2 ++ .../src/types.ts | 2 -- .../tsconfig.client.json | 13 +++++++++++++ .../tsconfig.json | 6 +++++- .../docusaurus-plugin-content-pages/.npmignore | 2 +- packages/docusaurus-plugin-debug/.npmignore | 2 +- packages/docusaurus-plugin-debug/package.json | 2 +- .../tsconfig.client.json | 13 +++++++++++++ packages/docusaurus-plugin-debug/tsconfig.json | 6 +++++- .../.npmignore | 2 +- .../package.json | 2 +- .../tsconfig.client.json | 13 +++++++++++++ .../tsconfig.json | 6 +++++- .../docusaurus-plugin-google-gtag/.npmignore | 2 +- .../docusaurus-plugin-google-gtag/package.json | 2 +- .../tsconfig.client.json | 13 +++++++++++++ .../tsconfig.json | 6 +++++- .../docusaurus-plugin-ideal-image/.npmignore | 2 +- .../docusaurus-plugin-ideal-image/package.json | 6 +----- .../tsconfig.browser.json | 8 -------- .../tsconfig.client.json | 13 +++++++++++++ .../tsconfig.json | 9 +++++++-- .../tsconfig.server.json | 4 ---- packages/docusaurus-plugin-pwa/.npmignore | 2 +- packages/docusaurus-plugin-pwa/package.json | 5 +---- .../tsconfig.browser.json | 13 ------------- .../docusaurus-plugin-pwa/tsconfig.client.json | 18 ++++++++++++++++++ packages/docusaurus-plugin-pwa/tsconfig.json | 8 ++++++-- .../docusaurus-plugin-pwa/tsconfig.server.json | 10 ---------- packages/docusaurus-plugin-sitemap/.npmignore | 2 +- packages/docusaurus-preset-classic/.npmignore | 2 +- .../.npmignore | 2 +- packages/docusaurus-theme-classic/.npmignore | 2 +- .../docusaurus-theme-classic/tsconfig.json | 3 +-- packages/docusaurus-theme-common/.npmignore | 2 +- packages/docusaurus-theme-common/tsconfig.json | 1 + .../docusaurus-theme-live-codeblock/.npmignore | 2 +- .../package.json | 6 +----- .../tsconfig.client.json | 11 ++++++++--- .../tsconfig.json | 5 ++++- .../tsconfig.server.json | 5 ----- .../docusaurus-theme-search-algolia/.npmignore | 2 +- .../package.json | 6 +----- .../tsconfig.client.json | 11 ++++++++--- .../tsconfig.json | 8 ++++++-- .../tsconfig.server.json | 4 ---- .../docusaurus-theme-translations/.npmignore | 2 +- .../docusaurus-theme-translations/package.json | 4 ++-- .../tsconfig.build.json | 1 + .../tsconfig.json | 3 ++- packages/docusaurus-utils-common/.npmignore | 2 +- .../docusaurus-utils-validation/.npmignore | 2 +- packages/docusaurus-utils/.npmignore | 2 +- packages/docusaurus/.npmignore | 2 +- packages/docusaurus/package.json | 4 ++-- packages/docusaurus/tsconfig.client.json | 12 ++++++------ packages/docusaurus/tsconfig.json | 11 ++++++++--- packages/docusaurus/tsconfig.server.json | 7 ++++--- packages/eslint-plugin/.npmignore | 2 +- packages/lqip-loader/.npmignore | 2 +- tsconfig.json | 4 ++-- 76 files changed, 233 insertions(+), 145 deletions(-) create mode 100644 packages/docusaurus-plugin-content-docs/tsconfig.client.json create mode 100644 packages/docusaurus-plugin-debug/tsconfig.client.json create mode 100644 packages/docusaurus-plugin-google-analytics/tsconfig.client.json create mode 100644 packages/docusaurus-plugin-google-gtag/tsconfig.client.json delete mode 100644 packages/docusaurus-plugin-ideal-image/tsconfig.browser.json create mode 100644 packages/docusaurus-plugin-ideal-image/tsconfig.client.json delete mode 100644 packages/docusaurus-plugin-ideal-image/tsconfig.server.json delete mode 100644 packages/docusaurus-plugin-pwa/tsconfig.browser.json create mode 100644 packages/docusaurus-plugin-pwa/tsconfig.client.json delete mode 100644 packages/docusaurus-plugin-pwa/tsconfig.server.json delete mode 100644 packages/docusaurus-theme-live-codeblock/tsconfig.server.json delete mode 100644 packages/docusaurus-theme-search-algolia/tsconfig.server.json diff --git a/jest.config.mjs b/jest.config.mjs index 39c7f9c7c659..28ba5e66a6d7 100644 --- a/jest.config.mjs +++ b/jest.config.mjs @@ -43,7 +43,18 @@ export default { '/packages/docusaurus-utils/src/index.ts', ], transform: { - '^.+\\.[jt]sx?$': '@swc/jest', + '^.+\\.[jt]sx?$': [ + '@swc/jest', + { + jsc: { + parser: { + syntax: 'typescript', + tsx: true, + }, + target: 'es2020', + }, + }, + ], }, errorOnDeprecated: true, reporters: ['default', 'github-actions'], diff --git a/packages/create-docusaurus/.npmignore b/packages/create-docusaurus/.npmignore index 1edc83766ff5..0bc0b32a6248 100644 --- a/packages/create-docusaurus/.npmignore +++ b/packages/create-docusaurus/.npmignore @@ -1,5 +1,5 @@ copyUntypedFiles.mjs -.tsbuildinfo +.tsbuildinfo* __tests__ node_modules diff --git a/packages/create-docusaurus/package.json b/packages/create-docusaurus/package.json index 8c715fc339e3..583b6f06617f 100755 --- a/packages/create-docusaurus/package.json +++ b/packages/create-docusaurus/package.json @@ -13,8 +13,8 @@ }, "scripts": { "create-docusaurus": "create-docusaurus", - "build": "tsc -p tsconfig.build.json", - "watch": "tsc -p tsconfig.build.json --watch" + "build": "tsc --build", + "watch": "tsc --watch" }, "bin": "bin/index.js", "publishConfig": { diff --git a/packages/create-docusaurus/tsconfig.build.json b/packages/create-docusaurus/tsconfig.build.json index 41b40e7cf697..3262001f72c0 100644 --- a/packages/create-docusaurus/tsconfig.build.json +++ b/packages/create-docusaurus/tsconfig.build.json @@ -1,6 +1,7 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "composite": true, "module": "es2020", "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", diff --git a/packages/create-docusaurus/tsconfig.json b/packages/create-docusaurus/tsconfig.json index edb2c88e1daf..1b8a3ef4baf3 100644 --- a/packages/create-docusaurus/tsconfig.json +++ b/packages/create-docusaurus/tsconfig.json @@ -1,10 +1,11 @@ -// For editor typechecking; includes bin { - "extends": "./tsconfig.build.json", + "extends": "../../tsconfig.json", + "references": [{"path": "./tsconfig.build.json"}], "compilerOptions": { "noEmit": true, "allowJs": true, + "module": "esnext", "rootDir": "." }, - "include": ["src", "bin"] + "include": ["bin"] } diff --git a/packages/docusaurus-logger/.npmignore b/packages/docusaurus-logger/.npmignore index f2b994d4e359..16beccca2e07 100644 --- a/packages/docusaurus-logger/.npmignore +++ b/packages/docusaurus-logger/.npmignore @@ -1,4 +1,4 @@ copyUntypedFiles.mjs -.tsbuildinfo +.tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-mdx-loader/.npmignore b/packages/docusaurus-mdx-loader/.npmignore index f2b994d4e359..16beccca2e07 100644 --- a/packages/docusaurus-mdx-loader/.npmignore +++ b/packages/docusaurus-mdx-loader/.npmignore @@ -1,4 +1,4 @@ copyUntypedFiles.mjs -.tsbuildinfo +.tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-migrate/.npmignore b/packages/docusaurus-migrate/.npmignore index ba8304029eb7..b3d2bb61f7d9 100644 --- a/packages/docusaurus-migrate/.npmignore +++ b/packages/docusaurus-migrate/.npmignore @@ -1,5 +1,5 @@ copyUntypedFiles.mjs -.tsbuildinfo +.tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-migrate/package.json b/packages/docusaurus-migrate/package.json index e8ad7c2d91c6..ea7affc71cf1 100644 --- a/packages/docusaurus-migrate/package.json +++ b/packages/docusaurus-migrate/package.json @@ -7,8 +7,8 @@ "node": ">=14" }, "scripts": { - "build": "tsc -p tsconfig.build.json", - "watch": "tsc -p tsconfig.build.json --watch" + "build": "tsc --build", + "watch": "tsc --watch" }, "repository": { "type": "git", diff --git a/packages/docusaurus-migrate/tsconfig.build.json b/packages/docusaurus-migrate/tsconfig.build.json index 358fdb6f6e60..89b76f28591d 100644 --- a/packages/docusaurus-migrate/tsconfig.build.json +++ b/packages/docusaurus-migrate/tsconfig.build.json @@ -1,6 +1,7 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "composite": true, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", "rootDir": "src", diff --git a/packages/docusaurus-migrate/tsconfig.json b/packages/docusaurus-migrate/tsconfig.json index 419de04867a2..c930032b738b 100644 --- a/packages/docusaurus-migrate/tsconfig.json +++ b/packages/docusaurus-migrate/tsconfig.json @@ -1,11 +1,11 @@ -// For editor typechecking; includes bin { - "extends": "./tsconfig.build.json", + "extends": "../../tsconfig.json", + "references": [{"path": "./tsconfig.build.json"}], "compilerOptions": { "noEmit": true, "module": "esnext", "allowJs": true, "rootDir": "." }, - "include": ["src", "bin"] + "include": ["bin"] } diff --git a/packages/docusaurus-plugin-client-redirects/.npmignore b/packages/docusaurus-plugin-client-redirects/.npmignore index f2b994d4e359..16beccca2e07 100644 --- a/packages/docusaurus-plugin-client-redirects/.npmignore +++ b/packages/docusaurus-plugin-client-redirects/.npmignore @@ -1,4 +1,4 @@ copyUntypedFiles.mjs -.tsbuildinfo +.tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-plugin-content-blog/.npmignore b/packages/docusaurus-plugin-content-blog/.npmignore index f2b994d4e359..16beccca2e07 100644 --- a/packages/docusaurus-plugin-content-blog/.npmignore +++ b/packages/docusaurus-plugin-content-blog/.npmignore @@ -1,4 +1,4 @@ copyUntypedFiles.mjs -.tsbuildinfo +.tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-plugin-content-docs/.npmignore b/packages/docusaurus-plugin-content-docs/.npmignore index f2b994d4e359..16beccca2e07 100644 --- a/packages/docusaurus-plugin-content-docs/.npmignore +++ b/packages/docusaurus-plugin-content-docs/.npmignore @@ -1,4 +1,4 @@ copyUntypedFiles.mjs -.tsbuildinfo +.tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-plugin-content-docs/package.json b/packages/docusaurus-plugin-content-docs/package.json index 697fcf7224ea..c02fc60957b0 100644 --- a/packages/docusaurus-plugin-content-docs/package.json +++ b/packages/docusaurus-plugin-content-docs/package.json @@ -12,7 +12,7 @@ }, "types": "src/plugin-content-docs.d.ts", "scripts": { - "build": "tsc", + "build": "tsc --build", "watch": "tsc --watch" }, "publishConfig": { diff --git a/packages/docusaurus-plugin-content-docs/src/plugin-content-docs.d.ts b/packages/docusaurus-plugin-content-docs/src/plugin-content-docs.d.ts index 412a08cdb08f..1d7784c63fc7 100644 --- a/packages/docusaurus-plugin-content-docs/src/plugin-content-docs.d.ts +++ b/packages/docusaurus-plugin-content-docs/src/plugin-content-docs.d.ts @@ -5,6 +5,8 @@ * LICENSE file in the root directory of this source tree. */ +/// <reference types="@docusaurus/module-type-aliases" /> + declare module '@docusaurus/plugin-content-docs' { import type {MDXOptions} from '@docusaurus/mdx-loader'; import type { diff --git a/packages/docusaurus-plugin-content-docs/src/types.ts b/packages/docusaurus-plugin-content-docs/src/types.ts index df3579b856d8..cb4506b20d1a 100644 --- a/packages/docusaurus-plugin-content-docs/src/types.ts +++ b/packages/docusaurus-plugin-content-docs/src/types.ts @@ -5,8 +5,6 @@ * LICENSE file in the root directory of this source tree. */ -/// <reference types="@docusaurus/module-type-aliases" /> - import type {BrokenMarkdownLink, Tag} from '@docusaurus/utils'; import type { VersionMetadata, diff --git a/packages/docusaurus-plugin-content-docs/tsconfig.client.json b/packages/docusaurus-plugin-content-docs/tsconfig.client.json new file mode 100644 index 000000000000..018e125eb75c --- /dev/null +++ b/packages/docusaurus-plugin-content-docs/tsconfig.client.json @@ -0,0 +1,13 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "incremental": true, + "tsBuildInfoFile": "./lib/.tsbuildinfo-client", + "module": "esnext", + "target": "esnext", + "rootDir": "src", + "outDir": "lib" + }, + "include": ["src/client", "src/*.d.ts"] +} diff --git a/packages/docusaurus-plugin-content-docs/tsconfig.json b/packages/docusaurus-plugin-content-docs/tsconfig.json index f5902ba1089b..57f0111934e4 100644 --- a/packages/docusaurus-plugin-content-docs/tsconfig.json +++ b/packages/docusaurus-plugin-content-docs/tsconfig.json @@ -1,9 +1,13 @@ { "extends": "../../tsconfig.json", + "references": [{"path": "./tsconfig.client.json"}], "compilerOptions": { "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", + "module": "commonjs", "rootDir": "src", "outDir": "lib" - } + }, + "include": ["src"], + "exclude": ["src/client", "**/__tests__/**"] } diff --git a/packages/docusaurus-plugin-content-pages/.npmignore b/packages/docusaurus-plugin-content-pages/.npmignore index f2b994d4e359..16beccca2e07 100644 --- a/packages/docusaurus-plugin-content-pages/.npmignore +++ b/packages/docusaurus-plugin-content-pages/.npmignore @@ -1,4 +1,4 @@ copyUntypedFiles.mjs -.tsbuildinfo +.tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-plugin-debug/.npmignore b/packages/docusaurus-plugin-debug/.npmignore index f2b994d4e359..16beccca2e07 100644 --- a/packages/docusaurus-plugin-debug/.npmignore +++ b/packages/docusaurus-plugin-debug/.npmignore @@ -1,4 +1,4 @@ copyUntypedFiles.mjs -.tsbuildinfo +.tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-plugin-debug/package.json b/packages/docusaurus-plugin-debug/package.json index 9d3f2fd58a35..eb9ce3d41a4e 100644 --- a/packages/docusaurus-plugin-debug/package.json +++ b/packages/docusaurus-plugin-debug/package.json @@ -5,7 +5,7 @@ "main": "lib/index.js", "types": "src/plugin-debug.d.ts", "scripts": { - "build": "tsc && node copyUntypedFiles.mjs", + "build": "tsc --build && node copyUntypedFiles.mjs && prettier --config ../../.prettierrc --write \"lib/theme/**/*.js\"", "watch": "node copyUntypedFiles.mjs && tsc --watch" }, "publishConfig": { diff --git a/packages/docusaurus-plugin-debug/tsconfig.client.json b/packages/docusaurus-plugin-debug/tsconfig.client.json new file mode 100644 index 000000000000..836fc6391ac5 --- /dev/null +++ b/packages/docusaurus-plugin-debug/tsconfig.client.json @@ -0,0 +1,13 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "incremental": true, + "tsBuildInfoFile": "./lib/.tsbuildinfo-client", + "module": "esnext", + "target": "esnext", + "rootDir": "src", + "outDir": "lib" + }, + "include": ["src/theme", "src/*.d.ts"] +} diff --git a/packages/docusaurus-plugin-debug/tsconfig.json b/packages/docusaurus-plugin-debug/tsconfig.json index f5902ba1089b..f3146ecc7574 100644 --- a/packages/docusaurus-plugin-debug/tsconfig.json +++ b/packages/docusaurus-plugin-debug/tsconfig.json @@ -1,9 +1,13 @@ { "extends": "../../tsconfig.json", + "references": [{"path": "./tsconfig.client.json"}], "compilerOptions": { "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", + "module": "commonjs", "rootDir": "src", "outDir": "lib" - } + }, + "include": ["src"], + "exclude": ["src/theme"] } diff --git a/packages/docusaurus-plugin-google-analytics/.npmignore b/packages/docusaurus-plugin-google-analytics/.npmignore index f2b994d4e359..16beccca2e07 100644 --- a/packages/docusaurus-plugin-google-analytics/.npmignore +++ b/packages/docusaurus-plugin-google-analytics/.npmignore @@ -1,4 +1,4 @@ copyUntypedFiles.mjs -.tsbuildinfo +.tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-plugin-google-analytics/package.json b/packages/docusaurus-plugin-google-analytics/package.json index 77f5c813de98..99531da0ac1f 100644 --- a/packages/docusaurus-plugin-google-analytics/package.json +++ b/packages/docusaurus-plugin-google-analytics/package.json @@ -8,7 +8,7 @@ "access": "public" }, "scripts": { - "build": "tsc", + "build": "tsc --build", "watch": "tsc --watch" }, "repository": { diff --git a/packages/docusaurus-plugin-google-analytics/tsconfig.client.json b/packages/docusaurus-plugin-google-analytics/tsconfig.client.json new file mode 100644 index 000000000000..3e8fdb9a0b8e --- /dev/null +++ b/packages/docusaurus-plugin-google-analytics/tsconfig.client.json @@ -0,0 +1,13 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "incremental": true, + "tsBuildInfoFile": "./lib/.tsbuildinfo-client", + "module": "esnext", + "target": "esnext", + "rootDir": "src", + "outDir": "lib" + }, + "include": ["src/analytics.ts", "src/*.d.ts"] +} diff --git a/packages/docusaurus-plugin-google-analytics/tsconfig.json b/packages/docusaurus-plugin-google-analytics/tsconfig.json index f5902ba1089b..9ca36591661f 100644 --- a/packages/docusaurus-plugin-google-analytics/tsconfig.json +++ b/packages/docusaurus-plugin-google-analytics/tsconfig.json @@ -1,9 +1,13 @@ { "extends": "../../tsconfig.json", + "references": [{"path": "./tsconfig.client.json"}], "compilerOptions": { "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", + "module": "commonjs", "rootDir": "src", "outDir": "lib" - } + }, + "include": ["src"], + "exclude": ["src/analytics.ts"] } diff --git a/packages/docusaurus-plugin-google-gtag/.npmignore b/packages/docusaurus-plugin-google-gtag/.npmignore index f2b994d4e359..16beccca2e07 100644 --- a/packages/docusaurus-plugin-google-gtag/.npmignore +++ b/packages/docusaurus-plugin-google-gtag/.npmignore @@ -1,4 +1,4 @@ copyUntypedFiles.mjs -.tsbuildinfo +.tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-plugin-google-gtag/package.json b/packages/docusaurus-plugin-google-gtag/package.json index 854f6d2e87f8..169b2c962a7a 100644 --- a/packages/docusaurus-plugin-google-gtag/package.json +++ b/packages/docusaurus-plugin-google-gtag/package.json @@ -5,7 +5,7 @@ "main": "lib/index.js", "types": "lib/index.d.ts", "scripts": { - "build": "tsc", + "build": "tsc --build", "watch": "tsc --watch" }, "publishConfig": { diff --git a/packages/docusaurus-plugin-google-gtag/tsconfig.client.json b/packages/docusaurus-plugin-google-gtag/tsconfig.client.json new file mode 100644 index 000000000000..b00cb512062b --- /dev/null +++ b/packages/docusaurus-plugin-google-gtag/tsconfig.client.json @@ -0,0 +1,13 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "incremental": true, + "tsBuildInfoFile": "./lib/.tsbuildinfo-client", + "module": "esnext", + "target": "esnext", + "rootDir": "src", + "outDir": "lib" + }, + "include": ["src/gtag.ts", "src/options.ts", "src/*.d.ts"] +} diff --git a/packages/docusaurus-plugin-google-gtag/tsconfig.json b/packages/docusaurus-plugin-google-gtag/tsconfig.json index f5902ba1089b..cad9a09f4e49 100644 --- a/packages/docusaurus-plugin-google-gtag/tsconfig.json +++ b/packages/docusaurus-plugin-google-gtag/tsconfig.json @@ -1,9 +1,13 @@ { "extends": "../../tsconfig.json", + "references": [{"path": "./tsconfig.client.json"}], "compilerOptions": { "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", + "module": "commonjs", "rootDir": "src", "outDir": "lib" - } + }, + "include": ["src"], + "exclude": ["src/gtag.ts"] } diff --git a/packages/docusaurus-plugin-ideal-image/.npmignore b/packages/docusaurus-plugin-ideal-image/.npmignore index f2b994d4e359..16beccca2e07 100644 --- a/packages/docusaurus-plugin-ideal-image/.npmignore +++ b/packages/docusaurus-plugin-ideal-image/.npmignore @@ -1,4 +1,4 @@ copyUntypedFiles.mjs -.tsbuildinfo +.tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-plugin-ideal-image/package.json b/packages/docusaurus-plugin-ideal-image/package.json index 6f6c73d117c0..6449d75574fe 100644 --- a/packages/docusaurus-plugin-ideal-image/package.json +++ b/packages/docusaurus-plugin-ideal-image/package.json @@ -5,11 +5,7 @@ "main": "lib/index.js", "types": "src/plugin-ideal-image.d.ts", "scripts": { - "build": "yarn build:server && yarn build:browser && yarn build:copy && yarn build:format", - "build:server": "tsc --project tsconfig.server.json", - "build:browser": "tsc --project tsconfig.browser.json", - "build:copy": "node copyUntypedFiles.mjs", - "build:format": "prettier --config ../../.prettierrc --write \"lib/**/*.js\"" + "build": "tsc --build && node copyUntypedFiles.mjs && prettier --config ../../.prettierrc --write \"lib/theme/**/*.js\"" }, "publishConfig": { "access": "public" diff --git a/packages/docusaurus-plugin-ideal-image/tsconfig.browser.json b/packages/docusaurus-plugin-ideal-image/tsconfig.browser.json deleted file mode 100644 index 3af8257cdf8d..000000000000 --- a/packages/docusaurus-plugin-ideal-image/tsconfig.browser.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "module": "esnext", - "jsx": "react-native" - }, - "include": ["src/theme/", "src/*.d.ts"] -} diff --git a/packages/docusaurus-plugin-ideal-image/tsconfig.client.json b/packages/docusaurus-plugin-ideal-image/tsconfig.client.json new file mode 100644 index 000000000000..836fc6391ac5 --- /dev/null +++ b/packages/docusaurus-plugin-ideal-image/tsconfig.client.json @@ -0,0 +1,13 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "incremental": true, + "tsBuildInfoFile": "./lib/.tsbuildinfo-client", + "module": "esnext", + "target": "esnext", + "rootDir": "src", + "outDir": "lib" + }, + "include": ["src/theme", "src/*.d.ts"] +} diff --git a/packages/docusaurus-plugin-ideal-image/tsconfig.json b/packages/docusaurus-plugin-ideal-image/tsconfig.json index 51aec434b257..f3146ecc7574 100644 --- a/packages/docusaurus-plugin-ideal-image/tsconfig.json +++ b/packages/docusaurus-plugin-ideal-image/tsconfig.json @@ -1,8 +1,13 @@ { "extends": "../../tsconfig.json", + "references": [{"path": "./tsconfig.client.json"}], "compilerOptions": { - "lib": ["DOM", "ES2019"], + "incremental": true, + "tsBuildInfoFile": "./lib/.tsbuildinfo", + "module": "commonjs", "rootDir": "src", "outDir": "lib" - } + }, + "include": ["src"], + "exclude": ["src/theme"] } diff --git a/packages/docusaurus-plugin-ideal-image/tsconfig.server.json b/packages/docusaurus-plugin-ideal-image/tsconfig.server.json deleted file mode 100644 index 1a463cd83a52..000000000000 --- a/packages/docusaurus-plugin-ideal-image/tsconfig.server.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "./tsconfig.json", - "include": ["src/*.ts"] -} diff --git a/packages/docusaurus-plugin-pwa/.npmignore b/packages/docusaurus-plugin-pwa/.npmignore index f2b994d4e359..16beccca2e07 100644 --- a/packages/docusaurus-plugin-pwa/.npmignore +++ b/packages/docusaurus-plugin-pwa/.npmignore @@ -1,4 +1,4 @@ copyUntypedFiles.mjs -.tsbuildinfo +.tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-plugin-pwa/package.json b/packages/docusaurus-plugin-pwa/package.json index f904d38a701d..3bc6d0cd22ee 100644 --- a/packages/docusaurus-plugin-pwa/package.json +++ b/packages/docusaurus-plugin-pwa/package.json @@ -5,10 +5,7 @@ "main": "lib/index.js", "types": "src/plugin-pwa.d.ts", "scripts": { - "build": "yarn build:server && yarn build:browser && yarn build:copy", - "build:server": "tsc --project tsconfig.server.json", - "build:browser": "tsc --project tsconfig.browser.json", - "build:copy": "node copyUntypedFiles.mjs" + "build": "tsc --build && node copyUntypedFiles.mjs && prettier --config ../../.prettierrc --write \"lib/theme/**/*.js\"" }, "publishConfig": { "access": "public" diff --git a/packages/docusaurus-plugin-pwa/tsconfig.browser.json b/packages/docusaurus-plugin-pwa/tsconfig.browser.json deleted file mode 100644 index 147b109fe030..000000000000 --- a/packages/docusaurus-plugin-pwa/tsconfig.browser.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "module": "esnext", - "jsx": "react-native" - }, - "include": [ - "src/theme/", - "src/*.d.ts", - "src/registerSw.ts", - "src/renderReloadPopup.tsx" - ] -} diff --git a/packages/docusaurus-plugin-pwa/tsconfig.client.json b/packages/docusaurus-plugin-pwa/tsconfig.client.json new file mode 100644 index 000000000000..bb29e4aa07e9 --- /dev/null +++ b/packages/docusaurus-plugin-pwa/tsconfig.client.json @@ -0,0 +1,18 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "incremental": true, + "tsBuildInfoFile": "./lib/.tsbuildinfo-client", + "rootDir": "src", + "outDir": "lib", + "module": "esnext", + "target": "esnext" + }, + "include": [ + "src/theme/", + "src/*.d.ts", + "src/registerSw.ts", + "src/renderReloadPopup.tsx" + ] +} diff --git a/packages/docusaurus-plugin-pwa/tsconfig.json b/packages/docusaurus-plugin-pwa/tsconfig.json index 51aec434b257..98aa9153f659 100644 --- a/packages/docusaurus-plugin-pwa/tsconfig.json +++ b/packages/docusaurus-plugin-pwa/tsconfig.json @@ -1,8 +1,12 @@ { "extends": "../../tsconfig.json", + "references": [{"path": "./tsconfig.client.json"}], "compilerOptions": { - "lib": ["DOM", "ES2019"], + "incremental": true, + "tsBuildInfoFile": "./lib/.tsbuildinfo", "rootDir": "src", "outDir": "lib" - } + }, + "include": ["src"], + "exclude": ["src/theme/", "src/registerSw.ts", "src/renderReloadPopup.tsx"] } diff --git a/packages/docusaurus-plugin-pwa/tsconfig.server.json b/packages/docusaurus-plugin-pwa/tsconfig.server.json deleted file mode 100644 index 40f95c1d1c14..000000000000 --- a/packages/docusaurus-plugin-pwa/tsconfig.server.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./tsconfig.json", - "include": ["src/*.ts"], - "exclude": [ - "src/theme/", - "src/*.d.ts", - "src/registerSw.ts", - "src/renderReloadPopup.tsx" - ] -} diff --git a/packages/docusaurus-plugin-sitemap/.npmignore b/packages/docusaurus-plugin-sitemap/.npmignore index f2b994d4e359..16beccca2e07 100644 --- a/packages/docusaurus-plugin-sitemap/.npmignore +++ b/packages/docusaurus-plugin-sitemap/.npmignore @@ -1,4 +1,4 @@ copyUntypedFiles.mjs -.tsbuildinfo +.tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-preset-classic/.npmignore b/packages/docusaurus-preset-classic/.npmignore index f2b994d4e359..16beccca2e07 100644 --- a/packages/docusaurus-preset-classic/.npmignore +++ b/packages/docusaurus-preset-classic/.npmignore @@ -1,4 +1,4 @@ copyUntypedFiles.mjs -.tsbuildinfo +.tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-remark-plugin-npm2yarn/.npmignore b/packages/docusaurus-remark-plugin-npm2yarn/.npmignore index f2b994d4e359..16beccca2e07 100644 --- a/packages/docusaurus-remark-plugin-npm2yarn/.npmignore +++ b/packages/docusaurus-remark-plugin-npm2yarn/.npmignore @@ -1,4 +1,4 @@ copyUntypedFiles.mjs -.tsbuildinfo +.tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-theme-classic/.npmignore b/packages/docusaurus-theme-classic/.npmignore index 3e3575db0c5a..3f56a7b661b6 100644 --- a/packages/docusaurus-theme-classic/.npmignore +++ b/packages/docusaurus-theme-classic/.npmignore @@ -1,5 +1,5 @@ copyUntypedFiles.mjs -.tsbuildinfo +.tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-theme-classic/tsconfig.json b/packages/docusaurus-theme-classic/tsconfig.json index 145e89f84a44..659cb2cc6b98 100644 --- a/packages/docusaurus-theme-classic/tsconfig.json +++ b/packages/docusaurus-theme-classic/tsconfig.json @@ -3,8 +3,7 @@ "compilerOptions": { "lib": ["DOM", "ES2019"], "module": "esnext", - "noEmit": true, - "jsx": "react-native" + "noEmit": true }, "include": ["src/"] } diff --git a/packages/docusaurus-theme-common/.npmignore b/packages/docusaurus-theme-common/.npmignore index f2b994d4e359..16beccca2e07 100644 --- a/packages/docusaurus-theme-common/.npmignore +++ b/packages/docusaurus-theme-common/.npmignore @@ -1,4 +1,4 @@ copyUntypedFiles.mjs -.tsbuildinfo +.tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-theme-common/tsconfig.json b/packages/docusaurus-theme-common/tsconfig.json index 20c3d66f6411..a6f83d37f330 100644 --- a/packages/docusaurus-theme-common/tsconfig.json +++ b/packages/docusaurus-theme-common/tsconfig.json @@ -4,6 +4,7 @@ "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", "module": "esnext", + "target": "esnext", "sourceMap": true, "declarationMap": true, "rootDir": "src", diff --git a/packages/docusaurus-theme-live-codeblock/.npmignore b/packages/docusaurus-theme-live-codeblock/.npmignore index f2b994d4e359..16beccca2e07 100644 --- a/packages/docusaurus-theme-live-codeblock/.npmignore +++ b/packages/docusaurus-theme-live-codeblock/.npmignore @@ -1,4 +1,4 @@ copyUntypedFiles.mjs -.tsbuildinfo +.tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-theme-live-codeblock/package.json b/packages/docusaurus-theme-live-codeblock/package.json index 2e7974942241..661b8b3cc45e 100644 --- a/packages/docusaurus-theme-live-codeblock/package.json +++ b/packages/docusaurus-theme-live-codeblock/package.json @@ -11,11 +11,7 @@ "access": "public" }, "scripts": { - "build": "yarn build:server && yarn build:client && yarn build:copy && yarn build:format", - "build:server": "tsc --project tsconfig.server.json", - "build:client": "tsc --project tsconfig.client.json", - "build:copy": "node copyUntypedFiles.mjs", - "build:format": "prettier --config ../../.prettierrc --write \"lib/**/*.js\"" + "build": "tsc --build && node copyUntypedFiles.mjs && prettier --config ../../.prettierrc --write \"lib/theme/**/*.js\"" }, "repository": { "type": "git", diff --git a/packages/docusaurus-theme-live-codeblock/tsconfig.client.json b/packages/docusaurus-theme-live-codeblock/tsconfig.client.json index 462a6376e3be..1988ff0b3884 100644 --- a/packages/docusaurus-theme-live-codeblock/tsconfig.client.json +++ b/packages/docusaurus-theme-live-codeblock/tsconfig.client.json @@ -1,8 +1,13 @@ { - "extends": "./tsconfig.json", + "extends": "../../tsconfig.json", "compilerOptions": { + "composite": true, + "incremental": true, + "tsBuildInfoFile": "./lib/.tsbuildinfo-client", + "rootDir": "src", + "outDir": "lib", "module": "esnext", - "jsx": "react-native" + "target": "esnext" }, - "include": ["src/theme/", "src/*.d.ts", "src/custom-buble.ts"] + "include": ["src/theme", "src/*.d.ts", "src/custom-buble.ts"] } diff --git a/packages/docusaurus-theme-live-codeblock/tsconfig.json b/packages/docusaurus-theme-live-codeblock/tsconfig.json index f5902ba1089b..e9a5d5fd3387 100644 --- a/packages/docusaurus-theme-live-codeblock/tsconfig.json +++ b/packages/docusaurus-theme-live-codeblock/tsconfig.json @@ -1,9 +1,12 @@ { "extends": "../../tsconfig.json", + "references": [{"path": "./tsconfig.client.json"}], "compilerOptions": { "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", "rootDir": "src", "outDir": "lib" - } + }, + "include": ["src"], + "exclude": ["src/custom-buble.ts", "src/theme", "**/__tests__/**"] } diff --git a/packages/docusaurus-theme-live-codeblock/tsconfig.server.json b/packages/docusaurus-theme-live-codeblock/tsconfig.server.json deleted file mode 100644 index 2159e2ef8e20..000000000000 --- a/packages/docusaurus-theme-live-codeblock/tsconfig.server.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": "./tsconfig.json", - "include": ["src/*.ts"], - "exclude": ["src/custom-buble.ts"] -} diff --git a/packages/docusaurus-theme-search-algolia/.npmignore b/packages/docusaurus-theme-search-algolia/.npmignore index f2b994d4e359..16beccca2e07 100644 --- a/packages/docusaurus-theme-search-algolia/.npmignore +++ b/packages/docusaurus-theme-search-algolia/.npmignore @@ -1,4 +1,4 @@ copyUntypedFiles.mjs -.tsbuildinfo +.tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-theme-search-algolia/package.json b/packages/docusaurus-theme-search-algolia/package.json index f1e3f6db96fb..2a809087b4cc 100644 --- a/packages/docusaurus-theme-search-algolia/package.json +++ b/packages/docusaurus-theme-search-algolia/package.json @@ -21,11 +21,7 @@ }, "license": "MIT", "scripts": { - "build": "yarn build:server && yarn build:client && yarn build:copy && yarn build:format", - "build:server": "tsc --project tsconfig.server.json", - "build:client": "tsc --project tsconfig.client.json", - "build:copy": "node copyUntypedFiles.mjs", - "build:format": "prettier --config ../../.prettierrc --write \"lib/**/*.js\"" + "build": "tsc --build && node copyUntypedFiles.mjs && prettier --config ../../.prettierrc --write \"lib/theme/**/*.js\"" }, "dependencies": { "@docsearch/react": "^3.0.0", diff --git a/packages/docusaurus-theme-search-algolia/tsconfig.client.json b/packages/docusaurus-theme-search-algolia/tsconfig.client.json index 0ea16454ec40..9e8321ca3deb 100644 --- a/packages/docusaurus-theme-search-algolia/tsconfig.client.json +++ b/packages/docusaurus-theme-search-algolia/tsconfig.client.json @@ -1,8 +1,13 @@ { - "extends": "./tsconfig.json", + "extends": "../../tsconfig.json", "compilerOptions": { + "composite": true, + "incremental": true, + "tsBuildInfoFile": "./lib/.tsbuildinfo-client", + "rootDir": "src", + "outDir": "lib", "module": "esnext", - "jsx": "react-native" + "target": "esnext" }, - "include": ["src/theme/", "src/client/", "src/*.d.ts"] + "include": ["src/theme", "src/client", "src/*.d.ts"] } diff --git a/packages/docusaurus-theme-search-algolia/tsconfig.json b/packages/docusaurus-theme-search-algolia/tsconfig.json index 51aec434b257..413bf0796347 100644 --- a/packages/docusaurus-theme-search-algolia/tsconfig.json +++ b/packages/docusaurus-theme-search-algolia/tsconfig.json @@ -1,8 +1,12 @@ { "extends": "../../tsconfig.json", + "references": [{"path": "./tsconfig.client.json"}], "compilerOptions": { - "lib": ["DOM", "ES2019"], + "incremental": true, + "tsBuildInfoFile": "./lib/.tsbuildinfo", "rootDir": "src", "outDir": "lib" - } + }, + "include": ["src"], + "exclude": ["src/client", "src/theme", "**/__tests__/**"] } diff --git a/packages/docusaurus-theme-search-algolia/tsconfig.server.json b/packages/docusaurus-theme-search-algolia/tsconfig.server.json deleted file mode 100644 index 3faf6c3e997b..000000000000 --- a/packages/docusaurus-theme-search-algolia/tsconfig.server.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "./tsconfig.json", - "include": ["src/*.ts", "src/templates/*.ts"] -} diff --git a/packages/docusaurus-theme-translations/.npmignore b/packages/docusaurus-theme-translations/.npmignore index 1b59b1ca638c..acffb6122e75 100644 --- a/packages/docusaurus-theme-translations/.npmignore +++ b/packages/docusaurus-theme-translations/.npmignore @@ -1,5 +1,5 @@ copyUntypedFiles.mjs -.tsbuildinfo +.tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-theme-translations/package.json b/packages/docusaurus-theme-translations/package.json index 5c27fb37c93c..ea54a523851f 100644 --- a/packages/docusaurus-theme-translations/package.json +++ b/packages/docusaurus-theme-translations/package.json @@ -14,8 +14,8 @@ }, "license": "MIT", "scripts": { - "build": "tsc -p tsconfig.build.json", - "watch": "tsc -p tsconfig.build.json --watch", + "build": "tsc --build", + "watch": "tsc --watch", "update": "node ./update.mjs" }, "dependencies": { diff --git a/packages/docusaurus-theme-translations/tsconfig.build.json b/packages/docusaurus-theme-translations/tsconfig.build.json index aee99fc0f38e..a0eb19189c73 100644 --- a/packages/docusaurus-theme-translations/tsconfig.build.json +++ b/packages/docusaurus-theme-translations/tsconfig.build.json @@ -1,6 +1,7 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "composite": true, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", "sourceMap": true, diff --git a/packages/docusaurus-theme-translations/tsconfig.json b/packages/docusaurus-theme-translations/tsconfig.json index 59be626a2754..667e74599697 100644 --- a/packages/docusaurus-theme-translations/tsconfig.json +++ b/packages/docusaurus-theme-translations/tsconfig.json @@ -1,10 +1,11 @@ { "extends": "../../tsconfig.json", + "references": [{"path": "./tsconfig.build.json"}], "compilerOptions": { "module": "esnext", "noEmit": true, "checkJs": true, "allowJs": true }, - "include": ["update.mjs", "src"] + "include": ["update.mjs"] } diff --git a/packages/docusaurus-utils-common/.npmignore b/packages/docusaurus-utils-common/.npmignore index f2b994d4e359..16beccca2e07 100644 --- a/packages/docusaurus-utils-common/.npmignore +++ b/packages/docusaurus-utils-common/.npmignore @@ -1,4 +1,4 @@ copyUntypedFiles.mjs -.tsbuildinfo +.tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-utils-validation/.npmignore b/packages/docusaurus-utils-validation/.npmignore index f2b994d4e359..16beccca2e07 100644 --- a/packages/docusaurus-utils-validation/.npmignore +++ b/packages/docusaurus-utils-validation/.npmignore @@ -1,4 +1,4 @@ copyUntypedFiles.mjs -.tsbuildinfo +.tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-utils/.npmignore b/packages/docusaurus-utils/.npmignore index f2b994d4e359..16beccca2e07 100644 --- a/packages/docusaurus-utils/.npmignore +++ b/packages/docusaurus-utils/.npmignore @@ -1,4 +1,4 @@ copyUntypedFiles.mjs -.tsbuildinfo +.tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus/.npmignore b/packages/docusaurus/.npmignore index ba8304029eb7..b3d2bb61f7d9 100644 --- a/packages/docusaurus/.npmignore +++ b/packages/docusaurus/.npmignore @@ -1,5 +1,5 @@ copyUntypedFiles.mjs -.tsbuildinfo +.tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus/package.json b/packages/docusaurus/package.json index a2aaee6796a9..1fb6245f9fb1 100644 --- a/packages/docusaurus/package.json +++ b/packages/docusaurus/package.json @@ -24,8 +24,8 @@ "docusaurus": "bin/docusaurus.mjs" }, "scripts": { - "build": "tsc -p tsconfig.server.json && tsc -p tsconfig.client.json && node copyUntypedFiles.mjs", - "watch": "node copyUntypedFiles.mjs && concurrently -n \"server,client\" --kill-others \"tsc -p tsconfig.server.json --watch\" \"tsc -p tsconfig.client.json --watch\"" + "build": "tsc --build && node copyUntypedFiles.mjs", + "watch": "node copyUntypedFiles.mjs && tsc --watch" }, "bugs": { "url": "https://github.com/facebook/docusaurus/issues" diff --git a/packages/docusaurus/tsconfig.client.json b/packages/docusaurus/tsconfig.client.json index 66613cf7c22d..018e125eb75c 100644 --- a/packages/docusaurus/tsconfig.client.json +++ b/packages/docusaurus/tsconfig.client.json @@ -1,13 +1,13 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "composite": true, "incremental": true, - "lib": ["DOM", "ES2019"], + "tsBuildInfoFile": "./lib/.tsbuildinfo-client", "module": "esnext", - "tsBuildInfoFile": "./lib/client/.tsbuildinfo", - "rootDir": "src/client", - "outDir": "lib/client", - "jsx": "react-native" + "target": "esnext", + "rootDir": "src", + "outDir": "lib" }, - "include": ["src/client", "src/deps.d.ts"] + "include": ["src/client", "src/*.d.ts"] } diff --git a/packages/docusaurus/tsconfig.json b/packages/docusaurus/tsconfig.json index e467cc195592..ebbe87890df4 100644 --- a/packages/docusaurus/tsconfig.json +++ b/packages/docusaurus/tsconfig.json @@ -1,10 +1,15 @@ -// For editor typechecking; includes bin { - "extends": "./tsconfig.server.json", + "extends": "../../tsconfig.json", + "references": [ + {"path": "./tsconfig.server.json"}, + {"path": "./tsconfig.client.json"} + ], "compilerOptions": { "noEmit": true, + "allowJs": true, + "checkJs": true, "rootDir": ".", "module": "esnext" }, - "include": ["src", "bin"] + "include": ["bin"] } diff --git a/packages/docusaurus/tsconfig.server.json b/packages/docusaurus/tsconfig.server.json index cabe532baa26..eb1b6945ac88 100644 --- a/packages/docusaurus/tsconfig.server.json +++ b/packages/docusaurus/tsconfig.server.json @@ -1,12 +1,13 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "composite": true, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", + "module": "commonjs", "rootDir": "src", - "outDir": "lib", - "allowJs": true + "outDir": "lib" }, "include": ["src"], - "exclude": ["**/__tests__/**/*", "src/client"] + "exclude": ["src/client", "**/__tests__/**"] } diff --git a/packages/eslint-plugin/.npmignore b/packages/eslint-plugin/.npmignore index 5f1c98c31f64..3e3043484f2e 100644 --- a/packages/eslint-plugin/.npmignore +++ b/packages/eslint-plugin/.npmignore @@ -1,5 +1,5 @@ copyUntypedFiles.mjs -.tsbuildinfo +.tsbuildinfo* tsconfig* __tests__ diff --git a/packages/lqip-loader/.npmignore b/packages/lqip-loader/.npmignore index ba8304029eb7..b3d2bb61f7d9 100644 --- a/packages/lqip-loader/.npmignore +++ b/packages/lqip-loader/.npmignore @@ -1,5 +1,5 @@ copyUntypedFiles.mjs -.tsbuildinfo +.tsbuildinfo* tsconfig* __tests__ diff --git a/tsconfig.json b/tsconfig.json index cb10e8a5ccbc..e7d9ca05d0eb 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,7 +6,7 @@ "lib": ["ESNext", "DOM"], "declaration": true, "declarationMap": false, - "jsx": "react", + "jsx": "react-native", "importHelpers": true, "noEmitHelpers": true, @@ -44,5 +44,5 @@ "isolatedModules": true, "skipLibCheck": true // @types/webpack and webpack/types.d.ts are not the same thing }, - "exclude": ["node_modules", "**/__tests__/**/*", "**/lib/**/*"] + "exclude": ["node_modules", "**/__tests__/**", "**/lib/**/*"] } From c8b5f230abc2607eafca96fc7d8a7241ca7edde0 Mon Sep 17 00:00:00 2001 From: Joshua Chen <sidachen2003@gmail.com> Date: Tue, 17 May 2022 20:19:39 +0800 Subject: [PATCH 17/32] misc: add templates to github-linguist ignore list (#7439) --- .gitattributes | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/.gitattributes b/.gitattributes index 4bbe761c210d..6ab8de85c3e5 100644 --- a/.gitattributes +++ b/.gitattributes @@ -31,8 +31,10 @@ # Make GitHub not index certain files in the languages overview # See https://github.com/github/linguist/blob/master/docs/overrides.md # generated files' diff will be minimized -**/__fixtures__/** linguist-generated -.husky/** linguist-vendored -jest/** linguist-vendored -admin/** linguist-documentation -website/** linguist-documentation +**/__fixtures__/** linguist-generated +examples/** linguist-generated +.husky/** linguist-vendored +jest/** linguist-vendored +admin/** linguist-documentation +website/** linguist-documentation +packages/create-docusaurus/templates/** linguist-vendored From 71b5901bcd97b86cb367167336cdb2502899541f Mon Sep 17 00:00:00 2001 From: Joshua Chen <sidachen2003@gmail.com> Date: Tue, 17 May 2022 21:41:30 +0800 Subject: [PATCH 18/32] refactor(cssnano-preset): migrate to TS (#7440) * refactor(cssnano-preset): migrate to TS * fix --- packages/docusaurus-cssnano-preset/.npmignore | 3 +++ packages/docusaurus-cssnano-preset/index.js | 25 ----------------- .../docusaurus-cssnano-preset/package.json | 9 +++++-- .../docusaurus-cssnano-preset/src/deps.d.ts | 11 ++++++++ .../docusaurus-cssnano-preset/src/index.ts | 27 +++++++++++++++++++ ...{index.test.js.snap => index.test.ts.snap} | 0 .../{index.test.js => index.test.ts} | 10 +++---- .../{index.js => index.ts} | 25 +++++++++-------- .../docusaurus-cssnano-preset/tsconfig.json | 9 +++++++ 9 files changed, 76 insertions(+), 43 deletions(-) delete mode 100644 packages/docusaurus-cssnano-preset/index.js create mode 100644 packages/docusaurus-cssnano-preset/src/deps.d.ts create mode 100644 packages/docusaurus-cssnano-preset/src/index.ts rename packages/docusaurus-cssnano-preset/src/remove-overridden-custom-properties/__tests__/__snapshots__/{index.test.js.snap => index.test.ts.snap} (100%) rename packages/docusaurus-cssnano-preset/src/remove-overridden-custom-properties/__tests__/{index.test.js => index.test.ts} (78%) rename packages/docusaurus-cssnano-preset/src/remove-overridden-custom-properties/{index.js => index.ts} (69%) create mode 100644 packages/docusaurus-cssnano-preset/tsconfig.json diff --git a/packages/docusaurus-cssnano-preset/.npmignore b/packages/docusaurus-cssnano-preset/.npmignore index c912533dd7d2..16beccca2e07 100644 --- a/packages/docusaurus-cssnano-preset/.npmignore +++ b/packages/docusaurus-cssnano-preset/.npmignore @@ -1 +1,4 @@ +copyUntypedFiles.mjs +.tsbuildinfo* +tsconfig* __tests__ diff --git a/packages/docusaurus-cssnano-preset/index.js b/packages/docusaurus-cssnano-preset/index.js deleted file mode 100644 index cac7eda8999d..000000000000 --- a/packages/docusaurus-cssnano-preset/index.js +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -const advancedBasePreset = require('cssnano-preset-advanced'); -const postCssSortMediaQueries = require('postcss-sort-media-queries'); -const postCssRemoveOverriddenCustomProperties = require('./src/remove-overridden-custom-properties'); - -module.exports = function docusaurusCssnanoPreset(opts) { - const advancedPreset = advancedBasePreset({ - autoprefixer: {add: false}, - discardComments: {removeAll: true}, - ...opts, - }); - - advancedPreset.plugins.unshift( - [postCssSortMediaQueries], - [postCssRemoveOverriddenCustomProperties], - ); - - return advancedPreset; -}; diff --git a/packages/docusaurus-cssnano-preset/package.json b/packages/docusaurus-cssnano-preset/package.json index 35b39ae66833..0fa9229f07a9 100644 --- a/packages/docusaurus-cssnano-preset/package.json +++ b/packages/docusaurus-cssnano-preset/package.json @@ -2,11 +2,15 @@ "name": "@docusaurus/cssnano-preset", "version": "2.0.0-beta.20", "description": "Advanced cssnano preset for maximum optimization.", - "main": "index.js", + "main": "lib/index.js", "license": "MIT", "publishConfig": { "access": "public" }, + "scripts": { + "build": "tsc", + "watch": "tsc --watch" + }, "repository": { "type": "git", "url": "https://github.com/facebook/docusaurus.git", @@ -15,7 +19,8 @@ "dependencies": { "cssnano-preset-advanced": "^5.3.4", "postcss": "^8.4.13", - "postcss-sort-media-queries": "^4.2.1" + "postcss-sort-media-queries": "^4.2.1", + "tslib": "^2.4.0" }, "devDependencies": { "to-vfile": "^6.1.0" diff --git a/packages/docusaurus-cssnano-preset/src/deps.d.ts b/packages/docusaurus-cssnano-preset/src/deps.d.ts new file mode 100644 index 000000000000..f508fb9197d5 --- /dev/null +++ b/packages/docusaurus-cssnano-preset/src/deps.d.ts @@ -0,0 +1,11 @@ +/** + * 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 'postcss-sort-media-queries' { + const plugin: import('postcss').PluginCreator<object>; + export default plugin; +} diff --git a/packages/docusaurus-cssnano-preset/src/index.ts b/packages/docusaurus-cssnano-preset/src/index.ts new file mode 100644 index 000000000000..6bae42c6f8c7 --- /dev/null +++ b/packages/docusaurus-cssnano-preset/src/index.ts @@ -0,0 +1,27 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import advancedBasePreset from 'cssnano-preset-advanced'; +import postCssSortMediaQueries from 'postcss-sort-media-queries'; +import postCssRemoveOverriddenCustomProperties from './remove-overridden-custom-properties'; + +const preset: typeof advancedBasePreset = function preset(opts) { + const advancedPreset = advancedBasePreset({ + autoprefixer: {add: false}, + discardComments: {removeAll: true}, + ...opts, + }); + + advancedPreset.plugins.unshift( + [postCssSortMediaQueries, undefined], + [postCssRemoveOverriddenCustomProperties, undefined], + ); + + return advancedPreset; +}; + +export = preset; diff --git a/packages/docusaurus-cssnano-preset/src/remove-overridden-custom-properties/__tests__/__snapshots__/index.test.js.snap b/packages/docusaurus-cssnano-preset/src/remove-overridden-custom-properties/__tests__/__snapshots__/index.test.ts.snap similarity index 100% rename from packages/docusaurus-cssnano-preset/src/remove-overridden-custom-properties/__tests__/__snapshots__/index.test.js.snap rename to packages/docusaurus-cssnano-preset/src/remove-overridden-custom-properties/__tests__/__snapshots__/index.test.ts.snap diff --git a/packages/docusaurus-cssnano-preset/src/remove-overridden-custom-properties/__tests__/index.test.js b/packages/docusaurus-cssnano-preset/src/remove-overridden-custom-properties/__tests__/index.test.ts similarity index 78% rename from packages/docusaurus-cssnano-preset/src/remove-overridden-custom-properties/__tests__/index.test.js rename to packages/docusaurus-cssnano-preset/src/remove-overridden-custom-properties/__tests__/index.test.ts index b54446179796..8e50db5a74bd 100644 --- a/packages/docusaurus-cssnano-preset/src/remove-overridden-custom-properties/__tests__/index.test.js +++ b/packages/docusaurus-cssnano-preset/src/remove-overridden-custom-properties/__tests__/index.test.ts @@ -5,12 +5,12 @@ * LICENSE file in the root directory of this source tree. */ -const path = require('path'); -const vfile = require('to-vfile'); -const postcss = require('postcss'); -const postCssRemoveOverriddenCustomProperties = require('../index'); +import path from 'path'; +import vfile from 'to-vfile'; +import postcss from 'postcss'; +import postCssRemoveOverriddenCustomProperties from '../index'; -const processFixture = (name) => { +const processFixture = (name: string) => { const input = vfile.readSync( path.join(__dirname, '__fixtures__', `${name}.css`), 'utf8', diff --git a/packages/docusaurus-cssnano-preset/src/remove-overridden-custom-properties/index.js b/packages/docusaurus-cssnano-preset/src/remove-overridden-custom-properties/index.ts similarity index 69% rename from packages/docusaurus-cssnano-preset/src/remove-overridden-custom-properties/index.js rename to packages/docusaurus-cssnano-preset/src/remove-overridden-custom-properties/index.ts index 51eb53b35327..a7dbba88f3ce 100644 --- a/packages/docusaurus-cssnano-preset/src/remove-overridden-custom-properties/index.js +++ b/packages/docusaurus-cssnano-preset/src/remove-overridden-custom-properties/index.ts @@ -5,6 +5,10 @@ * LICENSE file in the root directory of this source tree. */ +import type {Plugin, Rule, Node} from 'postcss'; + +const isRule = (node: Node | undefined): node is Rule => node?.type === 'rule'; + /** * This PostCSS plugin will remove duplicate/same custom properties (which are * actually overridden ones) **only** from `:root` selector. @@ -17,32 +21,31 @@ * applied). * - If the same custom properties have at least one `!important` rule, then * only those properties that do not have this rule will be removed. - * @returns {import('postcss').Plugin} */ -module.exports = function creator() { +function creator(): Plugin { return { postcssPlugin: 'postcss-remove-overridden-custom-properties', Declaration(decl) { - if (decl.parent.selector !== ':root') { + if (!isRule(decl.parent) || decl.parent.selector !== ':root') { return; } const sameProperties = decl.parent.nodes.filter( - (n) => n.prop === decl.prop, + (n) => 'prop' in n && n.prop === decl.prop, ); - const hasImportantProperties = sameProperties.some((p) => - Object.prototype.hasOwnProperty.call(p, 'important'), + const hasImportantProperties = sameProperties.some( + (p) => 'important' in p, ); const overriddenProperties = hasImportantProperties - ? sameProperties.filter( - (p) => !Object.prototype.hasOwnProperty.call(p, 'important'), - ) + ? sameProperties.filter((p) => !('important' in p)) : sameProperties.slice(0, -1); overriddenProperties.map((p) => p.remove()); }, }; -}; +} + +creator.postcss = true as const; -module.exports.postcss = true; +export default creator; diff --git a/packages/docusaurus-cssnano-preset/tsconfig.json b/packages/docusaurus-cssnano-preset/tsconfig.json new file mode 100644 index 000000000000..f5902ba1089b --- /dev/null +++ b/packages/docusaurus-cssnano-preset/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "incremental": true, + "tsBuildInfoFile": "./lib/.tsbuildinfo", + "rootDir": "src", + "outDir": "lib" + } +} From a0b0477dee82ef6a4068da5c68650b9a98a1a4d2 Mon Sep 17 00:00:00 2001 From: Joshua Chen <sidachen2003@gmail.com> Date: Tue, 17 May 2022 22:13:47 +0800 Subject: [PATCH 19/32] refactor(stylelint-copyright): migrate to TS (#7441) --- packages/stylelint-copyright/index.js | 57 ------------------ packages/stylelint-copyright/package.json | 9 ++- .../__tests__/index.test.ts} | 37 ++++++++---- packages/stylelint-copyright/src/index.ts | 58 +++++++++++++++++++ packages/stylelint-copyright/tsconfig.json | 9 +++ 5 files changed, 100 insertions(+), 70 deletions(-) delete mode 100644 packages/stylelint-copyright/index.js rename packages/stylelint-copyright/{__tests__/index.test.js => src/__tests__/index.test.ts} (81%) create mode 100644 packages/stylelint-copyright/src/index.ts create mode 100644 packages/stylelint-copyright/tsconfig.json diff --git a/packages/stylelint-copyright/index.js b/packages/stylelint-copyright/index.js deleted file mode 100644 index fdf2ab794ba9..000000000000 --- a/packages/stylelint-copyright/index.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -const stylelint = require('stylelint'); - -const ruleName = 'docusaurus/copyright-header'; -const messages = stylelint.utils.ruleMessages(ruleName, { - rejected: 'Missing copyright in the header comment', -}); - -const plugin = stylelint.createPlugin( - ruleName, - (primaryOption, secondaryOption, context) => (root, result) => { - stylelint.utils.validateOptions( - result, - ruleName, - { - actual: primaryOption, - possible: [true, false], - }, - { - actual: secondaryOption, - possible: (v) => typeof v.header === 'string', - }, - ); - - if ( - root.first && - root.first.type === 'comment' && - root.first.source.start.column === 1 - ) { - const {text} = root.first; - if (text === secondaryOption.header) { - return; - } - } - if (context.fix) { - root.first?.before(`/*${secondaryOption.header}\n */`); - return; - } - - stylelint.utils.report({ - message: messages.rejected, - node: root, - result, - ruleName, - }); - }, -); - -module.exports = plugin; -module.exports.ruleName = ruleName; -module.exports.messages = messages; diff --git a/packages/stylelint-copyright/package.json b/packages/stylelint-copyright/package.json index c1e0c0a11af9..1afb9807cdd6 100644 --- a/packages/stylelint-copyright/package.json +++ b/packages/stylelint-copyright/package.json @@ -2,14 +2,19 @@ "name": "stylelint-copyright", "version": "2.0.0-beta.20", "description": "Stylelint plugin to check CSS files for a copyright header.", - "main": "index.js", + "main": "lib/index.js", "license": "MIT", + "scripts": { + "build": "tsc", + "watch": "tsc --watch" + }, "repository": { "type": "git", "url": "https://github.com/facebook/docusaurus.git", "directory": "packages/stylelint-copyright" }, "dependencies": { - "stylelint": "^14.8.2" + "stylelint": "^14.8.2", + "tslib": "^2.4.0" } } diff --git a/packages/stylelint-copyright/__tests__/index.test.js b/packages/stylelint-copyright/src/__tests__/index.test.ts similarity index 81% rename from packages/stylelint-copyright/__tests__/index.test.js rename to packages/stylelint-copyright/src/__tests__/index.test.ts index d2373e3d9988..f48b0499c67e 100644 --- a/packages/stylelint-copyright/__tests__/index.test.js +++ b/packages/stylelint-copyright/src/__tests__/index.test.ts @@ -6,13 +6,21 @@ */ /* eslint-disable jest/no-conditional-expect */ -const path = require('path'); -const stylelint = require('stylelint'); -const rule = require('..'); +import path from 'path'; +import stylelint, {type LinterResult} from 'stylelint'; +import rule from '../index'; -const {ruleName, messages} = rule; +const {ruleName} = rule; -function getOutputCss(output) { +declare global { + namespace jest { + interface Matchers<R> { + toHaveMessage: () => R; + } + } +} + +function getOutputCss(output: LinterResult) { // eslint-disable-next-line no-underscore-dangle const result = output.results[0]._postcssResult; return result.root.toString(result.opts.syntax); @@ -97,6 +105,8 @@ function testStylelintRule(config, tests) { } return { + message: () => + 'Expected "reject" test case to not have a "message" property', pass: true, }; }, @@ -106,7 +116,7 @@ function testStylelintRule(config, tests) { testStylelintRule( { - plugins: [path.join(__dirname, '..')], + plugins: [path.join(__dirname, '../../lib/index.js')], rules: { [ruleName]: [true, {header: '*\n * Copyright'}], }, @@ -143,7 +153,8 @@ testStylelintRule( * Copyright */ .foo {}`, - message: messages.rejected, + message: + 'Missing copyright in the header comment (docusaurus/copyright-header)', line: 1, column: 1, }, @@ -154,7 +165,8 @@ testStylelintRule( * Copyright */ .foo {}`, - message: messages.rejected, + message: + 'Missing copyright in the header comment (docusaurus/copyright-header)', line: 1, column: 1, }, @@ -173,7 +185,8 @@ testStylelintRule( */ .foo {}`, - message: messages.rejected, + message: + 'Missing copyright in the header comment (docusaurus/copyright-header)', line: 1, column: 1, }, @@ -192,7 +205,8 @@ testStylelintRule( */ .foo {}`, - message: messages.rejected, + message: + 'Missing copyright in the header comment (docusaurus/copyright-header)', line: 1, column: 1, }, @@ -217,7 +231,8 @@ testStylelintRule( * Copyright */ .foo {}`, - message: messages.rejected, + message: + 'Missing copyright in the header comment (docusaurus/copyright-header)', line: 1, column: 1, }, diff --git a/packages/stylelint-copyright/src/index.ts b/packages/stylelint-copyright/src/index.ts new file mode 100644 index 000000000000..a620d184d0a0 --- /dev/null +++ b/packages/stylelint-copyright/src/index.ts @@ -0,0 +1,58 @@ +/** + * 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 stylelint from 'stylelint'; + +const ruleName = 'docusaurus/copyright-header'; +const messages = stylelint.utils.ruleMessages(ruleName, { + rejected: 'Missing copyright in the header comment', +}); + +type SecondaryOption = {header?: string}; + +const plugin = stylelint.createPlugin( + ruleName, + (primaryOption: boolean, secondaryOption: SecondaryOption, context) => + (root, result) => { + stylelint.utils.validateOptions( + result, + ruleName, + { + actual: primaryOption, + possible: [true, false], + }, + { + actual: secondaryOption, + possible: (v) => typeof (v as SecondaryOption)?.header === 'string', + }, + ); + + if ( + root.first && + root.first.type === 'comment' && + root.first.source?.start?.column === 1 + ) { + const {text} = root.first; + if (text === secondaryOption.header) { + return; + } + } + if (context.fix) { + root.first?.before(`/*${secondaryOption.header}\n */`); + return; + } + + stylelint.utils.report({ + message: messages.rejected, + node: root, + result, + ruleName, + }); + }, +); + +export = plugin; diff --git a/packages/stylelint-copyright/tsconfig.json b/packages/stylelint-copyright/tsconfig.json new file mode 100644 index 000000000000..f5902ba1089b --- /dev/null +++ b/packages/stylelint-copyright/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "incremental": true, + "tsBuildInfoFile": "./lib/.tsbuildinfo", + "rootDir": "src", + "outDir": "lib" + } +} From a555fd1dcbcec4c9d7e6c7c857285c1bcca88783 Mon Sep 17 00:00:00 2001 From: Joshua Chen <sidachen2003@gmail.com> Date: Wed, 18 May 2022 12:48:28 +0800 Subject: [PATCH 20/32] refactor: make each tsconfig explicitly declare module and include/exclude (#7443) --- __tests__/validate-package-json.test.ts | 4 +- __tests__/validate-tsconfig.test.ts | 66 +++++++++++++++++++ .../create-docusaurus/tsconfig.build.json | 5 +- packages/create-docusaurus/tsconfig.json | 3 +- .../docusaurus-cssnano-preset/tsconfig.json | 6 +- packages/docusaurus-logger/tsconfig.json | 6 +- packages/docusaurus-mdx-loader/tsconfig.json | 5 +- .../docusaurus-migrate/tsconfig.build.json | 5 +- packages/docusaurus-migrate/tsconfig.json | 3 +- .../tsconfig.json | 9 ++- .../tsconfig.json | 6 +- .../tsconfig.client.json | 4 +- .../tsconfig.json | 1 + .../tsconfig.json | 6 +- .../tsconfig.client.json | 4 +- .../docusaurus-plugin-debug/tsconfig.json | 3 +- .../tsconfig.client.json | 4 +- .../tsconfig.json | 3 +- .../tsconfig.client.json | 4 +- .../tsconfig.json | 3 +- .../tsconfig.client.json | 4 +- .../tsconfig.json | 3 +- .../tsconfig.client.json | 4 +- packages/docusaurus-plugin-pwa/tsconfig.json | 9 ++- .../docusaurus-plugin-sitemap/tsconfig.json | 6 +- .../docusaurus-preset-classic/tsconfig.json | 6 +- .../tsconfig.json | 6 +- .../docusaurus-theme-classic/tsconfig.json | 3 +- .../docusaurus-theme-common/tsconfig.json | 4 +- .../tsconfig.client.json | 4 +- .../tsconfig.json | 2 + .../tsconfig.client.json | 4 +- .../tsconfig.json | 2 + .../tsconfig.build.json | 6 +- packages/docusaurus-types/package.json | 3 - .../docusaurus-utils-common/tsconfig.json | 6 +- .../docusaurus-utils-validation/tsconfig.json | 6 +- packages/docusaurus-utils/tsconfig.json | 6 +- packages/docusaurus/tsconfig.client.json | 4 +- packages/docusaurus/tsconfig.json | 3 +- packages/docusaurus/tsconfig.server.json | 1 + packages/eslint-plugin/tsconfig.json | 6 +- packages/lqip-loader/tsconfig.json | 6 +- packages/stylelint-copyright/tsconfig.json | 6 +- tsconfig.json | 10 ++- 45 files changed, 223 insertions(+), 47 deletions(-) create mode 100644 __tests__/validate-tsconfig.test.ts diff --git a/__tests__/validate-package-json.test.ts b/__tests__/validate-package-json.test.ts index f6003be9bacf..31bd4e8b5e8d 100644 --- a/__tests__/validate-package-json.test.ts +++ b/__tests__/validate-package-json.test.ts @@ -62,7 +62,9 @@ describe('packages', () => { const packageJsonFiles = await getPackagesJsonFiles(); packageJsonFiles - .filter((packageJsonFile) => packageJsonFile.content.name.startsWith('@')) + .filter((packageJsonFile) => + packageJsonFile.content.name?.startsWith('@'), + ) .forEach((packageJsonFile) => { if (packageJsonFile) { // Unfortunately jest custom message do not exist in loops, diff --git a/__tests__/validate-tsconfig.test.ts b/__tests__/validate-tsconfig.test.ts new file mode 100644 index 000000000000..7a80816b7a98 --- /dev/null +++ b/__tests__/validate-tsconfig.test.ts @@ -0,0 +1,66 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import fs from 'fs-extra'; +import {Globby} from '@docusaurus/utils'; +import {Joi} from '@docusaurus/utils-validation'; + +type TsconfigFile = { + file: string; + content: { + extends?: string; + compilerOptions: { + [key: string]: unknown; + }; + }; +}; + +async function getTsconfigFiles(): Promise<TsconfigFile[]> { + const files = await Globby('packages/*/tsconfig.*'); + return Promise.all( + files.map((file) => fs.readJSON(file).then((content) => ({file, content}))), + ); +} + +const tsconfigSchema = Joi.object({ + extends: '../../tsconfig.json', + compilerOptions: Joi.alternatives().conditional( + Joi.object({noEmit: true}).unknown(), + { + then: Joi.object({ + noEmit: Joi.valid(true).required(), + incremental: Joi.forbidden(), + tsBuildInfoFile: Joi.forbidden(), + outDir: Joi.forbidden(), + module: Joi.valid('commonjs', 'es2020', 'esnext').required(), + }).unknown(), + otherwise: Joi.object({ + noEmit: Joi.valid(false).required(), + incremental: Joi.valid(true).required(), + rootDir: Joi.valid('src').required(), + outDir: Joi.valid('lib').required(), + module: Joi.valid('commonjs', 'es2020', 'esnext').required(), + }).unknown(), + }, + ), +}).unknown(); + +describe('tsconfig files', () => { + it('contain all required fields', async () => { + const tsconfigFiles = await getTsconfigFiles(); + tsconfigFiles.forEach((file) => { + try { + Joi.attempt(file.content, tsconfigSchema); + } catch (e) { + ( + e as Error + ).message += `\n${file.file} does not match the required schema.`; + throw e; + } + }); + }); +}); diff --git a/packages/create-docusaurus/tsconfig.build.json b/packages/create-docusaurus/tsconfig.build.json index 3262001f72c0..6f46335ae9d0 100644 --- a/packages/create-docusaurus/tsconfig.build.json +++ b/packages/create-docusaurus/tsconfig.build.json @@ -1,6 +1,7 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "noEmit": false, "composite": true, "module": "es2020", "incremental": true, @@ -8,6 +9,6 @@ "rootDir": "src", "outDir": "lib" }, - "include": ["src/"], - "exclude": ["templates/"] + "include": ["src"], + "exclude": ["templates/", "**/__tests__/**"] } diff --git a/packages/create-docusaurus/tsconfig.json b/packages/create-docusaurus/tsconfig.json index 1b8a3ef4baf3..ef9bff21668e 100644 --- a/packages/create-docusaurus/tsconfig.json +++ b/packages/create-docusaurus/tsconfig.json @@ -7,5 +7,6 @@ "module": "esnext", "rootDir": "." }, - "include": ["bin"] + "include": ["bin"], + "exclude": ["**/__tests__/**"] } diff --git a/packages/docusaurus-cssnano-preset/tsconfig.json b/packages/docusaurus-cssnano-preset/tsconfig.json index f5902ba1089b..80e43e9813ef 100644 --- a/packages/docusaurus-cssnano-preset/tsconfig.json +++ b/packages/docusaurus-cssnano-preset/tsconfig.json @@ -1,9 +1,13 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "noEmit": false, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", + "module": "commonjs", "rootDir": "src", "outDir": "lib" - } + }, + "include": ["src"], + "exclude": ["**/__tests__/**"] } diff --git a/packages/docusaurus-logger/tsconfig.json b/packages/docusaurus-logger/tsconfig.json index aee99fc0f38e..7807612b51a5 100644 --- a/packages/docusaurus-logger/tsconfig.json +++ b/packages/docusaurus-logger/tsconfig.json @@ -1,11 +1,15 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "noEmit": false, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", "sourceMap": true, "declarationMap": true, + "module": "commonjs", "rootDir": "src", "outDir": "lib" - } + }, + "include": ["src"], + "exclude": ["**/__tests__/**"] } diff --git a/packages/docusaurus-mdx-loader/tsconfig.json b/packages/docusaurus-mdx-loader/tsconfig.json index 4cc153c7f158..7807612b51a5 100644 --- a/packages/docusaurus-mdx-loader/tsconfig.json +++ b/packages/docusaurus-mdx-loader/tsconfig.json @@ -1,12 +1,15 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "noEmit": false, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", "sourceMap": true, "declarationMap": true, + "module": "commonjs", "rootDir": "src", "outDir": "lib" }, - "include": ["src"] + "include": ["src"], + "exclude": ["**/__tests__/**"] } diff --git a/packages/docusaurus-migrate/tsconfig.build.json b/packages/docusaurus-migrate/tsconfig.build.json index 89b76f28591d..e43e58accad2 100644 --- a/packages/docusaurus-migrate/tsconfig.build.json +++ b/packages/docusaurus-migrate/tsconfig.build.json @@ -1,11 +1,14 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "noEmit": false, "composite": true, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", + "module": "commonjs", "rootDir": "src", "outDir": "lib" }, - "include": ["src"] + "include": ["src"], + "exclude": ["**/__tests__/**"] } diff --git a/packages/docusaurus-migrate/tsconfig.json b/packages/docusaurus-migrate/tsconfig.json index c930032b738b..4c04aae29fd9 100644 --- a/packages/docusaurus-migrate/tsconfig.json +++ b/packages/docusaurus-migrate/tsconfig.json @@ -7,5 +7,6 @@ "allowJs": true, "rootDir": "." }, - "include": ["bin"] + "include": ["bin"], + "exclude": ["**/__tests__/**"] } diff --git a/packages/docusaurus-plugin-client-redirects/tsconfig.json b/packages/docusaurus-plugin-client-redirects/tsconfig.json index 7b696ed3843d..80e43e9813ef 100644 --- a/packages/docusaurus-plugin-client-redirects/tsconfig.json +++ b/packages/docusaurus-plugin-client-redirects/tsconfig.json @@ -1,10 +1,13 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "noEmit": false, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", + "module": "commonjs", "rootDir": "src", - "outDir": "lib", - "typeRoots": ["./types", "./node_modules/@types"] - } + "outDir": "lib" + }, + "include": ["src"], + "exclude": ["**/__tests__/**"] } diff --git a/packages/docusaurus-plugin-content-blog/tsconfig.json b/packages/docusaurus-plugin-content-blog/tsconfig.json index f5902ba1089b..80e43e9813ef 100644 --- a/packages/docusaurus-plugin-content-blog/tsconfig.json +++ b/packages/docusaurus-plugin-content-blog/tsconfig.json @@ -1,9 +1,13 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "noEmit": false, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", + "module": "commonjs", "rootDir": "src", "outDir": "lib" - } + }, + "include": ["src"], + "exclude": ["**/__tests__/**"] } diff --git a/packages/docusaurus-plugin-content-docs/tsconfig.client.json b/packages/docusaurus-plugin-content-docs/tsconfig.client.json index 018e125eb75c..2741f3ca3890 100644 --- a/packages/docusaurus-plugin-content-docs/tsconfig.client.json +++ b/packages/docusaurus-plugin-content-docs/tsconfig.client.json @@ -1,6 +1,7 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "noEmit": false, "composite": true, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo-client", @@ -9,5 +10,6 @@ "rootDir": "src", "outDir": "lib" }, - "include": ["src/client", "src/*.d.ts"] + "include": ["src/client", "src/*.d.ts"], + "exclude": ["**/__tests__/**"] } diff --git a/packages/docusaurus-plugin-content-docs/tsconfig.json b/packages/docusaurus-plugin-content-docs/tsconfig.json index 57f0111934e4..48e200409e4e 100644 --- a/packages/docusaurus-plugin-content-docs/tsconfig.json +++ b/packages/docusaurus-plugin-content-docs/tsconfig.json @@ -2,6 +2,7 @@ "extends": "../../tsconfig.json", "references": [{"path": "./tsconfig.client.json"}], "compilerOptions": { + "noEmit": false, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", "module": "commonjs", diff --git a/packages/docusaurus-plugin-content-pages/tsconfig.json b/packages/docusaurus-plugin-content-pages/tsconfig.json index f5902ba1089b..80e43e9813ef 100644 --- a/packages/docusaurus-plugin-content-pages/tsconfig.json +++ b/packages/docusaurus-plugin-content-pages/tsconfig.json @@ -1,9 +1,13 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "noEmit": false, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", + "module": "commonjs", "rootDir": "src", "outDir": "lib" - } + }, + "include": ["src"], + "exclude": ["**/__tests__/**"] } diff --git a/packages/docusaurus-plugin-debug/tsconfig.client.json b/packages/docusaurus-plugin-debug/tsconfig.client.json index 836fc6391ac5..2fd5ae7c4d29 100644 --- a/packages/docusaurus-plugin-debug/tsconfig.client.json +++ b/packages/docusaurus-plugin-debug/tsconfig.client.json @@ -1,6 +1,7 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "noEmit": false, "composite": true, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo-client", @@ -9,5 +10,6 @@ "rootDir": "src", "outDir": "lib" }, - "include": ["src/theme", "src/*.d.ts"] + "include": ["src/theme", "src/*.d.ts"], + "exclude": ["**/__tests__/**"] } diff --git a/packages/docusaurus-plugin-debug/tsconfig.json b/packages/docusaurus-plugin-debug/tsconfig.json index f3146ecc7574..7c1bb85ac462 100644 --- a/packages/docusaurus-plugin-debug/tsconfig.json +++ b/packages/docusaurus-plugin-debug/tsconfig.json @@ -2,6 +2,7 @@ "extends": "../../tsconfig.json", "references": [{"path": "./tsconfig.client.json"}], "compilerOptions": { + "noEmit": false, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", "module": "commonjs", @@ -9,5 +10,5 @@ "outDir": "lib" }, "include": ["src"], - "exclude": ["src/theme"] + "exclude": ["src/theme", "**/__tests__/**"] } diff --git a/packages/docusaurus-plugin-google-analytics/tsconfig.client.json b/packages/docusaurus-plugin-google-analytics/tsconfig.client.json index 3e8fdb9a0b8e..766ffcc81d67 100644 --- a/packages/docusaurus-plugin-google-analytics/tsconfig.client.json +++ b/packages/docusaurus-plugin-google-analytics/tsconfig.client.json @@ -1,6 +1,7 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "noEmit": false, "composite": true, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo-client", @@ -9,5 +10,6 @@ "rootDir": "src", "outDir": "lib" }, - "include": ["src/analytics.ts", "src/*.d.ts"] + "include": ["src/analytics.ts", "src/*.d.ts"], + "exclude": ["**/__tests__/**"] } diff --git a/packages/docusaurus-plugin-google-analytics/tsconfig.json b/packages/docusaurus-plugin-google-analytics/tsconfig.json index 9ca36591661f..77a4365aedfe 100644 --- a/packages/docusaurus-plugin-google-analytics/tsconfig.json +++ b/packages/docusaurus-plugin-google-analytics/tsconfig.json @@ -2,6 +2,7 @@ "extends": "../../tsconfig.json", "references": [{"path": "./tsconfig.client.json"}], "compilerOptions": { + "noEmit": false, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", "module": "commonjs", @@ -9,5 +10,5 @@ "outDir": "lib" }, "include": ["src"], - "exclude": ["src/analytics.ts"] + "exclude": ["src/analytics.ts", "**/__tests__/**"] } diff --git a/packages/docusaurus-plugin-google-gtag/tsconfig.client.json b/packages/docusaurus-plugin-google-gtag/tsconfig.client.json index b00cb512062b..985b9a458099 100644 --- a/packages/docusaurus-plugin-google-gtag/tsconfig.client.json +++ b/packages/docusaurus-plugin-google-gtag/tsconfig.client.json @@ -1,6 +1,7 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "noEmit": false, "composite": true, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo-client", @@ -9,5 +10,6 @@ "rootDir": "src", "outDir": "lib" }, - "include": ["src/gtag.ts", "src/options.ts", "src/*.d.ts"] + "include": ["src/gtag.ts", "src/options.ts", "src/*.d.ts"], + "exclude": ["**/__tests__/**"] } diff --git a/packages/docusaurus-plugin-google-gtag/tsconfig.json b/packages/docusaurus-plugin-google-gtag/tsconfig.json index cad9a09f4e49..1b3271a718e6 100644 --- a/packages/docusaurus-plugin-google-gtag/tsconfig.json +++ b/packages/docusaurus-plugin-google-gtag/tsconfig.json @@ -2,6 +2,7 @@ "extends": "../../tsconfig.json", "references": [{"path": "./tsconfig.client.json"}], "compilerOptions": { + "noEmit": false, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", "module": "commonjs", @@ -9,5 +10,5 @@ "outDir": "lib" }, "include": ["src"], - "exclude": ["src/gtag.ts"] + "exclude": ["src/gtag.ts", "**/__tests__/**"] } diff --git a/packages/docusaurus-plugin-ideal-image/tsconfig.client.json b/packages/docusaurus-plugin-ideal-image/tsconfig.client.json index 836fc6391ac5..2fd5ae7c4d29 100644 --- a/packages/docusaurus-plugin-ideal-image/tsconfig.client.json +++ b/packages/docusaurus-plugin-ideal-image/tsconfig.client.json @@ -1,6 +1,7 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "noEmit": false, "composite": true, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo-client", @@ -9,5 +10,6 @@ "rootDir": "src", "outDir": "lib" }, - "include": ["src/theme", "src/*.d.ts"] + "include": ["src/theme", "src/*.d.ts"], + "exclude": ["**/__tests__/**"] } diff --git a/packages/docusaurus-plugin-ideal-image/tsconfig.json b/packages/docusaurus-plugin-ideal-image/tsconfig.json index f3146ecc7574..7c1bb85ac462 100644 --- a/packages/docusaurus-plugin-ideal-image/tsconfig.json +++ b/packages/docusaurus-plugin-ideal-image/tsconfig.json @@ -2,6 +2,7 @@ "extends": "../../tsconfig.json", "references": [{"path": "./tsconfig.client.json"}], "compilerOptions": { + "noEmit": false, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", "module": "commonjs", @@ -9,5 +10,5 @@ "outDir": "lib" }, "include": ["src"], - "exclude": ["src/theme"] + "exclude": ["src/theme", "**/__tests__/**"] } diff --git a/packages/docusaurus-plugin-pwa/tsconfig.client.json b/packages/docusaurus-plugin-pwa/tsconfig.client.json index bb29e4aa07e9..9404df7cd886 100644 --- a/packages/docusaurus-plugin-pwa/tsconfig.client.json +++ b/packages/docusaurus-plugin-pwa/tsconfig.client.json @@ -1,6 +1,7 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "noEmit": false, "composite": true, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo-client", @@ -14,5 +15,6 @@ "src/*.d.ts", "src/registerSw.ts", "src/renderReloadPopup.tsx" - ] + ], + "exclude": ["**/__tests__/**"] } diff --git a/packages/docusaurus-plugin-pwa/tsconfig.json b/packages/docusaurus-plugin-pwa/tsconfig.json index 98aa9153f659..5eb9d05af96b 100644 --- a/packages/docusaurus-plugin-pwa/tsconfig.json +++ b/packages/docusaurus-plugin-pwa/tsconfig.json @@ -2,11 +2,18 @@ "extends": "../../tsconfig.json", "references": [{"path": "./tsconfig.client.json"}], "compilerOptions": { + "noEmit": false, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", + "module": "commonjs", "rootDir": "src", "outDir": "lib" }, "include": ["src"], - "exclude": ["src/theme/", "src/registerSw.ts", "src/renderReloadPopup.tsx"] + "exclude": [ + "src/theme/", + "src/registerSw.ts", + "src/renderReloadPopup.tsx", + "**/__tests__/**" + ] } diff --git a/packages/docusaurus-plugin-sitemap/tsconfig.json b/packages/docusaurus-plugin-sitemap/tsconfig.json index f5902ba1089b..80e43e9813ef 100644 --- a/packages/docusaurus-plugin-sitemap/tsconfig.json +++ b/packages/docusaurus-plugin-sitemap/tsconfig.json @@ -1,9 +1,13 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "noEmit": false, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", + "module": "commonjs", "rootDir": "src", "outDir": "lib" - } + }, + "include": ["src"], + "exclude": ["**/__tests__/**"] } diff --git a/packages/docusaurus-preset-classic/tsconfig.json b/packages/docusaurus-preset-classic/tsconfig.json index f5902ba1089b..80e43e9813ef 100644 --- a/packages/docusaurus-preset-classic/tsconfig.json +++ b/packages/docusaurus-preset-classic/tsconfig.json @@ -1,9 +1,13 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "noEmit": false, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", + "module": "commonjs", "rootDir": "src", "outDir": "lib" - } + }, + "include": ["src"], + "exclude": ["**/__tests__/**"] } diff --git a/packages/docusaurus-remark-plugin-npm2yarn/tsconfig.json b/packages/docusaurus-remark-plugin-npm2yarn/tsconfig.json index aee99fc0f38e..7807612b51a5 100644 --- a/packages/docusaurus-remark-plugin-npm2yarn/tsconfig.json +++ b/packages/docusaurus-remark-plugin-npm2yarn/tsconfig.json @@ -1,11 +1,15 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "noEmit": false, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", "sourceMap": true, "declarationMap": true, + "module": "commonjs", "rootDir": "src", "outDir": "lib" - } + }, + "include": ["src"], + "exclude": ["**/__tests__/**"] } diff --git a/packages/docusaurus-theme-classic/tsconfig.json b/packages/docusaurus-theme-classic/tsconfig.json index 659cb2cc6b98..4ee40b287f62 100644 --- a/packages/docusaurus-theme-classic/tsconfig.json +++ b/packages/docusaurus-theme-classic/tsconfig.json @@ -5,5 +5,6 @@ "module": "esnext", "noEmit": true }, - "include": ["src/"] + "include": ["src/"], + "exclude": ["**/__tests__/**"] } diff --git a/packages/docusaurus-theme-common/tsconfig.json b/packages/docusaurus-theme-common/tsconfig.json index a6f83d37f330..ceffc5496b4b 100644 --- a/packages/docusaurus-theme-common/tsconfig.json +++ b/packages/docusaurus-theme-common/tsconfig.json @@ -1,6 +1,7 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "noEmit": false, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", "module": "esnext", @@ -10,5 +11,6 @@ "rootDir": "src", "outDir": "lib" }, - "include": ["src"] + "include": ["src"], + "exclude": ["**/__tests__/**"] } diff --git a/packages/docusaurus-theme-live-codeblock/tsconfig.client.json b/packages/docusaurus-theme-live-codeblock/tsconfig.client.json index 1988ff0b3884..222005186ea5 100644 --- a/packages/docusaurus-theme-live-codeblock/tsconfig.client.json +++ b/packages/docusaurus-theme-live-codeblock/tsconfig.client.json @@ -1,6 +1,7 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "noEmit": false, "composite": true, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo-client", @@ -9,5 +10,6 @@ "module": "esnext", "target": "esnext" }, - "include": ["src/theme", "src/*.d.ts", "src/custom-buble.ts"] + "include": ["src/theme", "src/*.d.ts", "src/custom-buble.ts"], + "exclude": ["**/__tests__/**"] } diff --git a/packages/docusaurus-theme-live-codeblock/tsconfig.json b/packages/docusaurus-theme-live-codeblock/tsconfig.json index e9a5d5fd3387..c0b15f81fcc8 100644 --- a/packages/docusaurus-theme-live-codeblock/tsconfig.json +++ b/packages/docusaurus-theme-live-codeblock/tsconfig.json @@ -2,8 +2,10 @@ "extends": "../../tsconfig.json", "references": [{"path": "./tsconfig.client.json"}], "compilerOptions": { + "noEmit": false, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", + "module": "commonjs", "rootDir": "src", "outDir": "lib" }, diff --git a/packages/docusaurus-theme-search-algolia/tsconfig.client.json b/packages/docusaurus-theme-search-algolia/tsconfig.client.json index 9e8321ca3deb..a8c1d3f7de50 100644 --- a/packages/docusaurus-theme-search-algolia/tsconfig.client.json +++ b/packages/docusaurus-theme-search-algolia/tsconfig.client.json @@ -1,6 +1,7 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "noEmit": false, "composite": true, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo-client", @@ -9,5 +10,6 @@ "module": "esnext", "target": "esnext" }, - "include": ["src/theme", "src/client", "src/*.d.ts"] + "include": ["src/theme", "src/client", "src/*.d.ts"], + "exclude": ["**/__tests__/**"] } diff --git a/packages/docusaurus-theme-search-algolia/tsconfig.json b/packages/docusaurus-theme-search-algolia/tsconfig.json index 413bf0796347..3c8737f51c0d 100644 --- a/packages/docusaurus-theme-search-algolia/tsconfig.json +++ b/packages/docusaurus-theme-search-algolia/tsconfig.json @@ -2,8 +2,10 @@ "extends": "../../tsconfig.json", "references": [{"path": "./tsconfig.client.json"}], "compilerOptions": { + "noEmit": false, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", + "module": "commonjs", "rootDir": "src", "outDir": "lib" }, diff --git a/packages/docusaurus-theme-translations/tsconfig.build.json b/packages/docusaurus-theme-translations/tsconfig.build.json index a0eb19189c73..5370e86c56a5 100644 --- a/packages/docusaurus-theme-translations/tsconfig.build.json +++ b/packages/docusaurus-theme-translations/tsconfig.build.json @@ -1,12 +1,16 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "noEmit": false, "composite": true, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", "sourceMap": true, "declarationMap": true, + "module": "commonjs", "rootDir": "src", "outDir": "lib" - } + }, + "include": ["src"], + "exclude": ["**/__tests__/**"] } diff --git a/packages/docusaurus-types/package.json b/packages/docusaurus-types/package.json index b50c2100a5af..051f1625c8ff 100644 --- a/packages/docusaurus-types/package.json +++ b/packages/docusaurus-types/package.json @@ -12,9 +12,6 @@ "directory": "packages/docusaurus-types" }, "license": "MIT", - "scripts": { - "test": "tsc -p ." - }, "dependencies": { "commander": "^5.1.0", "history": "^4.9.0", diff --git a/packages/docusaurus-utils-common/tsconfig.json b/packages/docusaurus-utils-common/tsconfig.json index c28192960036..f787010fcd78 100644 --- a/packages/docusaurus-utils-common/tsconfig.json +++ b/packages/docusaurus-utils-common/tsconfig.json @@ -1,12 +1,16 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "noEmit": false, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", "sourceMap": true, "declarationMap": true, + "module": "commonjs", "rootDir": "src", "outDir": "lib", "noEmitHelpers": false - } + }, + "include": ["src"], + "exclude": ["**/__tests__/**"] } diff --git a/packages/docusaurus-utils-validation/tsconfig.json b/packages/docusaurus-utils-validation/tsconfig.json index aee99fc0f38e..7807612b51a5 100644 --- a/packages/docusaurus-utils-validation/tsconfig.json +++ b/packages/docusaurus-utils-validation/tsconfig.json @@ -1,11 +1,15 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "noEmit": false, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", "sourceMap": true, "declarationMap": true, + "module": "commonjs", "rootDir": "src", "outDir": "lib" - } + }, + "include": ["src"], + "exclude": ["**/__tests__/**"] } diff --git a/packages/docusaurus-utils/tsconfig.json b/packages/docusaurus-utils/tsconfig.json index aee99fc0f38e..7807612b51a5 100644 --- a/packages/docusaurus-utils/tsconfig.json +++ b/packages/docusaurus-utils/tsconfig.json @@ -1,11 +1,15 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "noEmit": false, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", "sourceMap": true, "declarationMap": true, + "module": "commonjs", "rootDir": "src", "outDir": "lib" - } + }, + "include": ["src"], + "exclude": ["**/__tests__/**"] } diff --git a/packages/docusaurus/tsconfig.client.json b/packages/docusaurus/tsconfig.client.json index 018e125eb75c..2741f3ca3890 100644 --- a/packages/docusaurus/tsconfig.client.json +++ b/packages/docusaurus/tsconfig.client.json @@ -1,6 +1,7 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "noEmit": false, "composite": true, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo-client", @@ -9,5 +10,6 @@ "rootDir": "src", "outDir": "lib" }, - "include": ["src/client", "src/*.d.ts"] + "include": ["src/client", "src/*.d.ts"], + "exclude": ["**/__tests__/**"] } diff --git a/packages/docusaurus/tsconfig.json b/packages/docusaurus/tsconfig.json index ebbe87890df4..cf74f4e2b7a6 100644 --- a/packages/docusaurus/tsconfig.json +++ b/packages/docusaurus/tsconfig.json @@ -11,5 +11,6 @@ "rootDir": ".", "module": "esnext" }, - "include": ["bin"] + "include": ["bin"], + "exclude": ["**/__tests__/**"] } diff --git a/packages/docusaurus/tsconfig.server.json b/packages/docusaurus/tsconfig.server.json index eb1b6945ac88..f800ce6a5fe5 100644 --- a/packages/docusaurus/tsconfig.server.json +++ b/packages/docusaurus/tsconfig.server.json @@ -1,6 +1,7 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "noEmit": false, "composite": true, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", diff --git a/packages/eslint-plugin/tsconfig.json b/packages/eslint-plugin/tsconfig.json index f5902ba1089b..80e43e9813ef 100644 --- a/packages/eslint-plugin/tsconfig.json +++ b/packages/eslint-plugin/tsconfig.json @@ -1,9 +1,13 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "noEmit": false, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", + "module": "commonjs", "rootDir": "src", "outDir": "lib" - } + }, + "include": ["src"], + "exclude": ["**/__tests__/**"] } diff --git a/packages/lqip-loader/tsconfig.json b/packages/lqip-loader/tsconfig.json index f5902ba1089b..80e43e9813ef 100644 --- a/packages/lqip-loader/tsconfig.json +++ b/packages/lqip-loader/tsconfig.json @@ -1,9 +1,13 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "noEmit": false, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", + "module": "commonjs", "rootDir": "src", "outDir": "lib" - } + }, + "include": ["src"], + "exclude": ["**/__tests__/**"] } diff --git a/packages/stylelint-copyright/tsconfig.json b/packages/stylelint-copyright/tsconfig.json index f5902ba1089b..80e43e9813ef 100644 --- a/packages/stylelint-copyright/tsconfig.json +++ b/packages/stylelint-copyright/tsconfig.json @@ -1,9 +1,13 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "noEmit": false, "incremental": true, "tsBuildInfoFile": "./lib/.tsbuildinfo", + "module": "commonjs", "rootDir": "src", "outDir": "lib" - } + }, + "include": ["src"], + "exclude": ["**/__tests__/**"] } diff --git a/tsconfig.json b/tsconfig.json index e7d9ca05d0eb..9b4ff3711eb3 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,13 +2,17 @@ "compilerOptions": { /* Emit */ "target": "ES2020", - "module": "commonjs", - "lib": ["ESNext", "DOM"], + "lib": ["ESNext"], "declaration": true, + // These two options will be selectively overridden in each project. + // Utility libraries will have source maps on, but plugins will not. "declarationMap": false, + "sourceMap": false, "jsx": "react-native", "importHelpers": true, "noEmitHelpers": true, + // Avoid accidentally using this config to build + "noEmit": true, /* Strict Type-Checking Options */ "allowUnreachableCode": false, @@ -44,5 +48,5 @@ "isolatedModules": true, "skipLibCheck": true // @types/webpack and webpack/types.d.ts are not the same thing }, - "exclude": ["node_modules", "**/__tests__/**", "**/lib/**/*"] + "exclude": ["node_modules", "**/lib/**/*"] } From 5c3d3cfef1add98ad7e72f5f32a62f757748557a Mon Sep 17 00:00:00 2001 From: Joshua Chen <sidachen2003@gmail.com> Date: Wed, 18 May 2022 18:24:14 +0800 Subject: [PATCH 21/32] chore: replace concurrently with npm-run-all (#7444) --- package.json | 2 +- .../docusaurus-theme-classic/package.json | 4 +- yarn.lock | 107 ++++++++++++------ 3 files changed, 76 insertions(+), 37 deletions(-) diff --git a/package.json b/package.json index 78812855f38f..eb257678d709 100644 --- a/package.json +++ b/package.json @@ -78,7 +78,6 @@ "@types/shelljs": "^0.8.11", "@typescript-eslint/eslint-plugin": "^5.24.0", "@typescript-eslint/parser": "^5.24.0", - "concurrently": "^7.2.0", "cross-env": "^7.0.3", "cspell": "^5.20.0", "eslint": "^8.15.0", @@ -99,6 +98,7 @@ "lerna": "^4.0.0", "lerna-changelog": "^2.2.0", "lint-staged": "^12.4.1", + "npm-run-all": "^4.1.5", "prettier": "^2.6.2", "react": "^17.0.2", "react-dom": "^17.0.2", diff --git a/packages/docusaurus-theme-classic/package.json b/packages/docusaurus-theme-classic/package.json index ab0e902cfc34..bcbdb78c31bd 100644 --- a/packages/docusaurus-theme-classic/package.json +++ b/packages/docusaurus-theme-classic/package.json @@ -15,9 +15,11 @@ "license": "MIT", "scripts": { "build": "tsc --noEmit && yarn babel:lib && yarn babel:lib-next && yarn format:lib-next", - "watch": "concurrently --names \"lib,lib-next,tsc\" --kill-others \"yarn babel:lib --watch\" \"yarn babel:lib-next --watch\" \"yarn tsc --watch\"", + "watch": "run-p --continue-on-error babel:lib:watch babel:lib-next:watch", "babel:lib": "cross-env BABEL_ENV=lib babel src -d lib --extensions \".tsx,.ts\" --ignore \"**/*.d.ts\" --copy-files", "babel:lib-next": "cross-env BABEL_ENV=lib-next babel src -d lib-next --extensions \".tsx,.ts\" --ignore \"**/*.d.ts\" --copy-files", + "babel:lib:watch": "yarn babel:lib --watch", + "babel:lib-next:watch": "yarn babel:lib-next --watch", "format:lib-next": "prettier --config ../../.prettierrc --write \"lib-next/**/*.{js,ts,jsx,tsc}\"" }, "dependencies": { diff --git a/yarn.lock b/yarn.lock index 426e56929cb1..73710442ca86 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5629,21 +5629,6 @@ concat-stream@^2.0.0: readable-stream "^3.0.2" typedarray "^0.0.6" -concurrently@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-7.2.0.tgz#4d9b4d1e527b8a8cb101bc2aee317e09496fad43" - integrity sha512-4KIVY5HopDRhN3ndAgfFOLsMk1PZUPgghlgTMZ5Pb5aTrqYg86RcZaIZC2Cz+qpZ9DsX36WHGjvWnXPqdnblhw== - dependencies: - chalk "^4.1.0" - date-fns "^2.16.1" - lodash "^4.17.21" - rxjs "^6.6.3" - shell-quote "^1.7.3" - spawn-command "^0.0.2-1" - supports-color "^8.1.0" - tree-kill "^1.2.2" - yargs "^17.3.1" - config-chain@^1.1.12: version "1.1.13" resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" @@ -5896,6 +5881,17 @@ cross-fetch@^3.1.5: dependencies: node-fetch "2.6.7" +cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -6181,11 +6177,6 @@ data-urls@^3.0.1: whatwg-mimetype "^3.0.0" whatwg-url "^11.0.0" -date-fns@^2.16.1: - version "2.28.0" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.28.0.tgz#9570d656f5fc13143e50c975a3b6bbeb46cd08b2" - integrity sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw== - dateformat@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" @@ -10434,6 +10425,11 @@ memfs@^3.1.2, memfs@^3.4.1: dependencies: fs-monkey "1.0.3" +memorystream@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" + integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== + meow@^8.0.0: version "8.1.2" resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" @@ -10836,6 +10832,11 @@ netlify-plugin-cache@^1.0.3: resolved "https://registry.yarnpkg.com/netlify-plugin-cache/-/netlify-plugin-cache-1.0.3.tgz#f60514e259dff2b3286b6d60b570bb1c81206794" integrity sha512-CTOwNWrTOP59T6y6unxQNnp1WX702v2R/faR5peSH94ebrYfyY4zT5IsRcIiHKq57jXeyCrhy0GLuTN8ktzuQg== +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + njre@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/njre/-/njre-0.2.0.tgz#e5abfbafafb3db4438fe6b149da9a733fab0bf3d" @@ -11083,6 +11084,21 @@ npm-registry-fetch@^9.0.0: minizlib "^2.0.0" npm-package-arg "^8.0.0" +npm-run-all@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba" + integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ== + dependencies: + ansi-styles "^3.2.1" + chalk "^2.4.1" + cross-spawn "^6.0.5" + memorystream "^0.3.1" + minimatch "^3.0.4" + pidtree "^0.3.0" + read-pkg "^3.0.0" + shell-quote "^1.6.1" + string.prototype.padend "^3.0.0" + npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" @@ -11613,6 +11629,11 @@ path-is-inside@1.0.2: resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== +path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== + path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" @@ -11677,6 +11698,11 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatc resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +pidtree@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a" + integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA== + pidtree@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.5.0.tgz#ad5fbc1de78b8a5f99d6fbdd4f6e4eee21d1aca1" @@ -13270,7 +13296,7 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -rxjs@^6.6.0, rxjs@^6.6.3: +rxjs@^6.6.0: version "6.6.7" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== @@ -13399,7 +13425,7 @@ semver-diff@^3.1.1: dependencies: semver "^6.3.0" -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.6.0, semver@^5.7.1: +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.6.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -13547,6 +13573,13 @@ sharp@^0.30.4: tar-fs "^2.1.1" tunnel-agent "^0.6.0" +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== + dependencies: + shebang-regex "^1.0.0" + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -13554,12 +13587,17 @@ shebang-command@^2.0.0: dependencies: shebang-regex "^3.0.0" +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== + shebang-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-quote@^1.7.3: +shell-quote@^1.6.1, shell-quote@^1.7.3: version "1.7.3" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== @@ -13846,11 +13884,6 @@ space-separated-tokens@^2.0.0: resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz#43193cec4fb858a2ce934b7f98b7f2c18107098b" integrity sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw== -spawn-command@^0.0.2-1: - version "0.0.2-1" - resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" - integrity sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg== - spdx-correct@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" @@ -14057,6 +14090,15 @@ string.prototype.matchall@^4.0.6: regexp.prototype.flags "^1.4.1" side-channel "^1.0.4" +string.prototype.padend@^3.0.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz#997a6de12c92c7cb34dc8a201a6c53d9bd88a5f1" + integrity sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + string.prototype.trimend@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" @@ -14277,7 +14319,7 @@ supports-color@^7.0.0, supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -supports-color@^8.0.0, supports-color@^8.1.0: +supports-color@^8.0.0: version "8.1.1" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== @@ -14681,11 +14723,6 @@ tr46@~0.0.3: resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9" integrity sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ== -tree-kill@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" - integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== - tree-node-cli@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/tree-node-cli/-/tree-node-cli-1.5.2.tgz#c684fb9e7c2b9b29aa023eebaa9a095b6f93bf93" @@ -15664,7 +15701,7 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" -which@^1.3.1: +which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== From 6b53d4263da3e0fb78acf4c76eaddb37e950905e Mon Sep 17 00:00:00 2001 From: Joshua Chen <sidachen2003@gmail.com> Date: Wed, 18 May 2022 19:18:32 +0800 Subject: [PATCH 22/32] misc: make copyUntypedFiles work for watch mode (#7445) --- .eslintignore | 1 - admin/scripts/copyUntypedFiles.mjs | 36 +++++++++++++++++++ packages/create-docusaurus/.npmignore | 1 - packages/create-docusaurus/package.json | 2 +- packages/docusaurus-cssnano-preset/.npmignore | 1 - packages/docusaurus-logger/.npmignore | 1 - packages/docusaurus-mdx-loader/.npmignore | 1 - packages/docusaurus-migrate/.npmignore | 1 - packages/docusaurus-migrate/package.json | 2 +- .../.npmignore | 1 - .../docusaurus-plugin-content-blog/.npmignore | 1 - .../docusaurus-plugin-content-docs/.npmignore | 1 - .../package.json | 2 +- .../.npmignore | 1 - packages/docusaurus-plugin-debug/.npmignore | 1 - .../copyUntypedFiles.mjs | 20 ----------- packages/docusaurus-plugin-debug/package.json | 6 ++-- .../.npmignore | 1 - .../package.json | 2 +- .../docusaurus-plugin-google-gtag/.npmignore | 1 - .../package.json | 2 +- .../docusaurus-plugin-ideal-image/.npmignore | 1 - .../copyUntypedFiles.mjs | 20 ----------- .../package.json | 5 ++- packages/docusaurus-plugin-pwa/.npmignore | 1 - .../copyUntypedFiles.mjs | 20 ----------- packages/docusaurus-plugin-pwa/package.json | 5 ++- packages/docusaurus-plugin-sitemap/.npmignore | 1 - packages/docusaurus-preset-classic/.npmignore | 1 - .../.npmignore | 1 - packages/docusaurus-theme-classic/.npmignore | 1 - packages/docusaurus-theme-common/.npmignore | 1 - .../copyUntypedFiles.mjs | 20 ----------- packages/docusaurus-theme-common/package.json | 6 ++-- .../.npmignore | 1 - .../copyUntypedFiles.mjs | 20 ----------- .../package.json | 5 ++- .../.npmignore | 1 - .../copyUntypedFiles.mjs | 20 ----------- .../package.json | 5 ++- .../docusaurus-theme-translations/.npmignore | 1 - .../package.json | 2 +- packages/docusaurus-utils-common/.npmignore | 1 - .../docusaurus-utils-validation/.npmignore | 1 - packages/docusaurus-utils/.npmignore | 1 - packages/docusaurus/.npmignore | 1 - packages/docusaurus/copyUntypedFiles.mjs | 20 ----------- packages/docusaurus/package.json | 6 ++-- packages/eslint-plugin/.npmignore | 1 - packages/lqip-loader/.npmignore | 1 - website/package.json | 3 +- 51 files changed, 71 insertions(+), 187 deletions(-) create mode 100644 admin/scripts/copyUntypedFiles.mjs delete mode 100644 packages/docusaurus-plugin-debug/copyUntypedFiles.mjs delete mode 100644 packages/docusaurus-plugin-ideal-image/copyUntypedFiles.mjs delete mode 100644 packages/docusaurus-plugin-pwa/copyUntypedFiles.mjs delete mode 100644 packages/docusaurus-theme-common/copyUntypedFiles.mjs delete mode 100644 packages/docusaurus-theme-live-codeblock/copyUntypedFiles.mjs delete mode 100644 packages/docusaurus-theme-search-algolia/copyUntypedFiles.mjs delete mode 100644 packages/docusaurus/copyUntypedFiles.mjs diff --git a/.eslintignore b/.eslintignore index e58be97cbaf5..2854c10c59f3 100644 --- a/.eslintignore +++ b/.eslintignore @@ -14,7 +14,6 @@ packages/docusaurus-*/lib/* packages/docusaurus-*/lib-next/ packages/eslint-plugin/lib/ packages/stylelint-copyright/lib/ -copyUntypedFiles.mjs packages/create-docusaurus/lib/* packages/create-docusaurus/templates/facebook diff --git a/admin/scripts/copyUntypedFiles.mjs b/admin/scripts/copyUntypedFiles.mjs new file mode 100644 index 000000000000..59178146452a --- /dev/null +++ b/admin/scripts/copyUntypedFiles.mjs @@ -0,0 +1,36 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import fs from 'fs-extra'; +import path from 'path'; +import chokidar from 'chokidar'; + +const srcDir = path.join(process.cwd(), 'src'); +const libDir = path.join(process.cwd(), 'lib'); + +const ignoredPattern = /(?:__tests__|\.tsx?$)/; + +async function copy() { + await fs.copy(srcDir, libDir, { + filter(testedPath) { + return !ignoredPattern.test(testedPath); + }, + }); +} + +if (process.argv.includes('--watch')) { + const watcher = chokidar.watch(srcDir, { + ignored: ignoredPattern, + ignoreInitial: true, + persistent: true, + }); + ['add', 'change', 'unlink', 'addDir', 'unlinkDir'].forEach((event) => + watcher.on(event, copy), + ); +} else { + await copy(); +} diff --git a/packages/create-docusaurus/.npmignore b/packages/create-docusaurus/.npmignore index 0bc0b32a6248..1f851e4a70c0 100644 --- a/packages/create-docusaurus/.npmignore +++ b/packages/create-docusaurus/.npmignore @@ -1,4 +1,3 @@ -copyUntypedFiles.mjs .tsbuildinfo* __tests__ node_modules diff --git a/packages/create-docusaurus/package.json b/packages/create-docusaurus/package.json index 583b6f06617f..d7a60dba1c13 100755 --- a/packages/create-docusaurus/package.json +++ b/packages/create-docusaurus/package.json @@ -14,7 +14,7 @@ "scripts": { "create-docusaurus": "create-docusaurus", "build": "tsc --build", - "watch": "tsc --watch" + "watch": "tsc --build --watch" }, "bin": "bin/index.js", "publishConfig": { diff --git a/packages/docusaurus-cssnano-preset/.npmignore b/packages/docusaurus-cssnano-preset/.npmignore index 16beccca2e07..03c9ae1e1b54 100644 --- a/packages/docusaurus-cssnano-preset/.npmignore +++ b/packages/docusaurus-cssnano-preset/.npmignore @@ -1,4 +1,3 @@ -copyUntypedFiles.mjs .tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-logger/.npmignore b/packages/docusaurus-logger/.npmignore index 16beccca2e07..03c9ae1e1b54 100644 --- a/packages/docusaurus-logger/.npmignore +++ b/packages/docusaurus-logger/.npmignore @@ -1,4 +1,3 @@ -copyUntypedFiles.mjs .tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-mdx-loader/.npmignore b/packages/docusaurus-mdx-loader/.npmignore index 16beccca2e07..03c9ae1e1b54 100644 --- a/packages/docusaurus-mdx-loader/.npmignore +++ b/packages/docusaurus-mdx-loader/.npmignore @@ -1,4 +1,3 @@ -copyUntypedFiles.mjs .tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-migrate/.npmignore b/packages/docusaurus-migrate/.npmignore index b3d2bb61f7d9..e4132af42172 100644 --- a/packages/docusaurus-migrate/.npmignore +++ b/packages/docusaurus-migrate/.npmignore @@ -1,4 +1,3 @@ -copyUntypedFiles.mjs .tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-migrate/package.json b/packages/docusaurus-migrate/package.json index ea7affc71cf1..9e980899705f 100644 --- a/packages/docusaurus-migrate/package.json +++ b/packages/docusaurus-migrate/package.json @@ -8,7 +8,7 @@ }, "scripts": { "build": "tsc --build", - "watch": "tsc --watch" + "watch": "tsc --build --watch" }, "repository": { "type": "git", diff --git a/packages/docusaurus-plugin-client-redirects/.npmignore b/packages/docusaurus-plugin-client-redirects/.npmignore index 16beccca2e07..03c9ae1e1b54 100644 --- a/packages/docusaurus-plugin-client-redirects/.npmignore +++ b/packages/docusaurus-plugin-client-redirects/.npmignore @@ -1,4 +1,3 @@ -copyUntypedFiles.mjs .tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-plugin-content-blog/.npmignore b/packages/docusaurus-plugin-content-blog/.npmignore index 16beccca2e07..03c9ae1e1b54 100644 --- a/packages/docusaurus-plugin-content-blog/.npmignore +++ b/packages/docusaurus-plugin-content-blog/.npmignore @@ -1,4 +1,3 @@ -copyUntypedFiles.mjs .tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-plugin-content-docs/.npmignore b/packages/docusaurus-plugin-content-docs/.npmignore index 16beccca2e07..03c9ae1e1b54 100644 --- a/packages/docusaurus-plugin-content-docs/.npmignore +++ b/packages/docusaurus-plugin-content-docs/.npmignore @@ -1,4 +1,3 @@ -copyUntypedFiles.mjs .tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-plugin-content-docs/package.json b/packages/docusaurus-plugin-content-docs/package.json index c02fc60957b0..bf59cd020096 100644 --- a/packages/docusaurus-plugin-content-docs/package.json +++ b/packages/docusaurus-plugin-content-docs/package.json @@ -13,7 +13,7 @@ "types": "src/plugin-content-docs.d.ts", "scripts": { "build": "tsc --build", - "watch": "tsc --watch" + "watch": "tsc --build --watch" }, "publishConfig": { "access": "public" diff --git a/packages/docusaurus-plugin-content-pages/.npmignore b/packages/docusaurus-plugin-content-pages/.npmignore index 16beccca2e07..03c9ae1e1b54 100644 --- a/packages/docusaurus-plugin-content-pages/.npmignore +++ b/packages/docusaurus-plugin-content-pages/.npmignore @@ -1,4 +1,3 @@ -copyUntypedFiles.mjs .tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-plugin-debug/.npmignore b/packages/docusaurus-plugin-debug/.npmignore index 16beccca2e07..03c9ae1e1b54 100644 --- a/packages/docusaurus-plugin-debug/.npmignore +++ b/packages/docusaurus-plugin-debug/.npmignore @@ -1,4 +1,3 @@ -copyUntypedFiles.mjs .tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-plugin-debug/copyUntypedFiles.mjs b/packages/docusaurus-plugin-debug/copyUntypedFiles.mjs deleted file mode 100644 index 8b230152f1af..000000000000 --- a/packages/docusaurus-plugin-debug/copyUntypedFiles.mjs +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -import fs from 'fs-extra'; -import {fileURLToPath} from 'url'; - -/** - * Copy all untyped and static assets files to lib. - */ -const srcDir = fileURLToPath(new URL('src', import.meta.url)); -const libDir = fileURLToPath(new URL('lib', import.meta.url)); -await fs.copy(srcDir, libDir, { - filter(filepath) { - return !/__tests__/.test(filepath) && !/\.tsx?$/.test(filepath); - }, -}); diff --git a/packages/docusaurus-plugin-debug/package.json b/packages/docusaurus-plugin-debug/package.json index eb9ce3d41a4e..3c68544c139b 100644 --- a/packages/docusaurus-plugin-debug/package.json +++ b/packages/docusaurus-plugin-debug/package.json @@ -5,8 +5,10 @@ "main": "lib/index.js", "types": "src/plugin-debug.d.ts", "scripts": { - "build": "tsc --build && node copyUntypedFiles.mjs && prettier --config ../../.prettierrc --write \"lib/theme/**/*.js\"", - "watch": "node copyUntypedFiles.mjs && tsc --watch" + "build": "tsc --build && node ../../admin/scripts/copyUntypedFiles.mjs && prettier --config ../../.prettierrc --write \"lib/theme/**/*.js\"", + "watch": "run-p -c copy:watch build:watch", + "build:watch": "tsc --build --watch", + "copy:watch": "node ../../admin/scripts/copyUntypedFiles.mjs --watch" }, "publishConfig": { "access": "public" diff --git a/packages/docusaurus-plugin-google-analytics/.npmignore b/packages/docusaurus-plugin-google-analytics/.npmignore index 16beccca2e07..03c9ae1e1b54 100644 --- a/packages/docusaurus-plugin-google-analytics/.npmignore +++ b/packages/docusaurus-plugin-google-analytics/.npmignore @@ -1,4 +1,3 @@ -copyUntypedFiles.mjs .tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-plugin-google-analytics/package.json b/packages/docusaurus-plugin-google-analytics/package.json index 99531da0ac1f..f62db432005c 100644 --- a/packages/docusaurus-plugin-google-analytics/package.json +++ b/packages/docusaurus-plugin-google-analytics/package.json @@ -9,7 +9,7 @@ }, "scripts": { "build": "tsc --build", - "watch": "tsc --watch" + "watch": "tsc --build --watch" }, "repository": { "type": "git", diff --git a/packages/docusaurus-plugin-google-gtag/.npmignore b/packages/docusaurus-plugin-google-gtag/.npmignore index 16beccca2e07..03c9ae1e1b54 100644 --- a/packages/docusaurus-plugin-google-gtag/.npmignore +++ b/packages/docusaurus-plugin-google-gtag/.npmignore @@ -1,4 +1,3 @@ -copyUntypedFiles.mjs .tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-plugin-google-gtag/package.json b/packages/docusaurus-plugin-google-gtag/package.json index 169b2c962a7a..c353d7a1a28c 100644 --- a/packages/docusaurus-plugin-google-gtag/package.json +++ b/packages/docusaurus-plugin-google-gtag/package.json @@ -6,7 +6,7 @@ "types": "lib/index.d.ts", "scripts": { "build": "tsc --build", - "watch": "tsc --watch" + "watch": "tsc --build --watch" }, "publishConfig": { "access": "public" diff --git a/packages/docusaurus-plugin-ideal-image/.npmignore b/packages/docusaurus-plugin-ideal-image/.npmignore index 16beccca2e07..03c9ae1e1b54 100644 --- a/packages/docusaurus-plugin-ideal-image/.npmignore +++ b/packages/docusaurus-plugin-ideal-image/.npmignore @@ -1,4 +1,3 @@ -copyUntypedFiles.mjs .tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-plugin-ideal-image/copyUntypedFiles.mjs b/packages/docusaurus-plugin-ideal-image/copyUntypedFiles.mjs deleted file mode 100644 index 8b230152f1af..000000000000 --- a/packages/docusaurus-plugin-ideal-image/copyUntypedFiles.mjs +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -import fs from 'fs-extra'; -import {fileURLToPath} from 'url'; - -/** - * Copy all untyped and static assets files to lib. - */ -const srcDir = fileURLToPath(new URL('src', import.meta.url)); -const libDir = fileURLToPath(new URL('lib', import.meta.url)); -await fs.copy(srcDir, libDir, { - filter(filepath) { - return !/__tests__/.test(filepath) && !/\.tsx?$/.test(filepath); - }, -}); diff --git a/packages/docusaurus-plugin-ideal-image/package.json b/packages/docusaurus-plugin-ideal-image/package.json index 6449d75574fe..4feb2ff1b92c 100644 --- a/packages/docusaurus-plugin-ideal-image/package.json +++ b/packages/docusaurus-plugin-ideal-image/package.json @@ -5,7 +5,10 @@ "main": "lib/index.js", "types": "src/plugin-ideal-image.d.ts", "scripts": { - "build": "tsc --build && node copyUntypedFiles.mjs && prettier --config ../../.prettierrc --write \"lib/theme/**/*.js\"" + "build": "tsc --build && node ../../admin/scripts/copyUntypedFiles.mjs && prettier --config ../../.prettierrc --write \"lib/theme/**/*.js\"", + "watch": "run-p -c copy:watch build:watch", + "build:watch": "tsc --build --watch", + "copy:watch": "node ../../admin/scripts/copyUntypedFiles.mjs --watch" }, "publishConfig": { "access": "public" diff --git a/packages/docusaurus-plugin-pwa/.npmignore b/packages/docusaurus-plugin-pwa/.npmignore index 16beccca2e07..03c9ae1e1b54 100644 --- a/packages/docusaurus-plugin-pwa/.npmignore +++ b/packages/docusaurus-plugin-pwa/.npmignore @@ -1,4 +1,3 @@ -copyUntypedFiles.mjs .tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-plugin-pwa/copyUntypedFiles.mjs b/packages/docusaurus-plugin-pwa/copyUntypedFiles.mjs deleted file mode 100644 index 8b230152f1af..000000000000 --- a/packages/docusaurus-plugin-pwa/copyUntypedFiles.mjs +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -import fs from 'fs-extra'; -import {fileURLToPath} from 'url'; - -/** - * Copy all untyped and static assets files to lib. - */ -const srcDir = fileURLToPath(new URL('src', import.meta.url)); -const libDir = fileURLToPath(new URL('lib', import.meta.url)); -await fs.copy(srcDir, libDir, { - filter(filepath) { - return !/__tests__/.test(filepath) && !/\.tsx?$/.test(filepath); - }, -}); diff --git a/packages/docusaurus-plugin-pwa/package.json b/packages/docusaurus-plugin-pwa/package.json index 3bc6d0cd22ee..92465928d16c 100644 --- a/packages/docusaurus-plugin-pwa/package.json +++ b/packages/docusaurus-plugin-pwa/package.json @@ -5,7 +5,10 @@ "main": "lib/index.js", "types": "src/plugin-pwa.d.ts", "scripts": { - "build": "tsc --build && node copyUntypedFiles.mjs && prettier --config ../../.prettierrc --write \"lib/theme/**/*.js\"" + "build": "tsc --build && node ../../admin/scripts/copyUntypedFiles.mjs && prettier --config ../../.prettierrc --write \"lib/theme/**/*.js\"", + "watch": "run-p -c copy:watch build:watch", + "build:watch": "tsc --build --watch", + "copy:watch": "node ../../admin/scripts/copyUntypedFiles.mjs --watch" }, "publishConfig": { "access": "public" diff --git a/packages/docusaurus-plugin-sitemap/.npmignore b/packages/docusaurus-plugin-sitemap/.npmignore index 16beccca2e07..03c9ae1e1b54 100644 --- a/packages/docusaurus-plugin-sitemap/.npmignore +++ b/packages/docusaurus-plugin-sitemap/.npmignore @@ -1,4 +1,3 @@ -copyUntypedFiles.mjs .tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-preset-classic/.npmignore b/packages/docusaurus-preset-classic/.npmignore index 16beccca2e07..03c9ae1e1b54 100644 --- a/packages/docusaurus-preset-classic/.npmignore +++ b/packages/docusaurus-preset-classic/.npmignore @@ -1,4 +1,3 @@ -copyUntypedFiles.mjs .tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-remark-plugin-npm2yarn/.npmignore b/packages/docusaurus-remark-plugin-npm2yarn/.npmignore index 16beccca2e07..03c9ae1e1b54 100644 --- a/packages/docusaurus-remark-plugin-npm2yarn/.npmignore +++ b/packages/docusaurus-remark-plugin-npm2yarn/.npmignore @@ -1,4 +1,3 @@ -copyUntypedFiles.mjs .tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-theme-classic/.npmignore b/packages/docusaurus-theme-classic/.npmignore index 3f56a7b661b6..955841b312a2 100644 --- a/packages/docusaurus-theme-classic/.npmignore +++ b/packages/docusaurus-theme-classic/.npmignore @@ -1,4 +1,3 @@ -copyUntypedFiles.mjs .tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-theme-common/.npmignore b/packages/docusaurus-theme-common/.npmignore index 16beccca2e07..03c9ae1e1b54 100644 --- a/packages/docusaurus-theme-common/.npmignore +++ b/packages/docusaurus-theme-common/.npmignore @@ -1,4 +1,3 @@ -copyUntypedFiles.mjs .tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-theme-common/copyUntypedFiles.mjs b/packages/docusaurus-theme-common/copyUntypedFiles.mjs deleted file mode 100644 index 8b230152f1af..000000000000 --- a/packages/docusaurus-theme-common/copyUntypedFiles.mjs +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -import fs from 'fs-extra'; -import {fileURLToPath} from 'url'; - -/** - * Copy all untyped and static assets files to lib. - */ -const srcDir = fileURLToPath(new URL('src', import.meta.url)); -const libDir = fileURLToPath(new URL('lib', import.meta.url)); -await fs.copy(srcDir, libDir, { - filter(filepath) { - return !/__tests__/.test(filepath) && !/\.tsx?$/.test(filepath); - }, -}); diff --git a/packages/docusaurus-theme-common/package.json b/packages/docusaurus-theme-common/package.json index 4cd433a79e1b..59a1d91f87c2 100644 --- a/packages/docusaurus-theme-common/package.json +++ b/packages/docusaurus-theme-common/package.json @@ -13,8 +13,10 @@ "./Details": "./lib/components/Details/index.js" }, "scripts": { - "build": "node copyUntypedFiles.mjs && tsc", - "watch": "node copyUntypedFiles.mjs && tsc --watch" + "build": "tsc && node ../../admin/scripts/copyUntypedFiles.mjs", + "watch": "run-p -c copy:watch build:watch", + "build:watch": "tsc --watch", + "copy:watch": "node ../../admin/scripts/copyUntypedFiles.mjs --watch" }, "publishConfig": { "access": "public" diff --git a/packages/docusaurus-theme-live-codeblock/.npmignore b/packages/docusaurus-theme-live-codeblock/.npmignore index 16beccca2e07..03c9ae1e1b54 100644 --- a/packages/docusaurus-theme-live-codeblock/.npmignore +++ b/packages/docusaurus-theme-live-codeblock/.npmignore @@ -1,4 +1,3 @@ -copyUntypedFiles.mjs .tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-theme-live-codeblock/copyUntypedFiles.mjs b/packages/docusaurus-theme-live-codeblock/copyUntypedFiles.mjs deleted file mode 100644 index 8b230152f1af..000000000000 --- a/packages/docusaurus-theme-live-codeblock/copyUntypedFiles.mjs +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -import fs from 'fs-extra'; -import {fileURLToPath} from 'url'; - -/** - * Copy all untyped and static assets files to lib. - */ -const srcDir = fileURLToPath(new URL('src', import.meta.url)); -const libDir = fileURLToPath(new URL('lib', import.meta.url)); -await fs.copy(srcDir, libDir, { - filter(filepath) { - return !/__tests__/.test(filepath) && !/\.tsx?$/.test(filepath); - }, -}); diff --git a/packages/docusaurus-theme-live-codeblock/package.json b/packages/docusaurus-theme-live-codeblock/package.json index 661b8b3cc45e..04d45ca3d01f 100644 --- a/packages/docusaurus-theme-live-codeblock/package.json +++ b/packages/docusaurus-theme-live-codeblock/package.json @@ -11,7 +11,10 @@ "access": "public" }, "scripts": { - "build": "tsc --build && node copyUntypedFiles.mjs && prettier --config ../../.prettierrc --write \"lib/theme/**/*.js\"" + "build": "tsc --build && node ../../admin/scripts/copyUntypedFiles.mjs && prettier --config ../../.prettierrc --write \"lib/theme/**/*.js\"", + "watch": "run-p -c copy:watch build:watch", + "build:watch": "tsc --build --watch", + "copy:watch": "node ../../admin/scripts/copyUntypedFiles.mjs --watch" }, "repository": { "type": "git", diff --git a/packages/docusaurus-theme-search-algolia/.npmignore b/packages/docusaurus-theme-search-algolia/.npmignore index 16beccca2e07..03c9ae1e1b54 100644 --- a/packages/docusaurus-theme-search-algolia/.npmignore +++ b/packages/docusaurus-theme-search-algolia/.npmignore @@ -1,4 +1,3 @@ -copyUntypedFiles.mjs .tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-theme-search-algolia/copyUntypedFiles.mjs b/packages/docusaurus-theme-search-algolia/copyUntypedFiles.mjs deleted file mode 100644 index 8b230152f1af..000000000000 --- a/packages/docusaurus-theme-search-algolia/copyUntypedFiles.mjs +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -import fs from 'fs-extra'; -import {fileURLToPath} from 'url'; - -/** - * Copy all untyped and static assets files to lib. - */ -const srcDir = fileURLToPath(new URL('src', import.meta.url)); -const libDir = fileURLToPath(new URL('lib', import.meta.url)); -await fs.copy(srcDir, libDir, { - filter(filepath) { - return !/__tests__/.test(filepath) && !/\.tsx?$/.test(filepath); - }, -}); diff --git a/packages/docusaurus-theme-search-algolia/package.json b/packages/docusaurus-theme-search-algolia/package.json index 2a809087b4cc..9c062e117952 100644 --- a/packages/docusaurus-theme-search-algolia/package.json +++ b/packages/docusaurus-theme-search-algolia/package.json @@ -21,7 +21,10 @@ }, "license": "MIT", "scripts": { - "build": "tsc --build && node copyUntypedFiles.mjs && prettier --config ../../.prettierrc --write \"lib/theme/**/*.js\"" + "build": "tsc --build && node ../../admin/scripts/copyUntypedFiles.mjs && prettier --config ../../.prettierrc --write \"lib/theme/**/*.js\"", + "watch": "run-p -c copy:watch build:watch", + "build:watch": "tsc --build --watch", + "copy:watch": "node ../../admin/scripts/copyUntypedFiles.mjs --watch" }, "dependencies": { "@docsearch/react": "^3.0.0", diff --git a/packages/docusaurus-theme-translations/.npmignore b/packages/docusaurus-theme-translations/.npmignore index acffb6122e75..7059569fc57d 100644 --- a/packages/docusaurus-theme-translations/.npmignore +++ b/packages/docusaurus-theme-translations/.npmignore @@ -1,4 +1,3 @@ -copyUntypedFiles.mjs .tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-theme-translations/package.json b/packages/docusaurus-theme-translations/package.json index ea54a523851f..a296a446f3eb 100644 --- a/packages/docusaurus-theme-translations/package.json +++ b/packages/docusaurus-theme-translations/package.json @@ -15,7 +15,7 @@ "license": "MIT", "scripts": { "build": "tsc --build", - "watch": "tsc --watch", + "watch": "tsc --build --watch", "update": "node ./update.mjs" }, "dependencies": { diff --git a/packages/docusaurus-utils-common/.npmignore b/packages/docusaurus-utils-common/.npmignore index 16beccca2e07..03c9ae1e1b54 100644 --- a/packages/docusaurus-utils-common/.npmignore +++ b/packages/docusaurus-utils-common/.npmignore @@ -1,4 +1,3 @@ -copyUntypedFiles.mjs .tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-utils-validation/.npmignore b/packages/docusaurus-utils-validation/.npmignore index 16beccca2e07..03c9ae1e1b54 100644 --- a/packages/docusaurus-utils-validation/.npmignore +++ b/packages/docusaurus-utils-validation/.npmignore @@ -1,4 +1,3 @@ -copyUntypedFiles.mjs .tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus-utils/.npmignore b/packages/docusaurus-utils/.npmignore index 16beccca2e07..03c9ae1e1b54 100644 --- a/packages/docusaurus-utils/.npmignore +++ b/packages/docusaurus-utils/.npmignore @@ -1,4 +1,3 @@ -copyUntypedFiles.mjs .tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus/.npmignore b/packages/docusaurus/.npmignore index b3d2bb61f7d9..e4132af42172 100644 --- a/packages/docusaurus/.npmignore +++ b/packages/docusaurus/.npmignore @@ -1,4 +1,3 @@ -copyUntypedFiles.mjs .tsbuildinfo* tsconfig* __tests__ diff --git a/packages/docusaurus/copyUntypedFiles.mjs b/packages/docusaurus/copyUntypedFiles.mjs deleted file mode 100644 index 8b230152f1af..000000000000 --- a/packages/docusaurus/copyUntypedFiles.mjs +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -import fs from 'fs-extra'; -import {fileURLToPath} from 'url'; - -/** - * Copy all untyped and static assets files to lib. - */ -const srcDir = fileURLToPath(new URL('src', import.meta.url)); -const libDir = fileURLToPath(new URL('lib', import.meta.url)); -await fs.copy(srcDir, libDir, { - filter(filepath) { - return !/__tests__/.test(filepath) && !/\.tsx?$/.test(filepath); - }, -}); diff --git a/packages/docusaurus/package.json b/packages/docusaurus/package.json index 1fb6245f9fb1..ac1af6b0a864 100644 --- a/packages/docusaurus/package.json +++ b/packages/docusaurus/package.json @@ -24,8 +24,10 @@ "docusaurus": "bin/docusaurus.mjs" }, "scripts": { - "build": "tsc --build && node copyUntypedFiles.mjs", - "watch": "node copyUntypedFiles.mjs && tsc --watch" + "build": "tsc --build && node ../../admin/scripts/copyUntypedFiles.mjs", + "watch": "run-p -c copy:watch build:watch", + "build:watch": "tsc --build --watch", + "copy:watch": "node ../../admin/scripts/copyUntypedFiles.mjs --watch" }, "bugs": { "url": "https://github.com/facebook/docusaurus/issues" diff --git a/packages/eslint-plugin/.npmignore b/packages/eslint-plugin/.npmignore index 3e3043484f2e..733c0b46e93a 100644 --- a/packages/eslint-plugin/.npmignore +++ b/packages/eslint-plugin/.npmignore @@ -1,4 +1,3 @@ -copyUntypedFiles.mjs .tsbuildinfo* tsconfig* __tests__ diff --git a/packages/lqip-loader/.npmignore b/packages/lqip-loader/.npmignore index b3d2bb61f7d9..e4132af42172 100644 --- a/packages/lqip-loader/.npmignore +++ b/packages/lqip-loader/.npmignore @@ -1,4 +1,3 @@ -copyUntypedFiles.mjs .tsbuildinfo* tsconfig* __tests__ diff --git a/website/package.json b/website/package.json index 734cd2e4faf4..416bc81e47b1 100644 --- a/website/package.json +++ b/website/package.json @@ -30,8 +30,7 @@ "netlify:crowdin:downloadTranslationsFailSafe": "yarn netlify:crowdin:wait && (yarn --cwd .. crowdin:download:website || echo 'Crowdin translation download failure (only internal PRs have access to the Crowdin env token)')", "netlify:crowdin:uploadSources": "yarn --cwd .. crowdin:upload:website", "netlify:test": "yarn netlify:build:deployPreview && npx --package netlify-cli netlify dev -- --debug", - "typecheck": "tsc", - "watch": "tsc --watch" + "typecheck": "tsc" }, "dependencies": { "@crowdin/cli": "^3.7.8", From b31220032be53cc8b27f05294ee541f8a8e5451e Mon Sep 17 00:00:00 2001 From: Joshua Chen <sidachen2003@gmail.com> Date: Wed, 18 May 2022 20:08:09 +0800 Subject: [PATCH 23/32] refactor(theme-classic): migrate to tsc for build (#7447) * refactor(theme-classic): migrate to tsc for build * fix --- .eslintignore | 1 - .gitignore | 1 - .prettierignore | 1 - .stylelintignore | 1 - jest.config.mjs | 1 - package.json | 2 +- packages/docusaurus-theme-classic/.npmignore | 6 --- .../docusaurus-theme-classic/babel.config.js | 30 ------------- .../docusaurus-theme-classic/package.json | 18 +++----- .../docusaurus-theme-classic/src/index.ts | 2 +- .../tsconfig.client.json | 20 +++++++++ .../docusaurus-theme-classic/tsconfig.json | 19 ++++++--- .../src/utils.ts | 5 +-- .../_dogfooding/testSwizzleThemeClassic.mjs | 2 +- yarn.lock | 42 ++----------------- 15 files changed, 47 insertions(+), 104 deletions(-) delete mode 100644 packages/docusaurus-theme-classic/babel.config.js create mode 100644 packages/docusaurus-theme-classic/tsconfig.client.json diff --git a/.eslintignore b/.eslintignore index 2854c10c59f3..b0c14dbeea5f 100644 --- a/.eslintignore +++ b/.eslintignore @@ -11,7 +11,6 @@ examples/ packages/lqip-loader/lib/ packages/docusaurus/lib/ packages/docusaurus-*/lib/* -packages/docusaurus-*/lib-next/ packages/eslint-plugin/lib/ packages/stylelint-copyright/lib/ diff --git a/.gitignore b/.gitignore index 0e0bd14648b0..1e612853226b 100644 --- a/.gitignore +++ b/.gitignore @@ -25,7 +25,6 @@ packages/docusaurus/lib/ packages/docusaurus-*/lib/* packages/eslint-plugin/lib/ packages/stylelint-copyright/lib/ -packages/docusaurus-*/lib-next/ website/netlifyDeployPreview/* website/changelog diff --git a/.prettierignore b/.prettierignore index c7aec4e02643..5bfdf4925c04 100644 --- a/.prettierignore +++ b/.prettierignore @@ -7,7 +7,6 @@ coverage packages/lqip-loader/lib/ packages/docusaurus/lib/ packages/docusaurus-*/lib/* -packages/docusaurus-*/lib-next/ packages/create-docusaurus/lib/* packages/create-docusaurus/templates/*/docusaurus.config.js packages/eslint-plugin/lib/ diff --git a/.stylelintignore b/.stylelintignore index 951af3a16ea9..15db7860ba7a 100644 --- a/.stylelintignore +++ b/.stylelintignore @@ -10,7 +10,6 @@ examples/ packages/lqip-loader/lib/ packages/docusaurus/lib/ packages/docusaurus-*/lib/* -packages/docusaurus-*/lib-next/ packages/create-docusaurus/lib/* packages/create-docusaurus/templates/ website/static/katex/katex.min.css diff --git a/jest.config.mjs b/jest.config.mjs index 28ba5e66a6d7..5e7200416b7b 100644 --- a/jest.config.mjs +++ b/jest.config.mjs @@ -23,7 +23,6 @@ const ignorePatterns = [ '/packages/docusaurus-plugin-content-docs/lib', '/packages/docusaurus-plugin-content-pages/lib', '/packages/docusaurus-theme-classic/lib', - '/packages/docusaurus-theme-classic/lib-next', '/packages/docusaurus-theme-common/lib', '/packages/docusaurus-migrate/lib', '/jest', diff --git a/package.json b/package.json index eb257678d709..de33e023d0c9 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "test": "jest", "test:build:website": "./admin/scripts/test-release.sh", "watch": "yarn lerna run --parallel watch", - "clear": "(yarn workspace website clear || echo 'Failure while running docusaurus clear') && yarn lerna exec --ignore docusaurus yarn rimraf lib lib-next", + "clear": "(yarn workspace website clear || echo 'Failure while running docusaurus clear') && yarn lerna exec --ignore docusaurus yarn rimraf lib", "test:baseUrl": "yarn build:website:baseUrl && yarn serve:website:baseUrl", "lock:update": "npx yarn-deduplicate" }, diff --git a/packages/docusaurus-theme-classic/.npmignore b/packages/docusaurus-theme-classic/.npmignore index 955841b312a2..03c9ae1e1b54 100644 --- a/packages/docusaurus-theme-classic/.npmignore +++ b/packages/docusaurus-theme-classic/.npmignore @@ -1,9 +1,3 @@ .tsbuildinfo* tsconfig* __tests__ - -lib/theme -lib-next/** -!lib-next/theme/** - -babel.config.js diff --git a/packages/docusaurus-theme-classic/babel.config.js b/packages/docusaurus-theme-classic/babel.config.js deleted file mode 100644 index 0bbcfe267e45..000000000000 --- a/packages/docusaurus-theme-classic/babel.config.js +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -module.exports = { - env: { - // USED FOR NODE/RUNTIME - // maybe we should differentiate both cases because - // we mostly need to transpile some features so that node does not crash... - lib: { - presets: [ - ['@babel/preset-env', {targets: {node: 14}, modules: 'commonjs'}], - ['@babel/preset-typescript', {isTSX: true, allExtensions: true}], - ], - }, - - // USED FOR JS SWIZZLE - // /lib-next folder is used as source to swizzle JS source code - // This JS code is created from TS source code - // This source code should look clean/human readable to be usable - 'lib-next': { - presets: [ - ['@babel/preset-typescript', {isTSX: true, allExtensions: true}], - ], - }, - }, -}; diff --git a/packages/docusaurus-theme-classic/package.json b/packages/docusaurus-theme-classic/package.json index bcbdb78c31bd..15810bc39893 100644 --- a/packages/docusaurus-theme-classic/package.json +++ b/packages/docusaurus-theme-classic/package.json @@ -14,13 +14,10 @@ }, "license": "MIT", "scripts": { - "build": "tsc --noEmit && yarn babel:lib && yarn babel:lib-next && yarn format:lib-next", - "watch": "run-p --continue-on-error babel:lib:watch babel:lib-next:watch", - "babel:lib": "cross-env BABEL_ENV=lib babel src -d lib --extensions \".tsx,.ts\" --ignore \"**/*.d.ts\" --copy-files", - "babel:lib-next": "cross-env BABEL_ENV=lib-next babel src -d lib-next --extensions \".tsx,.ts\" --ignore \"**/*.d.ts\" --copy-files", - "babel:lib:watch": "yarn babel:lib --watch", - "babel:lib-next:watch": "yarn babel:lib-next --watch", - "format:lib-next": "prettier --config ../../.prettierrc --write \"lib-next/**/*.{js,ts,jsx,tsc}\"" + "build": "tsc --build && node ../../admin/scripts/copyUntypedFiles.mjs && prettier --config ../../.prettierrc --write \"lib/theme/**/*.js\"", + "watch": "run-p -c copy:watch build:watch", + "build:watch": "tsc --build --watch", + "copy:watch": "node ../../admin/scripts/copyUntypedFiles.mjs --watch" }, "dependencies": { "@docusaurus/core": "2.0.0-beta.20", @@ -42,19 +39,16 @@ "prism-react-renderer": "^1.3.3", "prismjs": "^1.28.0", "react-router-dom": "^5.2.0", - "rtlcss": "^3.5.0" + "rtlcss": "^3.5.0", + "tslib": "^2.4.0" }, "devDependencies": { - "@babel/cli": "^7.17.10", - "@babel/core": "^7.17.12", - "@babel/preset-typescript": "^7.17.12", "@docusaurus/module-type-aliases": "2.0.0-beta.20", "@docusaurus/types": "2.0.0-beta.20", "@types/mdx-js__react": "^1.5.5", "@types/nprogress": "^0.2.0", "@types/prismjs": "^1.26.0", "@types/rtlcss": "^3.1.4", - "cross-env": "^7.0.3", "fs-extra": "^10.1.0", "react-test-renderer": "^17.0.2", "utility-types": "^3.10.0" diff --git a/packages/docusaurus-theme-classic/src/index.ts b/packages/docusaurus-theme-classic/src/index.ts index 262457201661..a0cb4629cb58 100644 --- a/packages/docusaurus-theme-classic/src/index.ts +++ b/packages/docusaurus-theme-classic/src/index.ts @@ -112,7 +112,7 @@ export default function themeClassic( name: 'docusaurus-theme-classic', getThemePath() { - return '../lib-next/theme'; + return '../lib/theme'; }, getTypeScriptThemePath() { diff --git a/packages/docusaurus-theme-classic/tsconfig.client.json b/packages/docusaurus-theme-classic/tsconfig.client.json new file mode 100644 index 000000000000..067fb209a75d --- /dev/null +++ b/packages/docusaurus-theme-classic/tsconfig.client.json @@ -0,0 +1,20 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "noEmit": false, + "composite": true, + "incremental": true, + "tsBuildInfoFile": "./lib/.tsbuildinfo-client", + "rootDir": "src", + "outDir": "lib", + "module": "esnext", + "target": "esnext" + }, + "include": [ + "src/nprogress.ts", + "src/prism-include-languages.ts", + "src/theme", + "src/*.d.ts" + ], + "exclude": ["**/__tests__/**"] +} diff --git a/packages/docusaurus-theme-classic/tsconfig.json b/packages/docusaurus-theme-classic/tsconfig.json index 4ee40b287f62..9e41ec3ef68c 100644 --- a/packages/docusaurus-theme-classic/tsconfig.json +++ b/packages/docusaurus-theme-classic/tsconfig.json @@ -1,10 +1,19 @@ { "extends": "../../tsconfig.json", + "references": [{"path": "./tsconfig.client.json"}], "compilerOptions": { - "lib": ["DOM", "ES2019"], - "module": "esnext", - "noEmit": true + "noEmit": false, + "incremental": true, + "tsBuildInfoFile": "./lib/.tsbuildinfo", + "module": "commonjs", + "rootDir": "src", + "outDir": "lib" }, - "include": ["src/"], - "exclude": ["**/__tests__/**"] + "include": ["src"], + "exclude": [ + "src/nprogress.ts", + "src/prism-include-languages.ts", + "src/theme", + "**/__tests__/**" + ] } diff --git a/packages/docusaurus-theme-translations/src/utils.ts b/packages/docusaurus-theme-translations/src/utils.ts index beb1370817e1..da931ef454f8 100644 --- a/packages/docusaurus-theme-translations/src/utils.ts +++ b/packages/docusaurus-theme-translations/src/utils.ts @@ -25,10 +25,7 @@ async function getPackageCodePath(packageName: string) { const packageJsonPath = path.join(packagePath, 'package.json'); const {main} = await fs.readJSON(packageJsonPath); const packageSrcPath = path.join(packagePath, path.dirname(main)); - const packageLibNextPath = packageSrcPath.replace('lib', 'lib-next'); - return (await fs.pathExists(packageLibNextPath)) - ? packageLibNextPath - : packageSrcPath; + return packageSrcPath; } export async function getThemes(): Promise<{name: string; src: string[]}[]> { diff --git a/website/_dogfooding/testSwizzleThemeClassic.mjs b/website/_dogfooding/testSwizzleThemeClassic.mjs index b8b4a4cb1a76..ab75a7d1dafb 100644 --- a/website/_dogfooding/testSwizzleThemeClassic.mjs +++ b/website/_dogfooding/testSwizzleThemeClassic.mjs @@ -31,7 +31,7 @@ const classicThemePathBase = path.join( const themePath = swizzleConfig ? path.join(classicThemePathBase, 'src/theme') - : path.join(classicThemePathBase, 'lib-next/theme'); + : path.join(classicThemePathBase, 'lib/theme'); const toPath = path.join(dirname, '_swizzle_theme_tests'); diff --git a/yarn.lock b/yarn.lock index 73710442ca86..769b532fb0fa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -147,22 +147,6 @@ jsonpointer "^5.0.0" leven "^3.1.0" -"@babel/cli@^7.17.10": - version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.17.10.tgz#5ea0bf6298bb78f3b59c7c06954f9bd1c79d5943" - integrity sha512-OygVO1M2J4yPMNOW9pb+I6kFGpQK77HmG44Oz3hg8xQIl5L/2zq+ZohwAdSaqYgVwM0SfmPHZHphH4wR8qzVYw== - dependencies: - "@jridgewell/trace-mapping" "^0.3.8" - commander "^4.0.1" - convert-source-map "^1.1.0" - fs-readdir-recursive "^1.1.0" - glob "^7.0.0" - make-dir "^2.1.0" - slash "^2.0.0" - optionalDependencies: - "@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents.3" - chokidar "^3.4.0" - "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.8.3": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" @@ -1872,7 +1856,7 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz#b6461fb0c2964356c469e115f504c95ad97ab88c" integrity sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w== -"@jridgewell/trace-mapping@^0.3.7", "@jridgewell/trace-mapping@^0.3.8", "@jridgewell/trace-mapping@^0.3.9": +"@jridgewell/trace-mapping@^0.3.7", "@jridgewell/trace-mapping@^0.3.9": version "0.3.13" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" integrity sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w== @@ -2611,11 +2595,6 @@ dependencies: is-promise "^4.0.0" -"@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3": - version "2.1.8-no-fsevents.3" - resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz#323d72dd25103d0c4fbdce89dadf574a787b1f9b" - integrity sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ== - "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -5219,7 +5198,7 @@ cheerio@^1.0.0-rc.10: parse5-htmlparser2-tree-adapter "^6.0.1" tslib "^2.2.0" -chokidar@^3.4.0, chokidar@^3.4.2, chokidar@^3.5.3: +chokidar@^3.4.2, chokidar@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== @@ -5520,11 +5499,6 @@ commander@^2.20.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -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== - commander@^5.0.0, commander@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" @@ -5773,7 +5747,7 @@ conventional-recommended-bump@^6.1.0: meow "^8.0.0" q "^1.5.1" -convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: +convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.8.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== @@ -7615,11 +7589,6 @@ fs-monkey@1.0.3: resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== -fs-readdir-recursive@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" - integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -13670,11 +13639,6 @@ sitemap@^7.1.1: arg "^5.0.0" sax "^1.2.4" -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" From ba0d94d02bc24cda0735f6db57930bb5b0bb7edf Mon Sep 17 00:00:00 2001 From: Joshua Chen <sidachen2003@gmail.com> Date: Wed, 18 May 2022 21:34:34 +0800 Subject: [PATCH 24/32] chore: normalize naming of admin scripts (#7448) --- .github/workflows/lighthouse-report.yml | 2 +- .../scripts/{copyUntypedFiles.mjs => copyUntypedFiles.js} | 0 ...rmat-lighthouse-score.mjs => formatLighthouseReport.js} | 0 .../scripts/{generateExamples.mjs => generateExamples.js} | 0 admin/scripts/package.json | 7 +++++++ admin/scripts/{image-resize.mjs => resizeImage.js} | 0 package.json | 2 +- packages/docusaurus-plugin-debug/package.json | 4 ++-- packages/docusaurus-plugin-ideal-image/package.json | 4 ++-- packages/docusaurus-plugin-pwa/package.json | 4 ++-- packages/docusaurus-theme-classic/package.json | 4 ++-- packages/docusaurus-theme-common/package.json | 4 ++-- packages/docusaurus-theme-live-codeblock/package.json | 4 ++-- packages/docusaurus-theme-search-algolia/package.json | 4 ++-- packages/docusaurus/package.json | 4 ++-- 15 files changed, 25 insertions(+), 18 deletions(-) rename admin/scripts/{copyUntypedFiles.mjs => copyUntypedFiles.js} (100%) rename admin/scripts/{format-lighthouse-score.mjs => formatLighthouseReport.js} (100%) rename admin/scripts/{generateExamples.mjs => generateExamples.js} (100%) create mode 100644 admin/scripts/package.json rename admin/scripts/{image-resize.mjs => resizeImage.js} (100%) diff --git a/.github/workflows/lighthouse-report.yml b/.github/workflows/lighthouse-report.yml index ec141b243774..bbd6692d1e4a 100644 --- a/.github/workflows/lighthouse-report.yml +++ b/.github/workflows/lighthouse-report.yml @@ -42,7 +42,7 @@ jobs: script: | const results = ${{ steps.lighthouse_audit.outputs.manifest }} const links = ${{ steps.lighthouse_audit.outputs.links }} - const createLighthouseReport = (await import(`${process.env.GITHUB_WORKSPACE}/admin/scripts/format-lighthouse-score.mjs`)).default; + const createLighthouseReport = (await import(`${process.env.GITHUB_WORKSPACE}/admin/scripts/formatLighthouseReport.js`)).default; const comment = createLighthouseReport({ results, links }); core.setOutput("comment", comment); diff --git a/admin/scripts/copyUntypedFiles.mjs b/admin/scripts/copyUntypedFiles.js similarity index 100% rename from admin/scripts/copyUntypedFiles.mjs rename to admin/scripts/copyUntypedFiles.js diff --git a/admin/scripts/format-lighthouse-score.mjs b/admin/scripts/formatLighthouseReport.js similarity index 100% rename from admin/scripts/format-lighthouse-score.mjs rename to admin/scripts/formatLighthouseReport.js diff --git a/admin/scripts/generateExamples.mjs b/admin/scripts/generateExamples.js similarity index 100% rename from admin/scripts/generateExamples.mjs rename to admin/scripts/generateExamples.js diff --git a/admin/scripts/package.json b/admin/scripts/package.json new file mode 100644 index 000000000000..03df6476e25f --- /dev/null +++ b/admin/scripts/package.json @@ -0,0 +1,7 @@ +{ + "name": "docu-scripts", + "description": "These are the scripts used in various places of Docusaurus maintenance", + "private": true, + "license": "MIT", + "type": "module" +} diff --git a/admin/scripts/image-resize.mjs b/admin/scripts/resizeImage.js similarity index 100% rename from admin/scripts/image-resize.mjs rename to admin/scripts/resizeImage.js diff --git a/package.json b/package.json index de33e023d0c9..ec51b53832d6 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "start:website:baseUrl": "yarn workspace website start:baseUrl", "start:website:blogOnly": "yarn workspace website start:blogOnly", "start:website:deployPreview": "cross-env NETLIFY=true CONTEXT='deploy-preview' yarn workspace website start", - "examples:generate": "node admin/scripts/generateExamples.mjs", + "examples:generate": "node admin/scripts/generateExamples.js", "build": "yarn build:packages && yarn build:website", "build:packages": "lerna run build --no-private", "build:website": "yarn workspace website build", diff --git a/packages/docusaurus-plugin-debug/package.json b/packages/docusaurus-plugin-debug/package.json index 3c68544c139b..3382fcab737a 100644 --- a/packages/docusaurus-plugin-debug/package.json +++ b/packages/docusaurus-plugin-debug/package.json @@ -5,10 +5,10 @@ "main": "lib/index.js", "types": "src/plugin-debug.d.ts", "scripts": { - "build": "tsc --build && node ../../admin/scripts/copyUntypedFiles.mjs && prettier --config ../../.prettierrc --write \"lib/theme/**/*.js\"", + "build": "tsc --build && node ../../admin/scripts/copyUntypedFiles.js && prettier --config ../../.prettierrc --write \"lib/theme/**/*.js\"", "watch": "run-p -c copy:watch build:watch", "build:watch": "tsc --build --watch", - "copy:watch": "node ../../admin/scripts/copyUntypedFiles.mjs --watch" + "copy:watch": "node ../../admin/scripts/copyUntypedFiles.js --watch" }, "publishConfig": { "access": "public" diff --git a/packages/docusaurus-plugin-ideal-image/package.json b/packages/docusaurus-plugin-ideal-image/package.json index 4feb2ff1b92c..5bda29fd0203 100644 --- a/packages/docusaurus-plugin-ideal-image/package.json +++ b/packages/docusaurus-plugin-ideal-image/package.json @@ -5,10 +5,10 @@ "main": "lib/index.js", "types": "src/plugin-ideal-image.d.ts", "scripts": { - "build": "tsc --build && node ../../admin/scripts/copyUntypedFiles.mjs && prettier --config ../../.prettierrc --write \"lib/theme/**/*.js\"", + "build": "tsc --build && node ../../admin/scripts/copyUntypedFiles.js && prettier --config ../../.prettierrc --write \"lib/theme/**/*.js\"", "watch": "run-p -c copy:watch build:watch", "build:watch": "tsc --build --watch", - "copy:watch": "node ../../admin/scripts/copyUntypedFiles.mjs --watch" + "copy:watch": "node ../../admin/scripts/copyUntypedFiles.js --watch" }, "publishConfig": { "access": "public" diff --git a/packages/docusaurus-plugin-pwa/package.json b/packages/docusaurus-plugin-pwa/package.json index 92465928d16c..4bc0e86f34d5 100644 --- a/packages/docusaurus-plugin-pwa/package.json +++ b/packages/docusaurus-plugin-pwa/package.json @@ -5,10 +5,10 @@ "main": "lib/index.js", "types": "src/plugin-pwa.d.ts", "scripts": { - "build": "tsc --build && node ../../admin/scripts/copyUntypedFiles.mjs && prettier --config ../../.prettierrc --write \"lib/theme/**/*.js\"", + "build": "tsc --build && node ../../admin/scripts/copyUntypedFiles.js && prettier --config ../../.prettierrc --write \"lib/theme/**/*.js\"", "watch": "run-p -c copy:watch build:watch", "build:watch": "tsc --build --watch", - "copy:watch": "node ../../admin/scripts/copyUntypedFiles.mjs --watch" + "copy:watch": "node ../../admin/scripts/copyUntypedFiles.js --watch" }, "publishConfig": { "access": "public" diff --git a/packages/docusaurus-theme-classic/package.json b/packages/docusaurus-theme-classic/package.json index 15810bc39893..359930cbbc67 100644 --- a/packages/docusaurus-theme-classic/package.json +++ b/packages/docusaurus-theme-classic/package.json @@ -14,10 +14,10 @@ }, "license": "MIT", "scripts": { - "build": "tsc --build && node ../../admin/scripts/copyUntypedFiles.mjs && prettier --config ../../.prettierrc --write \"lib/theme/**/*.js\"", + "build": "tsc --build && node ../../admin/scripts/copyUntypedFiles.js && prettier --config ../../.prettierrc --write \"lib/theme/**/*.js\"", "watch": "run-p -c copy:watch build:watch", "build:watch": "tsc --build --watch", - "copy:watch": "node ../../admin/scripts/copyUntypedFiles.mjs --watch" + "copy:watch": "node ../../admin/scripts/copyUntypedFiles.js --watch" }, "dependencies": { "@docusaurus/core": "2.0.0-beta.20", diff --git a/packages/docusaurus-theme-common/package.json b/packages/docusaurus-theme-common/package.json index 59a1d91f87c2..ff097aa08e95 100644 --- a/packages/docusaurus-theme-common/package.json +++ b/packages/docusaurus-theme-common/package.json @@ -13,10 +13,10 @@ "./Details": "./lib/components/Details/index.js" }, "scripts": { - "build": "tsc && node ../../admin/scripts/copyUntypedFiles.mjs", + "build": "tsc && node ../../admin/scripts/copyUntypedFiles.js", "watch": "run-p -c copy:watch build:watch", "build:watch": "tsc --watch", - "copy:watch": "node ../../admin/scripts/copyUntypedFiles.mjs --watch" + "copy:watch": "node ../../admin/scripts/copyUntypedFiles.js --watch" }, "publishConfig": { "access": "public" diff --git a/packages/docusaurus-theme-live-codeblock/package.json b/packages/docusaurus-theme-live-codeblock/package.json index 04d45ca3d01f..f107b6b8b302 100644 --- a/packages/docusaurus-theme-live-codeblock/package.json +++ b/packages/docusaurus-theme-live-codeblock/package.json @@ -11,10 +11,10 @@ "access": "public" }, "scripts": { - "build": "tsc --build && node ../../admin/scripts/copyUntypedFiles.mjs && prettier --config ../../.prettierrc --write \"lib/theme/**/*.js\"", + "build": "tsc --build && node ../../admin/scripts/copyUntypedFiles.js && prettier --config ../../.prettierrc --write \"lib/theme/**/*.js\"", "watch": "run-p -c copy:watch build:watch", "build:watch": "tsc --build --watch", - "copy:watch": "node ../../admin/scripts/copyUntypedFiles.mjs --watch" + "copy:watch": "node ../../admin/scripts/copyUntypedFiles.js --watch" }, "repository": { "type": "git", diff --git a/packages/docusaurus-theme-search-algolia/package.json b/packages/docusaurus-theme-search-algolia/package.json index 9c062e117952..aaf040ba3c33 100644 --- a/packages/docusaurus-theme-search-algolia/package.json +++ b/packages/docusaurus-theme-search-algolia/package.json @@ -21,10 +21,10 @@ }, "license": "MIT", "scripts": { - "build": "tsc --build && node ../../admin/scripts/copyUntypedFiles.mjs && prettier --config ../../.prettierrc --write \"lib/theme/**/*.js\"", + "build": "tsc --build && node ../../admin/scripts/copyUntypedFiles.js && prettier --config ../../.prettierrc --write \"lib/theme/**/*.js\"", "watch": "run-p -c copy:watch build:watch", "build:watch": "tsc --build --watch", - "copy:watch": "node ../../admin/scripts/copyUntypedFiles.mjs --watch" + "copy:watch": "node ../../admin/scripts/copyUntypedFiles.js --watch" }, "dependencies": { "@docsearch/react": "^3.0.0", diff --git a/packages/docusaurus/package.json b/packages/docusaurus/package.json index ac1af6b0a864..85720169700d 100644 --- a/packages/docusaurus/package.json +++ b/packages/docusaurus/package.json @@ -24,10 +24,10 @@ "docusaurus": "bin/docusaurus.mjs" }, "scripts": { - "build": "tsc --build && node ../../admin/scripts/copyUntypedFiles.mjs", + "build": "tsc --build && node ../../admin/scripts/copyUntypedFiles.js", "watch": "run-p -c copy:watch build:watch", "build:watch": "tsc --build --watch", - "copy:watch": "node ../../admin/scripts/copyUntypedFiles.mjs --watch" + "copy:watch": "node ../../admin/scripts/copyUntypedFiles.js --watch" }, "bugs": { "url": "https://github.com/facebook/docusaurus/issues" From 5aaa33fc6192dbe26ca3a52e8eab88ff10cea621 Mon Sep 17 00:00:00 2001 From: Lane Goolsby <lanegoolsby@yahoo.com> Date: Thu, 19 May 2022 21:50:17 -0700 Subject: [PATCH 25/32] feat: add --no-minify flag to docusaurus start (#7452) * feat: Adding --no-minify flag to start * Undoing the changes to old docs Co-authored-by: Lane Goolsby <lanegoolsby@rocketmortgage.com> --- packages/docusaurus/bin/docusaurus.mjs | 4 ++ packages/docusaurus/src/commands/start.ts | 54 ++++++++++++----------- website/docs/cli.md | 1 + 3 files changed, 34 insertions(+), 25 deletions(-) diff --git a/packages/docusaurus/bin/docusaurus.mjs b/packages/docusaurus/bin/docusaurus.mjs index ec6a5cfffb88..820d26e7de9a 100755 --- a/packages/docusaurus/bin/docusaurus.mjs +++ b/packages/docusaurus/bin/docusaurus.mjs @@ -126,6 +126,10 @@ cli '--poll [interval]', 'use polling rather than watching for reload (default: false). Can specify a poll interval in milliseconds', ) + .option( + '--no-minify', + 'build website without minimizing JS bundles (default: false)', + ) .action(async (siteDir, options) => start(await resolveDir(siteDir), options), ); diff --git a/packages/docusaurus/src/commands/start.ts b/packages/docusaurus/src/commands/start.ts index 551bca65cc0e..a9e4e1e11e39 100644 --- a/packages/docusaurus/src/commands/start.ts +++ b/packages/docusaurus/src/commands/start.ts @@ -32,6 +32,7 @@ export type StartCLIOptions = HostPortOptions & hotOnly?: boolean; open?: boolean; poll?: boolean | number; + minify?: boolean; }; export async function start( @@ -121,32 +122,35 @@ export async function start( fsWatcher.on(event, reload), ); - let config: webpack.Configuration = merge(await createClientConfig(props), { - watchOptions: { - ignored: /node_modules\/(?!@docusaurus)/, - poll: cliOptions.poll, - }, - infrastructureLogging: { - // Reduce log verbosity, see https://github.com/facebook/docusaurus/pull/5420#issuecomment-906613105 - level: 'warn', + let config: webpack.Configuration = merge( + await createClientConfig(props, cliOptions.minify), + { + watchOptions: { + ignored: /node_modules\/(?!@docusaurus)/, + poll: cliOptions.poll, + }, + infrastructureLogging: { + // Reduce log verbosity, see https://github.com/facebook/docusaurus/pull/5420#issuecomment-906613105 + level: 'warn', + }, + plugins: [ + // Generates an `index.html` file with the <script> injected. + new HtmlWebpackPlugin({ + template: path.join( + __dirname, + '../webpack/templates/index.html.template.ejs', + ), + // So we can define the position where the scripts are injected. + inject: false, + filename: 'index.html', + title: siteConfig.title, + headTags, + preBodyTags, + postBodyTags, + }), + ], }, - plugins: [ - // Generates an `index.html` file with the <script> injected. - new HtmlWebpackPlugin({ - template: path.join( - __dirname, - '../webpack/templates/index.html.template.ejs', - ), - // So we can define the position where the scripts are injected. - inject: false, - filename: 'index.html', - title: siteConfig.title, - headTags, - preBodyTags, - postBodyTags, - }), - ], - }); + ); // Plugin Lifecycle - configureWebpack and configurePostCss. plugins.forEach((plugin) => { diff --git a/website/docs/cli.md b/website/docs/cli.md index d1bec4d09ce4..e19840601722 100644 --- a/website/docs/cli.md +++ b/website/docs/cli.md @@ -43,6 +43,7 @@ Builds and serves a preview of your site locally with [Webpack Dev Server](https | `--no-open` | `false` | Do not open automatically the page in the browser. | | `--config` | `undefined` | Path to docusaurus config file, default to `[siteDir]/docusaurus.config.js` | | `--poll [optionalIntervalMs]` | `false` | Use polling of files rather than watching for live reload as a fallback in environments where watching doesn't work. More information [here](https://webpack.js.org/configuration/watch/#watchoptionspoll). | +| `--no-minify` | `false` | Build website without minimizing JS/CSS bundles. | :::important From 0f8f918f2cc8a4cc871c5488d1dfdf2954bd39c6 Mon Sep 17 00:00:00 2001 From: Joshua Chen <sidachen2003@gmail.com> Date: Fri, 20 May 2022 14:31:53 +0800 Subject: [PATCH 26/32] fix(core): avoid using logger and fs.readJSON in SSR (#7453) * fix(core): avoid using logger and fs.readJSON in SSR * ignore prettier --- packages/docusaurus/package.json | 1 + .../docusaurus/src/client/serverEntry.tsx | 25 +++++++++++++------ 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/packages/docusaurus/package.json b/packages/docusaurus/package.json index 85720169700d..71339d7f4e8f 100644 --- a/packages/docusaurus/package.json +++ b/packages/docusaurus/package.json @@ -56,6 +56,7 @@ "babel-loader": "^8.2.5", "babel-plugin-dynamic-import-node": "2.3.0", "boxen": "^6.2.1", + "chalk": "^4.1.2", "chokidar": "^3.5.3", "clean-css": "^5.3.0", "cli-table3": "^0.6.2", diff --git a/packages/docusaurus/src/client/serverEntry.tsx b/packages/docusaurus/src/client/serverEntry.tsx index 27902e72e872..9918e4220adb 100644 --- a/packages/docusaurus/src/client/serverEntry.tsx +++ b/packages/docusaurus/src/client/serverEntry.tsx @@ -10,7 +10,7 @@ import path from 'path'; import fs from 'fs-extra'; // eslint-disable-next-line no-restricted-imports import _ from 'lodash'; -import logger from '@docusaurus/logger'; +import chalk from 'chalk'; import * as eta from 'eta'; import {StaticRouter} from 'react-router-dom'; import ReactDOMServer from 'react-dom/server'; @@ -43,15 +43,20 @@ export default async function render( try { return await doRender(locals); } catch (err) { - logger.error`Docusaurus server-side rendering could not render static page with path path=${locals.path}.`; + // We are not using logger in this file, because it seems to fail with some + // compilers / some polyfill methods. This is very likely a bug, but in the + // long term, when we output native ES modules in SSR, the bug will be gone. + // prettier-ignore + console.error(chalk.red(`${chalk.bold('[ERROR]')} Docusaurus server-side rendering could not render static page with path ${chalk.cyan.underline(locals.path)}.`)); const isNotDefinedErrorRegex = /(?:window|document|localStorage|navigator|alert|location|buffer|self) is not defined/i; if (isNotDefinedErrorRegex.test((err as Error).message)) { - logger.info`It looks like you are using code that should run on the client-side only. -To get around it, try using code=${'<BrowserOnly>'} (url=${'https://docusaurus.io/docs/docusaurus-core/#browseronly'}) or code=${'ExecutionEnvironment'} (url=${'https://docusaurus.io/docs/docusaurus-core/#executionenvironment'}). -It might also require to wrap your client code in code=${'useEffect'} hook and/or import a third-party library dynamically (if any).`; + // prettier-ignore + console.info(`${chalk.cyan.bold('[INFO]')} It looks like you are using code that should run on the client-side only. +To get around it, try using ${chalk.cyan('`<BrowserOnly>`')} (${chalk.cyan.underline('https://docusaurus.io/docs/docusaurus-core/#browseronly')}) or ${chalk.cyan('`ExecutionEnvironment`')} (${chalk.cyan.underline('https://docusaurus.io/docs/docusaurus-core/#executionenvironment')}). +It might also require to wrap your client code in ${chalk.cyan('`useEffect`')} hook and/or import a third-party library dynamically (if any).`); } throw err; @@ -107,7 +112,12 @@ async function doRender(locals: Locals & {path: string}) { const {generatedFilesDir} = locals; const manifestPath = path.join(generatedFilesDir, 'client-manifest.json'); - const manifest: Manifest = await fs.readJSON(manifestPath); + // Using readJSON seems to fail for users of some plugins, possibly because of + // the eval sandbox having a different `Buffer` instance (native one instead + // of polyfilled one) + const manifest: Manifest = await fs + .readFile(manifestPath, 'utf-8') + .then(JSON.parse); // Get all required assets for this particular page based on client // manifest information. @@ -143,7 +153,8 @@ async function doRender(locals: Locals & {path: string}) { minifyJS: true, }); } catch (err) { - logger.error`Minification of page path=${locals.path} failed.`; + // prettier-ignore + console.error(chalk.red(`${chalk.bold('[ERROR]')} Minification of page ${chalk.cyan.underline(locals.path)} failed.`)); throw err; } } From ad888b7faec116ee2e66fc3a6891ee321bd38c65 Mon Sep 17 00:00:00 2001 From: Joshua Chen <sidachen2003@gmail.com> Date: Sat, 21 May 2022 13:07:31 +0800 Subject: [PATCH 27/32] fix(utils): avoid replacing Markdown links missing the directly next link (#7458) --- .../__snapshots__/markdownLinks.test.ts.snap | 7 ++++ .../src/__tests__/markdownLinks.test.ts | 33 +++++++++++++++++-- .../docusaurus-utils/src/markdownLinks.ts | 3 ++ 3 files changed, 41 insertions(+), 2 deletions(-) diff --git a/packages/docusaurus-utils/src/__tests__/__snapshots__/markdownLinks.test.ts.snap b/packages/docusaurus-utils/src/__tests__/__snapshots__/markdownLinks.test.ts.snap index 56c08fd6f9e1..1ff0a5351c06 100644 --- a/packages/docusaurus-utils/src/__tests__/__snapshots__/markdownLinks.test.ts.snap +++ b/packages/docusaurus-utils/src/__tests__/__snapshots__/markdownLinks.test.ts.snap @@ -135,6 +135,13 @@ The following operations are defined for [URI]s: } `; +exports[`replaceMarkdownLinks replaces two links on the same line 1`] = ` +{ + "brokenMarkdownLinks": [], + "newContent": "[TypeScript](/programming-languages/typescript/) and [Go](/programming-languages/go/)", +} +`; + exports[`replaceMarkdownLinks resolves absolute and relative links differently 1`] = ` { "brokenMarkdownLinks": [ diff --git a/packages/docusaurus-utils/src/__tests__/markdownLinks.test.ts b/packages/docusaurus-utils/src/__tests__/markdownLinks.test.ts index d47b3ab3e2db..866e3594d47a 100644 --- a/packages/docusaurus-utils/src/__tests__/markdownLinks.test.ts +++ b/packages/docusaurus-utils/src/__tests__/markdownLinks.test.ts @@ -38,6 +38,35 @@ describe('replaceMarkdownLinks', () => { ).toMatchSnapshot(); }); + it('replaces two links on the same line', () => { + // cSpell:ignore Goooooooooo + // This is a very arcane bug: if we continue matching using the previous + // matching index (as is the behavior of RegExp#exec), it will go right over + // the next Markdown link and fail to match the "Go" link. This only happens + // when: (1) the replaced link is much shorter than the Markdown path, (2) + // the next link is very close to the current one (e.g. here if it's not + // "Go" but "Goooooooooo", or if every link has the /docs/ prefix, the bug + // will not trigger because it won't overshoot) + expect( + replaceMarkdownLinks({ + siteDir: '.', + filePath: 'docs/intro.md', + contentPaths: { + contentPath: 'docs', + contentPathLocalized: 'i18n/docs-localized', + }, + sourceToPermalink: { + '@site/docs/intro.md': '/', + '@site/docs/programming-languages/typescript/typescript.md': + '/programming-languages/typescript/', + '@site/docs/programming-languages/go/go.md': + '/programming-languages/go/', + }, + fileString: `[TypeScript](programming-languages/typescript/typescript.md) and [Go](programming-languages/go/go.md)`, + }), + ).toMatchSnapshot(); + }); + it('replaces reference style Markdown links', () => { expect( replaceMarkdownLinks({ @@ -155,7 +184,7 @@ The following operations are defined for [URI]s: ).toMatchSnapshot(); }); - // TODO bad + // FIXME it('ignores links in inline code', () => { expect( replaceMarkdownLinks({ @@ -175,7 +204,7 @@ The following operations are defined for [URI]s: ).toMatchSnapshot(); }); - // TODO bad + // FIXME it('replaces links with same title as URL', () => { expect( replaceMarkdownLinks({ diff --git a/packages/docusaurus-utils/src/markdownLinks.ts b/packages/docusaurus-utils/src/markdownLinks.ts index 3a7966ad8db7..c83bffeb406c 100644 --- a/packages/docusaurus-utils/src/markdownLinks.ts +++ b/packages/docusaurus-utils/src/markdownLinks.ts @@ -138,6 +138,9 @@ export function replaceMarkdownLinks<T extends ContentPaths>({ .map((part) => part.replace(/\s/g, '%20')) .join('/'); modifiedLine = modifiedLine.replace(mdLink, encodedPermalink); + // Adjust the lastIndex to avoid passing over the next link if the + // newly replaced URL is shorter. + mdRegex.lastIndex += encodedPermalink.length - mdLink.length; } else { const brokenMarkdownLink: BrokenMarkdownLink<T> = { contentPaths, From a34b2a2c1c6812fafb5fcc84d88d5099a6f059d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=87=B1=E6=81=A9Kane?= <33802653+Gary50613@users.noreply.github.com> Date: Sat, 21 May 2022 16:41:17 +0800 Subject: [PATCH 28/32] docs: add Yeecord to showcase (#7459) * add yeecord to users.tsx * use English for title, description * minor tweaks Co-authored-by: Joshua Chen <sidachen2003@gmail.com> --- website/src/data/showcase/yeecord.png | Bin 0 -> 27982 bytes website/src/data/users.tsx | 9 +++++++++ 2 files changed, 9 insertions(+) create mode 100644 website/src/data/showcase/yeecord.png diff --git a/website/src/data/showcase/yeecord.png b/website/src/data/showcase/yeecord.png new file mode 100644 index 0000000000000000000000000000000000000000..52553796b78dfcc130eb994cdfb19e8c8168724f GIT binary patch literal 27982 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 YI1u)DpK;RuGeiT(d{vaF7BdR?9~!4_0RR91 literal 0 HcmV?d00001 diff --git a/website/src/data/users.tsx b/website/src/data/users.tsx index f2f2ff00db70..6bd9f3400631 100644 --- a/website/src/data/users.tsx +++ b/website/src/data/users.tsx @@ -2269,6 +2269,15 @@ const Users: User[] = [ source: 'https://github.com/woodpecker-ci/woodpecker/tree/master/docs', tags: ['opensource'], }, + { + title: 'Yeecord', + description: + 'A fully Chinese Discord bot with epic features that makes Discord more than just chatting platform.', + website: 'https://yeecord.com/', + preview: require('./showcase/yeecord.png'), + tags: ['product', 'personal'], + source: null + }, { title: 'Zowe', description: From 9d1a91774ac6de716555b6a8f6ee2734c456c6c0 Mon Sep 17 00:00:00 2001 From: Joshua Chen <sidachen2003@gmail.com> Date: Sun, 22 May 2022 10:40:50 +0800 Subject: [PATCH 29/32] chore: upgrade dependencies (#7462) --- package.json | 18 +- .../templates/facebook/package.json | 6 +- .../docusaurus-cssnano-preset/package.json | 4 +- packages/docusaurus-mdx-loader/package.json | 4 +- packages/docusaurus-migrate/package.json | 2 +- .../package.json | 2 +- packages/docusaurus-plugin-pwa/package.json | 4 +- .../docusaurus-theme-classic/package.json | 6 +- .../package.json | 4 +- packages/docusaurus/package.json | 22 +- packages/eslint-plugin/package.json | 2 +- packages/stylelint-copyright/package.json | 2 +- website/package.json | 2 +- yarn.lock | 1274 +++++++++-------- 14 files changed, 716 insertions(+), 636 deletions(-) diff --git a/package.json b/package.json index ec51b53832d6..533f32b71f48 100644 --- a/package.json +++ b/package.json @@ -63,31 +63,31 @@ }, "devDependencies": { "@crowdin/cli": "^3.7.8", - "@swc/core": "^1.2.185", + "@swc/core": "^1.2.189", "@swc/jest": "^0.2.21", "@testing-library/react-hooks": "^8.0.0", "@types/fs-extra": "^9.0.13", "@types/jest": "^27.5.1", "@types/lodash": "^4.14.182", - "@types/node": "^17.0.34", + "@types/node": "^17.0.35", "@types/prompts": "^2.0.14", "@types/react": "^18.0.9", - "@types/react-dev-utils": "^9.0.10", + "@types/react-dev-utils": "^9.0.11", "@types/react-test-renderer": "^18.0.0", "@types/semver": "^7.3.9", "@types/shelljs": "^0.8.11", - "@typescript-eslint/eslint-plugin": "^5.24.0", - "@typescript-eslint/parser": "^5.24.0", + "@typescript-eslint/eslint-plugin": "^5.25.0", + "@typescript-eslint/parser": "^5.25.0", "cross-env": "^7.0.3", - "cspell": "^5.20.0", - "eslint": "^8.15.0", + "cspell": "^6.0.0", + "eslint": "^8.16.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-prettier": "^8.5.0", "eslint-plugin-header": "^3.1.1", "eslint-plugin-import": "^2.26.0", "eslint-plugin-jest": "^26.2.2", "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-react": "^7.29.4", + "eslint-plugin-react": "^7.30.0", "eslint-plugin-react-hooks": "^4.5.0", "eslint-plugin-regexp": "^1.7.0", "husky": "^8.0.1", @@ -107,7 +107,7 @@ "rimraf": "^3.0.2", "sharp": "^0.30.4", "strip-ansi": "^6.0.1", - "stylelint": "^14.8.2", + "stylelint": "^14.8.3", "stylelint-config-prettier": "^9.0.3", "stylelint-config-standard": "^25.0.0", "typescript": "^4.6.4" diff --git a/packages/create-docusaurus/templates/facebook/package.json b/packages/create-docusaurus/templates/facebook/package.json index 2c7a49aa59d8..63b947a05071 100644 --- a/packages/create-docusaurus/templates/facebook/package.json +++ b/packages/create-docusaurus/templates/facebook/package.json @@ -27,16 +27,16 @@ }, "devDependencies": { "@babel/eslint-parser": "^7.17.0", - "eslint": "^8.15.0", + "eslint": "^8.16.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-prettier": "^8.5.0", "eslint-plugin-header": "^3.1.1", "eslint-plugin-import": "^2.26.0", "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-react": "^7.29.4", + "eslint-plugin-react": "^7.30.0", "eslint-plugin-react-hooks": "^4.5.0", "prettier": "^2.6.2", - "stylelint": "^14.8.2" + "stylelint": "^14.8.3" }, "browserslist": { "production": [ diff --git a/packages/docusaurus-cssnano-preset/package.json b/packages/docusaurus-cssnano-preset/package.json index 0fa9229f07a9..6469eba2405a 100644 --- a/packages/docusaurus-cssnano-preset/package.json +++ b/packages/docusaurus-cssnano-preset/package.json @@ -17,8 +17,8 @@ "directory": "packages/docusaurus-cssnano-preset" }, "dependencies": { - "cssnano-preset-advanced": "^5.3.4", - "postcss": "^8.4.13", + "cssnano-preset-advanced": "^5.3.5", + "postcss": "^8.4.14", "postcss-sort-media-queries": "^4.2.1", "tslib": "^2.4.0" }, diff --git a/packages/docusaurus-mdx-loader/package.json b/packages/docusaurus-mdx-loader/package.json index 4d1d2ca70b26..b071b9732ba3 100644 --- a/packages/docusaurus-mdx-loader/package.json +++ b/packages/docusaurus-mdx-loader/package.json @@ -18,8 +18,8 @@ }, "license": "MIT", "dependencies": { - "@babel/parser": "^7.17.12", - "@babel/traverse": "^7.17.12", + "@babel/parser": "^7.18.0", + "@babel/traverse": "^7.18.0", "@docusaurus/logger": "2.0.0-beta.20", "@docusaurus/utils": "2.0.0-beta.20", "@mdx-js/mdx": "^1.6.22", diff --git a/packages/docusaurus-migrate/package.json b/packages/docusaurus-migrate/package.json index 9e980899705f..9d43bdcf7a73 100644 --- a/packages/docusaurus-migrate/package.json +++ b/packages/docusaurus-migrate/package.json @@ -22,7 +22,7 @@ "docusaurus-migrate": "bin/index.mjs" }, "dependencies": { - "@babel/preset-env": "^7.17.12", + "@babel/preset-env": "^7.18.0", "@docusaurus/logger": "2.0.0-beta.20", "@docusaurus/utils": "2.0.0-beta.20", "@mapbox/hast-util-to-jsx": "^2.0.0", diff --git a/packages/docusaurus-plugin-content-blog/package.json b/packages/docusaurus-plugin-content-blog/package.json index aaf8a68635f6..5d0dbade229e 100644 --- a/packages/docusaurus-plugin-content-blog/package.json +++ b/packages/docusaurus-plugin-content-blog/package.json @@ -24,7 +24,7 @@ "@docusaurus/utils": "2.0.0-beta.20", "@docusaurus/utils-common": "2.0.0-beta.20", "@docusaurus/utils-validation": "2.0.0-beta.20", - "cheerio": "^1.0.0-rc.10", + "cheerio": "^1.0.0-rc.11", "feed": "^4.2.2", "fs-extra": "^10.1.0", "lodash": "^4.17.21", diff --git a/packages/docusaurus-plugin-pwa/package.json b/packages/docusaurus-plugin-pwa/package.json index 4bc0e86f34d5..f47075267b29 100644 --- a/packages/docusaurus-plugin-pwa/package.json +++ b/packages/docusaurus-plugin-pwa/package.json @@ -20,8 +20,8 @@ }, "license": "MIT", "dependencies": { - "@babel/core": "^7.17.12", - "@babel/preset-env": "^7.17.12", + "@babel/core": "^7.18.0", + "@babel/preset-env": "^7.18.0", "@docusaurus/core": "2.0.0-beta.20", "@docusaurus/theme-common": "2.0.0-beta.20", "@docusaurus/theme-translations": "2.0.0-beta.20", diff --git a/packages/docusaurus-theme-classic/package.json b/packages/docusaurus-theme-classic/package.json index 359930cbbc67..577babee2892 100644 --- a/packages/docusaurus-theme-classic/package.json +++ b/packages/docusaurus-theme-classic/package.json @@ -35,10 +35,10 @@ "infima": "0.2.0-alpha.39", "lodash": "^4.17.21", "nprogress": "^0.2.0", - "postcss": "^8.4.13", + "postcss": "^8.4.14", "prism-react-renderer": "^1.3.3", "prismjs": "^1.28.0", - "react-router-dom": "^5.2.0", + "react-router-dom": "^5.3.3", "rtlcss": "^3.5.0", "tslib": "^2.4.0" }, @@ -48,7 +48,7 @@ "@types/mdx-js__react": "^1.5.5", "@types/nprogress": "^0.2.0", "@types/prismjs": "^1.26.0", - "@types/rtlcss": "^3.1.4", + "@types/rtlcss": "^3.5.0", "fs-extra": "^10.1.0", "react-test-renderer": "^17.0.2", "utility-types": "^3.10.0" diff --git a/packages/docusaurus-theme-search-algolia/package.json b/packages/docusaurus-theme-search-algolia/package.json index aaf040ba3c33..6ec7ab36203a 100644 --- a/packages/docusaurus-theme-search-algolia/package.json +++ b/packages/docusaurus-theme-search-algolia/package.json @@ -27,7 +27,7 @@ "copy:watch": "node ../../admin/scripts/copyUntypedFiles.js --watch" }, "dependencies": { - "@docsearch/react": "^3.0.0", + "@docsearch/react": "^3.1.0", "@docusaurus/core": "2.0.0-beta.20", "@docusaurus/logger": "2.0.0-beta.20", "@docusaurus/plugin-content-docs": "2.0.0-beta.20", @@ -35,7 +35,7 @@ "@docusaurus/theme-translations": "2.0.0-beta.20", "@docusaurus/utils": "2.0.0-beta.20", "@docusaurus/utils-validation": "2.0.0-beta.20", - "algoliasearch": "^4.13.0", + "algoliasearch": "^4.13.1", "algoliasearch-helper": "^3.8.2", "clsx": "^1.1.1", "eta": "^1.12.3", diff --git a/packages/docusaurus/package.json b/packages/docusaurus/package.json index 71339d7f4e8f..9c2ead275092 100644 --- a/packages/docusaurus/package.json +++ b/packages/docusaurus/package.json @@ -33,16 +33,16 @@ "url": "https://github.com/facebook/docusaurus/issues" }, "dependencies": { - "@babel/core": "^7.17.12", - "@babel/generator": "^7.17.12", + "@babel/core": "^7.18.0", + "@babel/generator": "^7.18.0", "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-transform-runtime": "^7.17.12", - "@babel/preset-env": "^7.17.12", + "@babel/plugin-transform-runtime": "^7.18.0", + "@babel/preset-env": "^7.18.0", "@babel/preset-react": "^7.17.12", "@babel/preset-typescript": "^7.17.12", - "@babel/runtime": "^7.17.9", - "@babel/runtime-corejs3": "^7.17.9", - "@babel/traverse": "^7.17.12", + "@babel/runtime": "^7.18.0", + "@babel/runtime-corejs3": "^7.18.0", + "@babel/traverse": "^7.18.0", "@docusaurus/cssnano-preset": "2.0.0-beta.20", "@docusaurus/logger": "2.0.0-beta.20", "@docusaurus/mdx-loader": "2.0.0-beta.20", @@ -66,7 +66,7 @@ "core-js": "^3.22.5", "css-loader": "^6.7.1", "css-minimizer-webpack-plugin": "^3.4.1", - "cssnano": "^5.1.8", + "cssnano": "^5.1.9", "del": "^6.1.0", "detect-port": "^1.3.0", "escape-html": "^1.0.3", @@ -80,16 +80,16 @@ "leven": "^3.1.0", "lodash": "^4.17.21", "mini-css-extract-plugin": "^2.6.0", - "postcss": "^8.4.13", + "postcss": "^8.4.14", "postcss-loader": "^6.2.1", "prompts": "^2.4.2", "react-dev-utils": "^12.0.1", "react-helmet-async": "^1.3.0", "react-loadable": "npm:@docusaurus/react-loadable@5.5.2", "react-loadable-ssr-addon-v5-slorber": "^1.0.1", - "react-router": "^5.2.0", + "react-router": "^5.3.3", "react-router-config": "^5.1.1", - "react-router-dom": "^5.2.0", + "react-router-dom": "^5.3.3", "remark-admonitions": "^1.2.1", "rtl-detect": "^1.0.4", "semver": "^7.3.7", diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index 5d7aed9712b1..8bd7a9494539 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -21,7 +21,7 @@ "build": "tsc" }, "dependencies": { - "@typescript-eslint/utils": "^5.24.0", + "@typescript-eslint/utils": "^5.25.0", "tslib": "^2.4.0" }, "devDependencies": { diff --git a/packages/stylelint-copyright/package.json b/packages/stylelint-copyright/package.json index 1afb9807cdd6..795992466776 100644 --- a/packages/stylelint-copyright/package.json +++ b/packages/stylelint-copyright/package.json @@ -14,7 +14,7 @@ "directory": "packages/stylelint-copyright" }, "dependencies": { - "stylelint": "^14.8.2", + "stylelint": "^14.8.3", "tslib": "^2.4.0" } } diff --git a/website/package.json b/website/package.json index 416bc81e47b1..8f9c678d1271 100644 --- a/website/package.json +++ b/website/package.json @@ -48,7 +48,7 @@ "@docusaurus/utils": "2.0.0-beta.20", "@docusaurus/utils-common": "2.0.0-beta.20", "@popperjs/core": "^2.11.5", - "@swc/core": "^1.2.185", + "@swc/core": "^1.2.189", "clsx": "^1.1.1", "color": "^4.2.3", "fs-extra": "^10.1.0", diff --git a/yarn.lock b/yarn.lock index 769b532fb0fa..d72e94dfefcb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,133 +2,126 @@ # yarn lockfile v1 -"@algolia/autocomplete-core@1.5.2": - version "1.5.2" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.5.2.tgz#ec0178e07b44fd74a057728ac157291b26cecf37" - integrity sha512-DY0bhyczFSS1b/CqJlTE/nQRtnTAHl6IemIkBy0nEWnhDzRDdtdx4p5Uuk3vwAFxwEEgi1WqKwgSSMx6DpNL4A== - dependencies: - "@algolia/autocomplete-shared" "1.5.2" - -"@algolia/autocomplete-preset-algolia@1.5.2": - version "1.5.2" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.5.2.tgz#36c5638cc6dba6ea46a86e5a0314637ca40a77ca" - integrity sha512-3MRYnYQFJyovANzSX2CToS6/5cfVjbLLqFsZTKcvF3abhQzxbqwwaMBlJtt620uBUOeMzhdfasKhCc40+RHiZw== +"@algolia/autocomplete-core@1.6.3": + version "1.6.3" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.6.3.tgz#76832fffb6405ac2c87bac5a040b8a31a1cdef80" + integrity sha512-dqQqRt01fX3YuVFrkceHsoCnzX0bLhrrg8itJI1NM68KjrPYQPYsE+kY8EZTCM4y8VDnhqJErR73xe/ZsV+qAA== dependencies: - "@algolia/autocomplete-shared" "1.5.2" + "@algolia/autocomplete-shared" "1.6.3" -"@algolia/autocomplete-shared@1.5.2": - version "1.5.2" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.5.2.tgz#e157f9ad624ab8fd940ff28bd2094cdf199cdd79" - integrity sha512-ylQAYv5H0YKMfHgVWX0j0NmL8XBcAeeeVQUmppnnMtzDbDnca6CzhKj3Q8eF9cHCgcdTDdb5K+3aKyGWA0obug== +"@algolia/autocomplete-shared@1.6.3": + version "1.6.3" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.6.3.tgz#52085ce89a755977841ed0a463aa31ce8f1dea97" + integrity sha512-UV46bnkTztyADFaETfzFC5ryIdGVb2zpAoYgu0tfcuYWjhg1KbLXveFffZIrGVoboqmAk1b+jMrl6iCja1i3lg== -"@algolia/cache-browser-local-storage@4.13.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.13.0.tgz#f8aa4fe31104b19d616ea392f9ed5c2ea847d964" - integrity sha512-nj1vHRZauTqP/bluwkRIgEADEimqojJgoTRCel5f6q8WCa9Y8QeI4bpDQP28FoeKnDRYa3J5CauDlN466jqRhg== +"@algolia/cache-browser-local-storage@4.13.1": + version "4.13.1" + resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.13.1.tgz#ffacb9230119f77de1a6f163b83680be999110e4" + integrity sha512-UAUVG2PEfwd/FfudsZtYnidJ9eSCpS+LW9cQiesePQLz41NAcddKxBak6eP2GErqyFagSlnVXe/w2E9h2m2ttg== dependencies: - "@algolia/cache-common" "4.13.0" + "@algolia/cache-common" "4.13.1" -"@algolia/cache-common@4.13.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.13.0.tgz#27b83fd3939d08d72261b36a07eeafc4cb4d2113" - integrity sha512-f9mdZjskCui/dA/fA/5a+6hZ7xnHaaZI5tM/Rw9X8rRB39SUlF/+o3P47onZ33n/AwkpSbi5QOyhs16wHd55kA== +"@algolia/cache-common@4.13.1": + version "4.13.1" + resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.13.1.tgz#c933fdec9f73b4f7c69d5751edc92eee4a63d76b" + integrity sha512-7Vaf6IM4L0Jkl3sYXbwK+2beQOgVJ0mKFbz/4qSxKd1iy2Sp77uTAazcX+Dlexekg1fqGUOSO7HS4Sx47ZJmjA== -"@algolia/cache-in-memory@4.13.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.13.0.tgz#10801a74550cbabb64b59ff08c56bce9c278ff2d" - integrity sha512-hHdc+ahPiMM92CQMljmObE75laYzNFYLrNOu0Q3/eyvubZZRtY2SUsEEgyUEyzXruNdzrkcDxFYa7YpWBJYHAg== +"@algolia/cache-in-memory@4.13.1": + version "4.13.1" + resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.13.1.tgz#c19baa67b4597e1a93e987350613ab3b88768832" + integrity sha512-pZzybCDGApfA/nutsFK1P0Sbsq6fYJU3DwIvyKg4pURerlJM4qZbB9bfLRef0FkzfQu7W11E4cVLCIOWmyZeuQ== dependencies: - "@algolia/cache-common" "4.13.0" + "@algolia/cache-common" "4.13.1" -"@algolia/client-account@4.13.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.13.0.tgz#f8646dd40d1e9e3353e10abbd5d6c293ea92a8e2" - integrity sha512-FzFqFt9b0g/LKszBDoEsW+dVBuUe1K3scp2Yf7q6pgHWM1WqyqUlARwVpLxqyc+LoyJkTxQftOKjyFUqddnPKA== +"@algolia/client-account@4.13.1": + version "4.13.1" + resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.13.1.tgz#fea591943665477a23922ab31863ad0732e26c66" + integrity sha512-TFLiZ1KqMiir3FNHU+h3b0MArmyaHG+eT8Iojio6TdpeFcAQ1Aiy+2gb3SZk3+pgRJa/BxGmDkRUwE5E/lv3QQ== dependencies: - "@algolia/client-common" "4.13.0" - "@algolia/client-search" "4.13.0" - "@algolia/transporter" "4.13.0" + "@algolia/client-common" "4.13.1" + "@algolia/client-search" "4.13.1" + "@algolia/transporter" "4.13.1" -"@algolia/client-analytics@4.13.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.13.0.tgz#a00bd02df45d71becb9dd4c5c993d805f2e1786d" - integrity sha512-klmnoq2FIiiMHImkzOm+cGxqRLLu9CMHqFhbgSy9wtXZrqb8BBUIUE2VyBe7azzv1wKcxZV2RUyNOMpFqmnRZA== +"@algolia/client-analytics@4.13.1": + version "4.13.1" + resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.13.1.tgz#5275956b2d0d16997148f2085f1701b6c39ecc32" + integrity sha512-iOS1JBqh7xaL5x00M5zyluZ9+9Uy9GqtYHv/2SMuzNW1qP7/0doz1lbcsP3S7KBbZANJTFHUOfuqyRLPk91iFA== dependencies: - "@algolia/client-common" "4.13.0" - "@algolia/client-search" "4.13.0" - "@algolia/requester-common" "4.13.0" - "@algolia/transporter" "4.13.0" + "@algolia/client-common" "4.13.1" + "@algolia/client-search" "4.13.1" + "@algolia/requester-common" "4.13.1" + "@algolia/transporter" "4.13.1" -"@algolia/client-common@4.13.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.13.0.tgz#8bc373d164dbdcce38b4586912bbe162492bcb86" - integrity sha512-GoXfTp0kVcbgfSXOjfrxx+slSipMqGO9WnNWgeMmru5Ra09MDjrcdunsiiuzF0wua6INbIpBQFTC2Mi5lUNqGA== +"@algolia/client-common@4.13.1": + version "4.13.1" + resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.13.1.tgz#3bf9e3586f20ef85bbb56ccca390f7dbe57c8f4f" + integrity sha512-LcDoUE0Zz3YwfXJL6lJ2OMY2soClbjrrAKB6auYVMNJcoKZZ2cbhQoFR24AYoxnGUYBER/8B+9sTBj5bj/Gqbg== dependencies: - "@algolia/requester-common" "4.13.0" - "@algolia/transporter" "4.13.0" + "@algolia/requester-common" "4.13.1" + "@algolia/transporter" "4.13.1" -"@algolia/client-personalization@4.13.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.13.0.tgz#10fb7af356422551f11a67222b39c52306f1512c" - integrity sha512-KneLz2WaehJmNfdr5yt2HQETpLaCYagRdWwIwkTqRVFCv4DxRQ2ChPVW9jeTj4YfAAhfzE6F8hn7wkQ/Jfj6ZA== +"@algolia/client-personalization@4.13.1": + version "4.13.1" + resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.13.1.tgz#438a1f58576ef19c4ad4addb8417bdacfe2fce2e" + integrity sha512-1CqrOW1ypVrB4Lssh02hP//YxluoIYXAQCpg03L+/RiXJlCs+uIqlzC0ctpQPmxSlTK6h07kr50JQoYH/TIM9w== dependencies: - "@algolia/client-common" "4.13.0" - "@algolia/requester-common" "4.13.0" - "@algolia/transporter" "4.13.0" + "@algolia/client-common" "4.13.1" + "@algolia/requester-common" "4.13.1" + "@algolia/transporter" "4.13.1" -"@algolia/client-search@4.13.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.13.0.tgz#2d8ff8e755c4a37ec89968f3f9b358eed005c7f0" - integrity sha512-blgCKYbZh1NgJWzeGf+caKE32mo3j54NprOf0LZVCubQb3Kx37tk1Hc8SDs9bCAE8hUvf3cazMPIg7wscSxspA== +"@algolia/client-search@4.13.1": + version "4.13.1" + resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.13.1.tgz#5501deed01e23c33d4aaa9f9eb96a849f0fce313" + integrity sha512-YQKYA83MNRz3FgTNM+4eRYbSmHi0WWpo019s5SeYcL3HUan/i5R09VO9dk3evELDFJYciiydSjbsmhBzbpPP2A== dependencies: - "@algolia/client-common" "4.13.0" - "@algolia/requester-common" "4.13.0" - "@algolia/transporter" "4.13.0" + "@algolia/client-common" "4.13.1" + "@algolia/requester-common" "4.13.1" + "@algolia/transporter" "4.13.1" "@algolia/events@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@algolia/events/-/events-4.0.1.tgz#fd39e7477e7bc703d7f893b556f676c032af3950" integrity sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ== -"@algolia/logger-common@4.13.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.13.0.tgz#be2606e71aae618a1ff1ea9a1b5f5a74284b35a8" - integrity sha512-8yqXk7rMtmQJ9wZiHOt/6d4/JDEg5VCk83gJ39I+X/pwUPzIsbKy9QiK4uJ3aJELKyoIiDT1hpYVt+5ia+94IA== +"@algolia/logger-common@4.13.1": + version "4.13.1" + resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.13.1.tgz#4221378e701e3f1eacaa051bcd4ba1f25ddfaf4d" + integrity sha512-L6slbL/OyZaAXNtS/1A8SAbOJeEXD5JcZeDCPYDqSTYScfHu+2ePRTDMgUTY4gQ7HsYZ39N1LujOd8WBTmM2Aw== -"@algolia/logger-console@4.13.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.13.0.tgz#f28028a760e3d9191e28a10b12925e48f6c9afde" - integrity sha512-YepRg7w2/87L0vSXRfMND6VJ5d6699sFJBRWzZPOlek2p5fLxxK7O0VncYuc/IbVHEgeApvgXx0WgCEa38GVuQ== +"@algolia/logger-console@4.13.1": + version "4.13.1" + resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.13.1.tgz#423d358e4992dd4bceab0d9a4e99d1fd68107043" + integrity sha512-7jQOTftfeeLlnb3YqF8bNgA2GZht7rdKkJ31OCeSH2/61haO0tWPoNRjZq9XLlgMQZH276pPo0NdiArcYPHjCA== dependencies: - "@algolia/logger-common" "4.13.0" + "@algolia/logger-common" "4.13.1" -"@algolia/requester-browser-xhr@4.13.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.13.0.tgz#e2483f4e8d7f09e27cd0daf6c77711d15c5a919f" - integrity sha512-Dj+bnoWR5MotrnjblzGKZ2kCdQi2cK/VzPURPnE616NU/il7Ypy6U6DLGZ/ZYz+tnwPa0yypNf21uqt84fOgrg== +"@algolia/requester-browser-xhr@4.13.1": + version "4.13.1" + resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.13.1.tgz#f8ea79233cf6f0392feaf31e35a6b40d68c5bc9e" + integrity sha512-oa0CKr1iH6Nc7CmU6RE7TnXMjHnlyp7S80pP/LvZVABeJHX3p/BcSCKovNYWWltgTxUg0U1o+2uuy8BpMKljwA== dependencies: - "@algolia/requester-common" "4.13.0" + "@algolia/requester-common" "4.13.1" -"@algolia/requester-common@4.13.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.13.0.tgz#47fb3464cfb26b55ba43676d13f295d812830596" - integrity sha512-BRTDj53ecK+gn7ugukDWOOcBRul59C4NblCHqj4Zm5msd5UnHFjd/sGX+RLOEoFMhetILAnmg6wMrRrQVac9vw== +"@algolia/requester-common@4.13.1": + version "4.13.1" + resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.13.1.tgz#daea143d15ab6ed3909c4c45877f1b6c36a16179" + integrity sha512-eGVf0ID84apfFEuXsaoSgIxbU3oFsIbz4XiotU3VS8qGCJAaLVUC5BUJEkiFENZIhon7hIB4d0RI13HY4RSA+w== -"@algolia/requester-node-http@4.13.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.13.0.tgz#7d981bbd31492f51dd11820a665f9d8906793c37" - integrity sha512-9b+3O4QFU4azLhGMrZAr/uZPydvzOR4aEZfSL8ZrpLZ7fbbqTO0S/5EVko+QIgglRAtVwxvf8UJ1wzTD2jvKxQ== +"@algolia/requester-node-http@4.13.1": + version "4.13.1" + resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.13.1.tgz#32c63d4c009f22d97e396406de7af9b66fb8e89d" + integrity sha512-7C0skwtLdCz5heKTVe/vjvrqgL/eJxmiEjHqXdtypcE5GCQCYI15cb+wC4ytYioZDMiuDGeVYmCYImPoEgUGPw== dependencies: - "@algolia/requester-common" "4.13.0" + "@algolia/requester-common" "4.13.1" -"@algolia/transporter@4.13.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.13.0.tgz#f6379e5329efa2127da68c914d1141f5f21dbd07" - integrity sha512-8tSQYE+ykQENAdeZdofvtkOr5uJ9VcQSWgRhQ9h01AehtBIPAczk/b2CLrMsw5yQZziLs5cZ3pJ3478yI+urhA== +"@algolia/transporter@4.13.1": + version "4.13.1" + resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.13.1.tgz#509e03e9145102843d5be4a031c521f692d4e8d6" + integrity sha512-pICnNQN7TtrcYJqqPEXByV8rJ8ZRU2hCiIKLTLRyNpghtQG3VAFk6fVtdzlNfdUGZcehSKGarPIZEHlQXnKjgw== dependencies: - "@algolia/cache-common" "4.13.0" - "@algolia/logger-common" "4.13.0" - "@algolia/requester-common" "4.13.0" + "@algolia/cache-common" "4.13.1" + "@algolia/logger-common" "4.13.1" + "@algolia/requester-common" "4.13.1" "@ampproject/remapping@^2.1.0": version "2.2.0" @@ -181,21 +174,21 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.15.5", "@babel/core@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.12.tgz#b4eb2d7ebc3449b062381644c93050db545b70ee" - integrity sha512-44ODe6O1IVz9s2oJE3rZ4trNNKTX9O7KpQpfAP4t8QII/zwrVRHL7i2pxhqtcY7tqMLrrKfMlBKnm1QlrRFs5w== +"@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.15.5", "@babel/core@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.0.tgz#c58d04d7c6fbfb58ea7681e2b9145cfb62726756" + integrity sha512-Xyw74OlJwDijToNi0+6BBI5mLLR5+5R3bcSH80LXzjzEGEUlvNzujEE71BaD/ApEZHAvFI/Mlmp4M5lIkdeeWw== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.12" + "@babel/generator" "^7.18.0" "@babel/helper-compilation-targets" "^7.17.10" - "@babel/helper-module-transforms" "^7.17.12" - "@babel/helpers" "^7.17.9" - "@babel/parser" "^7.17.12" + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helpers" "^7.18.0" + "@babel/parser" "^7.18.0" "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.12" - "@babel/types" "^7.17.12" + "@babel/traverse" "^7.18.0" + "@babel/types" "^7.18.0" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -211,12 +204,12 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.0" -"@babel/generator@^7.12.5", "@babel/generator@^7.17.12", "@babel/generator@^7.7.2": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.12.tgz#5970e6160e9be0428e02f4aba62d8551ec366cc8" - integrity sha512-V49KtZiiiLjH/CnIW6OjJdrenrGoyh6AmKQ3k2AZFKozC1h846Q4NYlZ5nqAigPDUXfGzC88+LOUuG8yKd2kCw== +"@babel/generator@^7.12.5", "@babel/generator@^7.18.0", "@babel/generator@^7.7.2": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.0.tgz#46d28e8a18fc737b028efb25ab105d74473af43f" + integrity sha512-81YO9gGx6voPXlvYdZBliFXAZU8vZ9AZ6z+CjlmcnaeOcYSFbMTpdeDUO9xD9dh/68Vq03I8ZspfUTPfitcDHg== dependencies: - "@babel/types" "^7.17.12" + "@babel/types" "^7.18.0" "@jridgewell/gen-mapping" "^0.3.0" jsesc "^2.5.1" @@ -245,10 +238,10 @@ browserslist "^4.20.2" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.12.tgz#d4f8393fc4838cbff6b7c199af5229aee16d07cf" - integrity sha512-sZoOeUTkFJMyhqCei2+Z+wtH/BehW8NVKQt7IRUQlRiOARuXymJYfN/FCcI8CvVbR0XVyDM6eLFOlR7YtiXnew== +"@babel/helper-create-class-features-plugin@^7.17.12", "@babel/helper-create-class-features-plugin@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz#fac430912606331cb075ea8d82f9a4c145a4da19" + integrity sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/helper-environment-visitor" "^7.16.7" @@ -323,10 +316,10 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.12.tgz#bec00139520cb3feb078ef7a4578562480efb77e" - integrity sha512-t5s2BeSWIghhFRPh9XMn6EIGmvn8Lmw5RVASJzkIx1mSemubQQBNIZiQD7WzaFmaHIrjAec4x8z9Yx8SjJ1/LA== +"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz#baf05dec7a5875fb9235bd34ca18bad4e21221cd" + integrity sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA== dependencies: "@babel/helper-environment-visitor" "^7.16.7" "@babel/helper-module-imports" "^7.16.7" @@ -334,8 +327,8 @@ "@babel/helper-split-export-declaration" "^7.16.7" "@babel/helper-validator-identifier" "^7.16.7" "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.12" - "@babel/types" "^7.17.12" + "@babel/traverse" "^7.18.0" + "@babel/types" "^7.18.0" "@babel/helper-optimise-call-expression@^7.16.7": version "7.16.7" @@ -415,14 +408,14 @@ "@babel/traverse" "^7.16.8" "@babel/types" "^7.16.8" -"@babel/helpers@^7.12.5", "@babel/helpers@^7.17.9": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.9.tgz#b2af120821bfbe44f9907b1826e168e819375a1a" - integrity sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q== +"@babel/helpers@^7.12.5", "@babel/helpers@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.0.tgz#aff37c3590de42102b54842446146d0205946370" + integrity sha512-AE+HMYhmlMIbho9nbvicHyxFwhrO+xhKB6AhRxzl8w46Yj0VXTZjEsAoBVC7rB2I0jzX+yWyVybnO08qkfx6kg== dependencies: "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.9" - "@babel/types" "^7.17.0" + "@babel/traverse" "^7.18.0" + "@babel/types" "^7.18.0" "@babel/highlight@^7.16.7": version "7.17.12" @@ -433,10 +426,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.12.7", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.12.tgz#36c2ed06944e3691ba82735fc4cf62d12d491a23" - integrity sha512-FLzHmN9V3AJIrWfOpvRlZCeVg/WLdicSnTMsLur6uDj9TT8ymUlG9XxURdW/XvuygK+2CW0poOJABdA4m/YKxA== +"@babel/parser@^7.1.0", "@babel/parser@^7.12.7", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.0.tgz#10a8d4e656bc01128d299a787aa006ce1a91e112" + integrity sha512-AqDccGC+m5O/iUStSJy3DGRIUFu7WbY/CppZYwrEUB4N0tZlnI8CSTsgL7v5fHVFmUbRv2sd+yy27o8Ydt4MGg== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.17.12": version "7.17.12" @@ -471,12 +464,12 @@ "@babel/helper-create-class-features-plugin" "^7.17.12" "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-proposal-class-static-block@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.12.tgz#947f09dd496322c9543ec3b318bf52b4d9833334" - integrity sha512-8ILyDG6eL14F8iub97dVc8q35Md0PJYAnA5Kz9NACFOkt6ffCcr0FISyUPKHsvuAy36fkpIitxZ9bVYPFMGQHA== +"@babel/plugin-proposal-class-static-block@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.0.tgz#7d02253156e3c3793bdb9f2faac3a1c05f0ba710" + integrity sha512-t+8LsRMMDE74c6sV7KShIw13sqbqd58tlqNrsWoWBTIMw7SVQ0cZ905wLNS/FBCy/3PyooRHLFFlfrUNyyz5lA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-create-class-features-plugin" "^7.18.0" "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-class-static-block" "^7.14.5" @@ -537,10 +530,10 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-transform-parameters" "^7.12.1" -"@babel/plugin-proposal-object-rest-spread@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.12.tgz#f94a91715a7f2f8cfb3c06af820c776440bc0148" - integrity sha512-6l9cO3YXXRh4yPCPRA776ZyJ3RobG4ZKJZhp7NDRbKIOeV3dBPG8FXCF7ZtiO2RTCIOkQOph1xDDcc01iWVNjQ== +"@babel/plugin-proposal-object-rest-spread@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz#79f2390c892ba2a68ec112eb0d895cfbd11155e8" + integrity sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw== dependencies: "@babel/compat-data" "^7.17.10" "@babel/helper-compilation-targets" "^7.17.10" @@ -640,6 +633,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.17.12" +"@babel/plugin-syntax-import-assertions@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.17.12.tgz#58096a92b11b2e4e54b24c6a0cc0e5e607abcedd" + integrity sha512-n/loy2zkq9ZEM8tEOwON9wTQSTNDTDEz6NujPtJGLU7qObzT1N4c4YZZf8E6ATB2AjNQg/Ib2AIpO03EZaCehw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" @@ -782,10 +782,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-destructuring@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.12.tgz#0861d61e75e2401aca30f2570d46dfc85caacf35" - integrity sha512-P8pt0YiKtX5UMUL5Xzsc9Oyij+pJE6JuC+F1k0/brq/OOGs5jDa1If3OY0LRWGvJsJhI+8tsiecL3nJLc0WTlg== +"@babel/plugin-transform-destructuring@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz#dc4f92587e291b4daa78aa20cc2d7a63aa11e858" + integrity sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw== dependencies: "@babel/helper-plugin-utils" "^7.17.12" @@ -821,9 +821,9 @@ "@babel/plugin-syntax-flow" "^7.17.12" "@babel/plugin-transform-for-of@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.17.12.tgz#5397c22554ec737a27918e7e7e0e7b679b05f5ec" - integrity sha512-76lTwYaCxw8ldT7tNmye4LLwSoKDbRCBzu6n/DcK/P3FOR29+38CIIaVIZfwol9By8W/QHORYEnYSLuvcQKrsg== + version "7.18.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz#ed14b657e162b72afbbb2b4cdad277bf2bb32036" + integrity sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg== dependencies: "@babel/helper-plugin-utils" "^7.17.12" @@ -850,42 +850,42 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-modules-amd@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.17.12.tgz#08ec1f10f854c15bb3b44952e60f1fc126d7d481" - integrity sha512-p5rt9tB5Ndcc2Za7CeNxVf7YAjRcUMR6yi8o8tKjb9KhRkEvXwa+C0hj6DA5bVDkKRxB0NYhMUGbVKoFu4+zEA== +"@babel/plugin-transform-modules-amd@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.0.tgz#7ef1002e67e36da3155edc8bf1ac9398064c02ed" + integrity sha512-h8FjOlYmdZwl7Xm2Ug4iX2j7Qy63NANI+NQVWQzv6r25fqgg7k2dZl03p95kvqNclglHs4FZ+isv4p1uXMA+QA== dependencies: - "@babel/helper-module-transforms" "^7.17.12" + "@babel/helper-module-transforms" "^7.18.0" "@babel/helper-plugin-utils" "^7.17.12" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.12.tgz#37691c7404320d007288edd5a2d8600bcef61c34" - integrity sha512-tVPs6MImAJz+DiX8Y1xXEMdTk5Lwxu9jiPjlS+nv5M2A59R7+/d1+9A8C/sbuY0b3QjIxqClkj6KAplEtRvzaA== +"@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.0.tgz#3be575e19fbd273d42adbc84566b1fad3582b3db" + integrity sha512-cCeR0VZWtfxWS4YueAK2qtHtBPJRSaJcMlbS8jhSIm/A3E2Kpro4W1Dn4cqJtp59dtWfXjQwK7SPKF8ghs7rlw== dependencies: - "@babel/helper-module-transforms" "^7.17.12" + "@babel/helper-module-transforms" "^7.18.0" "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-simple-access" "^7.17.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.12.tgz#e631b151b99d25401cd9679476cc35e6e5bbc7d4" - integrity sha512-NVhDb0q00hqZcuLduUf/kMzbOQHiocmPbIxIvk23HLiEqaTKC/l4eRxeC7lO63M72BmACoiKOcb9AkOAJRerpw== +"@babel/plugin-transform-modules-systemjs@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.0.tgz#50ecdb43de97c8483824402f7125edb94cddb09a" + integrity sha512-vwKpxdHnlM5tIrRt/eA0bzfbi7gUBLN08vLu38np1nZevlPySRe6yvuATJB5F/WPJ+ur4OXwpVYq9+BsxqAQuQ== dependencies: "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-module-transforms" "^7.17.12" + "@babel/helper-module-transforms" "^7.18.0" "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-validator-identifier" "^7.16.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-umd@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.17.12.tgz#b37be3ecf198c1fea10e6268461729ced05644e1" - integrity sha512-BnsPkrUHsjzZGpnrmJeDFkOMMljWFHPjDc9xDcz71/C+ybF3lfC3V4m3dwXPLZrE5b3bgd4V+3/Pj+3620d7IA== +"@babel/plugin-transform-modules-umd@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.0.tgz#56aac64a2c2a1922341129a4597d1fd5c3ff020f" + integrity sha512-d/zZ8I3BWli1tmROLxXLc9A6YXvGK8egMxHp+E/rRwMh1Kip0AP77VwZae3snEJ33iiWwvNv2+UIIhfalqhzZA== dependencies: - "@babel/helper-module-transforms" "^7.17.12" + "@babel/helper-module-transforms" "^7.18.0" "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-transform-named-capturing-groups-regex@^7.17.12": @@ -958,18 +958,19 @@ "@babel/types" "^7.17.12" "@babel/plugin-transform-react-pure-annotations@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz#232bfd2f12eb551d6d7d01d13fe3f86b45eb9c67" - integrity sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA== + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.0.tgz#ef82c8e310913f3522462c9ac967d395092f1954" + integrity sha512-6+0IK6ouvqDn9bmEG7mEyF/pwlJXVj5lwydybpyyH3D0A7Hftk+NCTdYjnLNZksn261xaOV5ksmp20pQEmc2RQ== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-regenerator@^7.17.9": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz#0a33c3a61cf47f45ed3232903683a0afd2d3460c" - integrity sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ== +"@babel/plugin-transform-regenerator@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.0.tgz#44274d655eb3f1af3f3a574ba819d3f48caf99d5" + integrity sha512-C8YdRw9uzx25HSIzwA7EM7YP0FhCe5wNvJbZzjVNHHPGVcDJ3Aie+qGYYdS1oVQgn+B3eAIJbWFLrJ4Jipv7nw== dependencies: + "@babel/helper-plugin-utils" "^7.17.12" regenerator-transform "^0.15.0" "@babel/plugin-transform-reserved-words@^7.17.12": @@ -979,10 +980,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-runtime@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.12.tgz#5dc79735c4038c6f4fc0490f68f2798ce608cadd" - integrity sha512-xsl5MeGjWnmV6Ui9PfILM2+YRpa3GqLOrczPpXV3N2KCgQGU+sU8OfzuMbjkIdfvZEZIm+3y0V7w58sk0SGzlw== +"@babel/plugin-transform-runtime@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.0.tgz#894cdab4b353dcb7639f03fb74c59db1d344f71c" + integrity sha512-7kM/jJ3DD/y1hDPn0jov12DoUIFsxLiItprhNydUSibxaywaxNqKwq+ODk72J9ePn4LWobIc5ik6TAJhVl8IkQ== dependencies: "@babel/helper-module-imports" "^7.16.7" "@babel/helper-plugin-utils" "^7.17.12" @@ -1028,11 +1029,11 @@ "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-transform-typescript@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.17.12.tgz#9654587131bc776ff713218d929fa9a2e98ca16d" - integrity sha512-ICbXZqg6hgenjmwciVI/UfqZtExBrZOrS8sLB5mTHGO/j08Io3MmooULBiijWk9JBknjM3CbbtTc/0ZsqLrjXQ== + version "7.18.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.1.tgz#5fd8b86130bad95c4a24377b41ab989a9ccad22d" + integrity sha512-F+RJmL479HJmC0KeqqwEGZMg1P7kWArLGbAKfEi9yPthJyMNjF+DjxFF/halfQvq1Q9GFM4TUbYDNV8xe4Ctqg== dependencies: - "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-create-class-features-plugin" "^7.18.0" "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-typescript" "^7.17.12" @@ -1051,10 +1052,10 @@ "@babel/helper-create-regexp-features-plugin" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.15.6", "@babel/preset-env@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.17.12.tgz#b81ae0bb762b683d68b07b6d2d4020ccbef8d67a" - integrity sha512-Kke30Rj3Lmcx97bVs71LO0s8M6FmJ7tUAQI9fNId62rf0cYG1UAWwdNO9/sE0/pLEahAw1MqMorymoD12bj5Fg== +"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.15.6", "@babel/preset-env@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.0.tgz#ec7e51f4c6e026816000b230ed7cf74a1530d91d" + integrity sha512-cP74OMs7ECLPeG1reiCQ/D/ypyOxgfm8uR6HRYV23vTJ7Lu1nbgj9DQDo/vH59gnn7GOAwtTDPPYV4aXzsMKHA== dependencies: "@babel/compat-data" "^7.17.10" "@babel/helper-compilation-targets" "^7.17.10" @@ -1064,14 +1065,14 @@ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.17.12" "@babel/plugin-proposal-async-generator-functions" "^7.17.12" "@babel/plugin-proposal-class-properties" "^7.17.12" - "@babel/plugin-proposal-class-static-block" "^7.17.12" + "@babel/plugin-proposal-class-static-block" "^7.18.0" "@babel/plugin-proposal-dynamic-import" "^7.16.7" "@babel/plugin-proposal-export-namespace-from" "^7.17.12" "@babel/plugin-proposal-json-strings" "^7.17.12" "@babel/plugin-proposal-logical-assignment-operators" "^7.17.12" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.17.12" "@babel/plugin-proposal-numeric-separator" "^7.16.7" - "@babel/plugin-proposal-object-rest-spread" "^7.17.12" + "@babel/plugin-proposal-object-rest-spread" "^7.18.0" "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" "@babel/plugin-proposal-optional-chaining" "^7.17.12" "@babel/plugin-proposal-private-methods" "^7.17.12" @@ -1082,6 +1083,7 @@ "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.17.12" "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" @@ -1097,7 +1099,7 @@ "@babel/plugin-transform-block-scoping" "^7.17.12" "@babel/plugin-transform-classes" "^7.17.12" "@babel/plugin-transform-computed-properties" "^7.17.12" - "@babel/plugin-transform-destructuring" "^7.17.12" + "@babel/plugin-transform-destructuring" "^7.18.0" "@babel/plugin-transform-dotall-regex" "^7.16.7" "@babel/plugin-transform-duplicate-keys" "^7.17.12" "@babel/plugin-transform-exponentiation-operator" "^7.16.7" @@ -1105,16 +1107,16 @@ "@babel/plugin-transform-function-name" "^7.16.7" "@babel/plugin-transform-literals" "^7.17.12" "@babel/plugin-transform-member-expression-literals" "^7.16.7" - "@babel/plugin-transform-modules-amd" "^7.17.12" - "@babel/plugin-transform-modules-commonjs" "^7.17.12" - "@babel/plugin-transform-modules-systemjs" "^7.17.12" - "@babel/plugin-transform-modules-umd" "^7.17.12" + "@babel/plugin-transform-modules-amd" "^7.18.0" + "@babel/plugin-transform-modules-commonjs" "^7.18.0" + "@babel/plugin-transform-modules-systemjs" "^7.18.0" + "@babel/plugin-transform-modules-umd" "^7.18.0" "@babel/plugin-transform-named-capturing-groups-regex" "^7.17.12" "@babel/plugin-transform-new-target" "^7.17.12" "@babel/plugin-transform-object-super" "^7.16.7" "@babel/plugin-transform-parameters" "^7.17.12" "@babel/plugin-transform-property-literals" "^7.16.7" - "@babel/plugin-transform-regenerator" "^7.17.9" + "@babel/plugin-transform-regenerator" "^7.18.0" "@babel/plugin-transform-reserved-words" "^7.17.12" "@babel/plugin-transform-shorthand-properties" "^7.16.7" "@babel/plugin-transform-spread" "^7.17.12" @@ -1124,7 +1126,7 @@ "@babel/plugin-transform-unicode-escapes" "^7.16.7" "@babel/plugin-transform-unicode-regex" "^7.16.7" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.17.12" + "@babel/types" "^7.18.0" babel-plugin-polyfill-corejs2 "^0.3.0" babel-plugin-polyfill-corejs3 "^0.5.0" babel-plugin-polyfill-regenerator "^0.3.0" @@ -1183,18 +1185,18 @@ pirates "^4.0.5" source-map-support "^0.5.16" -"@babel/runtime-corejs3@^7.10.2", "@babel/runtime-corejs3@^7.17.9": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.17.9.tgz#3d02d0161f0fbf3ada8e88159375af97690f4055" - integrity sha512-WxYHHUWF2uZ7Hp1K+D1xQgbgkGUfA+5UPOegEXGt2Y5SMog/rYCVaifLZDbw8UkNXozEqqrZTy6bglL7xTaCOw== +"@babel/runtime-corejs3@^7.10.2", "@babel/runtime-corejs3@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.18.0.tgz#eed03023c5226b1e2b2ba32b8b6af5cb0518a6c7" + integrity sha512-G5FaGZOWORq9zthDjIrjib5XlcddeqLbIiDO3YQsut6j7aGf76xn0umUC/pA6+nApk3hQJF4JzLzg5PCl6ewJg== dependencies: core-js-pure "^3.20.2" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.9", "@babel/runtime@^7.8.4": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72" - integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg== +"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.0", "@babel/runtime@^7.8.4": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.0.tgz#6d77142a19cb6088f0af662af1ada37a604d34ae" + integrity sha512-YMQvx/6nKEaucl0MY56mwIG483xk8SDNdlUwb2Ts6FUpr7fm85DxEmsY18LXBNhcTz6tO6JwZV8w1W06v8UKeg== dependencies: regenerator-runtime "^0.13.4" @@ -1207,26 +1209,26 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.12", "@babel/traverse@^7.17.9", "@babel/traverse@^7.7.2": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.12.tgz#011874d2abbca0ccf1adbe38f6f7a4ff1747599c" - integrity sha512-zULPs+TbCvOkIFd4FrG53xrpxvCBwLIgo6tO0tJorY7YV2IWFxUfS/lXDJbGgfyYt9ery/Gxj2niwttNnB0gIw== +"@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.0", "@babel/traverse@^7.7.2": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.0.tgz#0e5ec6db098660b2372dd63d096bf484e32d27ba" + integrity sha512-oNOO4vaoIQoGjDQ84LgtF/IAlxlyqL4TUuoQ7xLkQETFaHkY1F7yazhB4Kt3VcZGL0ZF/jhrEpnXqUb0M7V3sw== dependencies: "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.12" + "@babel/generator" "^7.18.0" "@babel/helper-environment-visitor" "^7.16.7" "@babel/helper-function-name" "^7.17.9" "@babel/helper-hoist-variables" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.17.12" - "@babel/types" "^7.17.12" + "@babel/parser" "^7.18.0" + "@babel/types" "^7.18.0" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.12.7", "@babel/types@^7.15.6", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.12", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.12.tgz#1210690a516489c0200f355d87619157fbbd69a0" - integrity sha512-rH8i29wcZ6x9xjzI5ILHL/yZkbQnCERdHlogKuIb4PUr7do4iT8DPekrTbBLWTnRQm6U0GYABbTMSzijmEqlAg== +"@babel/types@^7.0.0", "@babel/types@^7.12.7", "@babel/types@^7.15.6", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.12", "@babel/types@^7.18.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.0.tgz#ef523ea349722849cb4bf806e9342ede4d071553" + integrity sha512-vhAmLPAiC8j9K2GnsnLPCIH5wCrPpYIVBCWRBFDCB7Y/BXLqi/O+1RSTTM2bsmg6U/551+FCf9PNPxjABmxHTw== dependencies: "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" @@ -1256,35 +1258,35 @@ dependencies: axios "0.21.3" -"@cspell/cspell-bundled-dicts@^5.20.0": - version "5.20.0" - resolved "https://registry.yarnpkg.com/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-5.20.0.tgz#294106a2660baf825494535019a0d2230c3cc0c1" - integrity sha512-tCO32xVSuey4Tg8XuayBzcrCAfrAXL8J1PeYl26+/ZUl5zkAL4AuyL0Cf4e2PpeEomnUWP2y5noZLLbUeOIwnw== +"@cspell/cspell-bundled-dicts@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-6.0.0.tgz#4238871434bec96a13b76d0a3d499d39b0c42126" + integrity sha512-n6fr7V57og7Sp9Wb2K4W3ag3yvRR/hl0p1lSvA+AMnatDbYm8id/5YUlc+AdXlOb604i1fAmHLQ/1dNvm3PMMw== dependencies: "@cspell/dict-ada" "^2.0.0" "@cspell/dict-aws" "^2.0.0" "@cspell/dict-bash" "^2.0.2" "@cspell/dict-companies" "^2.0.4" - "@cspell/dict-cpp" "^2.0.3" + "@cspell/dict-cpp" "^3.1.0" "@cspell/dict-cryptocurrencies" "^2.0.0" - "@cspell/dict-csharp" "^2.0.1" + "@cspell/dict-csharp" "^3.0.1" "@cspell/dict-css" "^2.0.0" "@cspell/dict-dart" "^1.1.0" "@cspell/dict-django" "^2.0.0" "@cspell/dict-dotnet" "^2.0.1" "@cspell/dict-elixir" "^2.0.1" "@cspell/dict-en-gb" "^1.1.33" - "@cspell/dict-en_us" "^2.2.2" + "@cspell/dict-en_us" "^2.2.5" "@cspell/dict-filetypes" "^2.0.1" "@cspell/dict-fonts" "^2.0.0" "@cspell/dict-fullstack" "^2.0.5" "@cspell/dict-git" "^1.0.1" - "@cspell/dict-golang" "^2.0.0" + "@cspell/dict-golang" "^3.0.1" "@cspell/dict-haskell" "^2.0.0" "@cspell/dict-html" "^3.0.1" - "@cspell/dict-html-symbol-entities" "^2.0.0" + "@cspell/dict-html-symbol-entities" "^3.0.0" "@cspell/dict-java" "^2.0.0" - "@cspell/dict-latex" "^2.0.0" + "@cspell/dict-latex" "^2.0.3" "@cspell/dict-lorem-ipsum" "^2.0.0" "@cspell/dict-lua" "^2.0.0" "@cspell/dict-node" "^2.0.1" @@ -1292,25 +1294,25 @@ "@cspell/dict-php" "^2.0.0" "@cspell/dict-powershell" "^2.0.0" "@cspell/dict-public-licenses" "^1.0.4" - "@cspell/dict-python" "^3.0.3" + "@cspell/dict-python" "^3.0.5" "@cspell/dict-r" "^1.0.2" "@cspell/dict-ruby" "^2.0.1" "@cspell/dict-rust" "^2.0.0" "@cspell/dict-scala" "^2.0.0" - "@cspell/dict-software-terms" "^2.1.5" + "@cspell/dict-software-terms" "^2.1.7" "@cspell/dict-swift" "^1.0.2" "@cspell/dict-typescript" "^2.0.0" "@cspell/dict-vue" "^2.0.2" -"@cspell/cspell-pipe@^5.20.0": - version "5.20.0" - resolved "https://registry.yarnpkg.com/@cspell/cspell-pipe/-/cspell-pipe-5.20.0.tgz#964aa560c89ecdf4eea9145700ccd6ab4c235ed8" - integrity sha512-dGHf4XZgPlGqviYTD+5ZwSk3hpiywsuuDqnoPo9SeQ1xPon7uFVKsMiAAzvhGAkkBaKIBNP/nwPU0feYvLoCJg== +"@cspell/cspell-pipe@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@cspell/cspell-pipe/-/cspell-pipe-6.0.0.tgz#aad5c6ecfa36f28a75d8b4050d4607d1d77a644b" + integrity sha512-oehpfj8tOoFep34uOCABdpsqisg37Htc+DjOu5pT1gtzozReSdahD5dQUKAp/ND/tttdE4SWQUMUVZq6cxvTvw== -"@cspell/cspell-types@^5.20.0": - version "5.20.0" - resolved "https://registry.yarnpkg.com/@cspell/cspell-types/-/cspell-types-5.20.0.tgz#4c9a47249e1ad534938f2f35fbba1221e7800570" - integrity sha512-p06/HAKgalqyGHfnowJvjO3SQHxuOzKdiJTUlUi8x1CrEk7PmZEHuORlt9tVVZ46Xf2qY9+QLeTtattlWPJ39A== +"@cspell/cspell-types@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@cspell/cspell-types/-/cspell-types-6.0.0.tgz#a65aea274438cdbba0c0ef24ba52cd80cd89be9a" + integrity sha512-N8wGQU+n64s3cIMC/5WJzo6UT/Jetxz6oSdOr0SksCHO84I6QR1ORwsXM3ej7x6490uoTM+cf11CSYrw6ma+bg== "@cspell/dict-ada@^2.0.0": version "2.0.0" @@ -1332,20 +1334,20 @@ resolved "https://registry.yarnpkg.com/@cspell/dict-companies/-/dict-companies-2.0.4.tgz#2ba11418478d99d67a96004ea782a47a42c501a3" integrity sha512-nLNVddo+iu4q/Mu03nkVTMnSPxBkoLyZ0MgpHJZWCqxVATbBkzoZNNNjsTkJhvkbrUIWydf8YW4U4wYY+kyh7Q== -"@cspell/dict-cpp@^2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@cspell/dict-cpp/-/dict-cpp-2.0.3.tgz#551bec166c4520f7ba36f8d263fb885d19f98db0" - integrity sha512-aWRvI3CQW2M3XeJpDVffItw/9n4hxsN5EPwyBa6Po6EnCxZZZLOqpieZk4JNz4pH0/xbnOX+sMMuSeKWr71r/w== +"@cspell/dict-cpp@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@cspell/dict-cpp/-/dict-cpp-3.1.0.tgz#0b2983dbd942ae77c7cf0b349786344a1ba7974e" + integrity sha512-lav99zUQ+iPq6dkQRnTN0+KE9th0UG6Nwl34afyEGJ8CN5Dcq/RJjCVvOkLw6vPvs505xrvQcZW1huftQK8WVg== "@cspell/dict-cryptocurrencies@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@cspell/dict-cryptocurrencies/-/dict-cryptocurrencies-2.0.0.tgz#a74eecb42a46a96d08b6613fdb5c554529d3afff" integrity sha512-nREysmmfOp7L2YCRAUufQahwD5/Punzb5AZ6eyg4zUamdRWHgBFphb5/9h2flt1vgdUfhc6hZcML21Ci7iXjaA== -"@cspell/dict-csharp@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@cspell/dict-csharp/-/dict-csharp-2.0.1.tgz#86ec4fa42ba9a4cc57df28ec7a335b56bf751c5b" - integrity sha512-ZzAr+WRP2FUtXHZtfhe8f3j9vPjH+5i44Hcr5JqbWxmqciGoTbWBPQXwu9y+J4mbdC69HSWRrVGkNJ8rQk8pSw== +"@cspell/dict-csharp@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@cspell/dict-csharp/-/dict-csharp-3.0.1.tgz#94a673e02bb7cc03c25bc699bc1b5bd786c2c5fd" + integrity sha512-xkfQu03F388w4sdVQSSjrVMkxAxpTYB2yW7nw0XYtTjl3L/jBgvTr/j1BTjdFbQhdNf10Lg0Ak1kXOjmHodVqA== "@cspell/dict-css@^2.0.0": version "2.0.0" @@ -1377,7 +1379,7 @@ resolved "https://registry.yarnpkg.com/@cspell/dict-en-gb/-/dict-en-gb-1.1.33.tgz#7f1fd90fc364a5cb77111b5438fc9fcf9cc6da0e" integrity sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g== -"@cspell/dict-en_us@^2.2.2": +"@cspell/dict-en_us@^2.2.5": version "2.2.5" resolved "https://registry.yarnpkg.com/@cspell/dict-en_us/-/dict-en_us-2.2.5.tgz#7a1c325d54a7c9b8171da6e61f095ad34395ff68" integrity sha512-gRHem02ZY83AQUTYBxtiVNmtM6gWFCJKumRoAKLj7vWYelmNLcCBsMA3BOOOJ7cZNKCI04lDEdh0u2f2akKZtQ== @@ -1402,20 +1404,20 @@ resolved "https://registry.yarnpkg.com/@cspell/dict-git/-/dict-git-1.0.1.tgz#9de5ab2532abcdc8b10bd83ccb1f5e5dae0b6067" integrity sha512-Rk+eTof/9inF11lvxmkCRK+gODatA3qai8kSASv6OG/JfPvpj7fTHErx/rdgPw/LOTDUafnoTjTYmj7B2MOQXg== -"@cspell/dict-golang@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@cspell/dict-golang/-/dict-golang-2.0.0.tgz#a392533780c9fc3dc959f1358d09f7a6c6d82656" - integrity sha512-rUeZJR/S/ZjAsOURtxsAO6xDQhL0IzF458ScahaeOqe0zVL3tx7tCLikCgT92NWPs3BNqmsZGqYSDbn/1KsSIA== +"@cspell/dict-golang@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@cspell/dict-golang/-/dict-golang-3.0.1.tgz#acde95eb340c4512d132586a8326b1b3d971c0f7" + integrity sha512-0KNfXTbxHW2l8iVjxeOf+KFv9Qrw3z5cyKnkuYJWlBTSB5KcUBfeKCb4fsds26VdANqiy6U91b4gDx5kNEmBjQ== "@cspell/dict-haskell@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@cspell/dict-haskell/-/dict-haskell-2.0.0.tgz#9e7e58eba2b4633221650dcdcc43f73588b48119" integrity sha512-cjX1Br+gSWqtcmJD/IMHz1UoP3pUaKIIKy/JfhEs7ANtRt6hhfEKe9dl2kQzDkkKt4pXol+YgdYxL/sVc/nLgQ== -"@cspell/dict-html-symbol-entities@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@cspell/dict-html-symbol-entities/-/dict-html-symbol-entities-2.0.0.tgz#a25d39e62bd2dd7191ca5612714aa0a1b90ca10f" - integrity sha512-71S5wGCe7dq6C+zGDwsEAe5msub/irrLi6SExeG11a/EkpA3RKAEheDGPk0hOY4+vOcIFHaApxOjLTtgQfYWfA== +"@cspell/dict-html-symbol-entities@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@cspell/dict-html-symbol-entities/-/dict-html-symbol-entities-3.0.0.tgz#55d5d96c37ecbde00492c4238e229908eea9cedb" + integrity sha512-04K7cPTcbYXmHICfiob4gZA1yaj4hpfM+Nl5WIJ1EAZsSGHdqmGEF28GuCjyQ8ZeKiJAsPt/vXuLBbjxkHqZyQ== "@cspell/dict-html@^3.0.1": version "3.0.1" @@ -1427,10 +1429,10 @@ resolved "https://registry.yarnpkg.com/@cspell/dict-java/-/dict-java-2.0.0.tgz#76252cee8f04e099ac6dae0f45f22257088060a7" integrity sha512-9f5LDATlAiXRGqxLxgqbOLlQxuMW2zcN7tBgxwtN+4u90vM03ZUOR/gKIuDV/y0ZuAiWBIjA73cjk8DJ13Q1eA== -"@cspell/dict-latex@^2.0.0": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@cspell/dict-latex/-/dict-latex-2.0.2.tgz#f34150db2c4c781ccc7d551dbd8431c0a3938529" - integrity sha512-4tjuaieh5NJsYLco45lWu9SRT5H61aC1vtUNKS0+bpA+JaRJYvlpv/wAsq5HB0I9Iz17XHATDvX1zkp3QJ89gw== +"@cspell/dict-latex@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@cspell/dict-latex/-/dict-latex-2.0.3.tgz#6bbbdef07074256368e76a7c7c56940e91c14acc" + integrity sha512-shNEP20yLLzZ3iURg7241uUKO5vKvoPcd311uiMch0L0qoiC057aV9nawjQIDIgQQZvYT04Mem8N45/jnqg9cA== "@cspell/dict-lorem-ipsum@^2.0.0": version "2.0.0" @@ -1467,10 +1469,10 @@ resolved "https://registry.yarnpkg.com/@cspell/dict-public-licenses/-/dict-public-licenses-1.0.4.tgz#13c2af357e7139bf3896eba58e0feb9f51053b3f" integrity sha512-h4xULfVEDUeWyvp1OO19pcGDqWcBEQ7WGMp3QBHyYpjsamlzsyYYjCRSY2ZvpM7wruDmywSRFmRHJ/+uNFT7nA== -"@cspell/dict-python@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@cspell/dict-python/-/dict-python-3.0.3.tgz#6c55ee768ffe93a828e607bcab437ccf78c494c6" - integrity sha512-Mt415KczTfqmLvKTgeV8FzMzpms9baTS0P5HfULTW+UxQtZeroviYyRM9TJPJKJSoI0ISu0GiIDgmYlV7+YPog== +"@cspell/dict-python@^3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@cspell/dict-python/-/dict-python-3.0.5.tgz#6a384e950353521b8e4fc7e417d8ddd4fbcb9f8f" + integrity sha512-0BRxUndYQ2Iom9ZpN5DjUdF2E5fodw1Th/7rlhxxy45fYXUZmfXDvYoaQaymfHP0ZQhH56MCuOUNa/YMcYJtww== "@cspell/dict-r@^1.0.2": version "1.0.2" @@ -1492,7 +1494,7 @@ resolved "https://registry.yarnpkg.com/@cspell/dict-scala/-/dict-scala-2.0.0.tgz#b8098103bb03a13406c1c79f1769052353aafac4" integrity sha512-MUwA2YKpqaQOSR4V1/CVGRNk8Ii5kf6I8Ch+4/BhRZRQXuwWbi21rDRYWPqdQWps7VNzAbbMA+PQDWsD5YY38g== -"@cspell/dict-software-terms@^2.1.5": +"@cspell/dict-software-terms@^2.1.7": version "2.1.7" resolved "https://registry.yarnpkg.com/@cspell/dict-software-terms/-/dict-software-terms-2.1.7.tgz#30d45d23003980e01854d57788c6c134fa0387f5" integrity sha512-2FW5MlbazmWPFHzMh2xKYFcYnX+E5MdOPRrfYkbVXvWecA0466l54V+op2zlh1CbngMk4eY7AY3qahfWv6gDHA== @@ -1512,19 +1514,18 @@ resolved "https://registry.yarnpkg.com/@cspell/dict-vue/-/dict-vue-2.0.2.tgz#8618b9f4825b3d80e1788082c19ac9c15832463e" integrity sha512-/MB0RS0Gn01s4pgmjy0FvsLfr3RRMrRphEuvTRserNcM8XVtoIVAtrjig/Gg0DPwDrN8Clm0L1j7iQay6S8D0g== -"@docsearch/css@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.0.0.tgz#fe57b474802ffd706d3246eab25d52fac8aa3698" - integrity sha512-1kkV7tkAsiuEd0shunYRByKJe3xQDG2q7wYg24SOw1nV9/2lwEd4WrUYRJC/ukGTl2/kHeFxsaUvtiOy0y6fFA== +"@docsearch/css@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.1.0.tgz#6781cad43fc2e034d012ee44beddf8f93ba21f19" + integrity sha512-bh5IskwkkodbvC0FzSg1AxMykfDl95hebEKwxNoq4e5QaGzOXSBgW8+jnMFZ7JU4sTBiB04vZWoUSzNrPboLZA== -"@docsearch/react@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-3.0.0.tgz#d02ebdc67573412185a6a4df13bc254c7c0da491" - integrity sha512-yhMacqS6TVQYoBh/o603zszIb5Bl8MIXuOc6Vy617I74pirisDzzcNh0NEaYQt50fVVR3khUbeEhUEWEWipESg== +"@docsearch/react@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-3.1.0.tgz#da943a64c01ee82b04e53b691806469272f943f7" + integrity sha512-bjB6ExnZzf++5B7Tfoi6UXgNwoUnNOfZ1NyvnvPhWgCMy5V/biAtLL4o7owmZSYdAKeFSvZ5Lxm0is4su/dBWg== dependencies: - "@algolia/autocomplete-core" "1.5.2" - "@algolia/autocomplete-preset-algolia" "1.5.2" - "@docsearch/css" "3.0.0" + "@algolia/autocomplete-core" "1.6.3" + "@docsearch/css" "3.1.0" algoliasearch "^4.0.0" "@docusaurus/react-loadable@5.5.2", "react-loadable@npm:@docusaurus/react-loadable@5.5.2": @@ -1547,15 +1548,15 @@ resolved "https://registry.yarnpkg.com/@endiliey/react-ideal-image/-/react-ideal-image-0.0.11.tgz#dc3803d04e1409cf88efa4bba0f67667807bdf27" integrity sha512-QxMjt/Gvur/gLxSoCy7VIyGGGrGmDN+VHcXkN3R2ApoWX0EYUE+hMgPHSW/PV6VVebZ1Nd4t2UnGRBDihu16JQ== -"@eslint/eslintrc@^1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.2.3.tgz#fcaa2bcef39e13d6e9e7f6271f4cc7cae1174886" - integrity sha512-uGo44hIwoLGNyduRpjdEpovcbMdd+Nv7amtmJxnKmI8xj6yd5LncmSwDa5NgX/41lIFJtkjD6YdVfgEzPfJ5UA== +"@eslint/eslintrc@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.0.tgz#29f92c30bb3e771e4a2048c95fa6855392dfac4f" + integrity sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw== dependencies: ajv "^6.12.4" debug "^4.3.2" espree "^9.3.2" - globals "^13.9.0" + globals "^13.15.0" ignore "^5.2.0" import-fresh "^3.2.1" js-yaml "^4.1.0" @@ -3014,89 +3015,89 @@ "@svgr/plugin-jsx" "^6.2.1" "@svgr/plugin-svgo" "^6.2.0" -"@swc/core-android-arm-eabi@1.2.185": - version "1.2.185" - resolved "https://registry.yarnpkg.com/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.185.tgz#6fca8a364428c3ff17fd960176a8c5a1047748c4" - integrity sha512-/ZTj5yaPkPC0UwggYN+y4d2DNZJI+b1y1gi4twrQJz997OMU032Hi9/59VxHFzHNxlzhIuCJYcbxOxi1Aqk2bA== - -"@swc/core-android-arm64@1.2.185": - version "1.2.185" - resolved "https://registry.yarnpkg.com/@swc/core-android-arm64/-/core-android-arm64-1.2.185.tgz#592fa96fb17036d920f57c8f36c859acf1dacb53" - integrity sha512-TgidzM+7H0YTIABu2ILI8MRDiIzcFULz5vIUWbhLwypPH9vJCFcDnAv5rBpg/4KBMzuSI6BNNBIcf/8Wc9e0HA== - -"@swc/core-darwin-arm64@1.2.185": - version "1.2.185" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.185.tgz#5dfbb3425ddf479c8875a3737e1de5b127e335b2" - integrity sha512-segMc9FVYz+M5KzpPJR+M20Mmeq4ZQw4gi6rt0HXNpSPykm+oe/wb1CZbMk/9SpMaevpXOOZa0HHBM2ue+WhVA== - -"@swc/core-darwin-x64@1.2.185": - version "1.2.185" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.2.185.tgz#e97ed012ff08fb39dcc51fc07233f4425fa89408" - integrity sha512-PL1Xq6R5zpBbYZsWJU0xK2/WQlhag/Kiq1eZd6ftSLaxn0q00wdSGPpzOqK5FTYAqi+5R1CWM/kCOHFoSlYDfg== - -"@swc/core-freebsd-x64@1.2.185": - version "1.2.185" - resolved "https://registry.yarnpkg.com/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.185.tgz#ba12147270c754c47eee9a99f08de75172ae4bb1" - integrity sha512-scaFxGfV7RhJrrCGzouwFe1XOzJvY/WjYWysHuD+slSdn3pjSnxXtX2Q9jPIYF0bmIcbTp4D6V8VITLhmfkzEA== - -"@swc/core-linux-arm-gnueabihf@1.2.185": - version "1.2.185" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.185.tgz#4bd8ff733e06c8ea0dc916208f8fdeb907f25256" - integrity sha512-WQ84BVGF0al3ynWBeXuEpO7y6h8Bh4AXr+Ys2YaEgyZtAZ6zWUi3Ca4ktFWwpACSm0XUUB3lhlapUcqXJE8lZg== - -"@swc/core-linux-arm64-gnu@1.2.185": - version "1.2.185" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.185.tgz#8abe168271f4ba6767da87fb4386ccea388fc324" - integrity sha512-INrmHqV5ti0ROS9FeGXPF5ZcIAWZ9Sp+Xbn5isWZ9owqT0c2CU4f9+w+OzNMMDKVFe2ARvlH/D927mLIgwqDmQ== - -"@swc/core-linux-arm64-musl@1.2.185": - version "1.2.185" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.185.tgz#2352673452ac2553d45181d53351cb00d378d848" - integrity sha512-OEwVBlypM7SOZqpa82hIh9jeiu/eSXG+J+R0vekcWz7EkW5zb504uyGPeZJKMqX23I5GZtBpk96UUbhnNCaYUg== - -"@swc/core-linux-x64-gnu@1.2.185": - version "1.2.185" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.185.tgz#058444fa372374f2f7f2f2d09c03085f928c8f12" - integrity sha512-H8LnCdViP7JsFlDE02w5czlKQWnAAM9ZN3oZnvAuTod2gJBjTJ4eZ3h9d+EQdcszw7Csh+IwXbmPz0mPwaR0vQ== - -"@swc/core-linux-x64-musl@1.2.185": - version "1.2.185" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.185.tgz#a8f473965e87acb03057d6b4790f86857e5ce4ea" - integrity sha512-DRHmhjCsA2FloF+6/HMxJ8bkdfddAY/wqnpuW/l3CPUyL3VMDmvSiZICN8f/J8LKpGfDV2FdczztmbGi14jO+g== - -"@swc/core-win32-arm64-msvc@1.2.185": - version "1.2.185" - resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.185.tgz#d8fc5bf11e67664d54a84ad37d9ac7d69df1a317" - integrity sha512-0BmuvU+Lfz5n1/ihh30UF2Viu9JJn3S3YC9QD9BfF80ueEl8KT4JihhJGuEG3XuZk5+35o2oZiCRkn6NKI/qpA== - -"@swc/core-win32-ia32-msvc@1.2.185": - version "1.2.185" - resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.185.tgz#cbd3a4ad67bf40754143fafc87baed6021e9a780" - integrity sha512-yRNa/frm5MeXJMpj6V6uQy5a0yfO9q6ZOQ4L+439UH8vBcgIZYOG07bJGvxeUjaKkkrhfzEu5Q8fdXTzPgGeAA== - -"@swc/core-win32-x64-msvc@1.2.185": - version "1.2.185" - resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.185.tgz#f2459a88783ed95257229e41034fd913b487c5b4" - integrity sha512-nLF0AKADjeR3Rr05lWoKOeDbGBFpmbFnGkpLJK9EAwAIQUC9lDRYIps5yinPZsgqBwa0RCUsxzS3PjbWEY18bg== - -"@swc/core@^1.2.185": - version "1.2.185" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.2.185.tgz#26cdc7f9417fd2f04fde7f97d0b217aaa1bc8d3b" - integrity sha512-dDNzDrJ4bzMVWeFWqLJojjv5XZJZ84Zia7kQdJjp+kfOMdEhS+onrAwrk5Q88PlAvbrhY6kQbWD2LZ8JdyEaSQ== +"@swc/core-android-arm-eabi@1.2.189": + version "1.2.189" + resolved "https://registry.yarnpkg.com/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.189.tgz#a8060c2ec7bd93bd9907c3059c44a832eda57b6d" + integrity sha512-0kN3Le6QzFFz+Lc6a/tf/RkJXubWwWaHxF4c0bVm4AKIFf4nRlUCEqEkjdVaZvL92rpBMHaEEBuIIz3T8DqTTQ== + +"@swc/core-android-arm64@1.2.189": + version "1.2.189" + resolved "https://registry.yarnpkg.com/@swc/core-android-arm64/-/core-android-arm64-1.2.189.tgz#c9a7ebaecbef4488db3394e660dd5c2abfa5c173" + integrity sha512-smsb+YkDw2OKwg66Z63E/G4NlFApDbsiOPmZXFZbtZbNBD9v+wnk6WVA//XR1bdUI9VbzNKlMPKJxQTE685QDw== + +"@swc/core-darwin-arm64@1.2.189": + version "1.2.189" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.189.tgz#883098686504692218e88877b224e06db2a93c86" + integrity sha512-OGjZRkTulKirJMLYbW9etb59lA9ueDXVwYRVD9SrNh8tRMTf0Nq+SUT/C3LVhBBGC4KSdWOzBAYbDTTdsnY++Q== + +"@swc/core-darwin-x64@1.2.189": + version "1.2.189" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.2.189.tgz#38ba12dc3b07d96761dc895dd43e14ba3323129f" + integrity sha512-BEcxnBHx51514Voe2dn/y1y5H9VNyw7Zpp9+mPekZqx5o/onPD5wZ1ZfAsPrA4UlvM3v16u6ITE/cLawJ/GdAQ== + +"@swc/core-freebsd-x64@1.2.189": + version "1.2.189" + resolved "https://registry.yarnpkg.com/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.189.tgz#0cee19a1382ee97a7be2ea057cf48f5e08c66038" + integrity sha512-B6g2NWeh2iw6WPOaM19Uj3VE4se6alT265kWibLUshjcofRfnYT1lNhhkrF1D0EVnpC8I96I/xXNQo4Am9z4zQ== + +"@swc/core-linux-arm-gnueabihf@1.2.189": + version "1.2.189" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.189.tgz#612010e31969387de6acde69d8250fd74f784be1" + integrity sha512-6WhPG9pyN5AahQTVQk8MoN1I9Z/Ytfqizuie1wV7mW8FMNmMkiJvBekKtE6ftxu80Hqa34r86WfEwmJKm5MqYw== + +"@swc/core-linux-arm64-gnu@1.2.189": + version "1.2.189" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.189.tgz#0fe98d1ca0a3441bfe4033fbe7fc19d87019f640" + integrity sha512-frJTGnxsDe7h2d7BtnBivOdOJTtabkQIIZmHd4JHqafcoekI6teyveIax17axLyimvWl278yTo3hf7ePagD/eg== + +"@swc/core-linux-arm64-musl@1.2.189": + version "1.2.189" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.189.tgz#bb28e598e028745129e0eb9458184eb5b7efe685" + integrity sha512-27K38LoZpME5lojDJIUNo7zdTDwAKLm0BMQ7HXWcYOyiDAekhSidI+SrBWxCfLzfuClhFu6/VE3E7j32VFJsiA== + +"@swc/core-linux-x64-gnu@1.2.189": + version "1.2.189" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.189.tgz#365073c3183e40080be900337987fcc4d2270fff" + integrity sha512-Ha5oJKOyQm9w7+e+WdRm4ypijzEmglWZGtgBR6vV6ViqqHcTBAU4nG87ex7y7AS9p+Cbc6EOSR9X1qIB8KxtbA== + +"@swc/core-linux-x64-musl@1.2.189": + version "1.2.189" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.189.tgz#1ce88e44952d0d4f525016c7841c1443f91de788" + integrity sha512-/p5yXa9HEzpVEuE4ivkW1IvwyYu6fT+L2OvVEs5oXIba80F0Wjy7InWqaa83gwrdMH+bXV6loG8LzZUZu/lpjA== + +"@swc/core-win32-arm64-msvc@1.2.189": + version "1.2.189" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.189.tgz#2ad4d2aacd0032c1f8a859bba963207436a78769" + integrity sha512-o/1ueM6/sifNjYnO6NMEXB895spVfJs5oQIPxQG9vJ/4zWLw8YmAx+u1xJY+XGyK6gnroHt7yPiS87qWdbeF6w== + +"@swc/core-win32-ia32-msvc@1.2.189": + version "1.2.189" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.189.tgz#93dee76f59760b8eb516a2e55111fdeaf1e8c6c8" + integrity sha512-YDwRkzykaf+dw5Z7u189cC/Tttkn2NVV84hrGL3LbVuh7wT5PaDhZs4Yz4unZQSlPV12olmZWgNr/i27h5wlpg== + +"@swc/core-win32-x64-msvc@1.2.189": + version "1.2.189" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.189.tgz#eeb127740952e3dd5cae2866c2da60346fed457b" + integrity sha512-Nge8Z/ZkAp5p5No50yBDpBG7+ZYaVWGSuwtPj6OJe7orzvDCEm9GgcVE6J9GEjbclSWlCH8B8lUe17GaKRZHbg== + +"@swc/core@^1.2.189": + version "1.2.189" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.2.189.tgz#8db88e809764e5b3b2be3fcac0da9d9d957e1056" + integrity sha512-S5cKX4ECMSfW78DLFgnlilJZgjrFRYwPslrrwpLl3gpwh+Qo72/Mhn71u7G/5xXW+T/xW5GwPccHfCk+k72uUg== optionalDependencies: - "@swc/core-android-arm-eabi" "1.2.185" - "@swc/core-android-arm64" "1.2.185" - "@swc/core-darwin-arm64" "1.2.185" - "@swc/core-darwin-x64" "1.2.185" - "@swc/core-freebsd-x64" "1.2.185" - "@swc/core-linux-arm-gnueabihf" "1.2.185" - "@swc/core-linux-arm64-gnu" "1.2.185" - "@swc/core-linux-arm64-musl" "1.2.185" - "@swc/core-linux-x64-gnu" "1.2.185" - "@swc/core-linux-x64-musl" "1.2.185" - "@swc/core-win32-arm64-msvc" "1.2.185" - "@swc/core-win32-ia32-msvc" "1.2.185" - "@swc/core-win32-x64-msvc" "1.2.185" + "@swc/core-android-arm-eabi" "1.2.189" + "@swc/core-android-arm64" "1.2.189" + "@swc/core-darwin-arm64" "1.2.189" + "@swc/core-darwin-x64" "1.2.189" + "@swc/core-freebsd-x64" "1.2.189" + "@swc/core-linux-arm-gnueabihf" "1.2.189" + "@swc/core-linux-arm64-gnu" "1.2.189" + "@swc/core-linux-arm64-musl" "1.2.189" + "@swc/core-linux-x64-gnu" "1.2.189" + "@swc/core-linux-x64-musl" "1.2.189" + "@swc/core-win32-arm64-msvc" "1.2.189" + "@swc/core-win32-ia32-msvc" "1.2.189" + "@swc/core-win32-x64-msvc" "1.2.189" "@swc/jest@^0.2.21": version "0.2.21" @@ -3481,10 +3482,10 @@ resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== -"@types/node@*", "@types/node@^17.0.34", "@types/node@^17.0.5": - version "17.0.34" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.34.tgz#3b0b6a50ff797280b8d000c6281d229f9c538cef" - integrity sha512-XImEz7XwTvDBtzlTnm8YvMqGW/ErMWBsKZ+hMTvnDIjGCKxwK5Xpc+c/oQjOauwq8M4OS11hEkpjX8rrI/eEgA== +"@types/node@*", "@types/node@^17.0.35", "@types/node@^17.0.5": + version "17.0.35" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.35.tgz#635b7586086d51fb40de0a2ec9d1014a5283ba4a" + integrity sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg== "@types/normalize-package-data@^2.4.0": version "2.4.1" @@ -3548,10 +3549,10 @@ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== -"@types/react-dev-utils@^9.0.10": - version "9.0.10" - resolved "https://registry.yarnpkg.com/@types/react-dev-utils/-/react-dev-utils-9.0.10.tgz#92bcfb83b25c9788b124a1598673b6e11727fead" - integrity sha512-kkPY4YbdoEXwf4CZdrEKNEYPHshdRGwHiCixyqaWxmYSj337hMX3YD28+tZkNiV4XUmJ4NevKtgZNbylkLSQ+A== +"@types/react-dev-utils@^9.0.11": + version "9.0.11" + resolved "https://registry.yarnpkg.com/@types/react-dev-utils/-/react-dev-utils-9.0.11.tgz#0dff59c60b5011df0f851e5ec4c831cf07300ba3" + integrity sha512-SdHtle/1hyImI1VzJUp20pthFwHY2O0Pq5QWIbPyku0SboPxqbyfwFwOlrr5d4yiZRr1in7SQ4Z0IiJVrJiJrg== dependencies: "@types/eslint" "*" "@types/express" "*" @@ -3630,10 +3631,10 @@ resolved "https://registry.yarnpkg.com/@types/rtl-detect/-/rtl-detect-1.0.0.tgz#5791e18a111f2b8b5b328160af97f3991a5697a5" integrity sha512-lyYh44YgrejEK9/5rhASghvRUOxrSJyyyQmqK7L6F/V5qs6PY1RfCi1VbjSkY6kuDt7lzQyhd006slhda4Oypg== -"@types/rtlcss@^3.1.4": - version "3.1.4" - resolved "https://registry.yarnpkg.com/@types/rtlcss/-/rtlcss-3.1.4.tgz#8b67938356507f68f1b529396a70f586f6eff2a7" - integrity sha512-R+iDmWdCzCp/6T2vOC3GpCbhPArvShXlStAxcw0UcocS/7GTREHcFyH6+xFlXAXMSgp6F+Ab9Q26Fjdu+2a4ww== +"@types/rtlcss@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@types/rtlcss/-/rtlcss-3.5.0.tgz#9e51e49fdee6124bb759791be962f9abc6664715" + integrity sha512-ywnxs9c/bRgEYhSs1IEs9oEznP9aAFHV6689JKFDpeeJBFpUY8m1LqFL+RHmCfl7zU8F7S7+Af65UdFMiO06oQ== dependencies: postcss "^8.2.x" @@ -3827,14 +3828,14 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^5.24.0": - version "5.24.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.24.0.tgz#59f9ed21fc4490444b75b250e4ce81e4b7bba18f" - integrity sha512-6bqFGk6wa9+6RrU++eLknKyDqXU1Oc8nyoLu5a1fU17PNRJd9UBr56rMF7c4DRaRtnarlkQ4jwxUbvBo8cNlpw== +"@typescript-eslint/eslint-plugin@^5.25.0": + version "5.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.25.0.tgz#e8ce050990e4d36cc200f2de71ca0d3eb5e77a31" + integrity sha512-icYrFnUzvm+LhW0QeJNKkezBu6tJs9p/53dpPLFH8zoM9w1tfaKzVurkPotEpAqQ8Vf8uaFyL5jHd0Vs6Z0ZQg== dependencies: - "@typescript-eslint/scope-manager" "5.24.0" - "@typescript-eslint/type-utils" "5.24.0" - "@typescript-eslint/utils" "5.24.0" + "@typescript-eslint/scope-manager" "5.25.0" + "@typescript-eslint/type-utils" "5.25.0" + "@typescript-eslint/utils" "5.25.0" debug "^4.3.4" functional-red-black-tree "^1.0.1" ignore "^5.2.0" @@ -3842,69 +3843,69 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/parser@^5.24.0": - version "5.24.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.24.0.tgz#fe6563483f264aa9fe48b7fd9b329aa5f985841a" - integrity sha512-4q29C6xFYZ5B2CXqSBBdcS0lPyfM9M09DoQLtHS5kf+WbpV8pBBhHDLNhXfgyVwFnhrhYzOu7xmg02DzxeF2Uw== +"@typescript-eslint/parser@^5.25.0": + version "5.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.25.0.tgz#fb533487147b4b9efd999a4d2da0b6c263b64f7f" + integrity sha512-r3hwrOWYbNKP1nTcIw/aZoH+8bBnh/Lh1iDHoFpyG4DnCpvEdctrSl6LOo19fZbzypjQMHdajolxs6VpYoChgA== dependencies: - "@typescript-eslint/scope-manager" "5.24.0" - "@typescript-eslint/types" "5.24.0" - "@typescript-eslint/typescript-estree" "5.24.0" + "@typescript-eslint/scope-manager" "5.25.0" + "@typescript-eslint/types" "5.25.0" + "@typescript-eslint/typescript-estree" "5.25.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.24.0": - version "5.24.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.24.0.tgz#ac8c4d65064204b596909c204fe9b7e30c3f51b2" - integrity sha512-WpMWipcDzGmMzdT7NtTjRXFabx10WleLUGrJpuJLGaxSqpcyq5ACpKSD5VE40h2nz3melQ91aP4Du7lh9FliCA== +"@typescript-eslint/scope-manager@5.25.0": + version "5.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.25.0.tgz#e78f1484bca7e484c48782075219c82c6b77a09f" + integrity sha512-p4SKTFWj+2VpreUZ5xMQsBMDdQ9XdRvODKXN4EksyBjFp2YvQdLkyHqOffakYZPuWJUDNu3jVXtHALDyTv3cww== dependencies: - "@typescript-eslint/types" "5.24.0" - "@typescript-eslint/visitor-keys" "5.24.0" + "@typescript-eslint/types" "5.25.0" + "@typescript-eslint/visitor-keys" "5.25.0" -"@typescript-eslint/type-utils@5.24.0": - version "5.24.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.24.0.tgz#aad47227e89cceec9175b1a67df69ebcd79f9421" - integrity sha512-uGi+sQiM6E5CeCZYBXiaIvIChBXru4LZ1tMoeKbh1Lze+8BO9syUG07594C4lvN2YPT4KVeIupOJkVI+9/DAmQ== +"@typescript-eslint/type-utils@5.25.0": + version "5.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.25.0.tgz#5750d26a5db4c4d68d511611e0ada04e56f613bc" + integrity sha512-B6nb3GK3Gv1Rsb2pqalebe/RyQoyG/WDy9yhj8EE0Ikds4Xa8RR28nHz+wlt4tMZk5bnAr0f3oC8TuDAd5CPrw== dependencies: - "@typescript-eslint/utils" "5.24.0" + "@typescript-eslint/utils" "5.25.0" debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/types@5.24.0": - version "5.24.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.24.0.tgz#565ff94a4b89073265e27514dc65225d18aabe6c" - integrity sha512-Tpg1c3shTDgTmZd3qdUyd+16r/pGmVaVEbLs+ufuWP0EruVbUiEOmpBBQxBb9a8iPRxi8Rb2oiwOxuZJzSq11A== +"@typescript-eslint/types@5.25.0": + version "5.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.25.0.tgz#dee51b1855788b24a2eceeae54e4adb89b088dd8" + integrity sha512-7fWqfxr0KNHj75PFqlGX24gWjdV/FDBABXL5dyvBOWHpACGyveok8Uj4ipPX/1fGU63fBkzSIycEje4XsOxUFA== -"@typescript-eslint/typescript-estree@5.24.0": - version "5.24.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.24.0.tgz#30b9cbc1af475b9e02aca34cfe9ba9e1bb820143" - integrity sha512-zcor6vQkQmZAQfebSPVwUk/FD+CvnsnlfKXYeQDsWXRF+t7SBPmIfNia/wQxCSeu1h1JIjwV2i9f5/DdSp/uDw== +"@typescript-eslint/typescript-estree@5.25.0": + version "5.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.25.0.tgz#a7ab40d32eb944e3fb5b4e3646e81b1bcdd63e00" + integrity sha512-MrPODKDych/oWs/71LCnuO7NyR681HuBly2uLnX3r5i4ME7q/yBqC4hW33kmxtuauLTM0OuBOhhkFaxCCOjEEw== dependencies: - "@typescript-eslint/types" "5.24.0" - "@typescript-eslint/visitor-keys" "5.24.0" + "@typescript-eslint/types" "5.25.0" + "@typescript-eslint/visitor-keys" "5.25.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.24.0", "@typescript-eslint/utils@^5.10.0", "@typescript-eslint/utils@^5.24.0": - version "5.24.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.24.0.tgz#7a854028040a305ddea129328e45cfb2c6406e75" - integrity sha512-K05sbWoeCBJH8KXu6hetBJ+ukG0k2u2KlgD3bN+v+oBKm8adJqVHpSSLHNzqyuv0Lh4GVSAUgZ5lB4icmPmWLw== +"@typescript-eslint/utils@5.25.0", "@typescript-eslint/utils@^5.10.0", "@typescript-eslint/utils@^5.25.0": + version "5.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.25.0.tgz#272751fd737733294b4ab95e16c7f2d4a75c2049" + integrity sha512-qNC9bhnz/n9Kba3yI6HQgQdBLuxDoMgdjzdhSInZh6NaDnFpTUlwNGxplUFWfY260Ya0TRPvkg9dd57qxrJI9g== dependencies: "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.24.0" - "@typescript-eslint/types" "5.24.0" - "@typescript-eslint/typescript-estree" "5.24.0" + "@typescript-eslint/scope-manager" "5.25.0" + "@typescript-eslint/types" "5.25.0" + "@typescript-eslint/typescript-estree" "5.25.0" eslint-scope "^5.1.1" eslint-utils "^3.0.0" -"@typescript-eslint/visitor-keys@5.24.0": - version "5.24.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.24.0.tgz#bb3e9a788ccd50c53e03557e4e203599880c3123" - integrity sha512-qzGwSXMyMnogcAo+/2fU+jhlPPVMXlIH2PeAonIKjJSoDKl1+lJVvG5Z5Oud36yU0TWK2cs1p/FaSN5J2OUFYA== +"@typescript-eslint/visitor-keys@5.25.0": + version "5.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.25.0.tgz#33aa5fdcc5cedb9f4c8828c6a019d58548d4474b" + integrity sha512-yd26vFgMsC4h2dgX4+LR+GeicSKIfUvZREFLf3DDjZPtqgLx5AJZr6TetMNwFP9hcKreTTeztQYBTNbNoOycwA== dependencies: - "@typescript-eslint/types" "5.24.0" + "@typescript-eslint/types" "5.25.0" eslint-visitor-keys "^3.3.0" "@webassemblyjs/ast@1.11.1": @@ -4197,25 +4198,25 @@ algoliasearch-helper@^3.8.2: dependencies: "@algolia/events" "^4.0.1" -algoliasearch@^4.0.0, algoliasearch@^4.13.0: - version "4.13.0" - resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.13.0.tgz#e36611fda82b1fc548c156ae7929a7f486e4b663" - integrity sha512-oHv4faI1Vl2s+YC0YquwkK/TsaJs79g2JFg5FDm2rKN12VItPTAeQ7hyJMHarOPPYuCnNC5kixbtcqvb21wchw== - dependencies: - "@algolia/cache-browser-local-storage" "4.13.0" - "@algolia/cache-common" "4.13.0" - "@algolia/cache-in-memory" "4.13.0" - "@algolia/client-account" "4.13.0" - "@algolia/client-analytics" "4.13.0" - "@algolia/client-common" "4.13.0" - "@algolia/client-personalization" "4.13.0" - "@algolia/client-search" "4.13.0" - "@algolia/logger-common" "4.13.0" - "@algolia/logger-console" "4.13.0" - "@algolia/requester-browser-xhr" "4.13.0" - "@algolia/requester-common" "4.13.0" - "@algolia/requester-node-http" "4.13.0" - "@algolia/transporter" "4.13.0" +algoliasearch@^4.0.0, algoliasearch@^4.13.1: + version "4.13.1" + resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.13.1.tgz#54195c41c9e4bd13ed64982248cf49d4576974fe" + integrity sha512-dtHUSE0caWTCE7liE1xaL+19AFf6kWEcyn76uhcitWpntqvicFHXKFoZe5JJcv9whQOTRM6+B8qJz6sFj+rDJA== + dependencies: + "@algolia/cache-browser-local-storage" "4.13.1" + "@algolia/cache-common" "4.13.1" + "@algolia/cache-in-memory" "4.13.1" + "@algolia/client-account" "4.13.1" + "@algolia/client-analytics" "4.13.1" + "@algolia/client-common" "4.13.1" + "@algolia/client-personalization" "4.13.1" + "@algolia/client-search" "4.13.1" + "@algolia/logger-common" "4.13.1" + "@algolia/logger-console" "4.13.1" + "@algolia/requester-browser-xhr" "4.13.1" + "@algolia/requester-common" "4.13.1" + "@algolia/requester-node-http" "4.13.1" + "@algolia/transporter" "4.13.1" ansi-align@^3.0.0, ansi-align@^3.0.1: version "3.0.1" @@ -4366,7 +4367,7 @@ array-ify@^1.0.0: resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== -array-includes@^3.1.4: +array-includes@^3.1.4, array-includes@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb" integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== @@ -4407,7 +4408,7 @@ array.prototype.flat@^1.2.5: es-abstract "^1.19.2" es-shim-unscopables "^1.0.0" -array.prototype.flatmap@^1.2.5: +array.prototype.flatmap@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz#a7e8ed4225f4788a70cd910abcf0791e76a5534f" integrity sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg== @@ -4417,6 +4418,17 @@ array.prototype.flatmap@^1.2.5: es-abstract "^1.19.2" es-shim-unscopables "^1.0.0" +array.prototype.reduce@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz#8167e80089f78bff70a99e20bd4201d4663b0a6f" + integrity sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.2" + es-array-method-boxes-properly "^1.0.0" + is-string "^1.0.7" + arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -5152,16 +5164,17 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -cheerio-select@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-1.6.0.tgz#489f36604112c722afa147dedd0d4609c09e1696" - integrity sha512-eq0GdBvxVFbqWgmCm7M3XGs1I8oLy/nExUnh6oLqmBditPO9AqQJrkslDpMun/hZ0yyTs8L0m85OHp4ho6Qm9g== +cheerio-select@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4" + integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g== dependencies: - css-select "^4.3.0" - css-what "^6.0.1" - domelementtype "^2.2.0" - domhandler "^4.3.1" - domutils "^2.8.0" + boolbase "^1.0.0" + css-select "^5.1.0" + css-what "^6.1.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + domutils "^3.0.1" cheerio@^0.22.0: version "0.22.0" @@ -5185,18 +5198,19 @@ cheerio@^0.22.0: lodash.reject "^4.4.0" lodash.some "^4.4.0" -cheerio@^1.0.0-rc.10: - version "1.0.0-rc.10" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.10.tgz#2ba3dcdfcc26e7956fc1f440e61d51c643379f3e" - integrity sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw== - dependencies: - cheerio-select "^1.5.0" - dom-serializer "^1.3.2" - domhandler "^4.2.0" - htmlparser2 "^6.1.0" - parse5 "^6.0.1" - parse5-htmlparser2-tree-adapter "^6.0.1" - tslib "^2.2.0" +cheerio@^1.0.0-rc.11: + version "1.0.0-rc.11" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.11.tgz#1be84be1a126958366bcc57a11648cd9b30a60c2" + integrity sha512-bQwNaDIBKID5ts/DsdhxrjqFXYfLw4ste+wMKqWA8DyKcS4qwsPP4Bk8ZNaTJjvpiX/qW3BT4sU7d6Bh5i+dag== + dependencies: + cheerio-select "^2.1.0" + dom-serializer "^2.0.0" + domhandler "^5.0.3" + domutils "^3.0.1" + htmlparser2 "^8.0.1" + parse5 "^7.0.0" + parse5-htmlparser2-tree-adapter "^7.0.0" + tslib "^2.4.0" chokidar@^3.4.2, chokidar@^3.5.3: version "3.5.3" @@ -5880,41 +5894,41 @@ crypto-random-string@^2.0.0: resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== -cspell-gitignore@^5.20.0: - version "5.20.0" - resolved "https://registry.yarnpkg.com/cspell-gitignore/-/cspell-gitignore-5.20.0.tgz#0c4f405559383663a9c24fab5cf829e7b19abed5" - integrity sha512-oWzoHcaidX6jFON6vwiH3cA1HqkGmawD1DWt+fPWKrea9/SuTcvFxm+RbqO4DjwXEAMIczyPOWo+SCM0VbcCrA== +cspell-gitignore@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cspell-gitignore/-/cspell-gitignore-6.0.0.tgz#a98a8f5f20e2c8ccab507c9f2ca3658f05a27a7d" + integrity sha512-VngxI9wdb72CWElxGNJQ24MmEewhXNCEkW2Bx5AMOM/vgmuim8JlslEGYWCdN0XqJ4OtOVzIZ2muMV9/Oy5AvQ== dependencies: - cspell-glob "^5.20.0" + cspell-glob "^6.0.0" find-up "^5.0.0" -cspell-glob@^5.20.0: - version "5.20.0" - resolved "https://registry.yarnpkg.com/cspell-glob/-/cspell-glob-5.20.0.tgz#2bda5cc90bc6694ce2eb1a5aaee54196fc9b37a9" - integrity sha512-eyo8NYH4GapHxfilMarwvf1HIyGWT3gWuFlYkmQjYVx3KjzmfR1Y1x9S068wmwjp9kKCu9T6Vj71EGG+9R59Lw== +cspell-glob@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cspell-glob/-/cspell-glob-6.0.0.tgz#ccbfcb7f888683afd6453146f42bb848799bf818" + integrity sha512-H0FiYJm5Zv+HzJseRdNwHQMeJBNC8JqAzBw+5dS78RHzDyU8P3XeFEhUEy2baS2od2zxIRPLvL0/8fBXEzxPhQ== dependencies: micromatch "^4.0.5" -cspell-io@^5.20.0: - version "5.20.0" - resolved "https://registry.yarnpkg.com/cspell-io/-/cspell-io-5.20.0.tgz#2f7fc676a068acc641f3bd77ddca7f72985b6ee5" - integrity sha512-wgqqpVIhtMh+/+3YfHt8cDfrD7OLF+xQlStlURj8AJwEJ0xu16zyI9S5zcig+83+0QyzuMdxfZiMgbdQxWEvOg== +cspell-io@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cspell-io/-/cspell-io-6.0.0.tgz#7895eb184ac475e929950497946cfe73f521ad8e" + integrity sha512-pqrBrb7zW7cIopJ1P+LgHflU1bBg2f1SPmThU+Q8jWPshE3twYfdhwsAy13X/92vZFZa2+qZS4ejSpEC6SO9SQ== -cspell-lib@^5.20.0: - version "5.20.0" - resolved "https://registry.yarnpkg.com/cspell-lib/-/cspell-lib-5.20.0.tgz#0eb5797cb32ce03db7ad7e14649296c434e3d142" - integrity sha512-Fc7+3ExF2pNS8BsQTXSMkhR6ITbpyiMQf+y4ZH/aBml09+O6lrbj4j2tJx/oR4XvDEA8uQkV/5lMGdU+otC1KQ== +cspell-lib@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cspell-lib/-/cspell-lib-6.0.0.tgz#ff9e2f7cc7ba2289035b423108ef160e5f8c8d3f" + integrity sha512-NuPOO0SPckmRCJy3jWrXc7yVfVFrFM9H/rVWBHK1Z8lPFvAD9Y+/q/+Buw7eYIxpAgX3x/t7HU/Xscf0xIQqsQ== dependencies: - "@cspell/cspell-bundled-dicts" "^5.20.0" - "@cspell/cspell-pipe" "^5.20.0" - "@cspell/cspell-types" "^5.20.0" + "@cspell/cspell-bundled-dicts" "^6.0.0" + "@cspell/cspell-pipe" "^6.0.0" + "@cspell/cspell-types" "^6.0.0" clear-module "^4.1.2" comment-json "^4.2.2" configstore "^5.0.1" cosmiconfig "^7.0.1" - cspell-glob "^5.20.0" - cspell-io "^5.20.0" - cspell-trie-lib "^5.20.0" + cspell-glob "^6.0.0" + cspell-io "^6.0.0" + cspell-trie-lib "^6.0.0" fast-equals "^3.0.2" find-up "^5.0.0" fs-extra "^10.1.0" @@ -5925,31 +5939,31 @@ cspell-lib@^5.20.0: vscode-languageserver-textdocument "^1.0.4" vscode-uri "^3.0.3" -cspell-trie-lib@^5.20.0: - version "5.20.0" - resolved "https://registry.yarnpkg.com/cspell-trie-lib/-/cspell-trie-lib-5.20.0.tgz#3a13ba0477a36ecb16311e85b270bcc2b4300f37" - integrity sha512-ET95dJh+OJ04PdLI9dKqAa+dDu47tXcUxCR6uKiZ+qZ18v1Zl986s8q89m9c+xpo7Leqh0rF6Zsw3M9Cjy6Jhw== +cspell-trie-lib@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cspell-trie-lib/-/cspell-trie-lib-6.0.0.tgz#2752e1b128bfe17d1b7d0ea4ba9507134b5bd06a" + integrity sha512-vrYgxw9pohpoZxZ6AYtTNmx4RcDfCIw1v2s2BpDmLcs0t3Js333YLqjd/B78OHIYjEBcGQgLO9Xl0O32dHXbdA== dependencies: - "@cspell/cspell-pipe" "^5.20.0" + "@cspell/cspell-pipe" "^6.0.0" fs-extra "^10.1.0" gensequence "^3.1.1" -cspell@^5.20.0: - version "5.20.0" - resolved "https://registry.yarnpkg.com/cspell/-/cspell-5.20.0.tgz#580909fc1283aeda43f1c583188ea046417d340b" - integrity sha512-lXAS14ZlfJfOI3FgoAAfyl/AlTB8T+ayHmKrHxwuRRUvN4IBT4y8d7tdjWDj7/bsM4u5M5WrlAXg6vXH3Fg5bA== +cspell@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cspell/-/cspell-6.0.0.tgz#358da651b061f25f94e52bb1ceae6bfc49c801ba" + integrity sha512-skfNomVlYXGOe4C9wz0O/B8VlZc9GzpW5QDFHaRMYwWEtuyitN5WevuPMc9bkWbVKV8ghn1sXehBzy85V5PXIQ== dependencies: - "@cspell/cspell-pipe" "^5.20.0" + "@cspell/cspell-pipe" "^6.0.0" chalk "^4.1.2" commander "^9.2.0" - cspell-gitignore "^5.20.0" - cspell-glob "^5.20.0" - cspell-lib "^5.20.0" + cspell-gitignore "^6.0.0" + cspell-glob "^6.0.0" + cspell-lib "^6.0.0" fast-json-stable-stringify "^2.1.0" file-entry-cache "^6.0.1" fs-extra "^10.1.0" get-stdin "^8.0.0" - glob "^8.0.1" + glob "^8.0.3" imurmurhash "^0.1.4" semver "^7.3.7" strip-ansi "^6.0.1" @@ -5991,7 +6005,7 @@ css-minimizer-webpack-plugin@^3.4.1: serialize-javascript "^6.0.0" source-map "^0.6.1" -css-select@^4.1.3, css-select@^4.3.0: +css-select@^4.1.3: version "4.3.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== @@ -6002,6 +6016,17 @@ css-select@^4.1.3, css-select@^4.3.0: domutils "^2.8.0" nth-check "^2.0.1" +css-select@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" + integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== + dependencies: + boolbase "^1.0.0" + css-what "^6.1.0" + domhandler "^5.0.2" + domutils "^3.0.1" + nth-check "^2.0.1" + css-select@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" @@ -6025,7 +6050,7 @@ css-what@2.1: resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== -css-what@^6.0.1: +css-what@^6.0.1, css-what@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== @@ -6035,22 +6060,22 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssnano-preset-advanced@^5.3.4: - version "5.3.4" - resolved "https://registry.yarnpkg.com/cssnano-preset-advanced/-/cssnano-preset-advanced-5.3.4.tgz#91e79c253d3f0176608f7814636242132924195b" - integrity sha512-mZovba9FGPmwGPgeMAE/ChrgmluEFyxQzkGZbBUcDYKfhI263BPV2NSiCyqdy8wSmVYEgyRi8TxiPwI4ZO/yGQ== +cssnano-preset-advanced@^5.3.5: + version "5.3.5" + resolved "https://registry.yarnpkg.com/cssnano-preset-advanced/-/cssnano-preset-advanced-5.3.5.tgz#b01dda0f76ff762b58bccd17c59701176b9be131" + integrity sha512-KgrfLQaTBB4bov/Xsi0+y5iGM5gg5QChP1PTMJ9t7U6p9geKHYcPS9AC6gmfwurm0GKxhTRafDx55E8FKHX8eg== dependencies: autoprefixer "^10.3.7" - cssnano-preset-default "^5.2.8" + cssnano-preset-default "^5.2.9" postcss-discard-unused "^5.1.0" postcss-merge-idents "^5.1.1" postcss-reduce-idents "^5.2.0" postcss-zindex "^5.1.0" -cssnano-preset-default@^5.2.8: - version "5.2.8" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.8.tgz#d7886e8cf6d075ae2298d7526b4cccf0eacdcbdc" - integrity sha512-6xQXUhTAPupvib3KC0Gl0d1jIwGFcJyuWQiMcA6grprGdmIzt1cxG5z78VuZu6DRRS6qin6ETkQsH6ixxb/SQw== +cssnano-preset-default@^5.2.9: + version "5.2.9" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.9.tgz#63f6aa9a9f0b21d9a526371dd308253b656a9784" + integrity sha512-/4qcQcAfFEg+gnXE5NxKmYJ9JcT+8S5SDuJCLYMDN8sM/ymZ+lgLXq5+ohx/7V2brUCkgW2OaoCzOdAN0zvhGw== dependencies: css-declaration-sorter "^6.2.2" cssnano-utils "^3.1.0" @@ -6061,7 +6086,7 @@ cssnano-preset-default@^5.2.8: postcss-discard-duplicates "^5.1.0" postcss-discard-empty "^5.1.1" postcss-discard-overridden "^5.1.0" - postcss-merge-longhand "^5.1.4" + postcss-merge-longhand "^5.1.5" postcss-merge-rules "^5.1.1" postcss-minify-font-values "^5.1.0" postcss-minify-gradients "^5.1.1" @@ -6087,12 +6112,12 @@ cssnano-utils@^3.1.0: resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== -cssnano@^5.0.6, cssnano@^5.1.8: - version "5.1.8" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.8.tgz#6add8a61c8ae493184689af347e61b1bc7cd57dd" - integrity sha512-5lma/yQlK+6eOHSUqNAS11b4/fbiuasoxmCHoVYxSg6lQsyX7bGGIqiLi4o3Pe2CrUTrgcD2udW7JIgzC2806g== +cssnano@^5.0.6, cssnano@^5.1.9: + version "5.1.9" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.9.tgz#e6cb286c4907cbd55678eb315837a21008be21be" + integrity sha512-hctQHIIeDrfMjq0bQhoVmRVaSeNNOGxkvkKVOcKpJzLr09wlRrZWH4GaYudp0aszpW8wJeaO5/yBmID9n7DNCg== dependencies: - cssnano-preset-default "^5.2.8" + cssnano-preset-default "^5.2.9" lilconfig "^2.0.3" yaml "^1.10.2" @@ -6459,7 +6484,7 @@ dom-serializer@0: domelementtype "^2.0.1" entities "^2.0.0" -dom-serializer@^1.0.1, dom-serializer@^1.3.2: +dom-serializer@^1.0.1: version "1.4.1" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== @@ -6468,6 +6493,15 @@ dom-serializer@^1.0.1, dom-serializer@^1.3.2: domhandler "^4.2.0" entities "^2.0.0" +dom-serializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.2" + entities "^4.2.0" + dom-serializer@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" @@ -6481,7 +6515,7 @@ domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== -domelementtype@^2.0.1, domelementtype@^2.2.0: +domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== @@ -6507,6 +6541,13 @@ domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: dependencies: domelementtype "^2.2.0" +domhandler@^5.0.1, domhandler@^5.0.2, domhandler@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== + dependencies: + domelementtype "^2.3.0" + domutils@1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" @@ -6532,6 +6573,15 @@ domutils@^2.5.2, domutils@^2.8.0: domelementtype "^2.2.0" domhandler "^4.2.0" +domutils@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.0.1.tgz#696b3875238338cb186b6c0612bd4901c89a4f1c" + integrity sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q== + dependencies: + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.1" + dot-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" @@ -6668,6 +6718,11 @@ entities@^3.0.1: resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== +entities@^4.2.0, entities@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.3.0.tgz#62915f08d67353bb4eb67e3d62641a4059aec656" + integrity sha512-/iP1rZrSEJ0DTlPiX+jbzlA3eVkY/e8L8SozroF395fIqE3TYF/Nz7YOMAawta+vLmyJ/hkGNNPcSbMADCCXbg== + env-paths@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" @@ -6690,7 +6745,7 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5: +es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5, es-abstract@^1.20.1: version "1.20.1" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.1.tgz#027292cd6ef44bd12b1913b828116f54787d1814" integrity sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA== @@ -6719,6 +6774,11 @@ es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19 string.prototype.trimstart "^1.0.5" unbox-primitive "^1.0.2" +es-array-method-boxes-properly@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" + integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== + es-module-lexer@^0.9.0: version "0.9.3" resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" @@ -6884,25 +6944,25 @@ eslint-plugin-react-hooks@^4.5.0: resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.5.0.tgz#5f762dfedf8b2cf431c689f533c9d3fa5dcf25ad" integrity sha512-8k1gRt7D7h03kd+SAAlzXkQwWK22BnK6GKZG+FJA6BAGy22CFvl8kCIXKpVux0cCxMWDQUPqSok0LKaZ0aOcCw== -eslint-plugin-react@^7.29.4: - version "7.29.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz#4717de5227f55f3801a5fd51a16a4fa22b5914d2" - integrity sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ== +eslint-plugin-react@^7.30.0: + version "7.30.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.30.0.tgz#8e7b1b2934b8426ac067a0febade1b13bd7064e3" + integrity sha512-RgwH7hjW48BleKsYyHK5vUAvxtE9SMPDKmcPRQgtRCYaZA0XQPt5FSkrU3nhz5ifzMZcA8opwmRJ2cmOO8tr5A== dependencies: - array-includes "^3.1.4" - array.prototype.flatmap "^1.2.5" + array-includes "^3.1.5" + array.prototype.flatmap "^1.3.0" doctrine "^2.1.0" estraverse "^5.3.0" jsx-ast-utils "^2.4.1 || ^3.0.0" minimatch "^3.1.2" object.entries "^1.1.5" object.fromentries "^2.0.5" - object.hasown "^1.1.0" + object.hasown "^1.1.1" object.values "^1.1.5" prop-types "^15.8.1" resolve "^2.0.0-next.3" semver "^6.3.0" - string.prototype.matchall "^4.0.6" + string.prototype.matchall "^4.0.7" eslint-plugin-regexp@^1.7.0: version "1.7.0" @@ -6951,12 +7011,12 @@ eslint-visitor-keys@^3.3.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== -eslint@^8.15.0: - version "8.15.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.15.0.tgz#fea1d55a7062da48d82600d2e0974c55612a11e9" - integrity sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA== +eslint@^8.16.0: + version "8.16.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.16.0.tgz#6d936e2d524599f2a86c708483b4c372c5d3bbae" + integrity sha512-MBndsoXY/PeVTDJeWsYj7kLZ5hQpJOfMYLsF6LicLHQWbRDG19lK5jOix4DPl8yY4SUFcE3txy86OzFLWT+yoA== dependencies: - "@eslint/eslintrc" "^1.2.3" + "@eslint/eslintrc" "^1.3.0" "@humanwhocodes/config-array" "^0.9.2" ajv "^6.10.0" chalk "^4.0.0" @@ -6974,7 +7034,7 @@ eslint@^8.15.0: file-entry-cache "^6.0.1" functional-red-black-tree "^1.0.1" glob-parent "^6.0.1" - globals "^13.6.0" + globals "^13.15.0" ignore "^5.2.0" import-fresh "^3.0.0" imurmurhash "^0.1.4" @@ -7455,9 +7515,9 @@ flatted@^3.1.0: integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== flow-parser@0.*: - version "0.178.0" - resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.178.0.tgz#85d300e29b146b54cb79e277e092ffd401b05f0c" - integrity sha512-OviMR2Y/sMSyUzR1xLLAmQvmHXTsD1Sq69OTmP5AckVulld7sVNsCfwsw7t3uK00dO9A7k4fD+wodbzzaaEn5g== + version "0.178.1" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.178.1.tgz#4efe62b3c551c615411bd4a75031c881ff53a7da" + integrity sha512-TOvOfZVOhCsKAVU2E4QgFD5vmmF/JWl4bX77H4aYoq8No1mZdtUV8GW6wv03l8N3dmlRqAC5rZcDQ5e8aLDBOg== flux@^4.0.1: version "4.0.3" @@ -7831,7 +7891,7 @@ glob@^7.0.0, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^8.0.1: +glob@^8.0.3: version "8.0.3" resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== @@ -7877,7 +7937,7 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^13.6.0, globals@^13.9.0: +globals@^13.15.0: version "13.15.0" resolved "https://registry.yarnpkg.com/globals/-/globals-13.15.0.tgz#38113218c907d2f7e98658af246cef8b77e90bac" integrity sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog== @@ -8346,6 +8406,16 @@ htmlparser2@^6.1.0: domutils "^2.5.2" entities "^2.0.0" +htmlparser2@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.1.tgz#abaa985474fcefe269bc761a779b544d7196d010" + integrity sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.2" + domutils "^3.0.1" + entities "^4.3.0" + http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" @@ -9771,9 +9841,9 @@ jsprim@^1.2.2: object.assign "^4.1.2" katex@^0.15.0: - version "0.15.3" - resolved "https://registry.yarnpkg.com/katex/-/katex-0.15.3.tgz#08781a7ed26800b20380d959d1ffcd62bca0ec14" - integrity sha512-Al6V7RJsmjklT9QItyHWGaQCt+NYTle1bZwB1e9MR/tLoIT1MXaHy9UpfGSB7eaqDgjjqqRxQOaQGrALCrEyBQ== + version "0.15.6" + resolved "https://registry.yarnpkg.com/katex/-/katex-0.15.6.tgz#c4e2f6ced2ac4de1ef6f737fe7c67d3026baa0e5" + integrity sha512-UpzJy4yrnqnhXvRPhjEuLA4lcPn6eRngixW7Q3TJErjg3Aw2PuLFBzTkdUb89UtumxjhHTqL3a5GDGETMSwgJA== dependencies: commander "^8.0.0" @@ -10387,10 +10457,10 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== -memfs@^3.1.2, memfs@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.1.tgz#b78092f466a0dce054d63d39275b24c71d3f1305" - integrity sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw== +memfs@^3.1.2, memfs@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.3.tgz#fc08ac32363b6ea6c95381cabb4d67838180d4e1" + integrity sha512-eivjfi7Ahr6eQTn44nvTnR60e4a1Fs1Via2kCR5lHo/kyNoiMWaXCNJ/GpSd0ilXas2JSOl9B5FTIhflXu0hlg== dependencies: fs-monkey "1.0.3" @@ -10754,7 +10824,7 @@ mz@^2.4.0: object-assign "^4.0.1" thenify-all "^1.0.0" -nanoid@^3.3.3: +nanoid@^3.3.4: version "3.3.4" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== @@ -10950,11 +11020,6 @@ normalize-range@^0.1.2: resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== -normalize-selector@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/normalize-selector/-/normalize-selector-0.2.0.tgz#d0b145eb691189c63a78d201dc4fdb1293ef0c03" - integrity sha512-dxvWdI8gw6eAvk9BlPffgEoGfM7AdijoCwOEJge3e3ulT2XLgmU7KvvxprOaCu05Q1uGRHmOhHe1r6emZoKyFw== - normalize-url@^4.1.0: version "4.5.1" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" @@ -11139,9 +11204,9 @@ object-copy@^0.1.0: kind-of "^3.0.3" object-inspect@^1.12.0, object-inspect@^1.9.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" - integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== + version "1.12.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.1.tgz#28a661153bad7e470e4b01479ef1cb91ce511191" + integrity sha512-Y/jF6vnvEtOPGiKD1+q+X0CiUYRQtEHp89MLLUJ7TUivtH8Ugn2+3A7Rynqk7BRsAoqeOQWnFnjpDrKSxDgIGA== object-keys@^1.1.1: version "1.1.1" @@ -11184,15 +11249,16 @@ object.fromentries@^2.0.5: es-abstract "^1.19.1" object.getownpropertydescriptors@^2.0.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz#b223cf38e17fefb97a63c10c91df72ccb386df9e" - integrity sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw== + version "2.1.4" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz#7965e6437a57278b587383831a9b829455a4bc37" + integrity sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ== dependencies: + array.prototype.reduce "^1.0.4" call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.1.4" + es-abstract "^1.20.1" -object.hasown@^1.1.0: +object.hasown@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.1.tgz#ad1eecc60d03f49460600430d97f23882cf592a3" integrity sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A== @@ -11543,13 +11609,21 @@ parse-url@^6.0.0: parse-path "^4.0.0" protocols "^1.4.0" -parse5-htmlparser2-tree-adapter@^6.0.0, parse5-htmlparser2-tree-adapter@^6.0.1: +parse5-htmlparser2-tree-adapter@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== dependencies: parse5 "^6.0.1" +parse5-htmlparser2-tree-adapter@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz#23c2cc233bcf09bb7beba8b8a69d46b08c62c2f1" + integrity sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g== + dependencies: + domhandler "^5.0.2" + parse5 "^7.0.0" + parse5@6.0.1, parse5@^6.0.0, parse5@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" @@ -11560,6 +11634,13 @@ parse5@^5.0.0, parse5@^5.1.1: resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== +parse5@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.0.0.tgz#51f74a5257f5fcc536389e8c2d0b3802e1bfa91a" + integrity sha512-y/t8IXSPWTuRZqXc0ajH/UwDj4mnqLEbSttNbThcFhGrZuOyoyvNBO85PBp2jQa55wY9d07PBNjsK8ZP3K5U6g== + dependencies: + entities "^4.3.0" + parseurl@~1.3.2, parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" @@ -11811,10 +11892,10 @@ postcss-merge-idents@^5.1.1: cssnano-utils "^3.1.0" postcss-value-parser "^4.2.0" -postcss-merge-longhand@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.4.tgz#0f46f8753989a33260efc47de9a0cdc571f2ec5c" - integrity sha512-hbqRRqYfmXoGpzYKeW0/NCZhvNyQIlQeWVSao5iKWdyx7skLvCfQFGIUsP9NUs3dSbPac2IC4Go85/zG+7MlmA== +postcss-merge-longhand@^5.1.5: + version "5.1.5" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.5.tgz#b0e03bee3b964336f5f33c4fc8eacae608e91c05" + integrity sha512-NOG1grw9wIO+60arKa2YYsrbgvP6tp+jqc7+ZD5/MalIw234ooH2C6KlR6FEn4yle7GqZoBxSK1mLBE9KPur6w== dependencies: postcss-value-parser "^4.2.0" stylehacks "^5.1.0" @@ -12040,12 +12121,12 @@ postcss@^7.0.18, postcss@^7.0.39: picocolors "^0.2.1" source-map "^0.6.1" -postcss@^8.2.x, postcss@^8.3.11, postcss@^8.3.5, postcss@^8.4.13, postcss@^8.4.7: - version "8.4.13" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.13.tgz#7c87bc268e79f7f86524235821dfdf9f73e5d575" - integrity sha512-jtL6eTBrza5MPzy8oJLFuUscHDXTV5KcLlqAWHl5q5WYRfnNRGSmOZmOZ1T6Gy7A99mOZfqungmZMpMmCVJ8ZA== +postcss@^8.2.x, postcss@^8.3.11, postcss@^8.3.5, postcss@^8.4.13, postcss@^8.4.14, postcss@^8.4.7: + version "8.4.14" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" + integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== dependencies: - nanoid "^3.3.3" + nanoid "^3.3.4" picocolors "^1.0.0" source-map-js "^1.0.2" @@ -12503,23 +12584,23 @@ react-router-config@^5.1.1: dependencies: "@babel/runtime" "^7.1.2" -react-router-dom@^5.2.0: - version "5.3.2" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.2.tgz#93a82c95732963d137c02b3aee0505956baeb69e" - integrity sha512-j8sAq4YdWsrkM2DfDX26GnjtDKWUSd65LzHyBz8NcgFcK0ct7oTvYlwhOr532xpXsYP1HONq6QqUGA7GhbAY5w== +react-router-dom@^5.3.3: + version "5.3.3" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.3.tgz#8779fc28e6691d07afcaf98406d3812fe6f11199" + integrity sha512-Ov0tGPMBgqmbu5CDmN++tv2HQ9HlWDuWIIqn4b88gjlAN5IHI+4ZUZRcpz9Hl0azFIwihbLDYw1OiHGRo7ZIng== dependencies: "@babel/runtime" "^7.12.13" history "^4.9.0" loose-envify "^1.3.1" prop-types "^15.6.2" - react-router "5.3.2" + react-router "5.3.3" tiny-invariant "^1.0.2" tiny-warning "^1.0.0" -react-router@5.3.2, react-router@^5.2.0: - version "5.3.2" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.3.2.tgz#87614394781e75cc6aa3b61cdfd147a1361cd890" - integrity sha512-GlsSUckZ4JthgsW5lV9oSCs5CoQ7q0t0Ump/Y5YQ8qhiS+WjaAhaoJhc7otpZW9eVhO6N06vYPt40SpEzuuZeg== +react-router@5.3.3, react-router@^5.3.3: + version "5.3.3" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.3.3.tgz#8e3841f4089e728cf82a429d92cdcaa5e4a3a288" + integrity sha512-mzQGUvS3bM84TnbtMYR8ZjKnuPJ71IjSzR+DE6UkUqvN4czWIqEs17yLL8xkAycv4ev0AiN+IGrWu88vJs/p2w== dependencies: "@babel/runtime" "^7.12.13" history "^4.9.0" @@ -12556,13 +12637,13 @@ react-test-renderer@^17.0.2: scheduler "^0.20.2" react-textarea-autosize@^8.3.2: - version "8.3.3" - resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.3.3.tgz#f70913945369da453fd554c168f6baacd1fa04d8" - integrity sha512-2XlHXK2TDxS6vbQaoPbMOfQ8GK7+irc2fVK6QFIcC8GOnH3zI/v481n+j1L0WaPVvKxwesnY93fEfH++sus2rQ== + version "8.3.4" + resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.3.4.tgz#270a343de7ad350534141b02c9cb78903e553524" + integrity sha512-CdtmP8Dc19xL8/R6sWvtknD/eCXkQr30dtvC4VmGInhRsfF8X/ihXCq6+9l9qbxmKRiq407/7z5fxE7cVWQNgQ== dependencies: "@babel/runtime" "^7.10.2" - use-composed-ref "^1.0.0" - use-latest "^1.0.0" + use-composed-ref "^1.3.0" + use-latest "^1.2.1" react-waypoint@^10.1.0: version "10.1.0" @@ -13232,9 +13313,9 @@ rollup-plugin-terser@^7.0.0: terser "^5.0.0" rollup@^2.43.1: - version "2.73.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.73.0.tgz#128fef4b333fd92d02d6929afbb6ee38d7feb32d" - integrity sha512-h/UngC3S4Zt28mB3g0+2YCMegT5yoftnQplwzPqGZcKvlld5e+kT/QRmJiL+qxGyZKOYpgirWGdLyEO1b0dpLQ== + version "2.74.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.74.1.tgz#4fba0ff1c312cc4ee82691b154eee69a0d01929f" + integrity sha512-K2zW7kV8Voua5eGkbnBtWYfMIhYhT9Pel2uhBk2WO5eMee161nPze/XRfvEQPFYz7KgrCCnmh2Wy0AMFLGGmMA== optionalDependencies: fsevents "~2.3.2" @@ -14040,7 +14121,7 @@ string-width@^5.0.0, string-width@^5.0.1: emoji-regex "^9.2.2" strip-ansi "^7.0.1" -string.prototype.matchall@^4.0.6: +string.prototype.matchall@^4.0.6, string.prototype.matchall@^4.0.7: version "4.0.7" resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d" integrity sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg== @@ -14222,10 +14303,10 @@ stylelint-config-standard@^25.0.0: dependencies: stylelint-config-recommended "^7.0.0" -stylelint@^14.8.2: - version "14.8.2" - resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.8.2.tgz#801eef74fe6020611e6a515abb9fc7caeb125793" - integrity sha512-tjDfexCYfoPdl/xcDJ9Fv+Ko9cvzbDnmdiaqEn3ovXHXasi/hbkt5tSjsiReQ+ENqnz0eltaX/AOO+AlzVdcNA== +stylelint@^14.8.3: + version "14.8.3" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.8.3.tgz#25d2df1e010cda52ff56327059d1ce25319109be" + integrity sha512-aLpskXwSgFEBYbFRKA/BfuyYMGuXNtn2t5GqoffNPSezvw97x/vVNWcZNF0+cwt+LBjfvyq9/MRE3OjInGRgNA== dependencies: balanced-match "^2.0.0" colord "^2.9.2" @@ -14250,7 +14331,6 @@ stylelint@^14.8.2: meow "^9.0.0" micromatch "^4.0.5" normalize-path "^3.0.0" - normalize-selector "^0.2.0" picocolors "^1.0.0" postcss "^8.4.13" postcss-media-query-parser "^0.2.3" @@ -14736,7 +14816,7 @@ tslib@^1.8.1, tslib@^1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.2.0, tslib@^2.4.0: +tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== @@ -15203,7 +15283,7 @@ url-parse-lax@^3.0.0: dependencies: prepend-http "^2.0.0" -use-composed-ref@^1.0.0: +use-composed-ref@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.3.0.tgz#3d8104db34b7b264030a9d916c5e94fbe280dbda" integrity sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ== @@ -15213,7 +15293,7 @@ use-isomorphic-layout-effect@^1.1.1: resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb" integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== -use-latest@^1.0.0: +use-latest@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/use-latest/-/use-latest-1.2.1.tgz#d13dfb4b08c28e3e33991546a2cee53e14038cf2" integrity sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw== @@ -15481,12 +15561,12 @@ webpack-bundle-analyzer@^4.5.0: ws "^7.3.1" webpack-dev-middleware@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz#aa079a8dedd7e58bfeab358a9af7dab304cee57f" - integrity sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg== + version "5.3.3" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz#efae67c2793908e7311f1d9b06f2a08dcc97e51f" + integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA== dependencies: colorette "^2.0.10" - memfs "^3.4.1" + memfs "^3.4.3" mime-types "^2.1.31" range-parser "^1.2.1" schema-utils "^4.0.0" From 5207e2529197fac344d35354539a7290c021d7ed Mon Sep 17 00:00:00 2001 From: Jeremy <105452084+jrmyw92@users.noreply.github.com> Date: Sun, 22 May 2022 00:14:18 -0400 Subject: [PATCH 30/32] docs: add Avana Wallet to showcase (#7460) * Added Avana Wallet https://docs.avanawallet.com implements Docusaurus 2.0 * Update users.tsx * Added Avana Wallet showcase png * Update users.tsx * optimize image Co-authored-by: Joshua Chen <sidachen2003@gmail.com> --- website/src/data/showcase/avana-wallet.png | Bin 0 -> 15354 bytes website/src/data/users.tsx | 9 +++++++++ 2 files changed, 9 insertions(+) create mode 100644 website/src/data/showcase/avana-wallet.png diff --git a/website/src/data/showcase/avana-wallet.png b/website/src/data/showcase/avana-wallet.png new file mode 100644 index 0000000000000000000000000000000000000000..e1437e4d3cb660d4342b46bfa75a5737270c187d GIT binary patch literal 15354 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 literal 0 HcmV?d00001 diff --git a/website/src/data/users.tsx b/website/src/data/users.tsx index 6bd9f3400631..88e6dffe9df8 100644 --- a/website/src/data/users.tsx +++ b/website/src/data/users.tsx @@ -229,6 +229,15 @@ const Users: User[] = [ source: 'https://github.com/attobot-discord/website', tags: ['opensource'], }, + { + title: 'Avana Wallet', + description: + 'Solana blockchain non-custodial wallet that connects you to Web3 dapps, DeFi, GameFi and NFT marketplaces.', + preview: require('./showcase/avana-wallet.png'), + website: 'https://docs.avanawallet.com/', + source: null, + tags: ['product'], + }, { title: 'AvN Gateway', description: From 6e62bba30f9c5826d5a898d1eb3fe779e7087eb4 Mon Sep 17 00:00:00 2001 From: Joshua Chen <sidachen2003@gmail.com> Date: Sun, 22 May 2022 19:13:28 +0800 Subject: [PATCH 31/32] fix(utils): fix Markdown link replacement when link text is same as href (#7464) --- .../src/__tests__/__snapshots__/markdownLinks.test.ts.snap | 6 +++--- .../docusaurus-utils/src/__tests__/markdownLinks.test.ts | 1 - packages/docusaurus-utils/src/markdownLinks.ts | 5 ++++- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/docusaurus-utils/src/__tests__/__snapshots__/markdownLinks.test.ts.snap b/packages/docusaurus-utils/src/__tests__/__snapshots__/markdownLinks.test.ts.snap index 1ff0a5351c06..f42727544ff0 100644 --- a/packages/docusaurus-utils/src/__tests__/__snapshots__/markdownLinks.test.ts.snap +++ b/packages/docusaurus-utils/src/__tests__/__snapshots__/markdownLinks.test.ts.snap @@ -102,10 +102,10 @@ exports[`replaceMarkdownLinks replaces links with same title as URL 1`] = ` { "brokenMarkdownLinks": [], "newContent": " -[/docs/foo](foo.md) -[/docs/foo](./foo.md) [foo.md](/docs/foo) -[.//docs/foo](foo.md) +[./foo.md](/docs/foo) +[foo.md](/docs/foo) +[./foo.md](/docs/foo) ", } `; diff --git a/packages/docusaurus-utils/src/__tests__/markdownLinks.test.ts b/packages/docusaurus-utils/src/__tests__/markdownLinks.test.ts index 866e3594d47a..46df9f1e6629 100644 --- a/packages/docusaurus-utils/src/__tests__/markdownLinks.test.ts +++ b/packages/docusaurus-utils/src/__tests__/markdownLinks.test.ts @@ -204,7 +204,6 @@ The following operations are defined for [URI]s: ).toMatchSnapshot(); }); - // FIXME it('replaces links with same title as URL', () => { expect( replaceMarkdownLinks({ diff --git a/packages/docusaurus-utils/src/markdownLinks.ts b/packages/docusaurus-utils/src/markdownLinks.ts index c83bffeb406c..af322fe840d2 100644 --- a/packages/docusaurus-utils/src/markdownLinks.ts +++ b/packages/docusaurus-utils/src/markdownLinks.ts @@ -137,7 +137,10 @@ export function replaceMarkdownLinks<T extends ContentPaths>({ .split('/') .map((part) => part.replace(/\s/g, '%20')) .join('/'); - modifiedLine = modifiedLine.replace(mdLink, encodedPermalink); + modifiedLine = modifiedLine.replace( + mdMatch[0]!, + mdMatch[0]!.replace(mdLink, encodedPermalink), + ); // Adjust the lastIndex to avoid passing over the next link if the // newly replaced URL is shorter. mdRegex.lastIndex += encodedPermalink.length - mdLink.length; From 89b0fff128d2272714f786b4286d49a410268928 Mon Sep 17 00:00:00 2001 From: Joshua Chen <sidachen2003@gmail.com> Date: Mon, 23 May 2022 00:30:32 +0800 Subject: [PATCH 32/32] refactor: reduce number of leaked anys (#7465) --- __tests__/validate-package-json.test.ts | 6 ++++- __tests__/validate-tsconfig.test.ts | 6 ++++- packages/create-docusaurus/src/index.ts | 26 +++++++++---------- packages/docusaurus-mdx-loader/src/loader.ts | 14 ++++++---- .../remark/headings/__tests__/index.test.ts | 5 ++-- .../src/index.d.ts | 2 ++ .../src/options.ts | 8 ++++-- .../docusaurus-plugin-content-docs/src/cli.ts | 4 +-- .../src/index.ts | 2 +- .../src/options.ts | 2 +- .../src/versions/files.ts | 2 +- .../src/theme/DebugJsonView/index.tsx | 5 ++-- .../docusaurus-plugin-pwa/src/registerSw.ts | 2 +- .../src/createSitemap.ts | 2 +- .../src/theme/Tabs/index.tsx | 6 +++-- .../src/components/Collapsible/index.tsx | 6 ++--- .../src/utils/docsUtils.tsx | 2 +- .../src/utils.ts | 2 +- .../src/JoiFrontMatter.ts | 2 +- .../src/validationSchemas.ts | 6 ++--- packages/docusaurus-utils/src/constants.ts | 5 ++-- .../docusaurus-utils/src/markdownUtils.ts | 5 +++- packages/docusaurus/src/babel/preset.ts | 3 ++- .../src/client/PendingNavigation.tsx | 2 +- packages/docusaurus/src/client/preload.ts | 5 +--- .../client/theme-fallback/Loading/index.tsx | 2 +- packages/docusaurus/src/commands/start.ts | 2 +- .../src/commands/swizzle/prompts.ts | 18 ++++++------- packages/docusaurus/src/server/config.ts | 2 +- .../docusaurus/src/server/configValidation.ts | 10 +++---- packages/docusaurus/src/server/getHostPort.ts | 4 +-- .../docusaurus/src/server/siteMetadata.ts | 4 +-- .../src/server/translations/translations.ts | 2 +- .../translations/translationsExtractor.ts | 10 ++++--- packages/lqip-loader/package.json | 1 + packages/lqip-loader/src/index.ts | 2 +- packages/lqip-loader/src/lqip.ts | 4 +-- website/community/4-canary/Versions.tsx | 12 +++++---- yarn.lock | 7 +++++ 39 files changed, 121 insertions(+), 89 deletions(-) diff --git a/__tests__/validate-package-json.test.ts b/__tests__/validate-package-json.test.ts index 31bd4e8b5e8d..ef18176ecd92 100644 --- a/__tests__/validate-package-json.test.ts +++ b/__tests__/validate-package-json.test.ts @@ -28,7 +28,11 @@ type PackageJsonFile = { async function getPackagesJsonFiles(): Promise<PackageJsonFile[]> { const files = await Globby('packages/*/package.json'); return Promise.all( - files.map((file) => fs.readJSON(file).then((content) => ({file, content}))), + files.map((file) => + fs + .readJSON(file) + .then((content: PackageJsonFile['content']) => ({file, content})), + ), ); } diff --git a/__tests__/validate-tsconfig.test.ts b/__tests__/validate-tsconfig.test.ts index 7a80816b7a98..e69d170502ba 100644 --- a/__tests__/validate-tsconfig.test.ts +++ b/__tests__/validate-tsconfig.test.ts @@ -22,7 +22,11 @@ type TsconfigFile = { async function getTsconfigFiles(): Promise<TsconfigFile[]> { const files = await Globby('packages/*/tsconfig.*'); return Promise.all( - files.map((file) => fs.readJSON(file).then((content) => ({file, content}))), + files.map((file) => + fs + .readJSON(file) + .then((content: TsconfigFile['content']) => ({file, content})), + ), ); } diff --git a/packages/create-docusaurus/src/index.ts b/packages/create-docusaurus/src/index.ts index cc9c9408ec30..c1f592cefcd1 100755 --- a/packages/create-docusaurus/src/index.ts +++ b/packages/create-docusaurus/src/index.ts @@ -65,7 +65,7 @@ async function askForPackageManagerChoice(): Promise<PackageManager> { .map((p) => ({title: p, value: p})); return ( - await prompts( + (await prompts( { type: 'select', name: 'packageManager', @@ -77,7 +77,7 @@ async function askForPackageManagerChoice(): Promise<PackageManager> { logger.info`Falling back to name=${defaultPackageManager}`; }, }, - ) + )) as {packageManager: PackageManager} ).packageManager; } @@ -203,7 +203,7 @@ async function getGitCommand(gitStrategy: GitStrategy): Promise<string> { case 'copy': return 'git clone --recursive --depth 1'; case 'custom': { - const {command} = await prompts( + const {command} = (await prompts( { type: 'text', name: 'command', @@ -215,7 +215,7 @@ async function getGitCommand(gitStrategy: GitStrategy): Promise<string> { logger.info`Falling back to code=${'git clone'}`; }, }, - ); + )) as {command: string}; return command ?? 'git clone'; } case 'deep': @@ -245,7 +245,7 @@ async function getSiteName( } return reqName; } - const {siteName} = await prompts( + const {siteName} = (await prompts( { type: 'text', name: 'siteName', @@ -259,7 +259,7 @@ async function getSiteName( process.exit(1); }, }, - ); + )) as {siteName: string}; return siteName; } @@ -324,7 +324,7 @@ async function getSource( const template = cliOptions.gitStrategy ? 'Git repository' : ( - await prompts( + (await prompts( { type: 'select', name: 'template', @@ -337,10 +337,10 @@ async function getSource( process.exit(1); }, }, - ) + )) as {template: Template | 'Git repository' | 'Local template'} ).template; if (template === 'Git repository') { - const {gitRepoUrl} = await prompts( + const {gitRepoUrl} = (await prompts( { type: 'text', name: 'gitRepoUrl', @@ -359,7 +359,7 @@ async function getSource( process.exit(1); }, }, - ); + )) as {gitRepoUrl: string}; let strategy = cliOptions.gitStrategy; if (!strategy) { ({strategy} = await prompts( @@ -393,7 +393,7 @@ async function getSource( strategy: strategy ?? 'deep', }; } else if (template === 'Local template') { - const {templateDir} = await prompts( + const {templateDir} = (await prompts( { type: 'text', name: 'templateDir', @@ -418,7 +418,7 @@ async function getSource( process.exit(1); }, }, - ); + )) as {templateDir: string}; return { type: 'local', path: templateDir, @@ -442,7 +442,7 @@ async function getSource( } async function updatePkg(pkgPath: string, obj: {[key: string]: unknown}) { - const pkg = await fs.readJSON(pkgPath); + const pkg = (await fs.readJSON(pkgPath)) as {[key: string]: unknown}; const newPkg = Object.assign(pkg, obj); await fs.outputFile(pkgPath, `${JSON.stringify(newPkg, null, 2)}\n`); diff --git a/packages/docusaurus-mdx-loader/src/loader.ts b/packages/docusaurus-mdx-loader/src/loader.ts index 06daefccf323..88fa1ecd5bdc 100644 --- a/packages/docusaurus-mdx-loader/src/loader.ts +++ b/packages/docusaurus-mdx-loader/src/loader.ts @@ -92,8 +92,12 @@ async function readMetadataPath(metadataPath: string) { * * `{image: "./myImage.png"}` => `{image: require("./myImage.png")}` */ -function createAssetsExportCode(assets: {[key: string]: unknown}) { - if (Object.keys(assets).length === 0) { +function createAssetsExportCode(assets: unknown) { + if ( + typeof assets !== 'object' || + !assets || + Object.keys(assets).length === 0 + ) { return 'undefined'; } @@ -101,7 +105,7 @@ function createAssetsExportCode(assets: {[key: string]: unknown}) { function createAssetValueCode(assetValue: unknown): string | undefined { if (Array.isArray(assetValue)) { const arrayItemCodes = assetValue.map( - (item) => createAssetValueCode(item) ?? 'undefined', + (item: unknown) => createAssetValueCode(item) ?? 'undefined', ); return `[${arrayItemCodes.join(', ')}]`; } @@ -119,7 +123,7 @@ function createAssetsExportCode(assets: {[key: string]: unknown}) { const assetEntries = Object.entries(assets); const codeLines = assetEntries - .map(([key, value]) => { + .map(([key, value]: [string, unknown]) => { const assetRequireCode = createAssetValueCode(value); return assetRequireCode ? `"${key}": ${assetRequireCode},` : undefined; }) @@ -227,7 +231,7 @@ ${JSON.stringify(frontMatter, null, 2)}`; : undefined; const metadata = metadataJsonString - ? JSON.parse(metadataJsonString) + ? (JSON.parse(metadataJsonString) as {[key: string]: unknown}) : undefined; const assets = diff --git a/packages/docusaurus-mdx-loader/src/remark/headings/__tests__/index.test.ts b/packages/docusaurus-mdx-loader/src/remark/headings/__tests__/index.test.ts index 2f9683e6e8de..f671d6f517f8 100644 --- a/packages/docusaurus-mdx-loader/src/remark/headings/__tests__/index.test.ts +++ b/packages/docusaurus-mdx-loader/src/remark/headings/__tests__/index.test.ts @@ -13,13 +13,14 @@ import removePosition from 'unist-util-remove-position'; import toString from 'mdast-util-to-string'; import visit from 'unist-util-visit'; import slug from '../index'; +import type {Plugin} from 'unified'; -function process(doc, plugins = []) { +function process(doc: string, plugins: Plugin[] = []) { const processor = remark().use({plugins: [...plugins, slug]}); return removePosition(processor.runSync(processor.parse(doc)), true); } -function heading(label, id) { +function heading(label: string, id: string) { return u( 'heading', {depth: 2, data: {id, hProperties: {id}}}, diff --git a/packages/docusaurus-module-type-aliases/src/index.d.ts b/packages/docusaurus-module-type-aliases/src/index.d.ts index a000e03f2c35..ccb4bf5706fc 100644 --- a/packages/docusaurus-module-type-aliases/src/index.d.ts +++ b/packages/docusaurus-module-type-aliases/src/index.d.ts @@ -35,9 +35,11 @@ declare module '@generated/registry' { declare module '@generated/routes' { import type {RouteConfig as RRRouteConfig} from 'react-router-config'; + import type Loadable from 'react-loadable'; type RouteConfig = RRRouteConfig & { path: string; + component: ReturnType<typeof Loadable>; }; const routes: RouteConfig[]; export default routes; diff --git a/packages/docusaurus-plugin-content-blog/src/options.ts b/packages/docusaurus-plugin-content-blog/src/options.ts index baf927b8c671..f6fa74e726bc 100644 --- a/packages/docusaurus-plugin-content-blog/src/options.ts +++ b/packages/docusaurus-plugin-content-blog/src/options.ts @@ -13,7 +13,11 @@ import { URISchema, } from '@docusaurus/utils-validation'; import {GlobExcludeDefault} from '@docusaurus/utils'; -import type {PluginOptions, Options} from '@docusaurus/plugin-content-blog'; +import type { + PluginOptions, + Options, + FeedType, +} from '@docusaurus/plugin-content-blog'; import type {OptionValidationContext} from '@docusaurus/types'; export const DEFAULT_OPTIONS: PluginOptions = { @@ -101,7 +105,7 @@ const PluginOptionSchema = Joi.object<PluginOptions>({ Joi.alternatives().conditional( Joi.string().equal('all', 'rss', 'atom', 'json'), { - then: Joi.custom((val) => + then: Joi.custom((val: FeedType | 'all') => val === 'all' ? ['rss', 'atom', 'json'] : [val], ), }, diff --git a/packages/docusaurus-plugin-content-docs/src/cli.ts b/packages/docusaurus-plugin-content-docs/src/cli.ts index 11fc39b2c400..7156d4c6e49a 100644 --- a/packages/docusaurus-plugin-content-docs/src/cli.ts +++ b/packages/docusaurus-plugin-content-docs/src/cli.ts @@ -53,7 +53,7 @@ async function createVersionedSidebarFile({ // Tests depend on non-default export for mocking. export async function cliDocsVersionCommand( - version: string, + version: unknown, {id: pluginId, path: docsPath, sidebarPath}: PluginOptions, {siteDir, i18n}: LoadContext, ): Promise<void> { @@ -70,7 +70,7 @@ export async function cliDocsVersionCommand( } // Load existing versions. - let versions = []; + let versions: string[] = []; const versionsJSONFile = getVersionsFilePath(siteDir, pluginId); if (await fs.pathExists(versionsJSONFile)) { versions = await fs.readJSON(versionsJSONFile); diff --git a/packages/docusaurus-plugin-content-docs/src/index.ts b/packages/docusaurus-plugin-content-docs/src/index.ts index 422dfcbe3ea9..982895957382 100644 --- a/packages/docusaurus-plugin-content-docs/src/index.ts +++ b/packages/docusaurus-plugin-content-docs/src/index.ts @@ -100,7 +100,7 @@ export default async function pluginContentDocs( .command(command) .arguments('<version>') .description(commandDescription) - .action((version) => { + .action((version: unknown) => { cliDocsVersionCommand(version, options, context); }); }, diff --git a/packages/docusaurus-plugin-content-docs/src/options.ts b/packages/docusaurus-plugin-content-docs/src/options.ts index 047f59ff3940..27b9118a718f 100644 --- a/packages/docusaurus-plugin-content-docs/src/options.ts +++ b/packages/docusaurus-plugin-content-docs/src/options.ts @@ -98,7 +98,7 @@ const OptionsSchema = Joi.object<PluginOptions>({ Joi.function(), // Convert boolean values to functions Joi.alternatives().conditional(Joi.boolean(), { - then: Joi.custom((val) => + then: Joi.custom((val: boolean) => val ? DefaultNumberPrefixParser : DisabledNumberPrefixParser, ), }), diff --git a/packages/docusaurus-plugin-content-docs/src/versions/files.ts b/packages/docusaurus-plugin-content-docs/src/versions/files.ts index 6b7464ee3049..f9ef69c82944 100644 --- a/packages/docusaurus-plugin-content-docs/src/versions/files.ts +++ b/packages/docusaurus-plugin-content-docs/src/versions/files.ts @@ -95,7 +95,7 @@ async function readVersionsFile( ): Promise<string[] | null> { const versionsFilePath = getVersionsFilePath(siteDir, pluginId); if (await fs.pathExists(versionsFilePath)) { - const content = await fs.readJSON(versionsFilePath); + const content: unknown = await fs.readJSON(versionsFilePath); validateVersionNames(content); return content; } diff --git a/packages/docusaurus-plugin-debug/src/theme/DebugJsonView/index.tsx b/packages/docusaurus-plugin-debug/src/theme/DebugJsonView/index.tsx index e6d981234dde..d22d4a015b3c 100644 --- a/packages/docusaurus-plugin-debug/src/theme/DebugJsonView/index.tsx +++ b/packages/docusaurus-plugin-debug/src/theme/DebugJsonView/index.tsx @@ -19,8 +19,9 @@ function BrowserOnlyReactJson(props: ReactJsonViewProps) { return ( <BrowserOnly> {() => { - // eslint-disable-next-line global-require, @typescript-eslint/no-var-requires - const ReactJson = require('react-json-view').default; + const {default: ReactJson} = + // eslint-disable-next-line global-require, @typescript-eslint/no-var-requires + require('react-json-view') as typeof import('react-json-view'); return <ReactJson {...props} />; }} </BrowserOnly> diff --git a/packages/docusaurus-plugin-pwa/src/registerSw.ts b/packages/docusaurus-plugin-pwa/src/registerSw.ts index a215a656aa58..92252cc5177c 100644 --- a/packages/docusaurus-plugin-pwa/src/registerSw.ts +++ b/packages/docusaurus-plugin-pwa/src/registerSw.ts @@ -320,6 +320,6 @@ if (typeof window !== 'undefined') { addLegacyAppInstalledEventsListeners(); // Then try to register the SW using lazy/dynamic imports - registerSW().catch((e) => console.error('registerSW failed', e)); + registerSW().catch((e: unknown) => console.error('registerSW failed', e)); } } diff --git a/packages/docusaurus-plugin-sitemap/src/createSitemap.ts b/packages/docusaurus-plugin-sitemap/src/createSitemap.ts index 366714fd3f9b..052dee692014 100644 --- a/packages/docusaurus-plugin-sitemap/src/createSitemap.ts +++ b/packages/docusaurus-plugin-sitemap/src/createSitemap.ts @@ -35,7 +35,7 @@ export default async function createSitemap( } // https://github.com/staylor/react-helmet-async/pull/167 const meta = head[route]?.meta.toComponent() as unknown as - | ReactElement[] + | ReactElement<{name?: string; content?: string}>[] | undefined; return !meta?.some( (tag) => tag.props.name === 'robots' && tag.props.content === 'noindex', diff --git a/packages/docusaurus-theme-classic/src/theme/Tabs/index.tsx b/packages/docusaurus-theme-classic/src/theme/Tabs/index.tsx index 5ee9649ac226..e81a01d3fc5b 100644 --- a/packages/docusaurus-theme-classic/src/theme/Tabs/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Tabs/index.tsx @@ -25,8 +25,10 @@ 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<TabItemProps> { - return typeof comp.props.value !== 'undefined'; +function isTabItem( + comp: ReactElement<object>, +): comp is ReactElement<TabItemProps> { + return 'value' in comp.props; } function TabsComponent(props: Props): JSX.Element { diff --git a/packages/docusaurus-theme-common/src/components/Collapsible/index.tsx b/packages/docusaurus-theme-common/src/components/Collapsible/index.tsx index 8b88da3c8ceb..b6210a2b3660 100644 --- a/packages/docusaurus-theme-common/src/components/Collapsible/index.tsx +++ b/packages/docusaurus-theme-common/src/components/Collapsible/index.tsx @@ -196,9 +196,7 @@ function CollapsibleBase({ className, disableSSRStyle, }: CollapsibleBaseProps) { - // any because TS is a pain for HTML element refs, see https://twitter.com/sebastienlorber/status/1412784677795110914 - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const collapsibleRef = useRef<any>(null); + const collapsibleRef = useRef<HTMLElement>(null); useCollapseAnimation({collapsibleRef, collapsed, animation}); @@ -206,7 +204,7 @@ function CollapsibleBase({ <As // @ts-expect-error: the "too complicated type" is produced from // "CollapsibleElementType" being a huge union - ref={collapsibleRef} + ref={collapsibleRef as RefObject<never>} // Refs are contravariant, which is not expressible in TS style={disableSSRStyle ? undefined : getSSRStyle(collapsed)} onTransitionEnd={(e: React.TransitionEvent) => { if (e.propertyName !== 'height') { diff --git a/packages/docusaurus-theme-common/src/utils/docsUtils.tsx b/packages/docusaurus-theme-common/src/utils/docsUtils.tsx index fd9cfb7ab141..45d92d093770 100644 --- a/packages/docusaurus-theme-common/src/utils/docsUtils.tsx +++ b/packages/docusaurus-theme-common/src/utils/docsUtils.tsx @@ -318,7 +318,7 @@ export function useDocRouteMetadata({ } // For now, the sidebarName is added as route config: not ideal! - const sidebarName = currentDocRoute.sidebar; + const sidebarName = currentDocRoute.sidebar as string; const sidebarItems = sidebarName ? versionMetadata.docsSidebars[sidebarName] diff --git a/packages/docusaurus-theme-translations/src/utils.ts b/packages/docusaurus-theme-translations/src/utils.ts index da931ef454f8..95cf7f4ec712 100644 --- a/packages/docusaurus-theme-translations/src/utils.ts +++ b/packages/docusaurus-theme-translations/src/utils.ts @@ -23,7 +23,7 @@ import type {TranslationFileContent} from '@docusaurus/types'; async function getPackageCodePath(packageName: string) { const packagePath = path.join(__dirname, '../..', packageName); const packageJsonPath = path.join(packagePath, 'package.json'); - const {main} = await fs.readJSON(packageJsonPath); + const {main} = (await fs.readJSON(packageJsonPath)) as {main: string}; const packageSrcPath = path.join(packagePath, path.dirname(main)); return packageSrcPath; } diff --git a/packages/docusaurus-utils-validation/src/JoiFrontMatter.ts b/packages/docusaurus-utils-validation/src/JoiFrontMatter.ts index 011bccd8796c..b09f528ec14d 100644 --- a/packages/docusaurus-utils-validation/src/JoiFrontMatter.ts +++ b/packages/docusaurus-utils-validation/src/JoiFrontMatter.ts @@ -11,7 +11,7 @@ const JoiFrontMatterString: Joi.Extension = { type: 'string', base: Joi.string(), // Fix Yaml that tries to auto-convert many things to string out of the box - prepare: (value) => { + prepare: (value: unknown) => { if (typeof value === 'number' || value instanceof Date) { return {value: value.toString()}; } diff --git a/packages/docusaurus-utils-validation/src/validationSchemas.ts b/packages/docusaurus-utils-validation/src/validationSchemas.ts index eea887bea2a5..8c6a10e9c00b 100644 --- a/packages/docusaurus-utils-validation/src/validationSchemas.ts +++ b/packages/docusaurus-utils-validation/src/validationSchemas.ts @@ -40,10 +40,10 @@ export const URISchema = Joi.alternatives( Joi.string().uri({allowRelative: true}), // This custom validation logic is required notably because Joi does not // accept paths like /a/b/c ... - Joi.custom((val, helpers) => { + Joi.custom((val: unknown, helpers) => { try { // eslint-disable-next-line no-new - new URL(val); + new URL(String(val)); return val; } catch { return helpers.error('any.invalid'); @@ -55,7 +55,7 @@ export const URISchema = Joi.alternatives( }); export const PathnameSchema = Joi.string() - .custom((val) => { + .custom((val: string) => { if (!isValidPathname(val)) { throw new Error(); } diff --git a/packages/docusaurus-utils/src/constants.ts b/packages/docusaurus-utils/src/constants.ts index a9a91394f48c..be9405eab9bd 100644 --- a/packages/docusaurus-utils/src/constants.ts +++ b/packages/docusaurus-utils/src/constants.ts @@ -17,8 +17,9 @@ export const NODE_MINOR_VERSION = parseInt( ); /** Docusaurus core version. */ -// eslint-disable-next-line global-require, @typescript-eslint/no-var-requires -export const DOCUSAURUS_VERSION = require('../package.json').version; +export const DOCUSAURUS_VERSION = + // eslint-disable-next-line global-require, @typescript-eslint/no-var-requires + (require('../package.json') as {version: string}).version; /** * Can be overridden with cli option `--out-dir`. Code should generally use diff --git a/packages/docusaurus-utils/src/markdownUtils.ts b/packages/docusaurus-utils/src/markdownUtils.ts index a902c6f58fa0..fd11f5e66708 100644 --- a/packages/docusaurus-utils/src/markdownUtils.ts +++ b/packages/docusaurus-utils/src/markdownUtils.ts @@ -280,7 +280,10 @@ This can happen if you use special characters in front matter values (try using } function unwrapMarkdownLinks(line: string): string { - return line.replace(/\[(?<alt>[^\]]+)\]\([^)]+\)/g, (match, p1) => p1); + return line.replace( + /\[(?<alt>[^\]]+)\]\([^)]+\)/g, + (match, p1: string) => p1, + ); } function addHeadingId( diff --git a/packages/docusaurus/src/babel/preset.ts b/packages/docusaurus/src/babel/preset.ts index 3dd351ef9ac5..3d842007757e 100644 --- a/packages/docusaurus/src/babel/preset.ts +++ b/packages/docusaurus/src/babel/preset.ts @@ -53,7 +53,8 @@ function getTransformOptions(isServer: boolean): TransformOptions { // better to explicitly specify the version so that it can reuse the // helper better. See https://github.com/babel/babel/issues/10261 // eslint-disable-next-line @typescript-eslint/no-var-requires, global-require - version: require('@babel/runtime/package.json').version, + version: (require('@babel/runtime/package.json') as {version: string}) + .version, regenerator: true, useESModules: true, // Undocumented option that lets us encapsulate our runtime, ensuring diff --git a/packages/docusaurus/src/client/PendingNavigation.tsx b/packages/docusaurus/src/client/PendingNavigation.tsx index 3c2cca17f7b8..24e1e38faa2d 100644 --- a/packages/docusaurus/src/client/PendingNavigation.tsx +++ b/packages/docusaurus/src/client/PendingNavigation.tsx @@ -70,7 +70,7 @@ class PendingNavigation extends React.Component<Props, State> { this.routeUpdateCleanupCb?.(); this.setState({nextRouteHasLoaded: true}); }) - .catch((e) => console.warn(e)); + .catch((e: unknown) => console.warn(e)); return false; } diff --git a/packages/docusaurus/src/client/preload.ts b/packages/docusaurus/src/client/preload.ts index e77ac998f58d..fec374ad4b6b 100644 --- a/packages/docusaurus/src/client/preload.ts +++ b/packages/docusaurus/src/client/preload.ts @@ -19,8 +19,5 @@ import {matchRoutes} from 'react-router-config'; export default function preload(pathname: string): Promise<void[]> { const matches = matchRoutes(routes, pathname); - return Promise.all( - // @ts-expect-error: ComponentCreator injected this method. - matches.map((match) => match.route.component?.preload?.()), - ); + return Promise.all(matches.map((match) => match.route.component.preload?.())); } diff --git a/packages/docusaurus/src/client/theme-fallback/Loading/index.tsx b/packages/docusaurus/src/client/theme-fallback/Loading/index.tsx index 79a0823c3194..7d47419bb7b3 100644 --- a/packages/docusaurus/src/client/theme-fallback/Loading/index.tsx +++ b/packages/docusaurus/src/client/theme-fallback/Loading/index.tsx @@ -37,7 +37,7 @@ export default function Loading({ maxWidth: '50%', width: '100%', }}> - <p>{error.message}</p> + <p>{String(error)}</p> <div> <button type="button" onClick={retry}> Retry diff --git a/packages/docusaurus/src/commands/start.ts b/packages/docusaurus/src/commands/start.ts index a9e4e1e11e39..a0cae8416493 100644 --- a/packages/docusaurus/src/commands/start.ts +++ b/packages/docusaurus/src/commands/start.ts @@ -78,7 +78,7 @@ export async function start( logger.success`Docusaurus website is running at url=${newOpenUrl}.`; } }) - .catch((err) => { + .catch((err: Error) => { logger.error(err.stack); }); }, 500); diff --git a/packages/docusaurus/src/commands/swizzle/prompts.ts b/packages/docusaurus/src/commands/swizzle/prompts.ts index 6aa1d1e0e9f6..35d85e33875d 100644 --- a/packages/docusaurus/src/commands/swizzle/prompts.ts +++ b/packages/docusaurus/src/commands/swizzle/prompts.ts @@ -14,14 +14,14 @@ import type {SwizzleAction, SwizzleComponentConfig} from '@docusaurus/types'; const ExitTitle = logger.yellow('[Exit]'); export async function askThemeName(themeNames: string[]): Promise<string> { - const {themeName} = await prompts({ + const {themeName} = (await prompts({ type: 'select', name: 'themeName', message: 'Select a theme to swizzle:', choices: themeNames .map((theme) => ({title: theme, value: theme})) .concat({title: ExitTitle, value: '[Exit]'}), - }); + })) as {themeName?: string}; if (!themeName || themeName === '[Exit]') { process.exit(0); } @@ -41,7 +41,7 @@ export async function askComponentName( })}`; } - const {componentName} = await prompts({ + const {componentName} = (await prompts({ type: 'autocomplete', name: 'componentName', message: ` @@ -58,12 +58,12 @@ ${PartiallySafeHint} = not safe for all swizzle actions value: compName, })) .concat({title: ExitTitle, value: '[Exit]'}), - async suggest(input, choices) { + async suggest(input: string, choices) { return choices.filter((choice) => choice.title.toLowerCase().includes(input.toLowerCase()), ); }, - }); + })) as {componentName?: string}; logger.newLine(); if (!componentName || componentName === '[Exit]') { @@ -74,7 +74,7 @@ ${PartiallySafeHint} = not safe for all swizzle actions } export async function askSwizzleDangerousComponent(): Promise<boolean> { - const {switchToDanger} = await prompts({ + const {switchToDanger} = (await prompts({ type: 'select', name: 'switchToDanger', message: `Do you really want to swizzle this unsafe internal component?`, @@ -86,7 +86,7 @@ export async function askSwizzleDangerousComponent(): Promise<boolean> { }, {title: ExitTitle, value: '[Exit]'}, ], - }); + })) as {switchToDanger?: boolean | '[Exit]'}; if (typeof switchToDanger === 'undefined' || switchToDanger === '[Exit]') { return process.exit(0); @@ -98,7 +98,7 @@ export async function askSwizzleDangerousComponent(): Promise<boolean> { export async function askSwizzleAction( componentConfig: SwizzleComponentConfig, ): Promise<SwizzleAction> { - const {action} = await prompts({ + const {action} = (await prompts({ type: 'select', name: 'action', message: `Which swizzle action do you want to do?`, @@ -117,7 +117,7 @@ export async function askSwizzleAction( }, {title: ExitTitle, value: '[Exit]'}, ], - }); + })) as {action?: SwizzleAction | '[Exit]'}; if (typeof action === 'undefined' || action === '[Exit]') { return process.exit(0); diff --git a/packages/docusaurus/src/server/config.ts b/packages/docusaurus/src/server/config.ts index 13ab71215c25..73cccc613654 100644 --- a/packages/docusaurus/src/server/config.ts +++ b/packages/docusaurus/src/server/config.ts @@ -30,7 +30,7 @@ export async function loadSiteConfig({ const importedConfig = importFresh(siteConfigPath); - const loadedConfig = + const loadedConfig: unknown = typeof importedConfig === 'function' ? await importedConfig() : await importedConfig; diff --git a/packages/docusaurus/src/server/configValidation.ts b/packages/docusaurus/src/server/configValidation.ts index d1c009ae66dd..2820e4b44dc3 100644 --- a/packages/docusaurus/src/server/configValidation.ts +++ b/packages/docusaurus/src/server/configValidation.ts @@ -144,9 +144,9 @@ const I18N_CONFIG_SCHEMA = Joi.object<I18nConfig>({ .optional() .default(DEFAULT_I18N_CONFIG); -const SiteUrlSchema = URISchema.required().custom((value, helpers) => { +const SiteUrlSchema = URISchema.required().custom((value: unknown, helpers) => { try { - const {pathname} = new URL(value); + const {pathname} = new URL(String(value)); if (pathname !== '/') { helpers.warn('docusaurus.configValidationWarning', { warningMessage: `the url is not supposed to contain a sub-path like '${pathname}', please use the baseUrl field for sub-paths`, @@ -157,7 +157,7 @@ const SiteUrlSchema = URISchema.required().custom((value, helpers) => { }, 'siteUrlCustomValidation'); // TODO move to @docusaurus/utils-validation -export const ConfigSchema = Joi.object({ +export const ConfigSchema = Joi.object<DocusaurusConfig>({ baseUrl: Joi.string() .required() .regex(/\/$/m) @@ -237,9 +237,7 @@ export const ConfigSchema = Joi.object({ }); // TODO move to @docusaurus/utils-validation -export function validateConfig( - config: Partial<DocusaurusConfig>, -): DocusaurusConfig { +export function validateConfig(config: unknown): DocusaurusConfig { const {error, warning, value} = ConfigSchema.validate(config, { abortEarly: false, }); diff --git a/packages/docusaurus/src/server/getHostPort.ts b/packages/docusaurus/src/server/getHostPort.ts index 40960bdfff9a..4ae80708704f 100644 --- a/packages/docusaurus/src/server/getHostPort.ts +++ b/packages/docusaurus/src/server/getHostPort.ts @@ -70,7 +70,7 @@ async function choosePort( } clearConsole(); const existingProcess = getProcessForPort(defaultPort); - const {shouldChangePort} = await prompts({ + const {shouldChangePort} = (await prompts({ type: 'confirm', name: 'shouldChangePort', message: logger.yellow(`${logger.bold('[WARNING]')} ${message}${ @@ -79,7 +79,7 @@ async function choosePort( Would you like to run the app on another port instead?`), initial: true, - }); + })) as {shouldChangePort: boolean}; return shouldChangePort ? port : null; } catch (err) { logger.error`Could not find an open port at ${host}.`; diff --git a/packages/docusaurus/src/server/siteMetadata.ts b/packages/docusaurus/src/server/siteMetadata.ts index b442eed15292..affcbf7183ec 100644 --- a/packages/docusaurus/src/server/siteMetadata.ts +++ b/packages/docusaurus/src/server/siteMetadata.ts @@ -20,7 +20,7 @@ async function getPackageJsonVersion( ): Promise<string | undefined> { if (await fs.pathExists(packageJsonPath)) { // eslint-disable-next-line @typescript-eslint/no-var-requires, import/no-dynamic-require, global-require - return require(packageJsonPath).version; + return (require(packageJsonPath) as {version?: string}).version; } return undefined; } @@ -29,7 +29,7 @@ async function getPackageJsonName( packageJsonPath: string, ): Promise<string | undefined> { // eslint-disable-next-line @typescript-eslint/no-var-requires, import/no-dynamic-require, global-require - return require(packageJsonPath).name; + return (require(packageJsonPath) as {name?: string}).name; } export async function getPluginVersion( diff --git a/packages/docusaurus/src/server/translations/translations.ts b/packages/docusaurus/src/server/translations/translations.ts index fcbe5f5e1184..fd3fb0305523 100644 --- a/packages/docusaurus/src/server/translations/translations.ts +++ b/packages/docusaurus/src/server/translations/translations.ts @@ -58,7 +58,7 @@ async function readTranslationFileContent( ): Promise<TranslationFileContent | undefined> { if (await fs.pathExists(filePath)) { try { - const content = await fs.readJSON(filePath); + const content: unknown = await fs.readJSON(filePath); ensureTranslationFileContent(content); return content; } catch (err) { diff --git a/packages/docusaurus/src/server/translations/translationsExtractor.ts b/packages/docusaurus/src/server/translations/translationsExtractor.ts index 569c3314b112..6113b23ba933 100644 --- a/packages/docusaurus/src/server/translations/translationsExtractor.ts +++ b/packages/docusaurus/src/server/translations/translationsExtractor.ts @@ -347,10 +347,12 @@ ${sourceWarningPart(path.node)}`, firstArgEvaluated.confident && typeof firstArgEvaluated.value === 'object' ) { - const {message, id, description} = firstArgEvaluated.value; - translations[id ?? message] = { - message: message ?? id, - ...(description && {description}), + const {message, id, description} = firstArgEvaluated.value as { + [propName: string]: unknown; + }; + translations[String(id ?? message)] = { + message: String(message ?? id), + ...(Boolean(description) && {description: String(description)}), }; } else { warnings.push( diff --git a/packages/lqip-loader/package.json b/packages/lqip-loader/package.json index b06ff7780520..5e96bac253fe 100644 --- a/packages/lqip-loader/package.json +++ b/packages/lqip-loader/package.json @@ -27,6 +27,7 @@ "node": ">=14" }, "devDependencies": { + "@types/file-loader": "^5.0.1", "@types/sharp": "^0.30.2" } } diff --git a/packages/lqip-loader/src/index.ts b/packages/lqip-loader/src/index.ts index 112851a34c01..6bb0eb526240 100644 --- a/packages/lqip-loader/src/index.ts +++ b/packages/lqip-loader/src/index.ts @@ -38,7 +38,7 @@ export default async function lqipLoader( } else { if (!contentIsFileExport) { // eslint-disable-next-line global-require, @typescript-eslint/no-var-requires - const fileLoader = require('file-loader'); + const fileLoader = require('file-loader') as typeof import('file-loader'); content = fileLoader.call(this, contentBuffer); } source = content.match( diff --git a/packages/lqip-loader/src/lqip.ts b/packages/lqip-loader/src/lqip.ts index c26956f19e9c..929e53ba6a9e 100644 --- a/packages/lqip-loader/src/lqip.ts +++ b/packages/lqip-loader/src/lqip.ts @@ -9,8 +9,8 @@ import path from 'path'; import logger from '@docusaurus/logger'; import sharp from 'sharp'; -// eslint-disable-next-line @typescript-eslint/no-var-requires -const {version} = require('../package.json'); +// eslint-disable-next-line @typescript-eslint/no-var-requires, global-require +const {version} = require('../package.json') as {version: string}; const ERROR_EXT = `Error: Input file is missing or uses unsupported image format, lqip v${version}`; diff --git a/website/community/4-canary/Versions.tsx b/website/community/4-canary/Versions.tsx index a36907b10cf4..c227a9094e7a 100644 --- a/website/community/4-canary/Versions.tsx +++ b/website/community/4-canary/Versions.tsx @@ -27,11 +27,13 @@ export function VersionsProvider({ useEffect(() => { fetch('https://registry.npmjs.org/@docusaurus/core') .then((res) => res.json()) - .then((data) => { - const name = Object.keys(data.versions).at(-1)!; - const time = data.time[name]; - setCanaryVersion({name, time}); - }); + .then( + (data: {versions: string[]; time: {[versionName: string]: string}}) => { + const name = Object.keys(data.versions).at(-1)!; + const time = data.time[name]; + setCanaryVersion({name, time}); + }, + ); }, []); return <Context.Provider value={canaryVersion}>{children}</Context.Provider>; } diff --git a/yarn.lock b/yarn.lock index d72e94dfefcb..4c52edca54a9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3308,6 +3308,13 @@ "@types/qs" "*" "@types/serve-static" "*" +"@types/file-loader@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@types/file-loader/-/file-loader-5.0.1.tgz#300b7c729e4f0c523783b865b287e3459135bf22" + integrity sha512-FHPPuRb/Ts/25qvNU/mQGwRZUp793nBxYqXd/KwApykxATagqrO4+2EEcGDm/DuXyV/EkOa04umS1DQ8tQSomg== + dependencies: + "@types/webpack" "^4" + "@types/fs-extra@^9.0.13": version "9.0.13" resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45"