diff --git a/.changeset/sharp-mugs-warn.md b/.changeset/sharp-mugs-warn.md new file mode 100644 index 0000000000..27a68caecd --- /dev/null +++ b/.changeset/sharp-mugs-warn.md @@ -0,0 +1,5 @@ +--- +'nextra': patch +--- + +fix reload of nextra layout on route change, reported by sound.xyz diff --git a/.eslintrc.cjs b/.eslintrc.cjs index ac611f5221..d83a995753 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -59,6 +59,7 @@ module.exports = { 'prefer-arrow-callback': ['error', { allowNamedFunctions: true }], 'unicorn/prefer-at': 'error', 'sonarjs/no-small-switch': 'error', + 'prefer-const': ['error', { destructuring: 'all' }], // todo: enable '@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/no-non-null-assertion': 'off', diff --git a/package.json b/package.json index fba63b7fb6..f067a764fc 100644 --- a/package.json +++ b/package.json @@ -25,17 +25,17 @@ "@ianvs/prettier-plugin-sort-imports": "4.1.1", "@next/eslint-plugin-next": "13.5.6", "@rollup/plugin-alias": "^5.0.0", - "@typescript-eslint/eslint-plugin": "6.9.0", - "@typescript-eslint/parser": "6.9.0", - "eslint": "8.52.0", - "eslint-config-prettier": "9.0.0", - "eslint-plugin-import": "2.29.0", + "@typescript-eslint/eslint-plugin": "6.18.1", + "@typescript-eslint/parser": "6.18.1", + "eslint": "8.56.0", + "eslint-config-prettier": "9.1.0", + "eslint-plugin-import": "2.29.1", "eslint-plugin-react": "7.33.2", "eslint-plugin-react-hooks": "4.6.0", - "eslint-plugin-sonarjs": "^0.21.0", - "eslint-plugin-tailwindcss": "3.13.0", + "eslint-plugin-sonarjs": "^0.23.0", + "eslint-plugin-tailwindcss": "3.13.1", "eslint-plugin-typescript-sort-keys": "3.1.0", - "eslint-plugin-unicorn": "48.0.1", + "eslint-plugin-unicorn": "50.0.1", "prettier": "3.0.3", "prettier-plugin-pkg": "0.18.0", "prettier-plugin-tailwindcss": "0.5.6", diff --git a/packages/nextra/src/client/setup-page.tsx b/packages/nextra/src/client/setup-page.tsx index 6448f6e594..d4fdff1fcb 100644 --- a/packages/nextra/src/client/setup-page.tsx +++ b/packages/nextra/src/client/setup-page.tsx @@ -6,10 +6,10 @@ import type { ReactElement, ReactNode } from 'react' import { NEXTRA_INTERNAL } from '../constants.js' import type { - Heading, NextraInternalGlobal, NextraMDXContent, - PageOpts + PageOpts, + UseTOC } from '../types' import { findFolder } from '../utils.js' import { useRouter } from './hooks/index.js' @@ -33,58 +33,58 @@ export function HOC_MDXWrapper( __nextra_internal__.pageMap = pageOpts.pageMap __nextra_internal__.context[route] = { Content: MDXContent, - pageOpts + pageOpts, + useTOC } - return function NextraLayout({ - __nextra_pageMap = [], - __nextra_dynamic_opts, - ...props - }: any): ReactElement { - const __nextra_internal__ = (globalThis as NextraInternalGlobal)[ - NEXTRA_INTERNAL - ] - const { Layout, themeConfig } = __nextra_internal__ - const { route, locale } = useRouter() + return NextraLayout +} - const pageContext = __nextra_internal__.context[route] +function NextraLayout({ + __nextra_pageMap = [], + __nextra_dynamic_opts, + ...props +}: any): ReactElement { + const __nextra_internal__ = (globalThis as NextraInternalGlobal)[ + NEXTRA_INTERNAL + ] + const { Layout, themeConfig } = __nextra_internal__ + const { route, locale } = useRouter() - if (!pageContext) { - throw new Error( - `No content found for the "${route}" route. Please report it as a bug.` - ) - } + const pageContext = __nextra_internal__.context[route] - let { pageOpts } = pageContext + if (!pageContext) { + throw new Error( + `No content found for the "${route}" route. Please report it as a bug.` + ) + } - for (const { route, children } of __nextra_pageMap) { - const paths = route.split('/').slice(locale ? 2 : 1) - const folder = findFolder(pageOpts.pageMap, paths) - folder.children = children - } + let { pageOpts, useTOC, Content } = pageContext - if (__nextra_dynamic_opts) { - const { title, frontMatter } = __nextra_dynamic_opts - pageOpts = { - ...pageOpts, - title, - frontMatter - } - } + for (const { route, children } of __nextra_pageMap) { + const paths = route.split('/').slice(locale ? 2 : 1) + const folder = findFolder(pageOpts.pageMap, paths) + folder.children = children + } - return ( - - - - {/* @ts-expect-error */} - - - - - ) + if (__nextra_dynamic_opts) { + const { title, frontMatter } = __nextra_dynamic_opts + pageOpts = { + ...pageOpts, + title, + frontMatter + } } -} -type UseTOC = (props: Record) => Heading[] + return ( + + + + + + + + ) +} function MDXWrapper({ children, diff --git a/packages/nextra/src/server/loader.ts b/packages/nextra/src/server/loader.ts index ccf55e9cf7..09a6db1a74 100644 --- a/packages/nextra/src/server/loader.ts +++ b/packages/nextra/src/server/loader.ts @@ -222,18 +222,11 @@ import { pageMap } from '${slash(pageMapPath)}' ${isAppFileFromNodeModules ? cssImports : ''} ${finalResult} -const hoc = HOC_MDXWrapper( +export default HOC_MDXWrapper( MDXLayout, '${route}', ${stringifiedPageOpts},pageMap,frontMatter,title}, typeof RemoteContent === 'undefined' ? useTOC : RemoteContent.useTOC -) - -// Exporting Capitalized function make hot works -export default function HOC(props) { - return hoc(props) -} -` - +)` return rawJs } diff --git a/packages/nextra/src/types.ts b/packages/nextra/src/types.ts index 9fd50a21a6..40476a82fa 100644 --- a/packages/nextra/src/types.ts +++ b/packages/nextra/src/types.ts @@ -105,11 +105,20 @@ export type NextraMDXContent = FC<{ children: ReactNode }> +export type UseTOC = (props: Record) => Heading[] + export type NextraInternalGlobal = typeof globalThis & { [NEXTRA_INTERNAL]: { pageMap: PageMapItem[] route: string - context: Record + context: Record< + string, + { + Content: NextraMDXContent + pageOpts: PageOpts + useTOC: UseTOC + } + > Layout: FC themeConfig?: ThemeConfig } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6240b36b8c..6208cadd8b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -35,38 +35,38 @@ importers: specifier: ^5.0.0 version: 5.0.1 '@typescript-eslint/eslint-plugin': - specifier: 6.9.0 - version: 6.9.0(@typescript-eslint/parser@6.9.0)(eslint@8.52.0)(typescript@5.2.2) + specifier: 6.18.1 + version: 6.18.1(@typescript-eslint/parser@6.18.1)(eslint@8.56.0)(typescript@5.2.2) '@typescript-eslint/parser': - specifier: 6.9.0 - version: 6.9.0(eslint@8.52.0)(typescript@5.2.2) + specifier: 6.18.1 + version: 6.18.1(eslint@8.56.0)(typescript@5.2.2) eslint: - specifier: 8.52.0 - version: 8.52.0 + specifier: 8.56.0 + version: 8.56.0 eslint-config-prettier: - specifier: 9.0.0 - version: 9.0.0(eslint@8.52.0) + specifier: 9.1.0 + version: 9.1.0(eslint@8.56.0) eslint-plugin-import: - specifier: 2.29.0 - version: 2.29.0(@typescript-eslint/parser@6.9.0)(eslint@8.52.0) + specifier: 2.29.1 + version: 2.29.1(@typescript-eslint/parser@6.18.1)(eslint@8.56.0) eslint-plugin-react: specifier: 7.33.2 - version: 7.33.2(eslint@8.52.0) + version: 7.33.2(eslint@8.56.0) eslint-plugin-react-hooks: specifier: 4.6.0 - version: 4.6.0(eslint@8.52.0) + version: 4.6.0(eslint@8.56.0) eslint-plugin-sonarjs: - specifier: ^0.21.0 - version: 0.21.0(eslint@8.52.0) + specifier: ^0.23.0 + version: 0.23.0(eslint@8.56.0) eslint-plugin-tailwindcss: - specifier: 3.13.0 - version: 3.13.0(tailwindcss@3.3.3) + specifier: 3.13.1 + version: 3.13.1(tailwindcss@3.3.3) eslint-plugin-typescript-sort-keys: specifier: 3.1.0 - version: 3.1.0(@typescript-eslint/parser@6.9.0)(eslint@8.52.0)(typescript@5.2.2) + version: 3.1.0(@typescript-eslint/parser@6.18.1)(eslint@8.56.0)(typescript@5.2.2) eslint-plugin-unicorn: - specifier: 48.0.1 - version: 48.0.1(eslint@8.52.0) + specifier: 50.0.1 + version: 50.0.1(eslint@8.56.0) prettier: specifier: 3.0.3 version: 3.0.3 @@ -151,7 +151,7 @@ importers: version: file:packages/nextra(@types/react@18.2.31)(next@13.5.6)(react-dom@18.2.0)(react@18.2.0) nextra-theme-blog: specifier: workspace:* - version: file:packages/nextra-theme-blog(next@13.5.6)(nextra@3.0.0-alpha.10)(react-dom@18.2.0)(react@18.2.0) + version: file:packages/nextra-theme-blog(next@13.5.6)(nextra@3.0.0-alpha.11)(react-dom@18.2.0)(react@18.2.0) react: specifier: ^18.2.0 version: 18.2.0 @@ -174,7 +174,7 @@ importers: version: file:packages/nextra(@types/react@18.2.31)(next@13.5.6)(react-dom@18.2.0)(react@18.2.0) nextra-theme-docs: specifier: workspace:* - version: file:packages/nextra-theme-docs(next@13.5.6)(nextra@3.0.0-alpha.10)(react-dom@18.2.0)(react@18.2.0) + version: file:packages/nextra-theme-docs(next@13.5.6)(nextra@3.0.0-alpha.11)(react-dom@18.2.0)(react@18.2.0) react: specifier: ^18.2.0 version: 18.2.0 @@ -206,7 +206,7 @@ importers: version: file:packages/nextra(@types/react@18.2.31)(next@13.5.6)(react-dom@18.2.0)(react@18.2.0) nextra-theme-docs: specifier: workspace:* - version: file:packages/nextra-theme-docs(next@13.5.6)(nextra@3.0.0-alpha.10)(react-dom@18.2.0)(react@18.2.0) + version: file:packages/nextra-theme-docs(next@13.5.6)(nextra@3.0.0-alpha.11)(react-dom@18.2.0)(react@18.2.0) react: specifier: ^18.2.0 version: 18.2.0 @@ -2471,13 +2471,13 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.52.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.52.0 + eslint: 8.56.0 eslint-visitor-keys: 3.4.3 dev: true @@ -2503,8 +2503,8 @@ packages: - supports-color dev: true - /@eslint/eslintrc@2.1.2: - resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 @@ -2525,8 +2525,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@eslint/js@8.52.0: - resolution: {integrity: sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==} + /@eslint/js@8.56.0: + resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -3442,8 +3442,8 @@ packages: - webpack-cli dev: true - /@typescript-eslint/eslint-plugin@6.9.0(@typescript-eslint/parser@6.9.0)(eslint@8.52.0)(typescript@5.2.2): - resolution: {integrity: sha512-lgX7F0azQwRPB7t7WAyeHWVfW1YJ9NIgd9mvGhfQpRY56X6AVf8mwM8Wol+0z4liE7XX3QOt8MN1rUKCfSjRIA==} + /@typescript-eslint/eslint-plugin@6.18.1(@typescript-eslint/parser@6.18.1)(eslint@8.56.0)(typescript@5.2.2): + resolution: {integrity: sha512-nISDRYnnIpk7VCFrGcu1rnZfM1Dh9LRHnfgdkjcbi/l7g16VYRri3TjXi9Ir4lOZSw5N/gnV/3H7jIPQ8Q4daA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -3454,13 +3454,13 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.6.2 - '@typescript-eslint/parser': 6.9.0(eslint@8.52.0)(typescript@5.2.2) - '@typescript-eslint/scope-manager': 6.9.0 - '@typescript-eslint/type-utils': 6.9.0(eslint@8.52.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.9.0(eslint@8.52.0)(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.9.0 + '@typescript-eslint/parser': 6.18.1(eslint@8.56.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.18.1 + '@typescript-eslint/type-utils': 6.18.1(eslint@8.56.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.18.1(eslint@8.56.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.18.1 debug: 4.3.4 - eslint: 8.52.0 + eslint: 8.56.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 @@ -3471,21 +3471,21 @@ packages: - supports-color dev: true - /@typescript-eslint/experimental-utils@5.38.0(eslint@8.52.0)(typescript@5.2.2): + /@typescript-eslint/experimental-utils@5.38.0(eslint@8.56.0)(typescript@5.2.2): resolution: {integrity: sha512-kzXBRfvGlicgGk4CYuRUqKvwc2s3wHXNssUWWJU18bhMRxriFm3BZWyQ6vEHBRpEIMKB6b7MIQHO+9lYlts19w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.38.0(eslint@8.52.0)(typescript@5.2.2) - eslint: 8.52.0 + '@typescript-eslint/utils': 5.38.0(eslint@8.56.0)(typescript@5.2.2) + eslint: 8.56.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/parser@6.9.0(eslint@8.52.0)(typescript@5.2.2): - resolution: {integrity: sha512-GZmjMh4AJ/5gaH4XF2eXA8tMnHWP+Pm1mjQR2QN4Iz+j/zO04b9TOvJYOX2sCNIQHtRStKTxRY1FX7LhpJT4Gw==} + /@typescript-eslint/parser@6.18.1(eslint@8.56.0)(typescript@5.2.2): + resolution: {integrity: sha512-zct/MdJnVaRRNy9e84XnVtRv9Vf91/qqe+hZJtKanjojud4wAVy/7lXxJmMyX6X6J+xc6c//YEWvpeif8cAhWA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -3494,12 +3494,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.9.0 - '@typescript-eslint/types': 6.9.0 - '@typescript-eslint/typescript-estree': 6.9.0(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.9.0 + '@typescript-eslint/scope-manager': 6.18.1 + '@typescript-eslint/types': 6.18.1 + '@typescript-eslint/typescript-estree': 6.18.1(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.18.1 debug: 4.3.4 - eslint: 8.52.0 + eslint: 8.56.0 typescript: 5.2.2 transitivePeerDependencies: - supports-color @@ -3513,16 +3513,16 @@ packages: '@typescript-eslint/visitor-keys': 5.38.0 dev: true - /@typescript-eslint/scope-manager@6.9.0: - resolution: {integrity: sha512-1R8A9Mc39n4pCCz9o79qRO31HGNDvC7UhPhv26TovDsWPBDx+Sg3rOZdCELIA3ZmNoWAuxaMOT7aWtGRSYkQxw==} + /@typescript-eslint/scope-manager@6.18.1: + resolution: {integrity: sha512-BgdBwXPFmZzaZUuw6wKiHKIovms97a7eTImjkXCZE04TGHysG+0hDQPmygyvgtkoB/aOQwSM/nWv3LzrOIQOBw==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.9.0 - '@typescript-eslint/visitor-keys': 6.9.0 + '@typescript-eslint/types': 6.18.1 + '@typescript-eslint/visitor-keys': 6.18.1 dev: true - /@typescript-eslint/type-utils@6.9.0(eslint@8.52.0)(typescript@5.2.2): - resolution: {integrity: sha512-XXeahmfbpuhVbhSOROIzJ+b13krFmgtc4GlEuu1WBT+RpyGPIA4Y/eGnXzjbDj5gZLzpAXO/sj+IF/x2GtTMjQ==} + /@typescript-eslint/type-utils@6.18.1(eslint@8.56.0)(typescript@5.2.2): + resolution: {integrity: sha512-wyOSKhuzHeU/5pcRDP2G2Ndci+4g653V43gXTpt4nbyoIOAASkGDA9JIAgbQCdCkcr1MvpSYWzxTz0olCn8+/Q==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -3531,10 +3531,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.9.0(typescript@5.2.2) - '@typescript-eslint/utils': 6.9.0(eslint@8.52.0)(typescript@5.2.2) + '@typescript-eslint/typescript-estree': 6.18.1(typescript@5.2.2) + '@typescript-eslint/utils': 6.18.1(eslint@8.56.0)(typescript@5.2.2) debug: 4.3.4 - eslint: 8.52.0 + eslint: 8.56.0 ts-api-utils: 1.0.1(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: @@ -3546,8 +3546,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types@6.9.0: - resolution: {integrity: sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw==} + /@typescript-eslint/types@6.18.1: + resolution: {integrity: sha512-4TuMAe+tc5oA7wwfqMtB0Y5OrREPF1GeJBAjqwgZh1lEMH5PJQgWgHGfYufVB51LtjD+peZylmeyxUXPfENLCw==} engines: {node: ^16.0.0 || >=18.0.0} dev: true @@ -3572,8 +3572,8 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree@6.9.0(typescript@5.2.2): - resolution: {integrity: sha512-NJM2BnJFZBEAbCfBP00zONKXvMqihZCrmwCaik0UhLr0vAgb6oguXxLX1k00oQyD+vZZ+CJn3kocvv2yxm4awQ==} + /@typescript-eslint/typescript-estree@6.18.1(typescript@5.2.2): + resolution: {integrity: sha512-fv9B94UAhywPRhUeeV/v+3SBDvcPiLxRZJw/xZeeGgRLQZ6rLMG+8krrJUyIf6s1ecWTzlsbp0rlw7n9sjufHA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -3581,11 +3581,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.9.0 - '@typescript-eslint/visitor-keys': 6.9.0 + '@typescript-eslint/types': 6.18.1 + '@typescript-eslint/visitor-keys': 6.18.1 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 + minimatch: 9.0.3 semver: 7.5.4 ts-api-utils: 1.0.1(typescript@5.2.2) typescript: 5.2.2 @@ -3593,7 +3594,7 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@5.38.0(eslint@8.52.0)(typescript@5.2.2): + /@typescript-eslint/utils@5.38.0(eslint@8.56.0)(typescript@5.2.2): resolution: {integrity: sha512-6sdeYaBgk9Fh7N2unEXGz+D+som2QCQGPAf1SxrkEr+Z32gMreQ0rparXTNGRRfYUWk/JzbGdcM8NSSd6oqnTA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3603,27 +3604,27 @@ packages: '@typescript-eslint/scope-manager': 5.38.0 '@typescript-eslint/types': 5.38.0 '@typescript-eslint/typescript-estree': 5.38.0(typescript@5.2.2) - eslint: 8.52.0 + eslint: 8.56.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0(eslint@8.52.0) + eslint-utils: 3.0.0(eslint@8.56.0) transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/utils@6.9.0(eslint@8.52.0)(typescript@5.2.2): - resolution: {integrity: sha512-5Wf+Jsqya7WcCO8me504FBigeQKVLAMPmUzYgDbWchINNh1KJbxCgVya3EQ2MjvJMVeXl3pofRmprqX6mfQkjQ==} + /@typescript-eslint/utils@6.18.1(eslint@8.56.0)(typescript@5.2.2): + resolution: {integrity: sha512-zZmTuVZvD1wpoceHvoQpOiewmWu3uP9FuTWo8vqpy2ffsmfCE8mklRPi+vmnIYAIk9t/4kOThri2QCDgor+OpQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.52.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 6.9.0 - '@typescript-eslint/types': 6.9.0 - '@typescript-eslint/typescript-estree': 6.9.0(typescript@5.2.2) - eslint: 8.52.0 + '@typescript-eslint/scope-manager': 6.18.1 + '@typescript-eslint/types': 6.18.1 + '@typescript-eslint/typescript-estree': 6.18.1(typescript@5.2.2) + eslint: 8.56.0 semver: 7.5.4 transitivePeerDependencies: - supports-color @@ -3638,11 +3639,11 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@typescript-eslint/visitor-keys@6.9.0: - resolution: {integrity: sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg==} + /@typescript-eslint/visitor-keys@6.18.1: + resolution: {integrity: sha512-/kvt0C5lRqGoCfsbmm7/CwMqoSkY3zzHLIjdhHZQW3VFrnz7ATecOHR7nb7V+xn4286MBxfnQfQhAmCI0u+bJA==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.9.0 + '@typescript-eslint/types': 6.18.1 eslint-visitor-keys: 3.4.3 dev: true @@ -4250,6 +4251,17 @@ packages: node-releases: 2.0.13 update-browserslist-db: 1.0.11(browserslist@4.21.10) + /browserslist@4.22.2: + resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001576 + electron-to-chromium: 1.4.630 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.22.2) + dev: true + /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true @@ -4330,6 +4342,10 @@ packages: /caniuse-lite@1.0.30001521: resolution: {integrity: sha512-fnx1grfpEOvDGH+V17eccmNjucGUnCbP6KL+l5KqBIerp26WK/+RQ7CIDE37KGJjaPyqWXXlFUyKiWmvdNNKmQ==} + /caniuse-lite@1.0.30001576: + resolution: {integrity: sha512-ff5BdakGe2P3SQsMsiqmt1Lc8221NR1VzHj5jXN5vBny9A6fpze94HiVV/n7XRosOlsShJcvMv5mdnpjOGCEgg==} + dev: true + /ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} dev: false @@ -4427,6 +4443,11 @@ packages: engines: {node: '>=8'} dev: true + /ci-info@4.0.0: + resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} + engines: {node: '>=8'} + dev: true + /clean-regexp@1.0.0: resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} engines: {node: '>=4'} @@ -4587,6 +4608,12 @@ packages: browserslist: 4.21.10 dev: true + /core-js-compat@3.35.0: + resolution: {integrity: sha512-5blwFAddknKeNgsjBzilkdQ0+YK8L1PfqPYq40NOYMYFSS38qj+hpTcLLWwpIwA2A5bje/x5jmVn2tzUMg9IVw==} + dependencies: + browserslist: 4.22.2 + dev: true + /cose-base@1.0.3: resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==} dependencies: @@ -5272,6 +5299,10 @@ packages: /electron-to-chromium@1.4.496: resolution: {integrity: sha512-qeXC3Zbykq44RCrBa4kr8v/dWzYJA8rAwpyh9Qd+NKWoJfjG5vvJqy9XOJ9H4P/lqulZBCgUWAYi+FeK5AuJ8g==} + /electron-to-chromium@1.4.630: + resolution: {integrity: sha512-osHqhtjojpCsACVnuD11xO5g9xaCyw7Qqn/C2KParkMv42i8jrJJgx3g7mkHfpxwhy9MnOJr8+pKOdZ7qzgizg==} + dev: true + /elkjs@0.8.2: resolution: {integrity: sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ==} dev: false @@ -5485,13 +5516,13 @@ packages: engines: {node: '>=12'} dev: false - /eslint-config-prettier@9.0.0(eslint@8.52.0): - resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} + /eslint-config-prettier@9.1.0(eslint@8.56.0): + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.52.0 + eslint: 8.56.0 dev: true /eslint-import-resolver-node@0.3.9: @@ -5504,7 +5535,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.9.0)(eslint-import-resolver-node@0.3.9)(eslint@8.52.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.18.1)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -5525,16 +5556,16 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.9.0(eslint@8.52.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.18.1(eslint@8.56.0)(typescript@5.2.2) debug: 3.2.7 - eslint: 8.52.0 + eslint: 8.56.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.9.0)(eslint@8.52.0): - resolution: {integrity: sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==} + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.18.1)(eslint@8.56.0): + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -5543,16 +5574,16 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.9.0(eslint@8.52.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.18.1(eslint@8.56.0)(typescript@5.2.2) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.52.0 + eslint: 8.56.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.9.0)(eslint-import-resolver-node@0.3.9)(eslint@8.52.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.18.1)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0) hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -5561,23 +5592,23 @@ packages: object.groupby: 1.0.1 object.values: 1.1.7 semver: 6.3.1 - tsconfig-paths: 3.14.2 + tsconfig-paths: 3.15.0 transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color dev: true - /eslint-plugin-react-hooks@4.6.0(eslint@8.52.0): + /eslint-plugin-react-hooks@4.6.0(eslint@8.56.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 8.52.0 + eslint: 8.56.0 dev: true - /eslint-plugin-react@7.33.2(eslint@8.52.0): + /eslint-plugin-react@7.33.2(eslint@8.56.0): resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} engines: {node: '>=4'} peerDependencies: @@ -5588,7 +5619,7 @@ packages: array.prototype.tosorted: 1.1.1 doctrine: 2.1.0 es-iterator-helpers: 1.0.13 - eslint: 8.52.0 + eslint: 8.56.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.3 minimatch: 3.1.2 @@ -5602,17 +5633,17 @@ packages: string.prototype.matchall: 4.0.8 dev: true - /eslint-plugin-sonarjs@0.21.0(eslint@8.52.0): - resolution: {integrity: sha512-oezUDfFT5S6j3rQheZ4DLPrbetPmMS7zHIKWGHr0CM3g5JgyZroz1FpIKa4jV83NsGpmgIeagpokWDKIJzRQmw==} + /eslint-plugin-sonarjs@0.23.0(eslint@8.56.0): + resolution: {integrity: sha512-z44T3PBf9W7qQ/aR+NmofOTyg6HLhSEZOPD4zhStqBpLoMp8GYhFksuUBnCxbnf1nfISpKBVkQhiBLFI/F4Wlg==} engines: {node: '>=14'} peerDependencies: eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - eslint: 8.52.0 + eslint: 8.56.0 dev: true - /eslint-plugin-tailwindcss@3.13.0(tailwindcss@3.3.3): - resolution: {integrity: sha512-Fcep4KDRLWaK3KmkQbdyKHG0P4GdXFmXdDaweTIPcgOP60OOuWFbh1++dufRT28Q4zpKTKaHwTsXPJ4O/EjU2Q==} + /eslint-plugin-tailwindcss@3.13.1(tailwindcss@3.3.3): + resolution: {integrity: sha512-2Nlgr9doO6vFAG9w4iGU0sspWXuzypfng10HTF+dFS2NterhweWtgdRvf/f7aaoOUUxVZM8wMIXzazrZ7CxyeA==} engines: {node: '>=12.13.0'} peerDependencies: tailwindcss: ^3.3.2 @@ -5622,7 +5653,7 @@ packages: tailwindcss: 3.3.3 dev: true - /eslint-plugin-typescript-sort-keys@3.1.0(@typescript-eslint/parser@6.9.0)(eslint@8.52.0)(typescript@5.2.2): + /eslint-plugin-typescript-sort-keys@3.1.0(@typescript-eslint/parser@6.18.1)(eslint@8.56.0)(typescript@5.2.2): resolution: {integrity: sha512-rgZeYfEguqKni/V7sbmgFu9/94UDAQd7YqNd0J7Qhw7SdLIGd0iBk2KgpjhRhe2ge4rPSLDIdFWwUiDqBOst6Q==} engines: {node: '>= 16'} peerDependencies: @@ -5630,9 +5661,9 @@ packages: eslint: ^7 || ^8 typescript: ^3 || ^4 || ^5 dependencies: - '@typescript-eslint/experimental-utils': 5.38.0(eslint@8.52.0)(typescript@5.2.2) - '@typescript-eslint/parser': 6.9.0(eslint@8.52.0)(typescript@5.2.2) - eslint: 8.52.0 + '@typescript-eslint/experimental-utils': 5.38.0(eslint@8.56.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.18.1(eslint@8.56.0)(typescript@5.2.2) + eslint: 8.56.0 json-schema: 0.4.0 natural-compare-lite: 1.4.0 typescript: 5.2.2 @@ -5640,28 +5671,31 @@ packages: - supports-color dev: true - /eslint-plugin-unicorn@48.0.1(eslint@8.52.0): - resolution: {integrity: sha512-FW+4r20myG/DqFcCSzoumaddKBicIPeFnTrifon2mWIzlfyvzwyqZjqVP7m4Cqr/ZYisS2aiLghkUWaPg6vtCw==} + /eslint-plugin-unicorn@50.0.1(eslint@8.56.0): + resolution: {integrity: sha512-KxenCZxqSYW0GWHH18okDlOQcpezcitm5aOSz6EnobyJ6BIByiPDviQRjJIUAjG/tMN11958MxaQ+qCoU6lfDA==} engines: {node: '>=16'} peerDependencies: - eslint: '>=8.44.0' + eslint: '>=8.56.0' dependencies: - '@babel/helper-validator-identifier': 7.22.5 - '@eslint-community/eslint-utils': 4.4.0(eslint@8.52.0) - ci-info: 3.8.0 + '@babel/helper-validator-identifier': 7.22.20 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint/eslintrc': 2.1.4 + ci-info: 4.0.0 clean-regexp: 1.0.0 - eslint: 8.52.0 + core-js-compat: 3.35.0 + eslint: 8.56.0 esquery: 1.5.0 indent-string: 4.0.0 is-builtin-module: 3.2.1 jsesc: 3.0.2 - lodash: 4.17.21 pluralize: 8.0.0 read-pkg-up: 7.0.1 regexp-tree: 0.1.27 regjsparser: 0.10.0 semver: 7.5.4 strip-indent: 3.0.0 + transitivePeerDependencies: + - supports-color dev: true /eslint-scope@5.1.1: @@ -5698,13 +5732,13 @@ packages: eslint-visitor-keys: 2.1.0 dev: true - /eslint-utils@3.0.0(eslint@8.52.0): + /eslint-utils@3.0.0(eslint@8.56.0): resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: eslint: '>=5' dependencies: - eslint: 8.52.0 + eslint: 8.56.0 eslint-visitor-keys: 2.1.0 dev: true @@ -5772,15 +5806,15 @@ packages: - supports-color dev: true - /eslint@8.52.0: - resolution: {integrity: sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==} + /eslint@8.56.0: + resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.52.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@eslint-community/regexpp': 4.6.2 - '@eslint/eslintrc': 2.1.2 - '@eslint/js': 8.52.0 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.56.0 '@humanwhocodes/config-array': 0.11.13 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -8648,6 +8682,10 @@ packages: /node-releases@2.0.13: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: true + /non-layered-tidy-tree-layout@2.0.2: resolution: {integrity: sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==} dev: false @@ -10641,8 +10679,8 @@ packages: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} dev: true - /tsconfig-paths@3.14.2: - resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} + /tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} dependencies: '@types/json5': 0.0.29 json5: 1.0.2 @@ -11054,6 +11092,17 @@ packages: escalade: 3.1.1 picocolors: 1.0.0 + /update-browserslist-db@1.0.13(browserslist@4.22.2): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.22.2 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: @@ -11694,7 +11743,7 @@ packages: - supports-color dev: false - file:packages/nextra-theme-blog(next@13.5.6)(nextra@3.0.0-alpha.10)(react-dom@18.2.0)(react@18.2.0): + file:packages/nextra-theme-blog(next@13.5.6)(nextra@3.0.0-alpha.11)(react-dom@18.2.0)(react@18.2.0): resolution: {directory: packages/nextra-theme-blog, type: directory} id: file:packages/nextra-theme-blog name: nextra-theme-blog @@ -11715,7 +11764,7 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - file:packages/nextra-theme-docs(next@13.5.6)(nextra@3.0.0-alpha.10)(react-dom@18.2.0)(react@18.2.0): + file:packages/nextra-theme-docs(next@13.5.6)(nextra@3.0.0-alpha.11)(react-dom@18.2.0)(react@18.2.0): resolution: {directory: packages/nextra-theme-docs, type: directory} id: file:packages/nextra-theme-docs name: nextra-theme-docs