diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..a882442 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,7 @@ +root = true + +[*] +end_of_line = lf +insert_final_newline = true +indent_style = space +indent_size = 4 diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 41638e3..9d5eb3d 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,3 +1,3 @@ { - "recommendations": ["oxc.oxc-vscode"], + "recommendations": ["oxc.oxc-vscode"] } diff --git a/.yarnrc.yml b/.yarnrc.yml index 8bc296a..69ea824 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -6,6 +6,7 @@ enableScripts: true nodeLinker: node-modules catalog: + next: "^16.2.7" oxfmt: "^0.45.0" oxlint: "^1.60.0" typescript: "^6.0.3" diff --git a/.zed/settings.json b/.zed/settings.json index 1ab7810..ee1a9b4 100644 --- a/.zed/settings.json +++ b/.zed/settings.json @@ -1,16 +1,16 @@ { - "formatter": [ - { - "language_server": { - "name": "oxfmt", - }, + "formatter": [ + { + "language_server": { + "name": "oxfmt" + } + }, + { + "code_action": "source.fixAll.oxc" + } + ], + "prettier": { + "allowed": false }, - { - "code_action": "source.fixAll.oxc", - }, - ], - "prettier": { - "allowed": false, - }, - "language_servers": ["!eslint", "!biome", "..."], + "language_servers": ["!eslint", "!biome", "..."] } diff --git a/apps/example-next-intl/.env.example b/apps/example-next-intl/.env.example new file mode 100644 index 0000000..b7ba19b --- /dev/null +++ b/apps/example-next-intl/.env.example @@ -0,0 +1 @@ +REDIRECTIONIO_TOKEN= diff --git a/apps/example-next-intl/.gitignore b/apps/example-next-intl/.gitignore new file mode 100644 index 0000000..ac1b2e6 --- /dev/null +++ b/apps/example-next-intl/.gitignore @@ -0,0 +1,46 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/versions + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# env files (can opt-in for committing if needed) +.env* +!.env.example + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts + +# playwright +playwright-report/ +test-results diff --git a/apps/example-next-intl/README.md b/apps/example-next-intl/README.md new file mode 100644 index 0000000..e215bc4 --- /dev/null +++ b/apps/example-next-intl/README.md @@ -0,0 +1,36 @@ +This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app). + +## Getting Started + +First, run the development server: + +```bash +npm run dev +# or +yarn dev +# or +pnpm dev +# or +bun dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. + +This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! + +## Deploy on Vercel + +The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. + +Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. diff --git a/apps/example-next-intl/messages/en.json b/apps/example-next-intl/messages/en.json new file mode 100644 index 0000000..bbe30ad --- /dev/null +++ b/apps/example-next-intl/messages/en.json @@ -0,0 +1,5 @@ +{ + "home": { + "welcome": "Welcome to the example app" + } +} diff --git a/apps/example-next-intl/messages/fr.json b/apps/example-next-intl/messages/fr.json new file mode 100644 index 0000000..6d99d24 --- /dev/null +++ b/apps/example-next-intl/messages/fr.json @@ -0,0 +1,5 @@ +{ + "home": { + "welcome": "Bienvenue sur l'exemple d'application" + } +} diff --git a/apps/example-next-intl/next.config.ts b/apps/example-next-intl/next.config.ts new file mode 100644 index 0000000..ff77283 --- /dev/null +++ b/apps/example-next-intl/next.config.ts @@ -0,0 +1,7 @@ +import { NextConfig } from "next"; +import createNextIntlPlugin from "next-intl/plugin"; + +const nextConfig: NextConfig = {}; + +const withNextIntl = createNextIntlPlugin(); +export default withNextIntl(nextConfig); diff --git a/apps/example-next-intl/package.json b/apps/example-next-intl/package.json new file mode 100644 index 0000000..8fa95ab --- /dev/null +++ b/apps/example-next-intl/package.json @@ -0,0 +1,33 @@ +{ + "name": "example-next-intl", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev --port 3002", + "build": "next build", + "start": "next start --port 3002", + "lint": "oxlint --config ../../.oxlintrc.json", + "lint:fix": "oxlint --fix --config ../../.oxlintrc.json", + "format": "oxfmt -c ../../.oxfmtrc.json", + "format:check": "oxfmt -c ../../.oxfmtrc.json --check", + "test:e2e": "playwright test" + }, + "dependencies": { + "@redirection.io/vercel-middleware": "workspace:*", + "next": "catalog:", + "next-intl": "^4.13.0", + "react": "19.2.4", + "react-dom": "19.2.4" + }, + "devDependencies": { + "@playwright/test": "^1.60", + "@tailwindcss/postcss": "^4", + "@types/node": "^20", + "@types/react": "^19", + "@types/react-dom": "^19", + "oxfmt": "catalog:", + "oxlint": "catalog:", + "tailwindcss": "^4", + "typescript": "catalog:" + } +} diff --git a/apps/example-next-intl/postcss.config.mjs b/apps/example-next-intl/postcss.config.mjs new file mode 100644 index 0000000..148a80b --- /dev/null +++ b/apps/example-next-intl/postcss.config.mjs @@ -0,0 +1,7 @@ +const config = { + plugins: { + "@tailwindcss/postcss": {}, + }, +}; + +export default config; diff --git a/apps/example-next-intl/public/file.svg b/apps/example-next-intl/public/file.svg new file mode 100644 index 0000000..004145c --- /dev/null +++ b/apps/example-next-intl/public/file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/example-next-intl/public/globe.svg b/apps/example-next-intl/public/globe.svg new file mode 100644 index 0000000..567f17b --- /dev/null +++ b/apps/example-next-intl/public/globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/example-next-intl/public/next.svg b/apps/example-next-intl/public/next.svg new file mode 100644 index 0000000..5174b28 --- /dev/null +++ b/apps/example-next-intl/public/next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/example-next-intl/public/vercel.svg b/apps/example-next-intl/public/vercel.svg new file mode 100644 index 0000000..7705396 --- /dev/null +++ b/apps/example-next-intl/public/vercel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/example-next-intl/public/window.svg b/apps/example-next-intl/public/window.svg new file mode 100644 index 0000000..b2b2a44 --- /dev/null +++ b/apps/example-next-intl/public/window.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/example-next-intl/src/app/[locale]/layout.tsx b/apps/example-next-intl/src/app/[locale]/layout.tsx new file mode 100644 index 0000000..3fad012 --- /dev/null +++ b/apps/example-next-intl/src/app/[locale]/layout.tsx @@ -0,0 +1,35 @@ +import { routing } from "@/i18n/routing"; +import type { Metadata } from "next"; +import { hasLocale, NextIntlClientProvider } from "next-intl"; +import { Geist, Geist_Mono } from "next/font/google"; +import { notFound } from "next/navigation"; + +const geistSans = Geist({ + variable: "--font-geist-sans", + subsets: ["latin"], +}); + +const geistMono = Geist_Mono({ + variable: "--font-geist-mono", + subsets: ["latin"], +}); + +export const metadata: Metadata = { + title: "Create Next App", + description: "Generated by create next app", +}; + +export default async function LocaleLayout({ children, params }: LayoutProps<"/[locale]">) { + const { locale } = await params; + if (!hasLocale(routing.locales, locale)) { + notFound(); + } + + return ( + + + {children} + + + ); +} diff --git a/apps/example-next-intl/src/app/[locale]/page.tsx b/apps/example-next-intl/src/app/[locale]/page.tsx new file mode 100644 index 0000000..f2dec46 --- /dev/null +++ b/apps/example-next-intl/src/app/[locale]/page.tsx @@ -0,0 +1,11 @@ +import { getTranslations } from "next-intl/server"; + +export default async function Home() { + const t = await getTranslations("home"); + + return ( +
+ {t("welcome")} +
+ ); +} diff --git a/apps/example-next-intl/src/i18n/request.ts b/apps/example-next-intl/src/i18n/request.ts new file mode 100644 index 0000000..76cadd2 --- /dev/null +++ b/apps/example-next-intl/src/i18n/request.ts @@ -0,0 +1,13 @@ +import { getRequestConfig } from "next-intl/server"; +import { hasLocale } from "next-intl"; +import { routing } from "./routing"; + +export default getRequestConfig(async ({ requestLocale }) => { + const requested = await requestLocale; + const locale = hasLocale(routing.locales, requested) ? requested : routing.defaultLocale; + + return { + locale, + messages: (await import(`../../messages/${locale}.json`)).default, + }; +}); diff --git a/apps/example-next-intl/src/i18n/routing.ts b/apps/example-next-intl/src/i18n/routing.ts new file mode 100644 index 0000000..a055815 --- /dev/null +++ b/apps/example-next-intl/src/i18n/routing.ts @@ -0,0 +1,6 @@ +import { defineRouting } from "next-intl/routing"; + +export const routing = defineRouting({ + locales: ["en", "fr"], + defaultLocale: "en", +}); diff --git a/apps/example-next-intl/src/instrumentation.ts b/apps/example-next-intl/src/instrumentation.ts new file mode 100644 index 0000000..25cb586 --- /dev/null +++ b/apps/example-next-intl/src/instrumentation.ts @@ -0,0 +1,5 @@ +import { registerRedirectionIoInstrumentation } from "@redirection.io/vercel-middleware/instrumentation"; + +export const register = async () => { + registerRedirectionIoInstrumentation(); +}; diff --git a/apps/example-next-intl/src/proxy.ts b/apps/example-next-intl/src/proxy.ts new file mode 100644 index 0000000..e002195 --- /dev/null +++ b/apps/example-next-intl/src/proxy.ts @@ -0,0 +1,27 @@ +import { routing } from "@/i18n/routing"; +import { createRedirectionIoMiddleware } from "@redirection.io/vercel-middleware/next"; +import createMiddleware from "next-intl/middleware"; +import { NextRequest } from "next/server"; + +const routingMiddleware = createMiddleware(routing); + +function middleware(request: Request) { + const response = routingMiddleware(request as NextRequest); + return response; +} + +export default createRedirectionIoMiddleware({ + nextMiddleware: middleware, +}); + +// export default middleware; + +export const config = { + unstable_allowDynamic: ["/node_modules/@redirection.io/**"], + matcher: [ + // Match all pathnames except for + // - … if they start with `/api`, `/_next` or `/_vercel` + // - … the ones containing a dot (e.g. `favicon.ico`) + "/((?!api|_next/static|_next/image|.*\\.png$).*)?", + ], +}; diff --git a/apps/example-next-intl/tsconfig.json b/apps/example-next-intl/tsconfig.json new file mode 100644 index 0000000..d055640 --- /dev/null +++ b/apps/example-next-intl/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "target": "ES2017", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "react-jsx", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": ["./src/*"] + } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", ".next/dev/types/**/*.ts", "**/*.mts"], + "exclude": ["node_modules"] +} diff --git a/apps/example-webpack/package.json b/apps/example-webpack/package.json index 8b8e364..c23a8c8 100644 --- a/apps/example-webpack/package.json +++ b/apps/example-webpack/package.json @@ -13,7 +13,7 @@ }, "dependencies": { "@redirection.io/vercel-middleware": "workspace:*", - "next": "16.2.4", + "next": "catalog:", "react": "19.2.4", "react-dom": "19.2.4" }, @@ -25,6 +25,6 @@ "oxfmt": "catalog:", "oxlint": "catalog:", "tailwindcss": "^4", - "typescript": "^5" + "typescript": "catalog:" } } diff --git a/apps/example/package.json b/apps/example/package.json index 2fe193d..bf47a7b 100644 --- a/apps/example/package.json +++ b/apps/example/package.json @@ -14,7 +14,7 @@ }, "dependencies": { "@redirection.io/vercel-middleware": "workspace:*", - "next": "16.2.4", + "next": "catalog:", "react": "19.2.4", "react-dom": "19.2.4" }, diff --git a/apps/example/src/proxy.ts b/apps/example/src/proxy.ts index 8f93e8e..d68a2b1 100644 --- a/apps/example/src/proxy.ts +++ b/apps/example/src/proxy.ts @@ -1,6 +1,37 @@ import { createRedirectionIoMiddleware } from "@redirection.io/vercel-middleware/next"; +import { NextResponse } from "next/server"; -export default createRedirectionIoMiddleware({}); +function previousMiddleware() { + return NextResponse.next({ + headers: { + "prev-header": "foobar", + }, + }); +} + +function nextMiddleware(req: Request) { + return NextResponse.next({ + headers: { + "next-header": "foobar", + ...Object.fromEntries(req.headers.entries()), + }, + }); +} + +const rioMiddleware = createRedirectionIoMiddleware({ + previousMiddleware, + nextMiddleware, +}); + +export default async function (request: Request) { + // @ts-expect-error + const response = await rioMiddleware(request); + + // prev-header and next-header are available in the response headers + console.log(response.headers); + + return NextResponse.next(response); +} export const config = { unstable_allowDynamic: ["/node_modules/@redirection.io/**"], diff --git a/package.json b/package.json index e6b1774..cd6ff59 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "scripts": { "dev": "turbo run dev", "build": "turbo run build", - "build:packages": "turbo run build --filter=\"packages/*\"", + "build:packages": "turbo run build --filter=\"./packages/*\"", "build:examples": "turbo run build --filter=\"./apps/*\"", "start:examples": "turbo run start --filter=\"./apps/*\" --daemon", "lint": "turbo run lint", diff --git a/packages/vercel-middleware/src/instrumentation.ts b/packages/vercel-middleware/src/instrumentation.ts index 7a6dcdd..7d8b986 100644 --- a/packages/vercel-middleware/src/instrumentation.ts +++ b/packages/vercel-middleware/src/instrumentation.ts @@ -27,11 +27,16 @@ export const registerRedirectionIoInstrumentation = async () => { channel.subscribe(async (message: { request: IncomingMessage; response: ServerResponse }) => { const { request, response } = message; const nextInternalMeta = Symbol.for("NextInternalRequestMeta"); - // @ts-expect-error - const requestUrl = request[nextInternalMeta] - ? // @ts-expect-error - request[nextInternalMeta].initURL - : request.url; + const requestUrl = + // @ts-expect-error + request[nextInternalMeta] && request[nextInternalMeta].initURL + ? // @ts-expect-error + request[nextInternalMeta].initURL + : request.url; + + if (!requestUrl) { + return; + } if ( requestUrl.startsWith("/_next/") || diff --git a/packages/vercel-middleware/src/middleware.ts b/packages/vercel-middleware/src/middleware.ts index 45f89f8..0b3552d 100644 --- a/packages/vercel-middleware/src/middleware.ts +++ b/packages/vercel-middleware/src/middleware.ts @@ -274,6 +274,12 @@ function middlewareResponseToRequest(originalRequest: Request, response: Respons } } + response.headers.forEach((val, key) => { + if (!key.startsWith("x-middleware-")) { + request.headers.set(key, val); + } + }); + return request; } diff --git a/turbo.json b/turbo.json index 647d6a4..2d87580 100644 --- a/turbo.json +++ b/turbo.json @@ -1,17 +1,16 @@ { "$schema": "https://turborepo.dev/schema.json", + "globalDependencies": ["**/.env.*local", "**/.env"], + "globalEnv": ["REDIRECTIONIO_TOKEN"], "ui": "tui", "tasks": { "build": { "dependsOn": ["^build"], - "inputs": [".env*"], - "outputs": [".next/**", "!.next/cache/**"] + "outputs": [".next/**", "!.next/cache/**", "dist/**"] }, "start": { "dependsOn": ["^build"], - "inputs": [".env*"], - "outputs": [".next/**", "!.next/cache/**"], - "env": ["REDIRECTIONIO_TOKEN"] + "outputs": [".next/**", "!.next/cache/**"] }, "lint": { "dependsOn": ["^lint"] diff --git a/yarn.lock b/yarn.lock index 09112a0..c19f941 100644 --- a/yarn.lock +++ b/yarn.lock @@ -462,6 +462,38 @@ __metadata: languageName: node linkType: hard +"@formatjs/fast-memoize@npm:3.1.5, @formatjs/fast-memoize@npm:^3.1.0": + version: 3.1.5 + resolution: "@formatjs/fast-memoize@npm:3.1.5" + checksum: 10c0/80e5d5c6b3b558de5cabfbb7b5df89e291c9b05fb5f5edaa7234a581e55a96d15fab35c5922229f7885b160fe5a3654d029029bcb5e9a86ce4143db4a5ecea79 + languageName: node + linkType: hard + +"@formatjs/icu-messageformat-parser@npm:3.5.10, @formatjs/icu-messageformat-parser@npm:^3.4.0": + version: 3.5.10 + resolution: "@formatjs/icu-messageformat-parser@npm:3.5.10" + dependencies: + "@formatjs/icu-skeleton-parser": "npm:2.1.9" + checksum: 10c0/e9e00ba131971545cb31097cd817a94cb9fab961c02ad91d0357672fb611b1ab449b3e34a1d2b8fb1d2eb4cad4e3d78e30572953b94dc889462af92cbdd1bae2 + languageName: node + linkType: hard + +"@formatjs/icu-skeleton-parser@npm:2.1.9": + version: 2.1.9 + resolution: "@formatjs/icu-skeleton-parser@npm:2.1.9" + checksum: 10c0/6f1837bc75b0132407e6a49c2f9a150bf2cbd58c7d0fde1c6998d8e62950bb602f4f531a89cc666682c1abe819e34fd79020468e1c4a119be69fcba48c10ca38 + languageName: node + linkType: hard + +"@formatjs/intl-localematcher@npm:^0.8.1": + version: 0.8.9 + resolution: "@formatjs/intl-localematcher@npm:0.8.9" + dependencies: + "@formatjs/fast-memoize": "npm:3.1.5" + checksum: 10c0/d3e1fb9eab5a5e8d7c0600dc7f2c1b64ae0cd30dbfa7de0cd7300647440b60871bea5a23bc5d62dddb3fcbaba899ac90f84c513b832b5baf858a95c100542c31 + languageName: node + linkType: hard + "@gar/promise-retry@npm:^1.0.0": version: 1.0.3 resolution: "@gar/promise-retry@npm:1.0.3" @@ -809,10 +841,10 @@ __metadata: languageName: node linkType: hard -"@next/env@npm:16.2.4": - version: 16.2.4 - resolution: "@next/env@npm:16.2.4" - checksum: 10c0/4bf41f0da7cc97ca2a2f2b7f3fc81e14aba2afc280d32163b134b8f642b315fbabb5d9c224a783d8e759bbc73eedfc9acd048e772950395aa1e6290dd386d209 +"@next/env@npm:16.2.7": + version: 16.2.7 + resolution: "@next/env@npm:16.2.7" + checksum: 10c0/d5928d76047ee4f04cf2e5e47fce6c348ee010c7d3105d631e70299bb4ac8d0c53cefbb3415ce0e0e918e89fbcde0817ccac1be220b41cdc4490f989c7d166a7 languageName: node linkType: hard @@ -823,9 +855,9 @@ __metadata: languageName: node linkType: hard -"@next/swc-darwin-arm64@npm:16.2.4": - version: 16.2.4 - resolution: "@next/swc-darwin-arm64@npm:16.2.4" +"@next/swc-darwin-arm64@npm:16.2.7": + version: 16.2.7 + resolution: "@next/swc-darwin-arm64@npm:16.2.7" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard @@ -837,9 +869,9 @@ __metadata: languageName: node linkType: hard -"@next/swc-darwin-x64@npm:16.2.4": - version: 16.2.4 - resolution: "@next/swc-darwin-x64@npm:16.2.4" +"@next/swc-darwin-x64@npm:16.2.7": + version: 16.2.7 + resolution: "@next/swc-darwin-x64@npm:16.2.7" conditions: os=darwin & cpu=x64 languageName: node linkType: hard @@ -851,9 +883,9 @@ __metadata: languageName: node linkType: hard -"@next/swc-linux-arm64-gnu@npm:16.2.4": - version: 16.2.4 - resolution: "@next/swc-linux-arm64-gnu@npm:16.2.4" +"@next/swc-linux-arm64-gnu@npm:16.2.7": + version: 16.2.7 + resolution: "@next/swc-linux-arm64-gnu@npm:16.2.7" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard @@ -865,9 +897,9 @@ __metadata: languageName: node linkType: hard -"@next/swc-linux-arm64-musl@npm:16.2.4": - version: 16.2.4 - resolution: "@next/swc-linux-arm64-musl@npm:16.2.4" +"@next/swc-linux-arm64-musl@npm:16.2.7": + version: 16.2.7 + resolution: "@next/swc-linux-arm64-musl@npm:16.2.7" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard @@ -879,9 +911,9 @@ __metadata: languageName: node linkType: hard -"@next/swc-linux-x64-gnu@npm:16.2.4": - version: 16.2.4 - resolution: "@next/swc-linux-x64-gnu@npm:16.2.4" +"@next/swc-linux-x64-gnu@npm:16.2.7": + version: 16.2.7 + resolution: "@next/swc-linux-x64-gnu@npm:16.2.7" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard @@ -893,9 +925,9 @@ __metadata: languageName: node linkType: hard -"@next/swc-linux-x64-musl@npm:16.2.4": - version: 16.2.4 - resolution: "@next/swc-linux-x64-musl@npm:16.2.4" +"@next/swc-linux-x64-musl@npm:16.2.7": + version: 16.2.7 + resolution: "@next/swc-linux-x64-musl@npm:16.2.7" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard @@ -907,9 +939,9 @@ __metadata: languageName: node linkType: hard -"@next/swc-win32-arm64-msvc@npm:16.2.4": - version: 16.2.4 - resolution: "@next/swc-win32-arm64-msvc@npm:16.2.4" +"@next/swc-win32-arm64-msvc@npm:16.2.7": + version: 16.2.7 + resolution: "@next/swc-win32-arm64-msvc@npm:16.2.7" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard @@ -928,9 +960,9 @@ __metadata: languageName: node linkType: hard -"@next/swc-win32-x64-msvc@npm:16.2.4": - version: 16.2.4 - resolution: "@next/swc-win32-x64-msvc@npm:16.2.4" +"@next/swc-win32-x64-msvc@npm:16.2.7": + version: 16.2.7 + resolution: "@next/swc-win32-x64-msvc@npm:16.2.7" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -1257,6 +1289,150 @@ __metadata: languageName: node linkType: hard +"@parcel/watcher-android-arm64@npm:2.5.6": + version: 2.5.6 + resolution: "@parcel/watcher-android-arm64@npm:2.5.6" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@parcel/watcher-darwin-arm64@npm:2.5.6": + version: 2.5.6 + resolution: "@parcel/watcher-darwin-arm64@npm:2.5.6" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@parcel/watcher-darwin-x64@npm:2.5.6": + version: 2.5.6 + resolution: "@parcel/watcher-darwin-x64@npm:2.5.6" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@parcel/watcher-freebsd-x64@npm:2.5.6": + version: 2.5.6 + resolution: "@parcel/watcher-freebsd-x64@npm:2.5.6" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@parcel/watcher-linux-arm-glibc@npm:2.5.6": + version: 2.5.6 + resolution: "@parcel/watcher-linux-arm-glibc@npm:2.5.6" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + +"@parcel/watcher-linux-arm-musl@npm:2.5.6": + version: 2.5.6 + resolution: "@parcel/watcher-linux-arm-musl@npm:2.5.6" + conditions: os=linux & cpu=arm & libc=musl + languageName: node + linkType: hard + +"@parcel/watcher-linux-arm64-glibc@npm:2.5.6": + version: 2.5.6 + resolution: "@parcel/watcher-linux-arm64-glibc@npm:2.5.6" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@parcel/watcher-linux-arm64-musl@npm:2.5.6": + version: 2.5.6 + resolution: "@parcel/watcher-linux-arm64-musl@npm:2.5.6" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@parcel/watcher-linux-x64-glibc@npm:2.5.6": + version: 2.5.6 + resolution: "@parcel/watcher-linux-x64-glibc@npm:2.5.6" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@parcel/watcher-linux-x64-musl@npm:2.5.6": + version: 2.5.6 + resolution: "@parcel/watcher-linux-x64-musl@npm:2.5.6" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@parcel/watcher-win32-arm64@npm:2.5.6": + version: 2.5.6 + resolution: "@parcel/watcher-win32-arm64@npm:2.5.6" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@parcel/watcher-win32-ia32@npm:2.5.6": + version: 2.5.6 + resolution: "@parcel/watcher-win32-ia32@npm:2.5.6" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@parcel/watcher-win32-x64@npm:2.5.6": + version: 2.5.6 + resolution: "@parcel/watcher-win32-x64@npm:2.5.6" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@parcel/watcher@npm:^2.4.1": + version: 2.5.6 + resolution: "@parcel/watcher@npm:2.5.6" + dependencies: + "@parcel/watcher-android-arm64": "npm:2.5.6" + "@parcel/watcher-darwin-arm64": "npm:2.5.6" + "@parcel/watcher-darwin-x64": "npm:2.5.6" + "@parcel/watcher-freebsd-x64": "npm:2.5.6" + "@parcel/watcher-linux-arm-glibc": "npm:2.5.6" + "@parcel/watcher-linux-arm-musl": "npm:2.5.6" + "@parcel/watcher-linux-arm64-glibc": "npm:2.5.6" + "@parcel/watcher-linux-arm64-musl": "npm:2.5.6" + "@parcel/watcher-linux-x64-glibc": "npm:2.5.6" + "@parcel/watcher-linux-x64-musl": "npm:2.5.6" + "@parcel/watcher-win32-arm64": "npm:2.5.6" + "@parcel/watcher-win32-ia32": "npm:2.5.6" + "@parcel/watcher-win32-x64": "npm:2.5.6" + detect-libc: "npm:^2.0.3" + is-glob: "npm:^4.0.3" + node-addon-api: "npm:^7.0.0" + node-gyp: "npm:latest" + picomatch: "npm:^4.0.3" + dependenciesMeta: + "@parcel/watcher-android-arm64": + optional: true + "@parcel/watcher-darwin-arm64": + optional: true + "@parcel/watcher-darwin-x64": + optional: true + "@parcel/watcher-freebsd-x64": + optional: true + "@parcel/watcher-linux-arm-glibc": + optional: true + "@parcel/watcher-linux-arm-musl": + optional: true + "@parcel/watcher-linux-arm64-glibc": + optional: true + "@parcel/watcher-linux-arm64-musl": + optional: true + "@parcel/watcher-linux-x64-glibc": + optional: true + "@parcel/watcher-linux-x64-musl": + optional: true + "@parcel/watcher-win32-arm64": + optional: true + "@parcel/watcher-win32-ia32": + optional: true + "@parcel/watcher-win32-x64": + optional: true + checksum: 10c0/1e1d91f92e94e4640089a7cead243b2b81ca9aa8e1c862a97a25f589e84fbf1ad93abeb503f325c43a8c0e024ae0e74b48ec42c1cd84e8e423a3a87d25ded4f2 + languageName: node + linkType: hard + "@playwright/test@npm:^1.60": version: 1.60.0 resolution: "@playwright/test@npm:1.60.0" @@ -1472,6 +1648,149 @@ __metadata: languageName: node linkType: hard +"@schummar/icu-type-parser@npm:1.21.5": + version: 1.21.5 + resolution: "@schummar/icu-type-parser@npm:1.21.5" + checksum: 10c0/8c2bdb2087b2aeaafb484afefcc5291b21a7179fb92429cabc5f6b46019c6dedbeac6025b1a8f08e8749fb963f8a011e0ccba340ca3761f3c2348aac4b667c2c + languageName: node + linkType: hard + +"@swc/core-darwin-arm64@npm:1.15.40": + version: 1.15.40 + resolution: "@swc/core-darwin-arm64@npm:1.15.40" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@swc/core-darwin-x64@npm:1.15.40": + version: 1.15.40 + resolution: "@swc/core-darwin-x64@npm:1.15.40" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@swc/core-linux-arm-gnueabihf@npm:1.15.40": + version: 1.15.40 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.15.40" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@swc/core-linux-arm64-gnu@npm:1.15.40": + version: 1.15.40 + resolution: "@swc/core-linux-arm64-gnu@npm:1.15.40" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@swc/core-linux-arm64-musl@npm:1.15.40": + version: 1.15.40 + resolution: "@swc/core-linux-arm64-musl@npm:1.15.40" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@swc/core-linux-ppc64-gnu@npm:1.15.40": + version: 1.15.40 + resolution: "@swc/core-linux-ppc64-gnu@npm:1.15.40" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@swc/core-linux-s390x-gnu@npm:1.15.40": + version: 1.15.40 + resolution: "@swc/core-linux-s390x-gnu@npm:1.15.40" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@swc/core-linux-x64-gnu@npm:1.15.40": + version: 1.15.40 + resolution: "@swc/core-linux-x64-gnu@npm:1.15.40" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@swc/core-linux-x64-musl@npm:1.15.40": + version: 1.15.40 + resolution: "@swc/core-linux-x64-musl@npm:1.15.40" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@swc/core-win32-arm64-msvc@npm:1.15.40": + version: 1.15.40 + resolution: "@swc/core-win32-arm64-msvc@npm:1.15.40" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@swc/core-win32-ia32-msvc@npm:1.15.40": + version: 1.15.40 + resolution: "@swc/core-win32-ia32-msvc@npm:1.15.40" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@swc/core-win32-x64-msvc@npm:1.15.40": + version: 1.15.40 + resolution: "@swc/core-win32-x64-msvc@npm:1.15.40" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@swc/core@npm:^1.15.2": + version: 1.15.40 + resolution: "@swc/core@npm:1.15.40" + dependencies: + "@swc/core-darwin-arm64": "npm:1.15.40" + "@swc/core-darwin-x64": "npm:1.15.40" + "@swc/core-linux-arm-gnueabihf": "npm:1.15.40" + "@swc/core-linux-arm64-gnu": "npm:1.15.40" + "@swc/core-linux-arm64-musl": "npm:1.15.40" + "@swc/core-linux-ppc64-gnu": "npm:1.15.40" + "@swc/core-linux-s390x-gnu": "npm:1.15.40" + "@swc/core-linux-x64-gnu": "npm:1.15.40" + "@swc/core-linux-x64-musl": "npm:1.15.40" + "@swc/core-win32-arm64-msvc": "npm:1.15.40" + "@swc/core-win32-ia32-msvc": "npm:1.15.40" + "@swc/core-win32-x64-msvc": "npm:1.15.40" + "@swc/counter": "npm:^0.1.3" + "@swc/types": "npm:^0.1.26" + peerDependencies: + "@swc/helpers": ">=0.5.17" + dependenciesMeta: + "@swc/core-darwin-arm64": + optional: true + "@swc/core-darwin-x64": + optional: true + "@swc/core-linux-arm-gnueabihf": + optional: true + "@swc/core-linux-arm64-gnu": + optional: true + "@swc/core-linux-arm64-musl": + optional: true + "@swc/core-linux-ppc64-gnu": + optional: true + "@swc/core-linux-s390x-gnu": + optional: true + "@swc/core-linux-x64-gnu": + optional: true + "@swc/core-linux-x64-musl": + optional: true + "@swc/core-win32-arm64-msvc": + optional: true + "@swc/core-win32-ia32-msvc": + optional: true + "@swc/core-win32-x64-msvc": + optional: true + peerDependenciesMeta: + "@swc/helpers": + optional: true + checksum: 10c0/852a8940b307b08ea6d628e01bb0855fba6c60e59c8c1d4fa0bca9700e61106bb05939a721bf864f2f6d91c502d43cd938cb7f12e56f78eb56bc4f26c49fd8b7 + languageName: node + linkType: hard + "@swc/counter@npm:^0.1.3": version: 0.1.3 resolution: "@swc/counter@npm:0.1.3" @@ -1498,6 +1817,15 @@ __metadata: languageName: node linkType: hard +"@swc/types@npm:^0.1.26": + version: 0.1.26 + resolution: "@swc/types@npm:0.1.26" + dependencies: + "@swc/counter": "npm:^0.1.3" + checksum: 10c0/8449341e8bbff81c14e9918c25421143cf605dff20f70f048847e1f7cede396f8dd73903cbef331a809b4a8e15d0db374a5f6809003e7b440f93df1dd4934d28 + languageName: node + linkType: hard + "@tailwindcss/node@npm:4.2.2": version: 4.2.2 resolution: "@tailwindcss/node@npm:4.2.2" @@ -2174,6 +2502,27 @@ __metadata: languageName: node linkType: hard +"example-next-intl@workspace:apps/example-next-intl": + version: 0.0.0-use.local + resolution: "example-next-intl@workspace:apps/example-next-intl" + dependencies: + "@playwright/test": "npm:^1.60" + "@redirection.io/vercel-middleware": "workspace:*" + "@tailwindcss/postcss": "npm:^4" + "@types/node": "npm:^20" + "@types/react": "npm:^19" + "@types/react-dom": "npm:^19" + next: "catalog:" + next-intl: "npm:^4.13.0" + oxfmt: "catalog:" + oxlint: "catalog:" + react: "npm:19.2.4" + react-dom: "npm:19.2.4" + tailwindcss: "npm:^4" + typescript: "catalog:" + languageName: unknown + linkType: soft + "example-webpack@workspace:apps/example-webpack": version: 0.0.0-use.local resolution: "example-webpack@workspace:apps/example-webpack" @@ -2183,13 +2532,13 @@ __metadata: "@types/node": "npm:^20" "@types/react": "npm:^19" "@types/react-dom": "npm:^19" - next: "npm:16.2.4" + next: "catalog:" oxfmt: "catalog:" oxlint: "catalog:" react: "npm:19.2.4" react-dom: "npm:19.2.4" tailwindcss: "npm:^4" - typescript: "npm:^5" + typescript: "catalog:" languageName: unknown linkType: soft @@ -2203,7 +2552,7 @@ __metadata: "@types/node": "npm:^20" "@types/react": "npm:^19" "@types/react-dom": "npm:^19" - next: "npm:16.2.4" + next: "catalog:" oxfmt: "catalog:" oxlint: "catalog:" react: "npm:19.2.4" @@ -2446,6 +2795,15 @@ __metadata: languageName: node linkType: hard +"icu-minify@npm:^4.13.0": + version: 4.13.0 + resolution: "icu-minify@npm:4.13.0" + dependencies: + "@formatjs/icu-messageformat-parser": "npm:^3.4.0" + checksum: 10c0/fee2569189398055d939a62d23bf0aaf27b653e0788989a8201dffcf7d0073cf015280cc2aa3474a10a4433b87869f146aea3ca80219e55836b43596457117ef + languageName: node + linkType: hard + "ignore@npm:^5.2.0": version: 5.3.2 resolution: "ignore@npm:5.3.2" @@ -2453,6 +2811,16 @@ __metadata: languageName: node linkType: hard +"intl-messageformat@npm:^11.1.0": + version: 11.2.7 + resolution: "intl-messageformat@npm:11.2.7" + dependencies: + "@formatjs/fast-memoize": "npm:3.1.5" + "@formatjs/icu-messageformat-parser": "npm:3.5.10" + checksum: 10c0/14a9299b738fa5ebd393d5238fc7869b9ccc0b5520f30c5a278e910ac5b1ebd0a0acc3cb2647a0983a807e17685b7932bdc8fa08245fa0e095d4fb8ebec9e38d + languageName: node + linkType: hard + "ip-address@npm:^10.0.1": version: 10.1.0 resolution: "ip-address@npm:10.1.0" @@ -2467,7 +2835,7 @@ __metadata: languageName: node linkType: hard -"is-glob@npm:^4.0.1": +"is-glob@npm:^4.0.1, is-glob@npm:^4.0.3": version: 4.0.3 resolution: "is-glob@npm:4.0.3" dependencies: @@ -2928,31 +3296,60 @@ __metadata: languageName: node linkType: hard -"next@npm:16.2.4": - version: 16.2.4 - resolution: "next@npm:16.2.4" +"next-intl-swc-plugin-extractor@npm:^4.13.0": + version: 4.13.0 + resolution: "next-intl-swc-plugin-extractor@npm:4.13.0" + checksum: 10c0/249750778ae8c8aa436f68319e78caa891fd966baedd285a71a9dadcc083990d2b4fa2e22b2504adfad9e7ea578406c8dede1724f491f509c994b052eda35f43 + languageName: node + linkType: hard + +"next-intl@npm:^4.13.0": + version: 4.13.0 + resolution: "next-intl@npm:4.13.0" dependencies: - "@next/env": "npm:16.2.4" - "@next/swc-darwin-arm64": "npm:16.2.4" - "@next/swc-darwin-x64": "npm:16.2.4" - "@next/swc-linux-arm64-gnu": "npm:16.2.4" - "@next/swc-linux-arm64-musl": "npm:16.2.4" - "@next/swc-linux-x64-gnu": "npm:16.2.4" - "@next/swc-linux-x64-musl": "npm:16.2.4" - "@next/swc-win32-arm64-msvc": "npm:16.2.4" - "@next/swc-win32-x64-msvc": "npm:16.2.4" - "@swc/helpers": "npm:0.5.15" - baseline-browser-mapping: "npm:^2.9.19" + "@formatjs/intl-localematcher": "npm:^0.8.1" + "@parcel/watcher": "npm:^2.4.1" + "@swc/core": "npm:^1.15.2" + icu-minify: "npm:^4.13.0" + negotiator: "npm:^1.0.0" + next-intl-swc-plugin-extractor: "npm:^4.13.0" + po-parser: "npm:^2.1.1" + use-intl: "npm:^4.13.0" + peerDependencies: + next: ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/934d8b495695fdfae2679f1379fd3aca5f9e5671f6545b4a57f2c5f17ffd1fe0fb18b025d2877fb0a35e0691786388850320e4db56860b3342315988cc52ebdc + languageName: node + linkType: hard + +"next@npm:^14.2.13": + version: 14.2.35 + resolution: "next@npm:14.2.35" + dependencies: + "@next/env": "npm:14.2.35" + "@next/swc-darwin-arm64": "npm:14.2.33" + "@next/swc-darwin-x64": "npm:14.2.33" + "@next/swc-linux-arm64-gnu": "npm:14.2.33" + "@next/swc-linux-arm64-musl": "npm:14.2.33" + "@next/swc-linux-x64-gnu": "npm:14.2.33" + "@next/swc-linux-x64-musl": "npm:14.2.33" + "@next/swc-win32-arm64-msvc": "npm:14.2.33" + "@next/swc-win32-ia32-msvc": "npm:14.2.33" + "@next/swc-win32-x64-msvc": "npm:14.2.33" + "@swc/helpers": "npm:0.5.5" + busboy: "npm:1.6.0" caniuse-lite: "npm:^1.0.30001579" + graceful-fs: "npm:^4.2.11" postcss: "npm:8.4.31" - sharp: "npm:^0.34.5" - styled-jsx: "npm:5.1.6" + styled-jsx: "npm:5.1.1" peerDependencies: "@opentelemetry/api": ^1.1.0 - "@playwright/test": ^1.51.1 - babel-plugin-react-compiler: "*" - react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 - react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + "@playwright/test": ^1.41.2 + react: ^18.2.0 + react-dom: ^18.2.0 sass: ^1.3.0 dependenciesMeta: "@next/swc-darwin-arm64": @@ -2969,50 +3366,48 @@ __metadata: optional: true "@next/swc-win32-arm64-msvc": optional: true - "@next/swc-win32-x64-msvc": + "@next/swc-win32-ia32-msvc": optional: true - sharp: + "@next/swc-win32-x64-msvc": optional: true peerDependenciesMeta: "@opentelemetry/api": optional: true "@playwright/test": optional: true - babel-plugin-react-compiler: - optional: true sass: optional: true bin: next: dist/bin/next - checksum: 10c0/81dc1ef30141891dc5cc999a0a6210c68305b585b3a7508799767572a9fb7e4c7dcb5a50f5fa3fabadf6a46c2273405360b1d6f17f89edd891da1746ae31c186 + checksum: 10c0/5b1eadd554cd2cb1f030335d71a9363d16d86453f60a2331333887804c8b4b04a16fcb1ddb58229b792b6c365dbd0fafd9ccacd727c85134101a124bd6b4c06a languageName: node linkType: hard -"next@npm:^14.2.13": - version: 14.2.35 - resolution: "next@npm:14.2.35" +"next@npm:^16.2.7": + version: 16.2.7 + resolution: "next@npm:16.2.7" dependencies: - "@next/env": "npm:14.2.35" - "@next/swc-darwin-arm64": "npm:14.2.33" - "@next/swc-darwin-x64": "npm:14.2.33" - "@next/swc-linux-arm64-gnu": "npm:14.2.33" - "@next/swc-linux-arm64-musl": "npm:14.2.33" - "@next/swc-linux-x64-gnu": "npm:14.2.33" - "@next/swc-linux-x64-musl": "npm:14.2.33" - "@next/swc-win32-arm64-msvc": "npm:14.2.33" - "@next/swc-win32-ia32-msvc": "npm:14.2.33" - "@next/swc-win32-x64-msvc": "npm:14.2.33" - "@swc/helpers": "npm:0.5.5" - busboy: "npm:1.6.0" + "@next/env": "npm:16.2.7" + "@next/swc-darwin-arm64": "npm:16.2.7" + "@next/swc-darwin-x64": "npm:16.2.7" + "@next/swc-linux-arm64-gnu": "npm:16.2.7" + "@next/swc-linux-arm64-musl": "npm:16.2.7" + "@next/swc-linux-x64-gnu": "npm:16.2.7" + "@next/swc-linux-x64-musl": "npm:16.2.7" + "@next/swc-win32-arm64-msvc": "npm:16.2.7" + "@next/swc-win32-x64-msvc": "npm:16.2.7" + "@swc/helpers": "npm:0.5.15" + baseline-browser-mapping: "npm:^2.9.19" caniuse-lite: "npm:^1.0.30001579" - graceful-fs: "npm:^4.2.11" postcss: "npm:8.4.31" - styled-jsx: "npm:5.1.1" + sharp: "npm:^0.34.5" + styled-jsx: "npm:5.1.6" peerDependencies: "@opentelemetry/api": ^1.1.0 - "@playwright/test": ^1.41.2 - react: ^18.2.0 - react-dom: ^18.2.0 + "@playwright/test": ^1.51.1 + babel-plugin-react-compiler: "*" + react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 sass: ^1.3.0 dependenciesMeta: "@next/swc-darwin-arm64": @@ -3029,20 +3424,31 @@ __metadata: optional: true "@next/swc-win32-arm64-msvc": optional: true - "@next/swc-win32-ia32-msvc": - optional: true "@next/swc-win32-x64-msvc": optional: true + sharp: + optional: true peerDependenciesMeta: "@opentelemetry/api": optional: true "@playwright/test": optional: true + babel-plugin-react-compiler: + optional: true sass: optional: true bin: next: dist/bin/next - checksum: 10c0/5b1eadd554cd2cb1f030335d71a9363d16d86453f60a2331333887804c8b4b04a16fcb1ddb58229b792b6c365dbd0fafd9ccacd727c85134101a124bd6b4c06a + checksum: 10c0/11ba48609b3e2e6f380021b3c394c51a9e85a2c4569d19f11be24c7ee1dc5c0d4028e9ef824982043c48e2cb8583b949471153838aec85614a348fb38fb0eff9 + languageName: node + linkType: hard + +"node-addon-api@npm:^7.0.0": + version: 7.1.1 + resolution: "node-addon-api@npm:7.1.1" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/fb32a206276d608037fa1bcd7e9921e177fe992fc610d098aa3128baca3c0050fc1e014fa007e9b3874cf865ddb4f5bd9f43ccb7cbbbe4efaff6a83e920b17e9 languageName: node linkType: hard @@ -3412,6 +3818,13 @@ __metadata: languageName: node linkType: hard +"po-parser@npm:^2.1.1": + version: 2.1.1 + resolution: "po-parser@npm:2.1.1" + checksum: 10c0/dc57f74fc5b74576fe0290937691c54e7f6b36609027e25f5a40251e10d173c23305c2cca340a9497b0950cfe54e63fd3de9181048ba0e8acee56069c48dd5d0 + languageName: node + linkType: hard + "postcss-load-config@npm:^6.0.1": version: 6.0.1 resolution: "postcss-load-config@npm:6.0.1" @@ -4111,16 +4524,6 @@ __metadata: languageName: node linkType: hard -"typescript@npm:^5": - version: 5.9.3 - resolution: "typescript@npm:5.9.3" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10c0/6bd7552ce39f97e711db5aa048f6f9995b53f1c52f7d8667c1abdc1700c68a76a308f579cd309ce6b53646deb4e9a1be7c813a93baaf0a28ccd536a30270e1c5 - languageName: node - linkType: hard - "typescript@npm:^6.0.3": version: 6.0.3 resolution: "typescript@npm:6.0.3" @@ -4131,16 +4534,6 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@npm%3A^5#optional!builtin": - version: 5.9.3 - resolution: "typescript@patch:typescript@npm%3A5.9.3#optional!builtin::version=5.9.3&hash=5786d5" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10c0/ad09fdf7a756814dce65bc60c1657b40d44451346858eea230e10f2e95a289d9183b6e32e5c11e95acc0ccc214b4f36289dcad4bf1886b0adb84d711d336a430 - languageName: node - linkType: hard - "typescript@patch:typescript@npm%3A^6.0.3#optional!builtin": version: 6.0.3 resolution: "typescript@patch:typescript@npm%3A6.0.3#optional!builtin::version=6.0.3&hash=5786d5" @@ -4179,6 +4572,20 @@ __metadata: languageName: node linkType: hard +"use-intl@npm:^4.13.0": + version: 4.13.0 + resolution: "use-intl@npm:4.13.0" + dependencies: + "@formatjs/fast-memoize": "npm:^3.1.0" + "@schummar/icu-type-parser": "npm:1.21.5" + icu-minify: "npm:^4.13.0" + intl-messageformat: "npm:^11.1.0" + peerDependencies: + react: ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0 + checksum: 10c0/1e846965604abcfd0059b9b94111e50704833c12fbb78a6e25294f8701b1a40dbe0272991237ce7694d1527e0e0350b901fbb243c7c62a3affc4d4a01e41ea38 + languageName: node + linkType: hard + "vercel-middleware@workspace:.": version: 0.0.0-use.local resolution: "vercel-middleware@workspace:."