From c3326333145415a99bda35963cf61044352e9c88 Mon Sep 17 00:00:00 2001 From: Brice Lechatellier Date: Tue, 29 Oct 2024 05:02:59 +1100 Subject: [PATCH] feat: support `next@15` (#426) Co-authored-by: Tom Lienard --- docs/package.json | 2 +- docs/pages/docs/app-setup.mdx | 6 +- docs/pages/docs/app-static-rendering.md | 5 +- docs/pages/docs/rtl-support.mdx | 11 +- .../next-app/app/[locale]/client/layout.tsx | 10 +- examples/next-app/app/[locale]/page.tsx | 4 +- .../next-app/app/[locale]/subpage/page.tsx | 3 +- examples/next-app/package.json | 2 +- examples/next-pages/package.json | 2 +- packages/next-international/package.json | 4 +- .../src/app/server/create-get-i18n.ts | 29 +- .../src/app/server/create-get-scoped-i18n.ts | 29 +- .../src/app/server/get-locale-cache.tsx | 6 +- pnpm-lock.yaml | 450 +++++++++++++----- 14 files changed, 415 insertions(+), 148 deletions(-) diff --git a/docs/package.json b/docs/package.json index 8134e53..bce3919 100644 --- a/docs/package.json +++ b/docs/package.json @@ -11,7 +11,7 @@ "dependencies": { "@vercel/analytics": "^1.1.1", "@vercel/speed-insights": "^1.0.2", - "next": "^14.0.4", + "next": "^15.0.0", "nextra": "^2.13.2", "nextra-theme-docs": "^2.13.2", "react": "^18.2.0", diff --git a/docs/pages/docs/app-setup.mdx b/docs/pages/docs/app-setup.mdx index 692fbf2..743c6ff 100644 --- a/docs/pages/docs/app-setup.mdx +++ b/docs/pages/docs/app-setup.mdx @@ -51,7 +51,11 @@ Move all your routes inside an `app/[locale]/` folder. For Client Components, wr import { ReactElement } from 'react' import { I18nProviderClient } from '../../locales/client' -export default function SubLayout({ params: { locale }, children }: { params: { locale: string }, children: ReactElement }) { +// If you are using Next.js < 15, you don't need to await `params`: +// export default function SubLayout({ params: { locale }, children }: { params: { locale: string }, children: ReactElement }) { +export default function SubLayout({ params, children }: { params: Promise<{ locale: string }>, children: ReactElement }) { + const { locale } = await params + return ( {children} diff --git a/docs/pages/docs/app-static-rendering.md b/docs/pages/docs/app-static-rendering.md index e8b63f9..73e210a 100644 --- a/docs/pages/docs/app-static-rendering.md +++ b/docs/pages/docs/app-static-rendering.md @@ -22,7 +22,10 @@ Inside all pages that you want to be statically rendered, call this `setStaticPa // app/[locale]/page.tsx and any other page import { setStaticParamsLocale } from 'next-international/server' -export default function Page({ params: { locale } }: { params: { locale: string } }) { +// If you are using Next.js < 15, you don't need to await `params`: +// export default function Page({ params: { locale } }: { params: { locale: string } }) { +export default function Page({ params }: { params: Promise<{ locale: string }> }) { + const { locale } = await params setStaticParamsLocale(locale) return ( diff --git a/docs/pages/docs/rtl-support.mdx b/docs/pages/docs/rtl-support.mdx index e0dd984..0a910c2 100644 --- a/docs/pages/docs/rtl-support.mdx +++ b/docs/pages/docs/rtl-support.mdx @@ -8,7 +8,11 @@ If you want to support the `dir` attribute in your `` tag, you'll need to ```tsx {3,6} // app/[locale]/layout.tsx -export default function Layout({ children, params: { locale } }: { children: ReactElement, params: { locale: string } }) { + +// If you are using Next.js < 15, you don't need to await `params`: +// export default function Layout({ children, params: { locale } }: { children: ReactElement, params: { locale: string } }) { +export default function Layout({ children, params }: { children: ReactElement, params: Promise<{ locale: string }> }) { + const { locale } = await params const dir = new Intl.Locale(locale).getTextInfo().direction return ( @@ -56,7 +60,10 @@ Then, use it instead of the native `Intl.Locale.prototype.getTextInfo` API: // app/[locale]/layout.tsx import Locale from 'intl-locale-textinfo-polyfill' -export default function Layout({ children, params: { locale } }: { children: ReactElement, params: { locale: string } }) { +// If you are using Next.js < 15, you don't need to await `params`: +// export default function Layout({ children, params: { locale } }: { children: ReactElement, params: { locale: string } }) { +export default function Layout({ children, params }: { children: ReactElement, params: Promise<{ locale: string }> }) { + const { locale } = await params const { direction: dir } = new Locale(locale).textInfo return ( diff --git a/examples/next-app/app/[locale]/client/layout.tsx b/examples/next-app/app/[locale]/client/layout.tsx index 8361959..eb7de16 100644 --- a/examples/next-app/app/[locale]/client/layout.tsx +++ b/examples/next-app/app/[locale]/client/layout.tsx @@ -1,6 +1,14 @@ import type { ReactNode } from 'react'; import { Provider } from '../provider'; -export default function Layout({ params: { locale }, children }: { params: { locale: string }; children: ReactNode }) { +export default async function Layout({ + params, + children, +}: { + params: Promise<{ locale: string }>; + children: ReactNode; +}) { + const { locale } = await params; + return {children}; } diff --git a/examples/next-app/app/[locale]/page.tsx b/examples/next-app/app/[locale]/page.tsx index 94466a8..bcbfc34 100644 --- a/examples/next-app/app/[locale]/page.tsx +++ b/examples/next-app/app/[locale]/page.tsx @@ -9,7 +9,9 @@ import { Provider } from './provider'; // } // eslint-disable-next-line @typescript-eslint/no-unused-vars -export default async function Home({ params: { locale } }: { params: { locale: string } }) { +export default async function Home({ params }: { params: Promise<{ locale: string }> }) { + const { locale } = await params; + // Uncomment to test Static Generation // setStaticParamsLocale(locale); diff --git a/examples/next-app/app/[locale]/subpage/page.tsx b/examples/next-app/app/[locale]/subpage/page.tsx index 3bfc8f2..2e04cf5 100644 --- a/examples/next-app/app/[locale]/subpage/page.tsx +++ b/examples/next-app/app/[locale]/subpage/page.tsx @@ -7,8 +7,9 @@ import { getI18n } from '../../../locales/server'; // } // eslint-disable-next-line @typescript-eslint/no-unused-vars -export default async function Subpage({ params: { locale } }: { params: { locale: string } }) { +export default async function Subpage({ params }: { params: Promise<{ locale: string }> }) { // Uncomment to test Static Generation + // const { locale } = await params; // setStaticParamsLocale(locale); const t = await getI18n(); diff --git a/examples/next-app/package.json b/examples/next-app/package.json index ad0617d..2ea10de 100644 --- a/examples/next-app/package.json +++ b/examples/next-app/package.json @@ -9,7 +9,7 @@ "lint": "next lint" }, "dependencies": { - "next": "^14.0.4", + "next": "^15.0.0", "next-international": "workspace:*", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/next-pages/package.json b/examples/next-pages/package.json index ead5f0b..d3487a4 100644 --- a/examples/next-pages/package.json +++ b/examples/next-pages/package.json @@ -9,7 +9,7 @@ "lint": "next lint" }, "dependencies": { - "next": "^14.0.4", + "next": "^15.0.0", "next-international": "workspace:*", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/packages/next-international/package.json b/packages/next-international/package.json index 7949d9a..504248c 100644 --- a/packages/next-international/package.json +++ b/packages/next-international/package.json @@ -1,6 +1,6 @@ { "name": "next-international", - "version": "1.2.4", + "version": "1.3.0", "description": "Type-safe internationalization (i18n) for Next.js", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -50,7 +50,7 @@ }, "devDependencies": { "@types/react": "^18.2.45", - "next": "^14.0.4", + "next": "^15.0.0", "react": "^18.2.0", "tsup": "^8.0.1" }, diff --git a/packages/next-international/src/app/server/create-get-i18n.ts b/packages/next-international/src/app/server/create-get-i18n.ts index 5b64b0d..bfcafcc 100644 --- a/packages/next-international/src/app/server/create-get-i18n.ts +++ b/packages/next-international/src/app/server/create-get-i18n.ts @@ -8,27 +8,30 @@ export function createGetI18n>>(); + const localeCache = new Map>>>(); return async function getI18n() { - const locale = getLocaleCache(); + const locale = await getLocaleCache(); const cached = localeCache.get(locale); if (cached) { - return cached; + return await cached; } - const localeFn = createT( - { - localeContent: flattenLocale((await locales[locale]()).default), - fallbackLocale: config.fallbackLocale ? flattenLocale(config.fallbackLocale) : undefined, - locale, - } as LocaleContext, - undefined, - ); + const localeFnPromise = (async () => { + const localeModule = await locales[locale](); + return createT( + { + localeContent: flattenLocale(localeModule.default), + fallbackLocale: config.fallbackLocale ? flattenLocale(config.fallbackLocale) : undefined, + locale, + } as LocaleContext, + undefined, + ); + })(); - localeCache.set(locale, localeFn); + localeCache.set(locale, localeFnPromise); - return localeFn; + return await localeFnPromise; }; } diff --git a/packages/next-international/src/app/server/create-get-scoped-i18n.ts b/packages/next-international/src/app/server/create-get-scoped-i18n.ts index d8038a0..4205bb1 100644 --- a/packages/next-international/src/app/server/create-get-scoped-i18n.ts +++ b/packages/next-international/src/app/server/create-get-scoped-i18n.ts @@ -8,30 +8,33 @@ export function createGetScopedI18n>>(); + const localeCache = new Map>>>(); return async function getScopedI18n>( scope: Scope, ): Promise>> { - const locale = getLocaleCache(); + const locale = await getLocaleCache(); const cacheKey = `${locale}-${scope}`; const cached = localeCache.get(cacheKey); if (cached) { - return cached; + return (await cached) as ReturnType>; } - const localeFn = createT( - { - localeContent: flattenLocale((await locales[locale]()).default), - fallbackLocale: config.fallbackLocale ? flattenLocale(config.fallbackLocale) : undefined, - locale, - } as LocaleContext, - scope, - ); + const localeFnPromise = (async () => { + const localeModule = await locales[locale](); + return createT( + { + localeContent: flattenLocale(localeModule.default), + fallbackLocale: config.fallbackLocale ? flattenLocale(config.fallbackLocale) : undefined, + locale, + } as LocaleContext, + scope, + ); + })(); - localeCache.set(cacheKey, localeFn); + localeCache.set(cacheKey, localeFnPromise); - return localeFn; + return await localeFnPromise; }; } diff --git a/packages/next-international/src/app/server/get-locale-cache.tsx b/packages/next-international/src/app/server/get-locale-cache.tsx index e913ae0..a6f5b48 100644 --- a/packages/next-international/src/app/server/get-locale-cache.tsx +++ b/packages/next-international/src/app/server/get-locale-cache.tsx @@ -12,17 +12,17 @@ export const setStaticParamsLocale = (value: string) => { getLocale().current = value; }; -export const getLocaleCache = cache(() => { +export const getLocaleCache = cache(async () => { let locale: string | undefined | null; locale = getStaticParamsLocale(); if (!locale) { try { - locale = headers().get(LOCALE_HEADER); + locale = (await headers()).get(LOCALE_HEADER); if (!locale) { - locale = cookies().get(LOCALE_COOKIE)?.value; + locale = (await cookies()).get(LOCALE_COOKIE)?.value; } } catch (e) { throw new Error( diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 13d7d81..9928c40 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -93,14 +93,14 @@ importers: specifier: ^1.0.2 version: 1.0.2 next: - specifier: ^14.0.4 - version: 14.0.4(@babel/core@7.22.5)(react-dom@18.2.0)(react@18.2.0) + specifier: ^15.0.0 + version: 15.0.0(@babel/core@7.22.5)(react-dom@18.2.0)(react@18.2.0) nextra: specifier: ^2.13.2 - version: 2.13.2(next@14.0.4)(react-dom@18.2.0)(react@18.2.0) + version: 2.13.2(next@15.0.0)(react-dom@18.2.0)(react@18.2.0) nextra-theme-docs: specifier: ^2.13.2 - version: 2.13.2(next@14.0.4)(nextra@2.13.2)(react-dom@18.2.0)(react@18.2.0) + version: 2.13.2(next@15.0.0)(nextra@2.13.2)(react-dom@18.2.0)(react@18.2.0) react: specifier: ^18.2.0 version: 18.2.0 @@ -130,8 +130,8 @@ importers: examples/next-app: dependencies: next: - specifier: ^14.0.4 - version: 14.0.4(@babel/core@7.23.2)(react-dom@18.2.0)(react@18.2.0) + specifier: ^15.0.0 + version: 15.0.0(@babel/core@7.23.2)(react-dom@18.2.0)(react@18.2.0) next-international: specifier: workspace:* version: link:../../packages/next-international @@ -161,8 +161,8 @@ importers: examples/next-pages: dependencies: next: - specifier: ^14.0.4 - version: 14.0.4(@babel/core@7.23.2)(react-dom@18.2.0)(react@18.2.0) + specifier: ^15.0.0 + version: 15.0.0(@babel/core@7.23.2)(react-dom@18.2.0)(react@18.2.0) next-international: specifier: workspace:* version: link:../../packages/next-international @@ -207,8 +207,8 @@ importers: specifier: ^18.2.45 version: 18.2.45 next: - specifier: ^14.0.4 - version: 14.0.4(@babel/core@7.23.2)(react-dom@18.2.0)(react@18.2.0) + specifier: ^15.0.0 + version: 15.0.0(@babel/core@7.23.2)(react-dom@18.2.0)(react@18.2.0) react: specifier: ^18.2.0 version: 18.2.0 @@ -1706,6 +1706,13 @@ packages: resolution: {integrity: sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==} dev: false + /@emnapi/runtime@1.3.1: + resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==} + requiresBuild: true + dependencies: + tslib: 2.6.0 + optional: true + /@esbuild/aix-ppc64@0.19.10: resolution: {integrity: sha512-Q+mk96KJ+FZ30h9fsJl+67IjNJm3x2eX+GBWGmocAKgzp27cowCOOqSdscX80s0SpdFXZnIv/+1xD1EctFx96Q==} engines: {node: '>=12'} @@ -2180,6 +2187,167 @@ packages: resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} dev: true + /@img/sharp-darwin-arm64@0.33.5: + resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.0.4 + optional: true + + /@img/sharp-darwin-x64@0.33.5: + resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.0.4 + optional: true + + /@img/sharp-libvips-darwin-arm64@1.0.4: + resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + optional: true + + /@img/sharp-libvips-darwin-x64@1.0.4: + resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} + cpu: [x64] + os: [darwin] + requiresBuild: true + optional: true + + /@img/sharp-libvips-linux-arm64@1.0.4: + resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + + /@img/sharp-libvips-linux-arm@1.0.5: + resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} + cpu: [arm] + os: [linux] + requiresBuild: true + optional: true + + /@img/sharp-libvips-linux-s390x@1.0.4: + resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} + cpu: [s390x] + os: [linux] + requiresBuild: true + optional: true + + /@img/sharp-libvips-linux-x64@1.0.4: + resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + + /@img/sharp-libvips-linuxmusl-arm64@1.0.4: + resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + + /@img/sharp-libvips-linuxmusl-x64@1.0.4: + resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + + /@img/sharp-linux-arm64@0.33.5: + resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.0.4 + optional: true + + /@img/sharp-linux-arm@0.33.5: + resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.0.5 + optional: true + + /@img/sharp-linux-s390x@0.33.5: + resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.0.4 + optional: true + + /@img/sharp-linux-x64@0.33.5: + resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.0.4 + optional: true + + /@img/sharp-linuxmusl-arm64@0.33.5: + resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + optional: true + + /@img/sharp-linuxmusl-x64@0.33.5: + resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + optional: true + + /@img/sharp-wasm32@0.33.5: + resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + requiresBuild: true + dependencies: + '@emnapi/runtime': 1.3.1 + optional: true + + /@img/sharp-win32-ia32@0.33.5: + resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + requiresBuild: true + optional: true + + /@img/sharp-win32-x64@0.33.5: + resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + requiresBuild: true + optional: true + /@istanbuljs/schema@0.1.3: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} @@ -2371,8 +2539,8 @@ packages: '@napi-rs/simple-git-win32-x64-msvc': 0.1.9 dev: false - /@next/env@14.0.4: - resolution: {integrity: sha512-irQnbMLbUNQpP1wcE5NstJtbuA/69kRfzBrpAD7Gsn8zm/CY6YQYc3HQBz8QPxwISG26tIm5afvvVbu508oBeQ==} + /@next/env@15.0.0: + resolution: {integrity: sha512-Mcv8ZVmEgTO3bePiH/eJ7zHqQEs2gCqZ0UId2RxHmDDc7Pw6ngfSrOFlxG8XDpaex+n2G+TKPsQAf28MO+88Gw==} /@next/eslint-plugin-next@13.5.6: resolution: {integrity: sha512-ng7pU/DDsxPgT6ZPvuprxrkeew3XaRf4LAT4FabaEO/hAbvVx4P7wqnqdbTdDn1kgTvsI4tpIgT4Awn/m0bGbg==} @@ -2380,72 +2548,64 @@ packages: glob: 7.1.7 dev: true - /@next/swc-darwin-arm64@14.0.4: - resolution: {integrity: sha512-mF05E/5uPthWzyYDyptcwHptucf/jj09i2SXBPwNzbgBNc+XnwzrL0U6BmPjQeOL+FiB+iG1gwBeq7mlDjSRPg==} + /@next/swc-darwin-arm64@15.0.0: + resolution: {integrity: sha512-Gjgs3N7cFa40a9QT9AEHnuGKq69/bvIOn0SLGDV+ordq07QOP4k1GDOVedMHEjVeqy1HBLkL8rXnNTuMZIv79A==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /@next/swc-darwin-x64@14.0.4: - resolution: {integrity: sha512-IZQ3C7Bx0k2rYtrZZxKKiusMTM9WWcK5ajyhOZkYYTCc8xytmwSzR1skU7qLgVT/EY9xtXDG0WhY6fyujnI3rw==} + /@next/swc-darwin-x64@15.0.0: + resolution: {integrity: sha512-BUtTvY5u9s5berAuOEydAUlVMjnl6ZjXS+xVrMt317mglYZ2XXjY8YRDCaz9vYMjBNPXH8Gh75Cew5CMdVbWTw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] requiresBuild: true optional: true - /@next/swc-linux-arm64-gnu@14.0.4: - resolution: {integrity: sha512-VwwZKrBQo/MGb1VOrxJ6LrKvbpo7UbROuyMRvQKTFKhNaXjUmKTu7wxVkIuCARAfiI8JpaWAnKR+D6tzpCcM4w==} + /@next/swc-linux-arm64-gnu@15.0.0: + resolution: {integrity: sha512-sbCoEpuWUBpYoLSgYrk0CkBv8RFv4ZlPxbwqRHr/BWDBJppTBtF53EvsntlfzQJ9fosYX12xnS6ltxYYwsMBjg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@next/swc-linux-arm64-musl@14.0.4: - resolution: {integrity: sha512-8QftwPEW37XxXoAwsn+nXlodKWHfpMaSvt81W43Wh8dv0gkheD+30ezWMcFGHLI71KiWmHK5PSQbTQGUiidvLQ==} + /@next/swc-linux-arm64-musl@15.0.0: + resolution: {integrity: sha512-JAw84qfL81aQCirXKP4VkgmhiDpXJupGjt8ITUkHrOVlBd+3h5kjfPva5M0tH2F9KKSgJQHEo3F5S5tDH9h2ww==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@next/swc-linux-x64-gnu@14.0.4: - resolution: {integrity: sha512-/s/Pme3VKfZAfISlYVq2hzFS8AcAIOTnoKupc/j4WlvF6GQ0VouS2Q2KEgPuO1eMBwakWPB1aYFIA4VNVh667A==} + /@next/swc-linux-x64-gnu@15.0.0: + resolution: {integrity: sha512-r5Smd03PfxrGKMewdRf2RVNA1CU5l2rRlvZLQYZSv7FUsXD5bKEcOZ/6/98aqRwL7diXOwD8TCWJk1NbhATQHg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@next/swc-linux-x64-musl@14.0.4: - resolution: {integrity: sha512-m8z/6Fyal4L9Bnlxde5g2Mfa1Z7dasMQyhEhskDATpqr+Y0mjOBZcXQ7G5U+vgL22cI4T7MfvgtrM2jdopqWaw==} + /@next/swc-linux-x64-musl@15.0.0: + resolution: {integrity: sha512-fM6qocafz4Xjhh79CuoQNeGPhDHGBBUbdVtgNFJOUM8Ih5ZpaDZlTvqvqsh5IoO06CGomxurEGqGz/4eR/FaMQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@next/swc-win32-arm64-msvc@14.0.4: - resolution: {integrity: sha512-7Wv4PRiWIAWbm5XrGz3D8HUkCVDMMz9igffZG4NB1p4u1KoItwx9qjATHz88kwCEal/HXmbShucaslXCQXUM5w==} + /@next/swc-win32-arm64-msvc@15.0.0: + resolution: {integrity: sha512-ZOd7c/Lz1lv7qP/KzR513XEa7QzW5/P0AH3A5eR1+Z/KmDOvMucht0AozccPc0TqhdV1xaXmC0Fdx0hoNzk6ng==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] requiresBuild: true optional: true - /@next/swc-win32-ia32-msvc@14.0.4: - resolution: {integrity: sha512-zLeNEAPULsl0phfGb4kdzF/cAVIfaC7hY+kt0/d+y9mzcZHsMS3hAS829WbJ31DkSlVKQeHEjZHIdhN+Pg7Gyg==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - requiresBuild: true - optional: true - - /@next/swc-win32-x64-msvc@14.0.4: - resolution: {integrity: sha512-yEh2+R8qDlDCjxVpzOTEpBLQTEFAcP2A8fUFLaWNap9GitYKkKv1//y2S6XY6zsR4rCOPRpU7plYDR+az2n30A==} + /@next/swc-win32-x64-msvc@15.0.0: + resolution: {integrity: sha512-2RVWcLtsqg4LtaoJ3j7RoKpnWHgcrz5XvuUGE7vBYU2i6M2XeD9Y8RlLaF770LEIScrrl8MdWsp6odtC6sZccg==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -2754,8 +2914,11 @@ packages: - supports-color dev: true - /@swc/helpers@0.5.2: - resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} + /@swc/counter@0.1.3: + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + /@swc/helpers@0.5.13: + resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} dependencies: tslib: 2.6.0 @@ -3621,6 +3784,9 @@ packages: /caniuse-lite@1.0.30001509: resolution: {integrity: sha512-2uDDk+TRiTX5hMcUYT/7CSyzMZxjfGu0vAUjS2g0LSD8UoXOv0LtpH4LxGMemsiPq6LCVIUjNwVM0erkOkGCDA==} + /caniuse-lite@1.0.30001669: + resolution: {integrity: sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==} + /ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} dev: false @@ -3754,14 +3920,29 @@ packages: engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 - dev: true /color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - dev: true + + /color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + requiresBuild: true + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + optional: true + + /color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + requiresBuild: true + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + optional: true /colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} @@ -4366,6 +4547,12 @@ packages: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} + /detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} + requiresBuild: true + optional: true + /devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} dependencies: @@ -5357,9 +5544,6 @@ packages: is-glob: 4.0.3 dev: true - /glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - /glob@7.1.6: resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} dependencies: @@ -5800,6 +5984,11 @@ packages: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} dev: true + /is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + requiresBuild: true + optional: true + /is-async-function@2.0.0: resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} engines: {node: '>= 0.4'} @@ -7151,110 +7340,120 @@ packages: - supports-color dev: false - /next-seo@6.1.0(next@14.0.4)(react-dom@18.2.0)(react@18.2.0): + /next-seo@6.1.0(next@15.0.0)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-iMBpFoJsR5zWhguHJvsoBDxDSmdYTHtnVPB1ij+CD0NReQCP78ZxxbdL9qkKIf4oEuZEqZkrjAQLB0bkII7RYA==} peerDependencies: next: ^8.1.1-canary.54 || >=9.0.0 react: '>=16.0.0' react-dom: '>=16.0.0' dependencies: - next: 14.0.4(@babel/core@7.22.5)(react-dom@18.2.0)(react@18.2.0) + next: 15.0.0(@babel/core@7.22.5)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /next-themes@0.2.1(next@14.0.4)(react-dom@18.2.0)(react@18.2.0): + /next-themes@0.2.1(next@15.0.0)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==} peerDependencies: next: '*' react: '*' react-dom: '*' dependencies: - next: 14.0.4(@babel/core@7.22.5)(react-dom@18.2.0)(react@18.2.0) + next: 15.0.0(@babel/core@7.22.5)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /next@14.0.4(@babel/core@7.22.5)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-qbwypnM7327SadwFtxXnQdGiKpkuhaRLE2uq62/nRul9cj9KhQ5LhHmlziTNqUidZotw/Q1I9OjirBROdUJNgA==} - engines: {node: '>=18.17.0'} + /next@15.0.0(@babel/core@7.22.5)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-/ivqF6gCShXpKwY9hfrIQYh8YMge8L3W+w1oRLv/POmK4MOQnh+FscZ8a0fRFTSQWE+2z9ctNYvELD9vP2FV+A==} + engines: {node: '>=18.18.0'} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 - react: ^18.2.0 - react-dom: ^18.2.0 + '@playwright/test': ^1.41.2 + babel-plugin-react-compiler: '*' + react: ^18.2.0 || 19.0.0-rc-65a56d0e-20241020 + react-dom: ^18.2.0 || 19.0.0-rc-65a56d0e-20241020 sass: ^1.3.0 peerDependenciesMeta: '@opentelemetry/api': optional: true + '@playwright/test': + optional: true + babel-plugin-react-compiler: + optional: true sass: optional: true dependencies: - '@next/env': 14.0.4 - '@swc/helpers': 0.5.2 + '@next/env': 15.0.0 + '@swc/counter': 0.1.3 + '@swc/helpers': 0.5.13 busboy: 1.6.0 - caniuse-lite: 1.0.30001509 - graceful-fs: 4.2.11 + caniuse-lite: 1.0.30001669 postcss: 8.4.31 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(@babel/core@7.22.5)(react@18.2.0) - watchpack: 2.4.0 + styled-jsx: 5.1.6(@babel/core@7.22.5)(react@18.2.0) optionalDependencies: - '@next/swc-darwin-arm64': 14.0.4 - '@next/swc-darwin-x64': 14.0.4 - '@next/swc-linux-arm64-gnu': 14.0.4 - '@next/swc-linux-arm64-musl': 14.0.4 - '@next/swc-linux-x64-gnu': 14.0.4 - '@next/swc-linux-x64-musl': 14.0.4 - '@next/swc-win32-arm64-msvc': 14.0.4 - '@next/swc-win32-ia32-msvc': 14.0.4 - '@next/swc-win32-x64-msvc': 14.0.4 + '@next/swc-darwin-arm64': 15.0.0 + '@next/swc-darwin-x64': 15.0.0 + '@next/swc-linux-arm64-gnu': 15.0.0 + '@next/swc-linux-arm64-musl': 15.0.0 + '@next/swc-linux-x64-gnu': 15.0.0 + '@next/swc-linux-x64-musl': 15.0.0 + '@next/swc-win32-arm64-msvc': 15.0.0 + '@next/swc-win32-x64-msvc': 15.0.0 + sharp: 0.33.5 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros dev: false - /next@14.0.4(@babel/core@7.23.2)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-qbwypnM7327SadwFtxXnQdGiKpkuhaRLE2uq62/nRul9cj9KhQ5LhHmlziTNqUidZotw/Q1I9OjirBROdUJNgA==} - engines: {node: '>=18.17.0'} + /next@15.0.0(@babel/core@7.23.2)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-/ivqF6gCShXpKwY9hfrIQYh8YMge8L3W+w1oRLv/POmK4MOQnh+FscZ8a0fRFTSQWE+2z9ctNYvELD9vP2FV+A==} + engines: {node: '>=18.18.0'} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 - react: ^18.2.0 - react-dom: ^18.2.0 + '@playwright/test': ^1.41.2 + babel-plugin-react-compiler: '*' + react: ^18.2.0 || 19.0.0-rc-65a56d0e-20241020 + react-dom: ^18.2.0 || 19.0.0-rc-65a56d0e-20241020 sass: ^1.3.0 peerDependenciesMeta: '@opentelemetry/api': optional: true + '@playwright/test': + optional: true + babel-plugin-react-compiler: + optional: true sass: optional: true dependencies: - '@next/env': 14.0.4 - '@swc/helpers': 0.5.2 + '@next/env': 15.0.0 + '@swc/counter': 0.1.3 + '@swc/helpers': 0.5.13 busboy: 1.6.0 - caniuse-lite: 1.0.30001509 - graceful-fs: 4.2.11 + caniuse-lite: 1.0.30001669 postcss: 8.4.31 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(@babel/core@7.23.2)(react@18.2.0) - watchpack: 2.4.0 + styled-jsx: 5.1.6(@babel/core@7.23.2)(react@18.2.0) optionalDependencies: - '@next/swc-darwin-arm64': 14.0.4 - '@next/swc-darwin-x64': 14.0.4 - '@next/swc-linux-arm64-gnu': 14.0.4 - '@next/swc-linux-arm64-musl': 14.0.4 - '@next/swc-linux-x64-gnu': 14.0.4 - '@next/swc-linux-x64-musl': 14.0.4 - '@next/swc-win32-arm64-msvc': 14.0.4 - '@next/swc-win32-ia32-msvc': 14.0.4 - '@next/swc-win32-x64-msvc': 14.0.4 + '@next/swc-darwin-arm64': 15.0.0 + '@next/swc-darwin-x64': 15.0.0 + '@next/swc-linux-arm64-gnu': 15.0.0 + '@next/swc-linux-arm64-musl': 15.0.0 + '@next/swc-linux-x64-gnu': 15.0.0 + '@next/swc-linux-x64-musl': 15.0.0 + '@next/swc-win32-arm64-msvc': 15.0.0 + '@next/swc-win32-x64-msvc': 15.0.0 + sharp: 0.33.5 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - /nextra-theme-docs@2.13.2(next@14.0.4)(nextra@2.13.2)(react-dom@18.2.0)(react@18.2.0): + /nextra-theme-docs@2.13.2(next@15.0.0)(nextra@2.13.2)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-yE4umXaImp1/kf/sFciPj2+EFrNSwd9Db26hi98sIIiujzGf3+9eUgAz45vF9CwBw50FSXxm1QGRcY+slQ4xQQ==} peerDependencies: next: '>=9.5.3' @@ -7271,17 +7470,17 @@ packages: git-url-parse: 13.1.0 intersection-observer: 0.12.2 match-sorter: 6.3.1 - next: 14.0.4(@babel/core@7.22.5)(react-dom@18.2.0)(react@18.2.0) - next-seo: 6.1.0(next@14.0.4)(react-dom@18.2.0)(react@18.2.0) - next-themes: 0.2.1(next@14.0.4)(react-dom@18.2.0)(react@18.2.0) - nextra: 2.13.2(next@14.0.4)(react-dom@18.2.0)(react@18.2.0) + next: 15.0.0(@babel/core@7.22.5)(react-dom@18.2.0)(react@18.2.0) + next-seo: 6.1.0(next@15.0.0)(react-dom@18.2.0)(react@18.2.0) + next-themes: 0.2.1(next@15.0.0)(react-dom@18.2.0)(react@18.2.0) + nextra: 2.13.2(next@15.0.0)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) scroll-into-view-if-needed: 3.0.10 zod: 3.22.4 dev: false - /nextra@2.13.2(next@14.0.4)(react-dom@18.2.0)(react@18.2.0): + /nextra@2.13.2(next@15.0.0)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-pIgOSXNUqTz1laxV4ChFZOU7lzJAoDHHaBPj8L09PuxrLKqU1BU/iZtXAG6bQeKCx8EPdBsoXxEuENnL9QGnGA==} engines: {node: '>=16'} peerDependencies: @@ -7301,7 +7500,7 @@ packages: gray-matter: 4.0.3 katex: 0.16.9 lodash.get: 4.4.2 - next: 14.0.4(@babel/core@7.22.5)(react-dom@18.2.0)(react@18.2.0) + next: 15.0.0(@babel/core@7.22.5)(react-dom@18.2.0)(react@18.2.0) next-mdx-remote: 4.4.1(react-dom@18.2.0)(react@18.2.0) p-limit: 3.1.0 react: 18.2.0 @@ -8156,6 +8355,13 @@ packages: lru-cache: 6.0.0 dev: true + /semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + requiresBuild: true + optional: true + /server-only@0.0.1: resolution: {integrity: sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==} dev: false @@ -8169,6 +8375,36 @@ packages: has-property-descriptors: 1.0.0 dev: true + /sharp@0.33.5: + resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + requiresBuild: true + dependencies: + color: 4.2.3 + detect-libc: 2.0.3 + semver: 7.6.3 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.33.5 + '@img/sharp-darwin-x64': 0.33.5 + '@img/sharp-libvips-darwin-arm64': 1.0.4 + '@img/sharp-libvips-darwin-x64': 1.0.4 + '@img/sharp-libvips-linux-arm': 1.0.5 + '@img/sharp-libvips-linux-arm64': 1.0.4 + '@img/sharp-libvips-linux-s390x': 1.0.4 + '@img/sharp-libvips-linux-x64': 1.0.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + '@img/sharp-linux-arm': 0.33.5 + '@img/sharp-linux-arm64': 0.33.5 + '@img/sharp-linux-s390x': 0.33.5 + '@img/sharp-linux-x64': 0.33.5 + '@img/sharp-linuxmusl-arm64': 0.33.5 + '@img/sharp-linuxmusl-x64': 0.33.5 + '@img/sharp-wasm32': 0.33.5 + '@img/sharp-win32-ia32': 0.33.5 + '@img/sharp-win32-x64': 0.33.5 + optional: true + /shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} @@ -8222,6 +8458,13 @@ packages: engines: {node: '>=14'} dev: true + /simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + requiresBuild: true + dependencies: + is-arrayish: 0.3.2 + optional: true + /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -8448,13 +8691,13 @@ packages: inline-style-parser: 0.1.1 dev: false - /styled-jsx@5.1.1(@babel/core@7.22.5)(react@18.2.0): - resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} + /styled-jsx@5.1.6(@babel/core@7.22.5)(react@18.2.0): + resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} engines: {node: '>= 12.0.0'} peerDependencies: '@babel/core': '*' babel-plugin-macros: '*' - react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0' peerDependenciesMeta: '@babel/core': optional: true @@ -8466,13 +8709,13 @@ packages: react: 18.2.0 dev: false - /styled-jsx@5.1.1(@babel/core@7.23.2)(react@18.2.0): - resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} + /styled-jsx@5.1.6(@babel/core@7.23.2)(react@18.2.0): + resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} engines: {node: '>= 12.0.0'} peerDependencies: '@babel/core': '*' babel-plugin-macros: '*' - react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0' peerDependenciesMeta: '@babel/core': optional: true @@ -9216,13 +9459,6 @@ packages: xml-name-validator: 4.0.0 dev: true - /watchpack@2.4.0: - resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} - engines: {node: '>=10.13.0'} - dependencies: - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - /web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} dev: false