From 21235359a70eb66144a43980661017ab7b4bc212 Mon Sep 17 00:00:00 2001 From: Robbie Date: Wed, 8 Oct 2025 17:13:04 -0600 Subject: [PATCH 01/52] turbopack support --- packages/next-plugin/package.json | 1 + packages/next-plugin/src/index.ts | 209 +++++++++++++++---------- packages/turbopack-plugin/package.json | 33 ++++ packages/turbopack-plugin/src/index.ts | 164 +++++++++++++++++++ pnpm-lock.yaml | 16 ++ 5 files changed, 340 insertions(+), 83 deletions(-) create mode 100644 packages/turbopack-plugin/package.json create mode 100644 packages/turbopack-plugin/src/index.ts diff --git a/packages/next-plugin/package.json b/packages/next-plugin/package.json index a3c714150..00d6c8b7f 100644 --- a/packages/next-plugin/package.json +++ b/packages/next-plugin/package.json @@ -21,6 +21,7 @@ "author": "SEEK", "license": "MIT", "dependencies": { + "@vanilla-extract/turbopack-plugin": "workspace:^", "@vanilla-extract/webpack-plugin": "workspace:^" }, "peerDependencies": { diff --git a/packages/next-plugin/src/index.ts b/packages/next-plugin/src/index.ts index 56f0ff677..fc17b2b2c 100644 --- a/packages/next-plugin/src/index.ts +++ b/packages/next-plugin/src/index.ts @@ -12,10 +12,13 @@ import type { WebpackConfigContext, } from 'next/dist/server/config-shared'; import { createRequire } from 'node:module'; +import type { TurboLoaderOptions } from '@vanilla-extract/turbopack-plugin'; const require = createRequire(import.meta.url); -type PluginOptions = ConstructorParameters[0]; +type PluginOptions = ConstructorParameters[0] & { + turbopackGlob?: string; +}; const NextMiniCssExtractPlugin = NextMiniCssExtractPluginDefault as any; @@ -135,94 +138,134 @@ const getVanillaExtractCssLoaders = ( export const createVanillaExtractPlugin = ( pluginOptions: PluginOptions = {}, ) => { - return (nextConfig: NextConfig = {}): NextConfig => ({ - ...nextConfig, - webpack(config: any, options: WebpackConfigContext) { - const { dir, dev, config: resolvedNextConfig } = options; - - // https://github.com/vercel/next.js/blob/1fb4cad2a8329811b5ccde47217b4a6ae739124e/packages/next/build/index.ts#L336 - // https://github.com/vercel/next.js/blob/1fb4cad2a8329811b5ccde47217b4a6ae739124e/packages/next/build/webpack-config.ts#L626 - // https://github.com/vercel/next.js/pull/43916 - // on Next.js 12, findPagesDirResult is a string. on Next.js 13, findPagesDirResult is an object - const findPagesDirResult = findPagesDir( - dir, - resolvedNextConfig.experimental?.appDir ?? false, + return (nextConfig: NextConfig = {}): NextConfig => { + const { + turbopackGlob = '**/*.css.{ts,tsx,js,jsx}', + ...webpackPluginOptions + } = pluginOptions; + const turbopack = { ...(nextConfig.turbopack || {}) }; + + if ( + turbopack.rules?.[turbopackGlob] || + turbopack.rules?.['vanilla.virtual.css'] + ) { + throw new Error( + 'Vanilla extract could not be applied automatically due to conflicting turbopack rules', ); - // Skip nextConfig check since appDir is stable feature after Next.js 13.4 - const hasAppDir = !!(findPagesDirResult && findPagesDirResult.appDir); - - const outputCss = true; - - // https://github.com/vercel/next.js/blob/6e5b935fd7a61497f6854a81aec7df3a5dbf61ac/packages/next/src/build/webpack/config/helpers.ts#L12-L21 - const cssRules = config.module.rules.find( - (rule: any) => - Array.isArray(rule.oneOf) && - rule.oneOf.some( - ({ test }: any) => - typeof test === 'object' && - typeof test.test === 'function' && - test.test('filename.css'), + } + + turbopack.rules = { + ...(turbopack.rules || {}), + [turbopackGlob]: { + as: '*.js', + loaders: [ + { + loader: require.resolve('@vanilla-extract/turbopack-plugin'), + options: { + nextEnv: nextConfig.env ?? null, + outputCss: pluginOptions.outputCss ?? null, + identifiers: pluginOptions.identifiers ?? null, + } satisfies TurboLoaderOptions, + }, + ], + }, + 'vanilla.virtual.css': { + loaders: [require.resolve('@vanilla-extract/turbopack-plugin')], + }, + }; + + return { + ...nextConfig, + turbopack, + webpack(config: any, options: WebpackConfigContext) { + const { dir, dev, config: resolvedNextConfig } = options; + + // https://github.com/vercel/next.js/blob/1f1632979c78b3edfe59fd85d8cce62efcdee688/packages/next/build/index.ts#L336 + // https://github.com/vercel/next.js/blob/1fb4cad2a8329811b5ccde47217b4a6ae739124e/packages/next/build/webpack-config.ts#L626 + // https://github.com/vercel/next.js/pull/43916 + // on Next.js 12, findPagesDirResult is a string. on Next.js 13, findPagesDirResult is an object + const findPagesDirResult = findPagesDir( + dir, + resolvedNextConfig.experimental?.appDir ?? false, + ); + // Skip nextConfig check since appDir is stable feature after Next.js 13.4 + const hasAppDir = !!(findPagesDirResult && findPagesDirResult.appDir); + + const outputCss = true; + + // https://github.com/vercel/next.js/blob/6e5b935fd7a61497f6854a81aec7df3a5dbf61ac/packages/next/src/build/webpack/config/helpers.ts#L12-L21 + const cssRules = config.module.rules.find( + (rule: any) => + Array.isArray(rule.oneOf) && + rule.oneOf.some( + ({ test }: any) => + typeof test === 'object' && + typeof test.test === 'function' && + test.test('filename.css'), + ), + ).oneOf; + + // https://github.com/SukkaW/style9-webpack/blob/f51c46bbcd95ea3b988d3559c3b35cc056874366/src/next-appdir/index.ts#L187-L190 + cssRules.unshift({ + test: /vanilla\.virtual\.css/i, + sideEffects: true, + use: getVanillaExtractCssLoaders( + options, + resolvedNextConfig.assetPrefix, + hasAppDir, ), - ).oneOf; - - // https://github.com/SukkaW/style9-webpack/blob/f51c46bbcd95ea3b988d3559c3b35cc056874366/src/next-appdir/index.ts#L187-L190 - cssRules.unshift({ - test: /vanilla\.virtual\.css/i, - sideEffects: true, - use: getVanillaExtractCssLoaders( - options, - resolvedNextConfig.assetPrefix, - hasAppDir, - ), - }); + }); + + // vanilla-extract need to emit the css file on both server and client, both during the + // development and production. + // However, Next.js only add MiniCssExtractPlugin on pages dir + client build + production mode. + // + // To simplify the logic at our side, we will add MiniCssExtractPlugin based on + // the "instanceof" check (We will only add our required MiniCssExtractPlugin if + // Next.js hasn't added it yet). + // This also prevent multiple MiniCssExtractPlugin being added (which will cause + // RealContentHashPlugin to panic) + if ( + !config.plugins.some( + (p: any) => p instanceof NextMiniCssExtractPlugin, + ) + ) { + // HMR reloads the CSS file when the content changes but does not use + // the new file name, which means it can't contain a hash. + const filename = dev + ? 'static/css/[name].css' + : 'static/css/[contenthash].css'; - // vanilla-extract need to emit the css file on both server and client, both during the - // development and production. - // However, Next.js only add MiniCssExtractPlugin on pages dir + client build + production mode. - // - // To simplify the logic at our side, we will add MiniCssExtractPlugin based on - // the "instanceof" check (We will only add our required MiniCssExtractPlugin if - // Next.js hasn't added it yet). - // This also prevent multiple MiniCssExtractPlugin being added (which will cause - // RealContentHashPlugin to panic) - if ( - !config.plugins.some((p: any) => p instanceof NextMiniCssExtractPlugin) - ) { - // HMR reloads the CSS file when the content changes but does not use - // the new file name, which means it can't contain a hash. - const filename = dev - ? 'static/css/[name].css' - : 'static/css/[contenthash].css'; + config.plugins.push( + new NextMiniCssExtractPlugin({ + filename, + chunkFilename: filename, + // Next.js guarantees that CSS order "doesn't matter", due to imposed + // restrictions: + // 1. Global CSS can only be defined in a single entrypoint (_app) + // 2. CSS Modules generate scoped class names by default and cannot + // include Global CSS (:global() selector). + // + // While not a perfect guarantee (e.g. liberal use of `:global()` + // selector), this assumption is required to code-split CSS. + // + // If this warning were to trigger, it'd be unactionable by the user, + // but likely not valid -- so just disable it. + ignoreOrder: true, + }), + ); + } config.plugins.push( - new NextMiniCssExtractPlugin({ - filename, - chunkFilename: filename, - // Next.js guarantees that CSS order "doesn't matter", due to imposed - // restrictions: - // 1. Global CSS can only be defined in a single entrypoint (_app) - // 2. CSS Modules generate scoped class names by default and cannot - // include Global CSS (:global() selector). - // - // While not a perfect guarantee (e.g. liberal use of `:global()` - // selector), this assumption is required to code-split CSS. - // - // If this warning were to trigger, it'd be unactionable by the user, - // but likely not valid -- so just disable it. - ignoreOrder: true, - }), + new VanillaExtractPlugin({ outputCss, ...webpackPluginOptions }), ); - } - config.plugins.push( - new VanillaExtractPlugin({ outputCss, ...pluginOptions }), - ); - - if (typeof nextConfig.webpack === 'function') { - return nextConfig.webpack(config, options); - } + if (typeof nextConfig.webpack === 'function') { + return nextConfig.webpack(config, options); + } - return config; - }, - }); + return config; + }, + }; + }; }; diff --git a/packages/turbopack-plugin/package.json b/packages/turbopack-plugin/package.json new file mode 100644 index 000000000..ce3a19b43 --- /dev/null +++ b/packages/turbopack-plugin/package.json @@ -0,0 +1,33 @@ +{ + "name": "@vanilla-extract/turbopack-plugin", + "version": "0.0.0", + "description": "Turbopack loader for vanilla-extract", + "main": "dist/vanilla-extract-turbopack-plugin.cjs.js", + "module": "dist/vanilla-extract-turbopack-plugin.esm.js", + "types": "dist/vanilla-extract-turbopack-plugin.cjs.d.ts", + "preconstruct": { + "entrypoints": [ + "index.ts" + ] + }, + "files": [ + "/dist" + ], + "repository": { + "type": "git", + "url": "https://github.com/vanilla-extract-css/vanilla-extract.git", + "directory": "packages/turbopack-plugin" + }, + "author": "SEEK", + "license": "MIT", + "dependencies": { + "@vanilla-extract/compiler": "workspace:^", + "@vanilla-extract/integration": "workspace:^" + }, + "devDependencies": { + "next": "12.3.4" + }, + "peerDependencies": { + "next": ">=12.1.7" + } +} diff --git a/packages/turbopack-plugin/src/index.ts b/packages/turbopack-plugin/src/index.ts new file mode 100644 index 000000000..327a2100f --- /dev/null +++ b/packages/turbopack-plugin/src/index.ts @@ -0,0 +1,164 @@ +import * as path from 'node:path'; +import * as fs from 'node:fs/promises'; +import { + createCompiler, + type Compiler as VeCompiler, +} from '@vanilla-extract/compiler'; +import { + serializeCss, + deserializeCss, + type IdentifierOption, +} from '@vanilla-extract/integration'; + +type LoaderContext = { + getOptions: (schema?: unknown) => OptionsType; + getResolve?: ( + options?: unknown, + ) => ( + context: string, + request: string, + callback: (err: any, result?: string) => void, + ) => void; + async: () => ( + err?: Error | null, + content?: string, + sourceMap?: unknown, + additionalData?: unknown, + ) => void; + addDependency: (file: string) => void; + mode: 'none' | 'development' | 'production'; + rootContext: string; + resourcePath: string; + resourceQuery?: string; +}; + +export type TurboLoaderOptions = { + identifiers: IdentifierOption | null; + nextEnv: Record | null; + outputCss: boolean | null; +}; + +let singletonCompiler: VeCompiler | undefined; + +const getCompiler = async ( + root: string, + identifiers: IdentifierOption, + getResolve?: LoaderContext['getResolve'], + nextEnv?: Record | null, +): Promise => { + if (singletonCompiler) return singletonCompiler; + + const defineEnv: Record = {}; + for (const [key, value] of Object.entries(nextEnv ?? {})) { + defineEnv[`process.env.${key}`] = JSON.stringify(value); + } + + singletonCompiler = createCompiler({ + root, + identifiers, + viteConfig: { + define: defineEnv, + plugins: [ + { + // avoid module resolution errors by letting turbopack resolve our modules for us + name: 'vanilla-extract-turbo-resolve', + async resolveId(source: string, importer: string | undefined) { + if (!getResolve || !importer) return null; + const resolver = getResolve({}); + return new Promise((resolve) => { + resolver( + path.dirname(importer), + source, + (_err: any, result?: string) => { + resolve(result); + }, + ); + }); + }, + }, + ], + }, + }); + + return singletonCompiler; +}; + +/** + * The Turbopack-compatible loader for vanilla-extract. + * - JS mode: processes .css.{ts,tsx,js,jsx} files, compiles and extracts CSS. + * - CSS mode: when applied to a request with ?ve-source, emits the provided CSS. + */ +export default async function turbopackVanillaExtractLoader( + this: LoaderContext, +) { + const callback = this.async(); + try { + const options = this.getOptions(); + const identifiers = + options.identifiers ?? (this.mode === 'production' ? 'short' : 'debug'); + const outputCss = options.outputCss ?? true; + + // process virtual css if needed + const rawQuery: string | undefined = this.resourceQuery; + if (typeof rawQuery === 'string') { + const query = rawQuery.startsWith('?') ? rawQuery.slice(1) : rawQuery; + const params = new URLSearchParams(query); + const encoded = params.get('ve-source'); + if (encoded != null) { + const css = await deserializeCss(encoded); + return callback(null, css); + } + } + + // turbopack has trouble resolving directly to our package and the import cannot be server relative + // we need to reference a real file, so write one to our next cache to reference + const virtualCssPath = path.join( + this.rootContext, + '.next', + 'vanilla.virtual.css', + ); + try { + await fs.writeFile( + virtualCssPath, + '/* Virtual CSS file for vanilla-extract */', + ); + } catch { + // file already exists + } + + const compiler = await getCompiler( + this.rootContext, + identifiers, + this.getResolve, + options.nextEnv, + ); + const { source: veSource, watchFiles } = await compiler.processVanillaFile( + this.resourcePath, + { + outputCss: false, // always false since we inject CSS manually + }, + ); + + watchFiles?.forEach((file) => this.addDependency(file)); + + // get generated css (if any) and construct css import + const { css } = compiler.getCssForFile(this.resourcePath); + + let transformed = veSource; + if (css && outputCss && css.length > 0) { + const serialized = await serializeCss(css); + const fromDir = path.dirname(this.resourcePath); + const relPath = path + .relative(fromDir, virtualCssPath) + .replace(/\\/g, '/'); + const importPath = relPath.startsWith('.') ? relPath : `./${relPath}`; + const importRequest = `${importPath}?ve-source=${serialized}`; + const importStmt = `import '${importRequest}';`; + transformed = `${importStmt};${veSource}`; + } + + callback(null, transformed); + } catch (e) { + callback(e as Error); + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5613f61ba..eb1462b89 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -549,6 +549,9 @@ importers: packages/next-plugin: dependencies: + '@vanilla-extract/turbopack-plugin': + specifier: workspace:^ + version: link:../turbopack-plugin '@vanilla-extract/webpack-plugin': specifier: workspace:^ version: link:../webpack-plugin @@ -614,6 +617,19 @@ importers: specifier: workspace:^ version: link:../css + packages/turbopack-plugin: + dependencies: + '@vanilla-extract/compiler': + specifier: workspace:^ + version: link:../compiler + '@vanilla-extract/integration': + specifier: workspace:^ + version: link:../integration + devDependencies: + next: + specifier: 12.3.4 + version: 12.3.4(@babel/core@7.23.9)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + packages/utils: {} packages/vite-plugin: From 11de4e6b7dd649939f3931fb07db163c4759b70d Mon Sep 17 00:00:00 2001 From: Robbie Date: Wed, 8 Oct 2025 17:24:27 -0600 Subject: [PATCH 02/52] add changeset --- .changeset/fresh-wombats-stick.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/fresh-wombats-stick.md diff --git a/.changeset/fresh-wombats-stick.md b/.changeset/fresh-wombats-stick.md new file mode 100644 index 000000000..134228826 --- /dev/null +++ b/.changeset/fresh-wombats-stick.md @@ -0,0 +1,6 @@ +--- +'@vanilla-extract/turbopack-plugin': minor +'@vanilla-extract/next-plugin': minor +--- + +turbopack support for next.js From 2cb684b8afaacfbeaba769d286bc03a60b3a071c Mon Sep 17 00:00:00 2001 From: Robbie Date: Thu, 9 Oct 2025 16:11:43 -0600 Subject: [PATCH 03/52] support multiple turbopack globs --- packages/next-plugin/src/index.ts | 36 +++++++++++++++++-------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/packages/next-plugin/src/index.ts b/packages/next-plugin/src/index.ts index fc17b2b2c..d3e2baef0 100644 --- a/packages/next-plugin/src/index.ts +++ b/packages/next-plugin/src/index.ts @@ -17,7 +17,7 @@ import type { TurboLoaderOptions } from '@vanilla-extract/turbopack-plugin'; const require = createRequire(import.meta.url); type PluginOptions = ConstructorParameters[0] & { - turbopackGlob?: string; + turbopackGlob?: string[]; }; const NextMiniCssExtractPlugin = NextMiniCssExtractPluginDefault as any; @@ -140,13 +140,13 @@ export const createVanillaExtractPlugin = ( ) => { return (nextConfig: NextConfig = {}): NextConfig => { const { - turbopackGlob = '**/*.css.{ts,tsx,js,jsx}', + turbopackGlob = ['**/*.css.{ts,tsx,js,jsx}'], ...webpackPluginOptions } = pluginOptions; const turbopack = { ...(nextConfig.turbopack || {}) }; if ( - turbopack.rules?.[turbopackGlob] || + turbopackGlob.some((glob) => turbopack.rules?.[glob]) || turbopack.rules?.['vanilla.virtual.css'] ) { throw new Error( @@ -154,21 +154,25 @@ export const createVanillaExtractPlugin = ( ); } + const vanillaExtractRule = { + as: '*.js', + loaders: [ + { + loader: require.resolve('@vanilla-extract/turbopack-plugin'), + options: { + nextEnv: nextConfig.env ?? null, + outputCss: pluginOptions.outputCss ?? null, + identifiers: pluginOptions.identifiers ?? null, + } satisfies TurboLoaderOptions, + }, + ], + } as const; + turbopack.rules = { ...(turbopack.rules || {}), - [turbopackGlob]: { - as: '*.js', - loaders: [ - { - loader: require.resolve('@vanilla-extract/turbopack-plugin'), - options: { - nextEnv: nextConfig.env ?? null, - outputCss: pluginOptions.outputCss ?? null, - identifiers: pluginOptions.identifiers ?? null, - } satisfies TurboLoaderOptions, - }, - ], - }, + ...Object.fromEntries( + turbopackGlob.map((glob) => [glob, vanillaExtractRule]), + ), 'vanilla.virtual.css': { loaders: [require.resolve('@vanilla-extract/turbopack-plugin')], }, From ef28103db84381c30a346da874986057195c04c2 Mon Sep 17 00:00:00 2001 From: Robbie Date: Sat, 11 Oct 2025 15:36:11 -0600 Subject: [PATCH 04/52] properly encode input CSS --- packages/turbopack-plugin/src/index.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/turbopack-plugin/src/index.ts b/packages/turbopack-plugin/src/index.ts index 327a2100f..bccf56043 100644 --- a/packages/turbopack-plugin/src/index.ts +++ b/packages/turbopack-plugin/src/index.ts @@ -152,9 +152,11 @@ export default async function turbopackVanillaExtractLoader( .relative(fromDir, virtualCssPath) .replace(/\\/g, '/'); const importPath = relPath.startsWith('.') ? relPath : `./${relPath}`; - const importRequest = `${importPath}?ve-source=${serialized}`; - const importStmt = `import '${importRequest}';`; - transformed = `${importStmt};${veSource}`; + const importRequest = `${importPath}?ve-source=${encodeURIComponent( + serialized, + )}`; + const importStmt = `import '${importRequest}';\n`; + transformed = `${importStmt}${veSource}`; } callback(null, transformed); From f5035e8ce616b7094109f1be905f137d5c1c9e5d Mon Sep 17 00:00:00 2001 From: Robbie Date: Mon, 13 Oct 2025 11:58:19 -0600 Subject: [PATCH 05/52] fix: correctly emit global styles --- packages/turbopack-plugin/src/index.ts | 48 +++++++++++++++++--------- 1 file changed, 31 insertions(+), 17 deletions(-) diff --git a/packages/turbopack-plugin/src/index.ts b/packages/turbopack-plugin/src/index.ts index bccf56043..c235d2970 100644 --- a/packages/turbopack-plugin/src/index.ts +++ b/packages/turbopack-plugin/src/index.ts @@ -134,29 +134,43 @@ export default async function turbopackVanillaExtractLoader( ); const { source: veSource, watchFiles } = await compiler.processVanillaFile( this.resourcePath, - { - outputCss: false, // always false since we inject CSS manually - }, + { outputCss }, ); watchFiles?.forEach((file) => this.addDependency(file)); - // get generated css (if any) and construct css import - const { css } = compiler.getCssForFile(this.resourcePath); + // rewrite compiler-emitted .vanilla.css imports to the on-disk virtual stub with serialized CSS + const fromDir = path.dirname(this.resourcePath); + const relPath = path.relative(fromDir, virtualCssPath).replace(/\\/g, '/'); + const importPath = relPath.startsWith('.') ? relPath : `./${relPath}`; let transformed = veSource; - if (css && outputCss && css.length > 0) { - const serialized = await serializeCss(css); - const fromDir = path.dirname(this.resourcePath); - const relPath = path - .relative(fromDir, virtualCssPath) - .replace(/\\/g, '/'); - const importPath = relPath.startsWith('.') ? relPath : `./${relPath}`; - const importRequest = `${importPath}?ve-source=${encodeURIComponent( - serialized, - )}`; - const importStmt = `import '${importRequest}';\n`; - transformed = `${importStmt}${veSource}`; + const importRegex = /import\s+['"](.+?\.vanilla\.css)['"];?/g; + const matches = Array.from(veSource.matchAll(importRegex)); + + for (const match of matches) { + const fullImport = match[0]; + const cssImportPath = match[1]; + if (!fullImport || !cssImportPath) continue; + + let cssModulePath = cssImportPath; + if (cssModulePath.endsWith('.vanilla.css')) { + cssModulePath = cssModulePath.slice(0, -'.vanilla.css'.length); + } + + const { css } = compiler.getCssForFile(cssModulePath); + + if (css) { + const serialized = await serializeCss(css); + const importRequest = `${importPath}?ve-source=${encodeURIComponent( + serialized, + )}`; + const newImport = `import '${importRequest}';`; + transformed = transformed.replace(fullImport, newImport); + } else { + // no css available for this import; drop it + transformed = transformed.replace(fullImport, ''); + } } callback(null, transformed); From abf86a5fc434e64c18962d2ce38b243ad24cfeb6 Mon Sep 17 00:00:00 2001 From: Robbie Date: Wed, 22 Oct 2025 17:06:29 -0600 Subject: [PATCH 06/52] stub "next/font" module so that it can be accessed in css contexts --- packages/turbopack-plugin/package.json | 1 + packages/turbopack-plugin/src/index.ts | 24 +- .../src/next-font/devValidation.ts | 49 +++ .../turbopack-plugin/src/next-font/plugin.ts | 45 +++ .../src/next-font/transform.ts | 309 ++++++++++++++++++ 5 files changed, 426 insertions(+), 2 deletions(-) create mode 100644 packages/turbopack-plugin/src/next-font/devValidation.ts create mode 100644 packages/turbopack-plugin/src/next-font/plugin.ts create mode 100644 packages/turbopack-plugin/src/next-font/transform.ts diff --git a/packages/turbopack-plugin/package.json b/packages/turbopack-plugin/package.json index ce3a19b43..64a4760cb 100644 --- a/packages/turbopack-plugin/package.json +++ b/packages/turbopack-plugin/package.json @@ -21,6 +21,7 @@ "author": "SEEK", "license": "MIT", "dependencies": { + "@swc/core": "^1.13.5", "@vanilla-extract/compiler": "workspace:^", "@vanilla-extract/integration": "workspace:^" }, diff --git a/packages/turbopack-plugin/src/index.ts b/packages/turbopack-plugin/src/index.ts index c235d2970..729277142 100644 --- a/packages/turbopack-plugin/src/index.ts +++ b/packages/turbopack-plugin/src/index.ts @@ -9,6 +9,8 @@ import { deserializeCss, type IdentifierOption, } from '@vanilla-extract/integration'; +import { createNextFontVePlugins, type NextFontPluginState } from './next-font/plugin'; +import { buildValidationPrelude } from './next-font/devValidation'; type LoaderContext = { getOptions: (schema?: unknown) => OptionsType; @@ -39,6 +41,7 @@ export type TurboLoaderOptions = { }; let singletonCompiler: VeCompiler | undefined; +let nextFontState: NextFontPluginState | undefined; const getCompiler = async ( root: string, @@ -59,6 +62,11 @@ const getCompiler = async ( viteConfig: { define: defineEnv, plugins: [ + ...(() => { + const created = createNextFontVePlugins(); + nextFontState = created.state; + return created.plugins; + })(), { // avoid module resolution errors by letting turbopack resolve our modules for us name: 'vanilla-extract-turbo-resolve', @@ -139,14 +147,26 @@ export default async function turbopackVanillaExtractLoader( watchFiles?.forEach((file) => this.addDependency(file)); + // prepend next/font dev validation if this file used any providers + let veSourceWithValidation = veSource; + if (nextFontState && watchFiles && watchFiles.size > 0) { + const usedProviders = [...watchFiles].filter((f) => nextFontState!.fontProviders.has(f)); + if (usedProviders.length > 0) { + const prelude = buildValidationPrelude(this.resourcePath, usedProviders, nextFontState.fontProviderDetails); + if (prelude) { + veSourceWithValidation = `${prelude}\n${veSource}`; + } + } + } + // rewrite compiler-emitted .vanilla.css imports to the on-disk virtual stub with serialized CSS const fromDir = path.dirname(this.resourcePath); const relPath = path.relative(fromDir, virtualCssPath).replace(/\\/g, '/'); const importPath = relPath.startsWith('.') ? relPath : `./${relPath}`; - let transformed = veSource; + let transformed = veSourceWithValidation; const importRegex = /import\s+['"](.+?\.vanilla\.css)['"];?/g; - const matches = Array.from(veSource.matchAll(importRegex)); + const matches = Array.from(veSourceWithValidation.matchAll(importRegex)); for (const match of matches) { const fullImport = match[0]; diff --git a/packages/turbopack-plugin/src/next-font/devValidation.ts b/packages/turbopack-plugin/src/next-font/devValidation.ts new file mode 100644 index 000000000..a3f252fa9 --- /dev/null +++ b/packages/turbopack-plugin/src/next-font/devValidation.ts @@ -0,0 +1,49 @@ +import * as path from 'node:path'; + +export function buildValidationPrelude( + absolutePath: string, + usedProviders: string[], + detailsMap: Map, +): string { + if (process.env.NODE_ENV === 'production' || usedProviders.length === 0) return ''; + + const imports: string[] = []; + const validationLogic: string[] = []; + + usedProviders.forEach((providerPath, index) => { + const importAlias = `__ve_font_prov_${index}`; + let relativePath = path.posix.relative(path.dirname(absolutePath), providerPath); + relativePath = relativePath.replace(/\.(ts|tsx)$/, ''); + if (!relativePath.startsWith('.')) relativePath = `./${relativePath}`; + imports.push(`import * as ${importAlias} from "${relativePath}";`); + + const details = detailsMap.get(providerPath); + if (details) { + details.forEach((fontInfo) => { + const validationSnippet = ` +try { + const realFont = ${importAlias}[${JSON.stringify(fontInfo.exportName)}]; + const stubbedFamily = ${JSON.stringify(fontInfo.stubbedFamily)}; + if (realFont && realFont.style && realFont.style.fontFamily) { + if (realFont.style.fontFamily !== stubbedFamily) { + console.error('[VE Font Check] mismatch:', ${JSON.stringify(path.basename(providerPath))}, ${JSON.stringify(fontInfo.exportName)}); + } + } +} catch (e) { /* ignore */ }`; + validationLogic.push(validationSnippet); + }); + } + }); + + if (validationLogic.length === 0) return ''; + + return `${imports.join('\n')} +if (process.env.NODE_ENV !== 'production') { +${validationLogic.join('\n')} +} +`; +} + + + + diff --git a/packages/turbopack-plugin/src/next-font/plugin.ts b/packages/turbopack-plugin/src/next-font/plugin.ts new file mode 100644 index 000000000..0025aec94 --- /dev/null +++ b/packages/turbopack-plugin/src/next-font/plugin.ts @@ -0,0 +1,45 @@ +import { transformNextFont } from './transform'; + +export type NextFontPluginState = { + fontProviders: Set; + fontProviderDetails: Map; +}; + +type Plugin = { + name: string; + enforce?: 'pre' | 'post'; + transform?: ( + code: string, + id: string, + ) => Promise<{ code: string; map: any } | null> | { code: string; map: any } | null; +}; + +export function createNextFontVePlugins(): { plugins: Plugin[]; state: NextFontPluginState } { + const state: NextFontPluginState = { + fontProviders: new Set(), + fontProviderDetails: new Map(), + }; + + const nextFontStubPlugin: Plugin = { + name: 've-next-font-stub', + enforce: 'pre', + async transform(code: string, id: string) { + if (!/\.(?:[cm]?[jt]s|[jt]sx)$/.test(id) || !code.includes('next/font')) { + return null; + } + + const result = await transformNextFont(code, id); + if (result.usedNextFont) { + state.fontProviders.add(id); + if (result.details.length > 0) { + state.fontProviderDetails.set(id, result.details); + } + } + return result.changed ? { code: result.code, map: null } : null; + }, + }; + + return { plugins: [nextFontStubPlugin], state }; +} + + diff --git a/packages/turbopack-plugin/src/next-font/transform.ts b/packages/turbopack-plugin/src/next-font/transform.ts new file mode 100644 index 000000000..ebebbf21c --- /dev/null +++ b/packages/turbopack-plugin/src/next-font/transform.ts @@ -0,0 +1,309 @@ +import * as swc from '@swc/core'; +export type FontDetail = { exportName: string; stubbedFamily: string }; +export type NextFontTransformResult = { + code: string; + usedNextFont: boolean; + details: FontDetail[]; + changed: boolean; +}; + +const HELPERS_PREAMBLE = [ + "const __VE_FONT_MSG = \"next/font class names are generated by Turbopack and aren't available during vanilla-extract evaluation. Use style.* in VE files, and apply the real font's className/variable in runtime code.\";", + "function __ve_toQuotedList(items){return items.map((s)=>`'${s.replace(/['\\\"]/g,'')}'`);} ", + "function __ve_buildFontFamily(family, fallback){ const parts = __ve_toQuotedList([family, family + ' Fallback']); if (Array.isArray(fallback)) parts.push(...__ve_toQuotedList(fallback)); return parts.join(', '); }", + "function __ve_pickSingle(values){ const arr = Array.isArray(values) ? Array.from(new Set(values.filter(Boolean))) : (values!=null?[values]:[]); if (arr.length!==1) return undefined; const v = arr[0]; if (typeof v !== 'string') return v; if (v.includes(' ')) return undefined; return v; }", + 'function __veLocal(family, options = {}) {', + " const style = { fontFamily: __ve_buildFontFamily(String(family), options.fallback) };", + " let weight = __ve_pickSingle(options.weight); if (!weight && Array.isArray(options.src)) weight = __ve_pickSingle(options.src.map((s)=>s&&s.weight));", + " if (typeof weight === 'string' && weight && !weight.includes(' ')) { const n=Number(weight); if (!Number.isNaN(n)) style.fontWeight = n; } else if (typeof weight === 'number') { style.fontWeight = weight; }", + " let fstyle = __ve_pickSingle(options.style); if (!fstyle && Array.isArray(options.src)) fstyle = __ve_pickSingle(options.src.map((s)=>s&&s.style));", + " if (typeof fstyle === 'string' && fstyle && !fstyle.includes(' ')) { style.fontStyle = fstyle; }", + " return { get className(){ throw new Error(__VE_FONT_MSG); }, get variable(){ throw new Error(__VE_FONT_MSG); }, style };", + '}', + 'function __veGoogle(fontName, options = {}) {', + ' const family = String(fontName);', + " const style = { fontFamily: __ve_buildFontFamily(family, options.fallback) };", + " if (typeof options.weight === 'string' && options.weight && !options.weight.includes(' ')) { const n=Number(options.weight); if (!Number.isNaN(n)) style.fontWeight = n; } else if (typeof options.weight === 'number') { style.fontWeight = options.weight; }", + " if (typeof options.style === 'string' && options.style && !options.style.includes(' ')) { style.fontStyle = options.style; }", + " return { get className(){ throw new Error(__VE_FONT_MSG); }, get variable(){ throw new Error(__VE_FONT_MSG); }, style };", + '}', +].join('\n'); + +function computeStubbedFamily(exportName: string, fallback?: string[]): string { + const toQuotedList = (items: string[]) => items.map((s) => `'${s.replace(/['\\\"]/g, '')}'`); + const parts = toQuotedList([exportName, `${exportName} Fallback`]); + if (Array.isArray(fallback)) parts.push(...toQuotedList(fallback)); + return parts.join(', '); +} + + +export async function transformNextFont( + code: string, + id: string, +): Promise { + try { + const isTs = /\.(?:[cm]?ts|tsx)$/.test(id); + const isTsx = /\.(?:tsx)$/.test(id); + const isJsx = /\.(?:jsx)$/.test(id); + + const parseOptions: any = isTs + ? { syntax: 'typescript', tsx: isTsx, dynamicImport: true, decorators: false } + : { syntax: 'ecmascript', jsx: isJsx, dynamicImport: true }; + + const parseModule = async (src: string) => swc.parse(src, { ...parseOptions, target: 'esnext', comments: false, script: false, isModule: true }); + const printModule = async (mod: any) => { + const { code: out } = await swc.print(mod, { minify: false, sourceMaps: false }); + return out as string; + }; + const printExpr = async (expr: any, programSpan: any): Promise => { + const mod = { type: 'Module', span: programSpan, body: [{ type: 'ExpressionStatement', expression: expr, span: programSpan }] } as any; + const { code: out } = await swc.print(mod, { minify: false, sourceMaps: false }); + return String(out).trim().replace(/;$/, ''); + }; + const parseExpr = async (exprCode: string): Promise => { + const m = await parseModule(`const __e = ${exprCode};`); + const first = m.body && m.body[0]; + if (!first || first.type !== 'VariableDeclaration') return null; + const d = first.declarations && first.declarations[0]; + return d && d.init ? d.init : null; + }; + + const program: any = await parseModule(code); + const body: any[] = Array.isArray(program.body) ? [...program.body] : []; + + let localAlias: string | null = null; + const googleSpecs: Array<{ local: string; pretty: string }> = []; + let usedNextFont = false; + let changed = false; + const details: FontDetail[] = []; + + const newBody: any[] = []; + for (const item of body) { + if (item.type === 'ImportDeclaration') { + const src = item.source && item.source.value; + if (src === 'next/font/local') { + for (const spec of item.specifiers || []) { + if (spec.type === 'ImportDefaultSpecifier') { + localAlias = spec.local?.value || null; + } + } + usedNextFont = true; + changed = true; + continue; // drop the import + } + if (src === 'next/font/google') { + for (const spec of item.specifiers || []) { + if (spec.type === 'ImportSpecifier') { + const local = spec.local?.value; + let importedName: string | undefined; + if (spec.imported?.type === 'Identifier') importedName = spec.imported.value; + if (spec.imported?.type === 'StringLiteral') importedName = spec.imported.value; + if (!importedName) importedName = local; + if (local && importedName) { + googleSpecs.push({ local, pretty: String(importedName).replace(/_/g, ' ') }); + } + } + } + usedNextFont = true; + changed = true; + continue; // drop the import + } + } + newBody.push(item); + } + + // Helper to parse snippet into ModuleItems + const parseItems = async (snippet: string): Promise => { + if (!snippet.trim()) return []; + const m = await parseModule(snippet); + return m.body || []; + }; + + // Proxies for google fonts + if (googleSpecs.length > 0) { + const proxySrc = googleSpecs + .map(({ local, pretty }) => `const ${local} = (...args) => __veGoogle(${JSON.stringify(pretty)}, ...args);`) + .join('\n'); + const items = await parseItems(proxySrc); + newBody.unshift(...items); + } + + // Fallback alias for local alias to throw at runtime if called directly + if (localAlias) { + const aliasSrc = `const ${localAlias} = (..._args) => { throw new Error(__VE_FONT_MSG); };`; + const items = await parseItems(aliasSrc); + newBody.unshift(...items); + } + + // Inject helpers at the very top if we touched next/font + if (changed) { + const helpersItems = await parseItems(HELPERS_PREAMBLE); + newBody.unshift(...helpersItems); + } + + // Utilities to find fallback arrays + const isIdentifierNamed = (node: any, name: string) => node && node.type === 'Identifier' && node.value === name; + const toArrayOfStringLiterals = (node: any): string[] | undefined => { + if (!node || node.type !== 'ArrayExpression') return undefined; + const out: string[] = []; + for (const el of node.elements || []) { + if (!el) return undefined; + const expr = (el as any).expression || el; + if (!expr || expr.type !== 'StringLiteral') return undefined; + out.push(String(expr.value)); + } + return out; + }; + const findFallbackInArgs = (args: any[]): string[] | undefined => { + for (const arg of args || []) { + const expr = arg.expression || arg; + if (!expr) continue; + if (expr.type === 'ObjectExpression') { + for (const prop of expr.properties || []) { + if (!prop || prop.type !== 'Property') continue; + const key = prop.key; + let isFallback = false; + if (key.type === 'Identifier' && key.value === 'fallback') isFallback = true; + if (key.type === 'StringLiteral' && key.value === 'fallback') isFallback = true; + if (isFallback) { + const arr = toArrayOfStringLiterals(prop.value); + if (arr) return arr; + } + } + } + } + return undefined; + }; + + // Rewrite variable declarators + const rewriteVarDecl = async (decl: any) => { + for (const d of decl.declarations || []) { + const init = d.init; + if (!init || init.type !== 'CallExpression') continue; + const callee = init.callee; + const args = init.arguments || []; + let varName = 'font'; + if (d.id && d.id.type === 'Identifier') varName = d.id.value; + + if (localAlias && isIdentifierNamed(callee, localAlias)) { + // replace with __veLocal('Var', ...originalArgs) + const full = await printExpr(init, program.span); + const open = full.indexOf('('); + const close = full.lastIndexOf(')'); + const argsCode = open >= 0 && close > open ? full.slice(open + 1, close).trim() : ''; + const callCode = `__veLocal(${JSON.stringify(varName)}${argsCode ? ', ' + argsCode : ''})`; + const parsed = await parseExpr(callCode); + if (parsed) d.init = parsed; + const fb = findFallbackInArgs(args); + details.push({ exportName: varName, stubbedFamily: computeStubbedFamily(varName, fb) }); + changed = true; + usedNextFont = true; + continue; + } + + if (callee && callee.type === 'Identifier') { + const spec = googleSpecs.find((g) => g.local === callee.value); + if (spec) { + const full = await printExpr(init, program.span); + const open = full.indexOf('('); + const close = full.lastIndexOf(')'); + const argsCode = open >= 0 && close > open ? full.slice(open + 1, close).trim() : ''; + const callCode = `__veGoogle(${JSON.stringify(spec.pretty)}${argsCode ? ', ' + argsCode : ''})`; + const parsed = await parseExpr(callCode); + if (parsed) d.init = parsed; + const fb = findFallbackInArgs(args); + details.push({ exportName: varName, stubbedFamily: computeStubbedFamily(spec.pretty, fb) }); + changed = true; + usedNextFont = true; + continue; + } + } + } + }; + + for (const item of newBody) { + if (item.type === 'VariableDeclaration') { + await rewriteVarDecl(item); + } else if (item.type === 'ExportDeclaration' && item.declaration && item.declaration.type === 'VariableDeclaration') { + await rewriteVarDecl(item.declaration); + } + } + + const outCode = await printModule({ type: 'Module', span: program.span, body: newBody }); + return { code: outCode, usedNextFont, details, changed }; + } catch { + // Fallback to regex-based transform if SWC parsing/manipulation fails + return (function regexTransformNextFontFallback(code: string): NextFontTransformResult { + if (!code.includes('next/font')) { + return { code, usedNextFont: false, details: [], changed: false }; + } + + let transformed = code; + let changed = false; + let usesNextFont = false; + const details: FontDetail[] = []; + + const localAliases: string[] = []; + const localImportRe = /import\s+([A-Za-z_$][\w$]*)\s*(?:,\s*\{[^}]*\}\s*)?from\s*["']next\/font\/local["']/g; + transformed = transformed.replace(localImportRe, (_m, alias) => { + if (alias) localAliases.push(String(alias)); + usesNextFont = true; + changed = true; + return ''; + }); + + for (const callee of localAliases) { + const declAnyArgsRe = new RegExp( + `(export\\s+)?(const|let|var)\\s+([A-Za-z_$][\\w$]*)(?:\\s*:\\s*[^=]+?)?\\s*=\\s*${callee}\\s*\\(`, + 'g', + ); + transformed = transformed.replace(declAnyArgsRe, (_m, exp, kind, name) => { + changed = true; + const expPrefix = exp || ''; + return `${expPrefix}${kind} ${name} = __veLocal(${JSON.stringify(String(name))}, `; + }); + + const leftoverCall = new RegExp(`\\b${callee}\\s*\\(`); + if (leftoverCall.test(transformed)) { + const fallback = `\nconst ${callee} = (..._args) => { throw new Error(__VE_FONT_MSG); };\n`; + transformed = fallback + transformed; + changed = true; + } + } + + const googleSpecs: Array<{ local: string; orig: string }> = []; + const googleImportRe = /import\s*\{([^}]+)\}\s*from\s*["']next\/font\/google["']/g; + for (const m of transformed.matchAll(googleImportRe)) { + const inside = m && m[1] ? m[1] : ''; + if (!inside) continue; + usesNextFont = true; + const specs = inside + .split(',') + .map((s) => s.trim()) + .filter((s) => s.length > 0); + for (const spec of specs) { + const m2 = spec.match(/^([A-Za-z_$][\w$]*)(?:\s+as\s+([A-Za-z_$][\w$]*))?$/); + if (m2 && m2[1]) { + const orig = m2[1]; + const local = m2[2] || m2[1]; + googleSpecs.push({ local: String(local), orig: String(orig) }); + } + } + } + if (googleSpecs.length > 0) { + transformed = transformed.replace(googleImportRe, ''); + changed = true; + const proxyDefs = googleSpecs + .map(({ local, orig }) => `const ${local} = (...args) => __veGoogle(${JSON.stringify(orig.replace(/_/g, ' '))}, ...args);`) + .join('\n'); + transformed = `${proxyDefs}\n${transformed}`; + } + + if (changed && !/^\s*const\s+__VE_FONT_MSG\s*=/.test(transformed)) { + transformed = `${HELPERS_PREAMBLE}\n${transformed}`; + } + + return { code: transformed, usedNextFont: usesNextFont, details, changed }; + })(code); + } +} From 499388e424499219dadbddcac88066d998410b7c Mon Sep 17 00:00:00 2001 From: Robbie Date: Wed, 22 Oct 2025 23:44:52 -0600 Subject: [PATCH 07/52] use data URI css imports instead of fake virtual files --- packages/next-plugin/package.json | 4 +- packages/next-plugin/src/index.ts | 94 ++++++++++++------- packages/turbopack-plugin/src/index.ts | 53 ++--------- .../src/next-font/transform.vitest.test.ts | 85 +++++++++++++++++ 4 files changed, 157 insertions(+), 79 deletions(-) create mode 100644 packages/turbopack-plugin/src/next-font/transform.vitest.test.ts diff --git a/packages/next-plugin/package.json b/packages/next-plugin/package.json index 00d6c8b7f..340cb2b35 100644 --- a/packages/next-plugin/package.json +++ b/packages/next-plugin/package.json @@ -22,12 +22,14 @@ "license": "MIT", "dependencies": { "@vanilla-extract/turbopack-plugin": "workspace:^", - "@vanilla-extract/webpack-plugin": "workspace:^" + "@vanilla-extract/webpack-plugin": "workspace:^", + "semver": "^7.6.3" }, "peerDependencies": { "next": ">=12.1.7" }, "devDependencies": { + "@types/semver": "^7.7.1", "next": "12.3.4", "webpack": "^5.90.0" } diff --git a/packages/next-plugin/src/index.ts b/packages/next-plugin/src/index.ts index d3e2baef0..3179e3474 100644 --- a/packages/next-plugin/src/index.ts +++ b/packages/next-plugin/src/index.ts @@ -12,12 +12,19 @@ import type { WebpackConfigContext, } from 'next/dist/server/config-shared'; import { createRequire } from 'node:module'; +import * as path from 'node:path'; import type { TurboLoaderOptions } from '@vanilla-extract/turbopack-plugin'; +import semver from 'semver'; const require = createRequire(import.meta.url); type PluginOptions = ConstructorParameters[0] & { turbopackGlob?: string[]; + // controls whether we attempt to configure turbopack + // auto: enable only when Next >= 15.3 + // on: force enable regardless of detected Next version + // off: never configure turbopack, webpack only + turbopackMode?: 'auto' | 'on' | 'off'; }; const NextMiniCssExtractPlugin = NextMiniCssExtractPluginDefault as any; @@ -140,47 +147,63 @@ export const createVanillaExtractPlugin = ( ) => { return (nextConfig: NextConfig = {}): NextConfig => { const { + turbopackMode = 'auto', turbopackGlob = ['**/*.css.{ts,tsx,js,jsx}'], ...webpackPluginOptions } = pluginOptions; - const turbopack = { ...(nextConfig.turbopack || {}) }; + // detect Next version and decide whether to configure turbopack + const nextVersion = (() => { + try { + // resolve from the consumer app's cwd, not this package + const requireFromCwd = createRequire( + path.join(process.cwd(), 'package.json'), + ); + const pkg = requireFromCwd('next/package.json') as { version?: string }; + return pkg?.version ?? null; + } catch { + return null; + } + })(); + const coerced = nextVersion ? semver.coerce(nextVersion) : null; + const supportsTurbopackRules = !!coerced && semver.gte(coerced, '15.3.0'); + const enableTurbopack = + turbopackMode === 'on' || (turbopackMode === 'auto' && supportsTurbopackRules); - if ( - turbopackGlob.some((glob) => turbopack.rules?.[glob]) || - turbopack.rules?.['vanilla.virtual.css'] - ) { - throw new Error( - 'Vanilla extract could not be applied automatically due to conflicting turbopack rules', - ); - } + let turbopack: typeof nextConfig.turbopack; + if (enableTurbopack) { + turbopack = { ...(nextConfig.turbopack || {}) } as any; - const vanillaExtractRule = { - as: '*.js', - loaders: [ - { - loader: require.resolve('@vanilla-extract/turbopack-plugin'), - options: { - nextEnv: nextConfig.env ?? null, - outputCss: pluginOptions.outputCss ?? null, - identifiers: pluginOptions.identifiers ?? null, - } satisfies TurboLoaderOptions, - }, - ], - } as const; + if (turbopackGlob.some((glob) => turbopack.rules?.[glob])) { + throw new Error( + 'Vanilla extract could not be applied automatically due to conflicting turbopack rules', + ); + } - turbopack.rules = { - ...(turbopack.rules || {}), - ...Object.fromEntries( - turbopackGlob.map((glob) => [glob, vanillaExtractRule]), - ), - 'vanilla.virtual.css': { - loaders: [require.resolve('@vanilla-extract/turbopack-plugin')], - }, - }; + const vanillaExtractRule = { + as: '*.js', + loaders: [ + { + loader: require.resolve('@vanilla-extract/turbopack-plugin'), + options: { + nextEnv: nextConfig.env ?? null, + outputCss: pluginOptions.outputCss ?? null, + identifiers: pluginOptions.identifiers ?? null, + distDir: nextConfig.distDir ?? null, + } satisfies TurboLoaderOptions, + }, + ], + } as const; + + turbopack.rules = { + ...(turbopack.rules || {}), + ...Object.fromEntries( + turbopackGlob.map((glob) => [glob, vanillaExtractRule]), + ), + }; + } - return { + const baseConfig: NextConfig = { ...nextConfig, - turbopack, webpack(config: any, options: WebpackConfigContext) { const { dir, dev, config: resolvedNextConfig } = options; @@ -271,5 +294,10 @@ export const createVanillaExtractPlugin = ( return config; }, }; + + if (enableTurbopack && turbopack) { + return { ...baseConfig, turbopack } as NextConfig; + } + return baseConfig; }; }; diff --git a/packages/turbopack-plugin/src/index.ts b/packages/turbopack-plugin/src/index.ts index 729277142..369d2205f 100644 --- a/packages/turbopack-plugin/src/index.ts +++ b/packages/turbopack-plugin/src/index.ts @@ -1,16 +1,11 @@ -import * as path from 'node:path'; -import * as fs from 'node:fs/promises'; import { createCompiler, type Compiler as VeCompiler, } from '@vanilla-extract/compiler'; -import { - serializeCss, - deserializeCss, - type IdentifierOption, -} from '@vanilla-extract/integration'; -import { createNextFontVePlugins, type NextFontPluginState } from './next-font/plugin'; +import { type IdentifierOption } from '@vanilla-extract/integration'; +import * as path from 'node:path'; import { buildValidationPrelude } from './next-font/devValidation'; +import { createNextFontVePlugins, type NextFontPluginState } from './next-font/plugin'; type LoaderContext = { getOptions: (schema?: unknown) => OptionsType; @@ -38,6 +33,7 @@ export type TurboLoaderOptions = { identifiers: IdentifierOption | null; nextEnv: Record | null; outputCss: boolean | null; + distDir: string | null; }; let singletonCompiler: VeCompiler | undefined; @@ -106,34 +102,6 @@ export default async function turbopackVanillaExtractLoader( options.identifiers ?? (this.mode === 'production' ? 'short' : 'debug'); const outputCss = options.outputCss ?? true; - // process virtual css if needed - const rawQuery: string | undefined = this.resourceQuery; - if (typeof rawQuery === 'string') { - const query = rawQuery.startsWith('?') ? rawQuery.slice(1) : rawQuery; - const params = new URLSearchParams(query); - const encoded = params.get('ve-source'); - if (encoded != null) { - const css = await deserializeCss(encoded); - return callback(null, css); - } - } - - // turbopack has trouble resolving directly to our package and the import cannot be server relative - // we need to reference a real file, so write one to our next cache to reference - const virtualCssPath = path.join( - this.rootContext, - '.next', - 'vanilla.virtual.css', - ); - try { - await fs.writeFile( - virtualCssPath, - '/* Virtual CSS file for vanilla-extract */', - ); - } catch { - // file already exists - } - const compiler = await getCompiler( this.rootContext, identifiers, @@ -159,10 +127,7 @@ export default async function turbopackVanillaExtractLoader( } } - // rewrite compiler-emitted .vanilla.css imports to the on-disk virtual stub with serialized CSS - const fromDir = path.dirname(this.resourcePath); - const relPath = path.relative(fromDir, virtualCssPath).replace(/\\/g, '/'); - const importPath = relPath.startsWith('.') ? relPath : `./${relPath}`; + // rewrite compiler-emitted .vanilla.css imports to data URL side-effect imports let transformed = veSourceWithValidation; const importRegex = /import\s+['"](.+?\.vanilla\.css)['"];?/g; @@ -181,11 +146,9 @@ export default async function turbopackVanillaExtractLoader( const { css } = compiler.getCssForFile(cssModulePath); if (css) { - const serialized = await serializeCss(css); - const importRequest = `${importPath}?ve-source=${encodeURIComponent( - serialized, - )}`; - const newImport = `import '${importRequest}';`; + const base64 = Buffer.from(css, 'utf8').toString('base64'); + const dataUrl = `data:text/css;base64,${base64}`; + const newImport = `import '${dataUrl}';`; transformed = transformed.replace(fullImport, newImport); } else { // no css available for this import; drop it diff --git a/packages/turbopack-plugin/src/next-font/transform.vitest.test.ts b/packages/turbopack-plugin/src/next-font/transform.vitest.test.ts new file mode 100644 index 000000000..45873ba56 --- /dev/null +++ b/packages/turbopack-plugin/src/next-font/transform.vitest.test.ts @@ -0,0 +1,85 @@ +import { describe, it, expect } from 'vitest'; +import { transformNextFont } from './transform'; + +const idTs = '/abs/path/file.ts'; +const idTsx = '/abs/path/file.tsx'; +const idJsx = '/abs/path/file.jsx'; + +describe('next-font transform (SWC)', () => { + it('noop when no next/font usage', async () => { + const src = `export const x = 1;`; + const out = await transformNextFont(src, idTs); + expect(out.usedNextFont).toBe(false); + expect(out.changed).toBe(false); + expect(out.code).toContain('export const x = 1'); + }); + + it('local import removal and call rewrite', async () => { + const src = ` + import localFont from 'next/font/local'; + export const MyFont = localFont({ src: [{ path: './a.woff2', weight: '400' }] }); + `; + const out = await transformNextFont(src, idTs); + expect(out.usedNextFont).toBe(true); + expect(out.changed).toBe(true); + expect(out.code).not.toMatch(/from\s+['\"]next\/font\/local['\"]/); + expect(out.code).toMatch(/__veLocal\('MyFont'/); + expect(out.details.find((d) => d.exportName === 'MyFont')).toBeTruthy(); + // helper preamble injected once + const preambleCount = (out.code.match(/const __VE_FONT_MSG/g) || []).length; + expect(preambleCount).toBe(1); + }); + + it('google named imports → proxy consts; underscores→spaces', async () => { + const src = ` + import { Roboto, Roboto_Flex as Flex } from 'next/font/google'; + export const A = Roboto({ weight: '400' }); + export const B = Flex({ style: 'italic' }); + `; + const out = await transformNextFont(src, idTsx); + expect(out.usedNextFont).toBe(true); + expect(out.changed).toBe(true); + expect(out.code).not.toMatch(/from\s+['\"]next\/font\/google['\"]/); + expect(out.code).toMatch(/const Roboto = \(\.\.\.args\) => __veGoogle\('Roboto'/); + expect(out.code).toMatch(/const Flex = \(\.\.\.args\) => __veGoogle\('Roboto Flex'/); + expect(out.code).toMatch(/__veGoogle\('Roboto',/); + expect(out.code).toMatch(/__veGoogle\('Roboto Flex',/); + }); + + it('multiple font usages → inject helpers once', async () => { + const src = ` + import localFont from 'next/font/local'; + import { Roboto } from 'next/font/google'; + const A = localFont({ src: [{ path: './a.woff2', weight: '400' }] }); + const B = Roboto({ weight: '700' }); + `; + const out = await transformNextFont(src, idJsx); + const preambleCount = (out.code.match(/const __VE_FONT_MSG/g) || []).length; + expect(preambleCount).toBe(1); + }); + + it('exposes style.fontFamily and throws on className/variable at runtime (smoke)', async () => { + const src = ` + import localFont from 'next/font/local'; + const A = localFont({ fallback: ['system-ui'] }); + export { A }; + `; + const out = await transformNextFont(src, idTs); + const mod = { exports: {} as any }; + // eslint-disable-next-line no-new-func + const fn = new Function('module', out.code + '\nreturn module.exports;'); + const exports = fn(mod); + expect(typeof exports.A.style.fontFamily).toBe('string'); + expect(() => (exports.A as any).className).toThrow(); + expect(() => (exports.A as any).variable).toThrow(); + }); + + it('gracefully handles malformed input without crashing', async () => { + const src = `import localFont from 'next/font/local'; export const A = localFont( /* missing */ `; + const out = await transformNextFont(src, idTs); + // Either SWC path or regex fallback returns string output + expect(typeof out.code).toBe('string'); + }); +}); + + From 4d4246a287daadb9d780f0e52bf35fb76cbf6137 Mon Sep 17 00:00:00 2001 From: Robbie Date: Thu, 23 Oct 2025 01:28:15 -0600 Subject: [PATCH 08/52] update tests for next --- .../next-15-app-pages-router/next-env.d.ts | 6 + .../next-15-app-pages-router/next.config.ts | 10 + .../next-15-app-pages-router/package.json | 33 + .../src/app/features/page.tsx | 14 + .../src/app/layout.tsx | 9 + .../src/app/next-font/page.tsx | 42 + .../next-15-app-pages-router/src/app/page.tsx | 16 + .../src/app/recipes/page.tsx | 12 + .../src/app/sprinkles/page.tsx | 12 + .../src/pages/pages-router/features/index.tsx | 12 + .../src/pages/pages-router/index.tsx | 15 + .../src/pages/pages-router/recipes/index.tsx | 12 + .../pages/pages-router/sprinkles/index.tsx | 12 + .../src/styles/fonts.ts | 60 + .../src/styles/fonts/Inter-Regular.woff2 | Bin 0 -> 111268 bytes .../src/styles/nextFont.css.ts | 24 + .../next-15-app-pages-router/tsconfig.json | 43 + .../next-16-app-pages-router/next-env.d.ts | 7 + .../next-16-app-pages-router/next.config.ts | 12 + .../next-16-app-pages-router/package.json | 33 + .../src/app/features/page.tsx | 12 + .../src/app/layout.tsx | 9 + .../src/app/next-font/page.tsx | 42 + .../next-16-app-pages-router/src/app/page.tsx | 15 + .../src/app/recipes/page.tsx | 12 + .../src/app/sprinkles/page.tsx | 12 + .../src/pages/pages-router/features/index.tsx | 12 + .../src/pages/pages-router/index.tsx | 16 + .../src/pages/pages-router/recipes/index.tsx | 12 + .../pages/pages-router/sprinkles/index.tsx | 12 + .../src/styles/fonts.ts | 124 ++ .../src/styles/fonts/Inter-Regular.woff2 | Bin 0 -> 111268 bytes .../src/styles/nextFont.css.ts | 22 + .../next-16-app-pages-router/tsconfig.json | 44 + fixtures/next-app-router/package.json | 2 +- fixtures/next-app-router/tsconfig.json | 3 +- fixtures/next-pages-router/package.json | 2 +- fixtures/next-pages-router/tsconfig.json | 4 +- .../src/next-font/transform.ts | 100 +- .../src/next-font/transform.vitest.test.ts | 85 -- pnpm-lock.yaml | 1100 ++++++++++++++--- site/docs/integrations/next.md | 107 +- test-helpers/package.json | 6 +- 43 files changed, 1793 insertions(+), 344 deletions(-) create mode 100644 fixtures/next-15-app-pages-router/next-env.d.ts create mode 100644 fixtures/next-15-app-pages-router/next.config.ts create mode 100644 fixtures/next-15-app-pages-router/package.json create mode 100644 fixtures/next-15-app-pages-router/src/app/features/page.tsx create mode 100644 fixtures/next-15-app-pages-router/src/app/layout.tsx create mode 100644 fixtures/next-15-app-pages-router/src/app/next-font/page.tsx create mode 100644 fixtures/next-15-app-pages-router/src/app/page.tsx create mode 100644 fixtures/next-15-app-pages-router/src/app/recipes/page.tsx create mode 100644 fixtures/next-15-app-pages-router/src/app/sprinkles/page.tsx create mode 100644 fixtures/next-15-app-pages-router/src/pages/pages-router/features/index.tsx create mode 100644 fixtures/next-15-app-pages-router/src/pages/pages-router/index.tsx create mode 100644 fixtures/next-15-app-pages-router/src/pages/pages-router/recipes/index.tsx create mode 100644 fixtures/next-15-app-pages-router/src/pages/pages-router/sprinkles/index.tsx create mode 100644 fixtures/next-15-app-pages-router/src/styles/fonts.ts create mode 100644 fixtures/next-15-app-pages-router/src/styles/fonts/Inter-Regular.woff2 create mode 100644 fixtures/next-15-app-pages-router/src/styles/nextFont.css.ts create mode 100644 fixtures/next-15-app-pages-router/tsconfig.json create mode 100644 fixtures/next-16-app-pages-router/next-env.d.ts create mode 100644 fixtures/next-16-app-pages-router/next.config.ts create mode 100644 fixtures/next-16-app-pages-router/package.json create mode 100644 fixtures/next-16-app-pages-router/src/app/features/page.tsx create mode 100644 fixtures/next-16-app-pages-router/src/app/layout.tsx create mode 100644 fixtures/next-16-app-pages-router/src/app/next-font/page.tsx create mode 100644 fixtures/next-16-app-pages-router/src/app/page.tsx create mode 100644 fixtures/next-16-app-pages-router/src/app/recipes/page.tsx create mode 100644 fixtures/next-16-app-pages-router/src/app/sprinkles/page.tsx create mode 100644 fixtures/next-16-app-pages-router/src/pages/pages-router/features/index.tsx create mode 100644 fixtures/next-16-app-pages-router/src/pages/pages-router/index.tsx create mode 100644 fixtures/next-16-app-pages-router/src/pages/pages-router/recipes/index.tsx create mode 100644 fixtures/next-16-app-pages-router/src/pages/pages-router/sprinkles/index.tsx create mode 100644 fixtures/next-16-app-pages-router/src/styles/fonts.ts create mode 100644 fixtures/next-16-app-pages-router/src/styles/fonts/Inter-Regular.woff2 create mode 100644 fixtures/next-16-app-pages-router/src/styles/nextFont.css.ts create mode 100644 fixtures/next-16-app-pages-router/tsconfig.json delete mode 100644 packages/turbopack-plugin/src/next-font/transform.vitest.test.ts diff --git a/fixtures/next-15-app-pages-router/next-env.d.ts b/fixtures/next-15-app-pages-router/next-env.d.ts new file mode 100644 index 000000000..3cd7048ed --- /dev/null +++ b/fixtures/next-15-app-pages-router/next-env.d.ts @@ -0,0 +1,6 @@ +/// +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/fixtures/next-15-app-pages-router/next.config.ts b/fixtures/next-15-app-pages-router/next.config.ts new file mode 100644 index 000000000..36b3fad0b --- /dev/null +++ b/fixtures/next-15-app-pages-router/next.config.ts @@ -0,0 +1,10 @@ +import { createVanillaExtractPlugin } from '@vanilla-extract/next-plugin'; +const withVanillaExtract = createVanillaExtractPlugin(); + +export const config = { + distDir: process.env.NODE_ENV === 'production' ? 'dist' : '.next', + experimental: { externalDir: true }, + onDemandEntries: { maxInactiveAge: 1000 * 60 * 60 }, +}; + +export default withVanillaExtract(config); diff --git a/fixtures/next-15-app-pages-router/package.json b/fixtures/next-15-app-pages-router/package.json new file mode 100644 index 000000000..38a305fe2 --- /dev/null +++ b/fixtures/next-15-app-pages-router/package.json @@ -0,0 +1,33 @@ +{ + "name": "@fixtures/next-15-app-pages-router", + "version": "0.0.1", + "private": true, + "description": "Next 15 fixture with app + pages routers; supports webpack and turbopack builds", + "scripts": { + "dev": "next dev", + "build": "next build --turbopack", + "start": "next start", + "clean-build": "pnpm clean && pnpm build", + "clean": "pnpm clean:dev && pnpm clean:prod", + "clean:dev": "rm -rf .next", + "clean:prod": "rm -rf dist" + }, + "dependencies": { + "@fixtures/features": "workspace:*", + "@fixtures/recipes": "workspace:*", + "@fixtures/sprinkles": "workspace:*", + "@vanilla-extract/css": "workspace:*", + "@vanilla-extract/recipes": "workspace:*", + "@vanilla-extract/sprinkles": "workspace:*", + "next": "15.3.0", + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@types/react": "^18.2.55", + "@vanilla-extract/next-plugin": "workspace:*", + "@vanilla-extract/webpack-plugin": "workspace:*" + } +} + + diff --git a/fixtures/next-15-app-pages-router/src/app/features/page.tsx b/fixtures/next-15-app-pages-router/src/app/features/page.tsx new file mode 100644 index 000000000..098f49cc3 --- /dev/null +++ b/fixtures/next-15-app-pages-router/src/app/features/page.tsx @@ -0,0 +1,14 @@ +import html from '@fixtures/features/src/html'; + + +export default function Features() { + return ( + <> + +
+ + + ); +} + + diff --git a/fixtures/next-15-app-pages-router/src/app/layout.tsx b/fixtures/next-15-app-pages-router/src/app/layout.tsx new file mode 100644 index 000000000..5a1fd5c7b --- /dev/null +++ b/fixtures/next-15-app-pages-router/src/app/layout.tsx @@ -0,0 +1,9 @@ +export default function RootLayout({ children }: { children: React.ReactNode }) { + return ( + + {children} + + ); +} + + diff --git a/fixtures/next-15-app-pages-router/src/app/next-font/page.tsx b/fixtures/next-15-app-pages-router/src/app/next-font/page.tsx new file mode 100644 index 000000000..bc2b5e8e0 --- /dev/null +++ b/fixtures/next-15-app-pages-router/src/app/next-font/page.tsx @@ -0,0 +1,42 @@ +import * as directFonts from '../../styles/fonts'; +import { pickedValues } from '../../styles/nextFont.css'; + +export default function NextFontChecks() { + const pairs: Array<[ + string, + string | number | undefined, + string | number | undefined, + ]> = []; + + for (const [name, vePicked] of Object.entries(pickedValues) as Array<[ + string, + { fontFamily: string | undefined; fontWeight: number | undefined; fontStyle: string | undefined }, + ]>) { + const direct: any = (directFonts as any)[name]; + const style = (direct && (direct as any).style) || {}; + pairs.push([`${name}-family`, vePicked.fontFamily, style.fontFamily]); + pairs.push([`${name}-weight`, vePicked.fontWeight, style.fontWeight]); + pairs.push([`${name}-style`, vePicked.fontStyle, style.fontStyle]); + } + + for (const [name, fromVe, direct] of pairs) { + if (fromVe !== direct) { + throw new Error(`[next-font] mismatch: ${name}: ${String(fromVe)} !== ${String(direct)}`); + } + } + + return ( +
+

next 15 next/font comparisons

+
    + {pairs.map(([name, fromVe, direct]) => ( +
  • + {name}: {String(fromVe)} +
  • + ))} +
+
+ ); +} + + diff --git a/fixtures/next-15-app-pages-router/src/app/page.tsx b/fixtures/next-15-app-pages-router/src/app/page.tsx new file mode 100644 index 000000000..4a2448ed3 --- /dev/null +++ b/fixtures/next-15-app-pages-router/src/app/page.tsx @@ -0,0 +1,16 @@ +import Link from 'next/link'; + + +export default function Home() { + return ( + <> + sprinkles +
+ recipes +
+ features + + ); +} + + diff --git a/fixtures/next-15-app-pages-router/src/app/recipes/page.tsx b/fixtures/next-15-app-pages-router/src/app/recipes/page.tsx new file mode 100644 index 000000000..5a335b86d --- /dev/null +++ b/fixtures/next-15-app-pages-router/src/app/recipes/page.tsx @@ -0,0 +1,12 @@ +import html from '@fixtures/recipes/src/html'; + +export default function Recipes() { + return ( + <> + +
+ + ); +} + + diff --git a/fixtures/next-15-app-pages-router/src/app/sprinkles/page.tsx b/fixtures/next-15-app-pages-router/src/app/sprinkles/page.tsx new file mode 100644 index 000000000..ff1006464 --- /dev/null +++ b/fixtures/next-15-app-pages-router/src/app/sprinkles/page.tsx @@ -0,0 +1,12 @@ +import html from '@fixtures/sprinkles/src/html'; + +export default function Sprinkles() { + return ( + <> + +
+ + ); +} + + diff --git a/fixtures/next-15-app-pages-router/src/pages/pages-router/features/index.tsx b/fixtures/next-15-app-pages-router/src/pages/pages-router/features/index.tsx new file mode 100644 index 000000000..306cdd676 --- /dev/null +++ b/fixtures/next-15-app-pages-router/src/pages/pages-router/features/index.tsx @@ -0,0 +1,12 @@ +import html from '@fixtures/features/src/html'; + +export default function Features() { + return ( + <> + +
+ + ); +} + + diff --git a/fixtures/next-15-app-pages-router/src/pages/pages-router/index.tsx b/fixtures/next-15-app-pages-router/src/pages/pages-router/index.tsx new file mode 100644 index 000000000..d1982f2f9 --- /dev/null +++ b/fixtures/next-15-app-pages-router/src/pages/pages-router/index.tsx @@ -0,0 +1,15 @@ +import Link from 'next/link'; + +export default function Home() { + return ( + <> + sprinkles +
+ recipes +
+ features + + ); +} + + diff --git a/fixtures/next-15-app-pages-router/src/pages/pages-router/recipes/index.tsx b/fixtures/next-15-app-pages-router/src/pages/pages-router/recipes/index.tsx new file mode 100644 index 000000000..5a335b86d --- /dev/null +++ b/fixtures/next-15-app-pages-router/src/pages/pages-router/recipes/index.tsx @@ -0,0 +1,12 @@ +import html from '@fixtures/recipes/src/html'; + +export default function Recipes() { + return ( + <> + +
+ + ); +} + + diff --git a/fixtures/next-15-app-pages-router/src/pages/pages-router/sprinkles/index.tsx b/fixtures/next-15-app-pages-router/src/pages/pages-router/sprinkles/index.tsx new file mode 100644 index 000000000..ff1006464 --- /dev/null +++ b/fixtures/next-15-app-pages-router/src/pages/pages-router/sprinkles/index.tsx @@ -0,0 +1,12 @@ +import html from '@fixtures/sprinkles/src/html'; + +export default function Sprinkles() { + return ( + <> + +
+ + ); +} + + diff --git a/fixtures/next-15-app-pages-router/src/styles/fonts.ts b/fixtures/next-15-app-pages-router/src/styles/fonts.ts new file mode 100644 index 000000000..ecfbfa88b --- /dev/null +++ b/fixtures/next-15-app-pages-router/src/styles/fonts.ts @@ -0,0 +1,60 @@ +import localF from 'next/font/local'; +import { Roboto as R, Roboto_Flex as RF, Noto_Serif as NotoSerif } from 'next/font/google'; + +// intentionally odd local variable name to exercise transform edge-cases +export const __Local_Font = localF({ + src: [{ path: './fonts/Inter-Regular.woff2', weight: '400' }], + fallback: ['system-ui'], +}); + +// renamed imports +export const _Roboto = R({ + weight: '400', + subsets: ['latin'], + fallback: ['system-ui', 'skibidi', 'third font'], + style: ['italic', 'normal'], +}); + +export const _Flex = RF({ + subsets: ['latin', 'greek'], + weight: ['200', '300'], + adjustFontFallback: false, + style: 'normal', + fallback: ['system-ui'], +}); + +// style properties are consumed dynamically in nextFont.css.ts via pickedValues + +// mirror additional cases from next-16 +export const _localMultiFallback = localF({ + src: [{ path: './fonts/Inter-Regular.woff2' }], + fallback: ['system-ui', 'ui-monospace', 'third font'], +}); + +export const _localExplicit = localF({ + src: [{ path: './fonts/Inter-Regular.woff2' }], + weight: '400', + style: 'italic', + fallback: ['Times New Roman', 'Gill Sans'], +}); + +export const _localDupFallback = localF({ + src: [{ path: './fonts/Inter-Regular.woff2' }], + fallback: ['system-ui', 'system-ui', 'ui-serif', 'weird_font'], +}); + +export const _robotoDefaultStyle = R({ subsets: ['latin'], fallback: ['serif'] }); + +export const _robotoItalic = R({ subsets: ['latin'], fallback: ['sans-serif'], style: 'italic', weight: '400' }); + +export const _robotoMultiStyle = R({ subsets: ['latin'], fallback: ['monospace'], style: ['italic', 'normal'] }); + +export const _robotoWeightStr = R({ weight: '400' }); + +export const _robotoWeightVar = R({ weight: 'variable' }); + +export const _notoSerif = NotoSerif({ subsets: ['latin'], fallback: ['system-ui'] }); + +export const _robotoFallbackSpaces = R({ subsets: ['latin'], fallback: ['Times New Roman', 'Gill Sans', 'Avenir Next'] }); + +export const _robotoDupFallback = R({ subsets: ['latin'], fallback: ['system-ui', 'system-ui', 'ui-serif', 'weird_font'] }); diff --git a/fixtures/next-15-app-pages-router/src/styles/fonts/Inter-Regular.woff2 b/fixtures/next-15-app-pages-router/src/styles/fonts/Inter-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2bcd222ecfae996d035ff72bf70672305cc29261 GIT binary patch literal 111268 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 YlP_pm ztM9Q_f^Ju1U)kTCx1hKLRy|sob}2&j2&ldb*lu^!byk+hq!~}+_;u0>%whduh(~N+;TSmC{wFV7$q?xsq7HHtMXK!Bh!IC?>zVs z4&UzGhlt&#PF~ytjIoG2{EVzwA9Ayn;0-nF>|uE@byk1q(c@|?JQr1hR#*>F-g@|3 z?d-u%RhtFtnGy!$p9|0OCFNRm^z%%F8(4ACq<8yCY_Hc|D8qZYSm*17Mn{Q9zjQ7{ zWfdcpJ30>$V|E`dKo#O~);}W*c`NIB=ixeXAWr4{M&@5$vHbWzt2~(8LaUJGqAPVJ)q4w>fZ@NJ>GjaD5Za+z3T(KUb6?k6#p55W& zzdE(3wqIfzb5xdWH)5pQl}g&^b7iso(49RpBYsl+z&Ctcv$65{CqiX_R~PMr-M*qk zMelENM32kx+LqlCdk3_bIp9<3eCw7gFi=ub6zCs=GQ3KL9W)6`Ru|96ft0=62$k8| zVOV(-+H(-=L$ddL>u0g3Jh$w-J3c;QaKf~Qd8czNBf7Gtu6nwvZPy`U^C3&S1G(q1 zr$34x5bWzPFd;1p#28_0z$r$+P1q9wJL13yW(6F|N~Me%`>)4TzsrGQFYie+@f8cJCrV-T8JxXD=5 zJrdSonp)91%bh=&Jz=jb$AhL5qzRPPEoM!%zEg%Kmt)s!=7$I^i}Dw`EWjbBL`$Y& zk}*nY;`rIChMh(Yow>6GBp+SYeW}>tp|!=!bB2q%Z(B3b*gui-0a^NY>l{__6Ya62 z|71g`ABa3sAy;yce)@2JibjfE+luE(DnDt`T(ig~O7}|uBO2@wCOa5tDaE8xe?iZE zt*pzaU9d^Q#vuY#Fso`TJdBjVVM`O0B}y8JDJ3sq03iLV_Cq=+3<|t~4a7Kk^7_}M zNH1LGzJt|m%v3vaW3xW38?;gCe1DPq#a+l$Qf($O*d_&#;zzJb8F%kd4 zDm2=jD7%Ui)nEr}CGT*xE9D?Qe9XWs&QympaHq}Xm6%HuY?yKrlB9-#hh`B0F<~8|0QHjtaY~aZX{1O<$ID_nw3iwV4}3~!{1*h z#VcpV3ah`-sxSN*|IWk;5<3FpWmT36p}{ zN_fRy`tLdWq)NUmPTqv$i!{@<^C%1Q5fW#+0e~-Qe3UT7t$|rg0u`OtsXsEBvxhWS zE7|kU_1*MtPEU9)`p2tm)MQ!Iupaeq*!y==LwwzSuC(eJo=E9lU?9YVujY_ik7wBL z>uSFMtJbM;yuQ)g)uzol9JNzU&LKDMQyh`YBqq@dSYk;Fn*r-fb-UVd+oWboS)6RI zN2|l~sj}br`}EUPX6D@7{fErZ{Qohkhw&fq7yDmSZp3$HueoH@=YQ$*Lvn;hQ2X>$ zcbzb2G^_jOuIW2hZ1hJP{J8UDaeecZPiFakc<1av@zkwVXooy%qiXxkXjWg3$`WM7 z0n_HVx11ns0NDwuqwC2AhFV8Qzo$uWXHOJNH2)mKMzM9HUoEAxekuC}&whSue;Cdq z@UwHPG3oEs->kut2X3FEob+#Fcj*Y!&Yfp6coz;Y_lx;sfB8PvFSHl$J^jQ_t(kY! zfyvDbe-{Au-kw>)S1XmVQET`c7FZ7JOEUN!m5Nsdt;|OyylC0Ik$+f)W+k_l)ViLB z4(@E`kX%u~|3$T`@7)c~e|j{nZJWXO^pV1}(oi0(v95cK8=LF5CVe}m;N@2>1pGff C!H4<) literal 0 HcmV?d00001 diff --git a/fixtures/next-15-app-pages-router/src/styles/nextFont.css.ts b/fixtures/next-15-app-pages-router/src/styles/nextFont.css.ts new file mode 100644 index 000000000..7483af9ab --- /dev/null +++ b/fixtures/next-15-app-pages-router/src/styles/nextFont.css.ts @@ -0,0 +1,24 @@ +import * as fonts from './fonts'; + +export const pickedValues = Object.fromEntries( + Object.entries(fonts).map( + ([importName, { style }]) => + [ + importName, + { + fontFamily: style.fontFamily, + fontWeight: style.fontWeight, + fontStyle: style.fontStyle, + }, + ] as const, + ), +) as Record< + keyof typeof fonts, + { + fontFamily: string; + fontWeight: number; + fontStyle: string; + } +>; + + diff --git a/fixtures/next-15-app-pages-router/tsconfig.json b/fixtures/next-15-app-pages-router/tsconfig.json new file mode 100644 index 000000000..e97b3da31 --- /dev/null +++ b/fixtures/next-15-app-pages-router/tsconfig.json @@ -0,0 +1,43 @@ +{ + "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": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": [ + "./*" + ] + } + }, + "include": [ + "**/*.mts", + "**/*.ts", + "**/*.tsx", + ".next/dev/types/**/*.ts", + ".next/types/**/*.ts", + "next-env.d.ts", + "dist/types/**/*.ts" + ], + "exclude": [ + "node_modules" + ] +} diff --git a/fixtures/next-16-app-pages-router/next-env.d.ts b/fixtures/next-16-app-pages-router/next-env.d.ts new file mode 100644 index 000000000..204c793b8 --- /dev/null +++ b/fixtures/next-16-app-pages-router/next-env.d.ts @@ -0,0 +1,7 @@ +/// +/// +/// +import "./dist/types/routes.d.ts"; + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/fixtures/next-16-app-pages-router/next.config.ts b/fixtures/next-16-app-pages-router/next.config.ts new file mode 100644 index 000000000..b87982e71 --- /dev/null +++ b/fixtures/next-16-app-pages-router/next.config.ts @@ -0,0 +1,12 @@ +import { createVanillaExtractPlugin } from '@vanilla-extract/next-plugin'; +import { NextConfig } from 'next'; +const withVanillaExtract = createVanillaExtractPlugin(); + +export const config = { + distDir: process.env.NODE_ENV === 'production' ? 'dist' : '.next', + experimental: { externalDir: true }, + onDemandEntries: { maxInactiveAge: 1000 * 60 * 60 }, + transpilePackages: ['@fixtures/sprinkles/src/html'] +}; + +export default withVanillaExtract(config); diff --git a/fixtures/next-16-app-pages-router/package.json b/fixtures/next-16-app-pages-router/package.json new file mode 100644 index 000000000..7e1d0642a --- /dev/null +++ b/fixtures/next-16-app-pages-router/package.json @@ -0,0 +1,33 @@ +{ + "name": "@fixtures/next-16-app-pages-router", + "version": "0.0.1", + "private": true, + "description": "Next 16 fixture with app + pages routers; supports webpack and turbopack builds", + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "clean-build": "pnpm clean && pnpm build", + "clean": "pnpm clean:dev && pnpm clean:prod", + "clean:dev": "rm -rf .next", + "clean:prod": "rm -rf dist" + }, + "dependencies": { + "@fixtures/features": "workspace:*", + "@fixtures/recipes": "workspace:*", + "@fixtures/sprinkles": "workspace:*", + "@vanilla-extract/css": "workspace:*", + "@vanilla-extract/recipes": "workspace:*", + "@vanilla-extract/sprinkles": "workspace:*", + "next": "^16.0.0", + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@types/react": "^18.2.55", + "@vanilla-extract/next-plugin": "workspace:*", + "@vanilla-extract/webpack-plugin": "workspace:*" + } +} + + diff --git a/fixtures/next-16-app-pages-router/src/app/features/page.tsx b/fixtures/next-16-app-pages-router/src/app/features/page.tsx new file mode 100644 index 000000000..306cdd676 --- /dev/null +++ b/fixtures/next-16-app-pages-router/src/app/features/page.tsx @@ -0,0 +1,12 @@ +import html from '@fixtures/features/src/html'; + +export default function Features() { + return ( + <> + +

+ + ); +} + + diff --git a/fixtures/next-16-app-pages-router/src/app/layout.tsx b/fixtures/next-16-app-pages-router/src/app/layout.tsx new file mode 100644 index 000000000..5a1fd5c7b --- /dev/null +++ b/fixtures/next-16-app-pages-router/src/app/layout.tsx @@ -0,0 +1,9 @@ +export default function RootLayout({ children }: { children: React.ReactNode }) { + return ( + + {children} + + ); +} + + diff --git a/fixtures/next-16-app-pages-router/src/app/next-font/page.tsx b/fixtures/next-16-app-pages-router/src/app/next-font/page.tsx new file mode 100644 index 000000000..54f5271ef --- /dev/null +++ b/fixtures/next-16-app-pages-router/src/app/next-font/page.tsx @@ -0,0 +1,42 @@ +import * as directFonts from '../../styles/fonts'; +import { pickedValues } from '../../styles/nextFont.css'; + +export default function NextFontChecks() { + const pairs: Array<[ + string, + string | number | undefined, + string | number | undefined, + ]> = []; + + for (const [name, vePicked] of Object.entries(pickedValues) as Array<[ + string, + { fontFamily: string | undefined; fontWeight: number | undefined; fontStyle: string | undefined }, + ]>) { + const direct: any = (directFonts as any)[name]; + const style = (direct && (direct as any).style) || {}; + pairs.push([`${name}-family`, vePicked.fontFamily, style.fontFamily]); + pairs.push([`${name}-weight`, vePicked.fontWeight, style.fontWeight]); + pairs.push([`${name}-style`, vePicked.fontStyle, style.fontStyle]); + } + + for (const [name, fromVe, direct] of pairs) { + if (fromVe !== direct) { + throw new Error(`[next-font] mismatch: ${name}: ${String(fromVe)} !== ${String(direct)}`); + } + } + + return ( +
+

next 16 next/font comparisons

+
    + {pairs.map(([name, fromVe, direct]) => ( +
  • + {name}: {String(fromVe)} +
  • + ))} +
+
+ ); +} + + diff --git a/fixtures/next-16-app-pages-router/src/app/page.tsx b/fixtures/next-16-app-pages-router/src/app/page.tsx new file mode 100644 index 000000000..78831522b --- /dev/null +++ b/fixtures/next-16-app-pages-router/src/app/page.tsx @@ -0,0 +1,15 @@ +import Link from 'next/link'; + +export default function Home() { + return ( + <> + sprinkles +
+ recipes +
+ features + + ); +} + + diff --git a/fixtures/next-16-app-pages-router/src/app/recipes/page.tsx b/fixtures/next-16-app-pages-router/src/app/recipes/page.tsx new file mode 100644 index 000000000..5a335b86d --- /dev/null +++ b/fixtures/next-16-app-pages-router/src/app/recipes/page.tsx @@ -0,0 +1,12 @@ +import html from '@fixtures/recipes/src/html'; + +export default function Recipes() { + return ( + <> + +
+ + ); +} + + diff --git a/fixtures/next-16-app-pages-router/src/app/sprinkles/page.tsx b/fixtures/next-16-app-pages-router/src/app/sprinkles/page.tsx new file mode 100644 index 000000000..ff1006464 --- /dev/null +++ b/fixtures/next-16-app-pages-router/src/app/sprinkles/page.tsx @@ -0,0 +1,12 @@ +import html from '@fixtures/sprinkles/src/html'; + +export default function Sprinkles() { + return ( + <> + +
+ + ); +} + + diff --git a/fixtures/next-16-app-pages-router/src/pages/pages-router/features/index.tsx b/fixtures/next-16-app-pages-router/src/pages/pages-router/features/index.tsx new file mode 100644 index 000000000..306cdd676 --- /dev/null +++ b/fixtures/next-16-app-pages-router/src/pages/pages-router/features/index.tsx @@ -0,0 +1,12 @@ +import html from '@fixtures/features/src/html'; + +export default function Features() { + return ( + <> + +
+ + ); +} + + diff --git a/fixtures/next-16-app-pages-router/src/pages/pages-router/index.tsx b/fixtures/next-16-app-pages-router/src/pages/pages-router/index.tsx new file mode 100644 index 000000000..b170a06f1 --- /dev/null +++ b/fixtures/next-16-app-pages-router/src/pages/pages-router/index.tsx @@ -0,0 +1,16 @@ +import Link from 'next/link'; + + +export default function Home() { + return ( + <> + sprinkles +
+ recipes +
+ features + + ); +} + + diff --git a/fixtures/next-16-app-pages-router/src/pages/pages-router/recipes/index.tsx b/fixtures/next-16-app-pages-router/src/pages/pages-router/recipes/index.tsx new file mode 100644 index 000000000..5a335b86d --- /dev/null +++ b/fixtures/next-16-app-pages-router/src/pages/pages-router/recipes/index.tsx @@ -0,0 +1,12 @@ +import html from '@fixtures/recipes/src/html'; + +export default function Recipes() { + return ( + <> + +
+ + ); +} + + diff --git a/fixtures/next-16-app-pages-router/src/pages/pages-router/sprinkles/index.tsx b/fixtures/next-16-app-pages-router/src/pages/pages-router/sprinkles/index.tsx new file mode 100644 index 000000000..ff1006464 --- /dev/null +++ b/fixtures/next-16-app-pages-router/src/pages/pages-router/sprinkles/index.tsx @@ -0,0 +1,12 @@ +import html from '@fixtures/sprinkles/src/html'; + +export default function Sprinkles() { + return ( + <> + +
+ + ); +} + + diff --git a/fixtures/next-16-app-pages-router/src/styles/fonts.ts b/fixtures/next-16-app-pages-router/src/styles/fonts.ts new file mode 100644 index 000000000..bf30aebdd --- /dev/null +++ b/fixtures/next-16-app-pages-router/src/styles/fonts.ts @@ -0,0 +1,124 @@ +import local from 'next/font/local'; +import { + Inter as InterGoogle, + Roboto_Flex as Flex, + Noto_Serif as NotoSerif, +} from 'next/font/google'; + +// weirdly named local font variable to cover edge cases +export const local__font$Weird = local({ + src: [{ path: './fonts/Inter-Regular.woff2', weight: '400' }], + fallback: ['system-ui'], +}); + +// renamed google imports +export const _googleInter = InterGoogle({ + subsets: ['latin'], + fallback: ['system-ui'], + style: 'italic', + weight: 'variable', +}); +export const _googleFlex = Flex({ + subsets: ['latin'], + fallback: ['system-ui'], +}); + +// additional local next/font cases +export const _localMultiFallback = local({ + src: [{ path: './fonts/Inter-Regular.woff2' }], + fallback: ['system-ui', 'ui-monospace', 'third font'], +}); + +export const _localExplicit = local({ + src: [{ path: './fonts/Inter-Regular.woff2' }], + weight: '400', + style: 'italic', + fallback: ['Times New Roman', 'Gill Sans'], +}); + +export const _localDupFallback = local({ + src: [{ path: './fonts/Inter-Regular.woff2' }], + fallback: ['system-ui', 'system-ui', 'ui-serif', 'weird_font'], +}); + +// additional google next/font cases (Inter) +export const _googleInterDefaultStyle = InterGoogle({ + subsets: ['latin'], + fallback: ['serif'], +}); + +export const _googleInterItalic = InterGoogle({ + subsets: ['latin'], + fallback: ['sans-serif'], + style: 'italic', + weight: '400', +}); + +export const _googleInterMultiStyle = InterGoogle({ + subsets: ['latin'], + fallback: ['monospace'], + style: ['italic', 'normal'], +}); + +export const _googleInterWeightStr = InterGoogle({ weight: '400' }); + +export const _googleInterWeightVar = InterGoogle({ weight: 'variable' }); + +export const _googleNotoSerif = NotoSerif({ + subsets: ['latin'], + fallback: ['system-ui'], +}); + +export const _googleInterFallbackSpaces = InterGoogle({ + subsets: ['latin'], + fallback: ['Times New Roman', 'Gill Sans', 'Avenir Next'], +}); + +export const _googleInterDupFallback = InterGoogle({ + subsets: ['latin'], + fallback: ['system-ui', 'system-ui', 'ui-serif', 'weird_font'], +}); + +// local name edge-cases and option variations +export const localSimple = local({ + src: [{ path: './fonts/Inter-Regular.woff2' }], +}); + +export const _LocalCamelCase = local({ + src: [{ path: './fonts/Inter-Regular.woff2' }], + fallback: ['serif'], +}); + +export const local$Dollar = local({ + src: [{ path: './fonts/Inter-Regular.woff2' }], + fallback: ['ui-sans-serif', 'emoji'], +}); + +export const _local_underscore123 = local({ + src: [ + { path: './fonts/Inter-Regular.woff2', weight: '400' }, + { path: './fonts/Inter-Regular.woff2', style: 'italic' }, + ], + fallback: ['Times New Roman'], +}); + +// google extra coverage +export const _googleFlexMultiWeights = Flex({ + subsets: ['latin'], + weight: ['200', '300'], + fallback: ['system-ui'], +}); + +export const _googleInterGenericFallbacks = InterGoogle({ + subsets: ['latin'], + fallback: [ + 'ui-serif', + 'ui-sans-serif', + 'monospace', + 'emoji', + 'math', + 'ui-rounded', + ], +}); + +export const _googleInterNoFallback = InterGoogle({ subsets: ['latin'] }); diff --git a/fixtures/next-16-app-pages-router/src/styles/fonts/Inter-Regular.woff2 b/fixtures/next-16-app-pages-router/src/styles/fonts/Inter-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2bcd222ecfae996d035ff72bf70672305cc29261 GIT binary patch literal 111268 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 YlP_pm ztM9Q_f^Ju1U)kTCx1hKLRy|sob}2&j2&ldb*lu^!byk+hq!~}+_;u0>%whduh(~N+;TSmC{wFV7$q?xsq7HHtMXK!Bh!IC?>zVs z4&UzGhlt&#PF~ytjIoG2{EVzwA9Ayn;0-nF>|uE@byk1q(c@|?JQr1hR#*>F-g@|3 z?d-u%RhtFtnGy!$p9|0OCFNRm^z%%F8(4ACq<8yCY_Hc|D8qZYSm*17Mn{Q9zjQ7{ zWfdcpJ30>$V|E`dKo#O~);}W*c`NIB=ixeXAWr4{M&@5$vHbWzt2~(8LaUJGqAPVJ)q4w>fZ@NJ>GjaD5Za+z3T(KUb6?k6#p55W& zzdE(3wqIfzb5xdWH)5pQl}g&^b7iso(49RpBYsl+z&Ctcv$65{CqiX_R~PMr-M*qk zMelENM32kx+LqlCdk3_bIp9<3eCw7gFi=ub6zCs=GQ3KL9W)6`Ru|96ft0=62$k8| zVOV(-+H(-=L$ddL>u0g3Jh$w-J3c;QaKf~Qd8czNBf7Gtu6nwvZPy`U^C3&S1G(q1 zr$34x5bWzPFd;1p#28_0z$r$+P1q9wJL13yW(6F|N~Me%`>)4TzsrGQFYie+@f8cJCrV-T8JxXD=5 zJrdSonp)91%bh=&Jz=jb$AhL5qzRPPEoM!%zEg%Kmt)s!=7$I^i}Dw`EWjbBL`$Y& zk}*nY;`rIChMh(Yow>6GBp+SYeW}>tp|!=!bB2q%Z(B3b*gui-0a^NY>l{__6Ya62 z|71g`ABa3sAy;yce)@2JibjfE+luE(DnDt`T(ig~O7}|uBO2@wCOa5tDaE8xe?iZE zt*pzaU9d^Q#vuY#Fso`TJdBjVVM`O0B}y8JDJ3sq03iLV_Cq=+3<|t~4a7Kk^7_}M zNH1LGzJt|m%v3vaW3xW38?;gCe1DPq#a+l$Qf($O*d_&#;zzJb8F%kd4 zDm2=jD7%Ui)nEr}CGT*xE9D?Qe9XWs&QympaHq}Xm6%HuY?yKrlB9-#hh`B0F<~8|0QHjtaY~aZX{1O<$ID_nw3iwV4}3~!{1*h z#VcpV3ah`-sxSN*|IWk;5<3FpWmT36p}{ zN_fRy`tLdWq)NUmPTqv$i!{@<^C%1Q5fW#+0e~-Qe3UT7t$|rg0u`OtsXsEBvxhWS zE7|kU_1*MtPEU9)`p2tm)MQ!Iupaeq*!y==LwwzSuC(eJo=E9lU?9YVujY_ik7wBL z>uSFMtJbM;yuQ)g)uzol9JNzU&LKDMQyh`YBqq@dSYk;Fn*r-fb-UVd+oWboS)6RI zN2|l~sj}br`}EUPX6D@7{fErZ{Qohkhw&fq7yDmSZp3$HueoH@=YQ$*Lvn;hQ2X>$ zcbzb2G^_jOuIW2hZ1hJP{J8UDaeecZPiFakc<1av@zkwVXooy%qiXxkXjWg3$`WM7 z0n_HVx11ns0NDwuqwC2AhFV8Qzo$uWXHOJNH2)mKMzM9HUoEAxekuC}&whSue;Cdq z@UwHPG3oEs->kut2X3FEob+#Fcj*Y!&Yfp6coz;Y_lx;sfB8PvFSHl$J^jQ_t(kY! zfyvDbe-{Au-kw>)S1XmVQET`c7FZ7JOEUN!m5Nsdt;|OyylC0Ik$+f)W+k_l)ViLB z4(@E`kX%u~|3$T`@7)c~e|j{nZJWXO^pV1}(oi0(v95cK8=LF5CVe}m;N@2>1pGff C!H4<) literal 0 HcmV?d00001 diff --git a/fixtures/next-16-app-pages-router/src/styles/nextFont.css.ts b/fixtures/next-16-app-pages-router/src/styles/nextFont.css.ts new file mode 100644 index 000000000..6b3175e6e --- /dev/null +++ b/fixtures/next-16-app-pages-router/src/styles/nextFont.css.ts @@ -0,0 +1,22 @@ +import * as fonts from './fonts'; + +export const pickedValues = Object.fromEntries( + Object.entries(fonts).map( + ([importName, { style }]) => + [ + importName, + { + fontFamily: style.fontFamily, + fontWeight: style.fontWeight, + fontStyle: style.fontStyle, + }, + ] as const, + ), +) as Record< + keyof typeof fonts, + { + fontFamily: string; + fontWeight: number; + fontStyle: string; + } +>; diff --git a/fixtures/next-16-app-pages-router/tsconfig.json b/fixtures/next-16-app-pages-router/tsconfig.json new file mode 100644 index 000000000..0400cf02b --- /dev/null +++ b/fixtures/next-16-app-pages-router/tsconfig.json @@ -0,0 +1,44 @@ +{ + "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": { + "@/*": [ + "./*" + ] + } + }, + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts", + ".next/dev/types/**/*.ts", + "**/*.mts", + "dist/types/**/*.ts", + "dist/dev/types/**/*.ts" + ], + "exclude": [ + "node_modules" + ] +} diff --git a/fixtures/next-app-router/package.json b/fixtures/next-app-router/package.json index 1938fb611..b8f76b092 100644 --- a/fixtures/next-app-router/package.json +++ b/fixtures/next-app-router/package.json @@ -1,5 +1,5 @@ { - "name": "@fixtures/next-app-router", + "name": "@fixtures/next-13-app-router", "description": "Next app router fixtures", "version": "0.0.7", "private": true, diff --git a/fixtures/next-app-router/tsconfig.json b/fixtures/next-app-router/tsconfig.json index d751428c7..8c8ab9649 100644 --- a/fixtures/next-app-router/tsconfig.json +++ b/fixtures/next-app-router/tsconfig.json @@ -8,7 +8,8 @@ "name": "next" } ], - "strictNullChecks": true + "strictNullChecks": true, + "module": "esnext" }, "include": [ "next-env.d.ts", diff --git a/fixtures/next-pages-router/package.json b/fixtures/next-pages-router/package.json index 1d49ec676..fe873247b 100644 --- a/fixtures/next-pages-router/package.json +++ b/fixtures/next-pages-router/package.json @@ -1,5 +1,5 @@ { - "name": "@fixtures/next-pages-router", + "name": "@fixtures/next-12-pages-router", "description": "Next pages router fixtures", "version": "0.0.7", "private": true, diff --git a/fixtures/next-pages-router/tsconfig.json b/fixtures/next-pages-router/tsconfig.json index f295fe6d3..c363dcf1f 100644 --- a/fixtures/next-pages-router/tsconfig.json +++ b/fixtures/next-pages-router/tsconfig.json @@ -3,7 +3,9 @@ "compilerOptions": { "forceConsistentCasingInFileNames": true, "jsx": "preserve", - "strictNullChecks": true + "strictNullChecks": true, + "module": "esnext", + "moduleResolution": "node" }, "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], "exclude": ["node_modules"] diff --git a/packages/turbopack-plugin/src/next-font/transform.ts b/packages/turbopack-plugin/src/next-font/transform.ts index ebebbf21c..d5655a300 100644 --- a/packages/turbopack-plugin/src/next-font/transform.ts +++ b/packages/turbopack-plugin/src/next-font/transform.ts @@ -9,30 +9,30 @@ export type NextFontTransformResult = { const HELPERS_PREAMBLE = [ "const __VE_FONT_MSG = \"next/font class names are generated by Turbopack and aren't available during vanilla-extract evaluation. Use style.* in VE files, and apply the real font's className/variable in runtime code.\";", - "function __ve_toQuotedList(items){return items.map((s)=>`'${s.replace(/['\\\"]/g,'')}'`);} ", - "function __ve_buildFontFamily(family, fallback){ const parts = __ve_toQuotedList([family, family + ' Fallback']); if (Array.isArray(fallback)) parts.push(...__ve_toQuotedList(fallback)); return parts.join(', '); }", + "function __ve_normalizeName(s){ return String(s).replace(/['\\\"]/g,''); }", + "function __ve_toCssListRaw(items){ return items.map((s)=>__ve_normalizeName(s)); } ", + "function __ve_buildFontFamily(family, fallback, includeVariant = true){ const base=__ve_normalizeName(family); const parts = [`'${base}'`]; if (includeVariant) parts.push(`'${base} Fallback'`); if (Array.isArray(fallback)) parts.push(...__ve_toCssListRaw(fallback)); return parts.join(', '); }", "function __ve_pickSingle(values){ const arr = Array.isArray(values) ? Array.from(new Set(values.filter(Boolean))) : (values!=null?[values]:[]); if (arr.length!==1) return undefined; const v = arr[0]; if (typeof v !== 'string') return v; if (v.includes(' ')) return undefined; return v; }", 'function __veLocal(family, options = {}) {', - " const style = { fontFamily: __ve_buildFontFamily(String(family), options.fallback) };", - " let weight = __ve_pickSingle(options.weight); if (!weight && Array.isArray(options.src)) weight = __ve_pickSingle(options.src.map((s)=>s&&s.weight));", - " if (typeof weight === 'string' && weight && !weight.includes(' ')) { const n=Number(weight); if (!Number.isNaN(n)) style.fontWeight = n; } else if (typeof weight === 'number') { style.fontWeight = weight; }", - " let fstyle = __ve_pickSingle(options.style); if (!fstyle && Array.isArray(options.src)) fstyle = __ve_pickSingle(options.src.map((s)=>s&&s.style));", - " if (typeof fstyle === 'string' && fstyle && !fstyle.includes(' ')) { style.fontStyle = fstyle; }", + " const style = { fontFamily: __ve_buildFontFamily(String(family), options.fallback, true) };", + // next/font/local does not expose top-level weight/style in style props " return { get className(){ throw new Error(__VE_FONT_MSG); }, get variable(){ throw new Error(__VE_FONT_MSG); }, style };", '}', 'function __veGoogle(fontName, options = {}) {', ' const family = String(fontName);', - " const style = { fontFamily: __ve_buildFontFamily(family, options.fallback) };", + " const style = { fontFamily: __ve_buildFontFamily(family, options.fallback, options.fallback == null) };", " if (typeof options.weight === 'string' && options.weight && !options.weight.includes(' ')) { const n=Number(options.weight); if (!Number.isNaN(n)) style.fontWeight = n; } else if (typeof options.weight === 'number') { style.fontWeight = options.weight; }", - " if (typeof options.style === 'string' && options.style && !options.style.includes(' ')) { style.fontStyle = options.style; }", + " const pickedStyle = __ve_pickSingle(options.style);", + " if (typeof pickedStyle === 'string' && pickedStyle && !pickedStyle.includes(' ')) { style.fontStyle = pickedStyle; } else if (options.style === undefined) { style.fontStyle = 'normal'; }", " return { get className(){ throw new Error(__VE_FONT_MSG); }, get variable(){ throw new Error(__VE_FONT_MSG); }, style };", '}', ].join('\n'); function computeStubbedFamily(exportName: string, fallback?: string[]): string { - const toQuotedList = (items: string[]) => items.map((s) => `'${s.replace(/['\\\"]/g, '')}'`); - const parts = toQuotedList([exportName, `${exportName} Fallback`]); - if (Array.isArray(fallback)) parts.push(...toQuotedList(fallback)); + const normalize = (s: string) => s.replace(/['\\\"]/g, ''); + const toCssList = (items: string[]) => items.map(normalize); + const parts = toCssList([exportName, `${exportName} Fallback`]); + if (Array.isArray(fallback)) parts.push(...toCssList(fallback)); return parts.join(', '); } @@ -41,7 +41,6 @@ export async function transformNextFont( code: string, id: string, ): Promise { - try { const isTs = /\.(?:[cm]?ts|tsx)$/.test(id); const isTsx = /\.(?:tsx)$/.test(id); const isJsx = /\.(?:jsx)$/.test(id); @@ -231,79 +230,4 @@ export async function transformNextFont( const outCode = await printModule({ type: 'Module', span: program.span, body: newBody }); return { code: outCode, usedNextFont, details, changed }; - } catch { - // Fallback to regex-based transform if SWC parsing/manipulation fails - return (function regexTransformNextFontFallback(code: string): NextFontTransformResult { - if (!code.includes('next/font')) { - return { code, usedNextFont: false, details: [], changed: false }; - } - - let transformed = code; - let changed = false; - let usesNextFont = false; - const details: FontDetail[] = []; - - const localAliases: string[] = []; - const localImportRe = /import\s+([A-Za-z_$][\w$]*)\s*(?:,\s*\{[^}]*\}\s*)?from\s*["']next\/font\/local["']/g; - transformed = transformed.replace(localImportRe, (_m, alias) => { - if (alias) localAliases.push(String(alias)); - usesNextFont = true; - changed = true; - return ''; - }); - - for (const callee of localAliases) { - const declAnyArgsRe = new RegExp( - `(export\\s+)?(const|let|var)\\s+([A-Za-z_$][\\w$]*)(?:\\s*:\\s*[^=]+?)?\\s*=\\s*${callee}\\s*\\(`, - 'g', - ); - transformed = transformed.replace(declAnyArgsRe, (_m, exp, kind, name) => { - changed = true; - const expPrefix = exp || ''; - return `${expPrefix}${kind} ${name} = __veLocal(${JSON.stringify(String(name))}, `; - }); - - const leftoverCall = new RegExp(`\\b${callee}\\s*\\(`); - if (leftoverCall.test(transformed)) { - const fallback = `\nconst ${callee} = (..._args) => { throw new Error(__VE_FONT_MSG); };\n`; - transformed = fallback + transformed; - changed = true; - } - } - - const googleSpecs: Array<{ local: string; orig: string }> = []; - const googleImportRe = /import\s*\{([^}]+)\}\s*from\s*["']next\/font\/google["']/g; - for (const m of transformed.matchAll(googleImportRe)) { - const inside = m && m[1] ? m[1] : ''; - if (!inside) continue; - usesNextFont = true; - const specs = inside - .split(',') - .map((s) => s.trim()) - .filter((s) => s.length > 0); - for (const spec of specs) { - const m2 = spec.match(/^([A-Za-z_$][\w$]*)(?:\s+as\s+([A-Za-z_$][\w$]*))?$/); - if (m2 && m2[1]) { - const orig = m2[1]; - const local = m2[2] || m2[1]; - googleSpecs.push({ local: String(local), orig: String(orig) }); - } - } - } - if (googleSpecs.length > 0) { - transformed = transformed.replace(googleImportRe, ''); - changed = true; - const proxyDefs = googleSpecs - .map(({ local, orig }) => `const ${local} = (...args) => __veGoogle(${JSON.stringify(orig.replace(/_/g, ' '))}, ...args);`) - .join('\n'); - transformed = `${proxyDefs}\n${transformed}`; - } - - if (changed && !/^\s*const\s+__VE_FONT_MSG\s*=/.test(transformed)) { - transformed = `${HELPERS_PREAMBLE}\n${transformed}`; - } - - return { code: transformed, usedNextFont: usesNextFont, details, changed }; - })(code); - } } diff --git a/packages/turbopack-plugin/src/next-font/transform.vitest.test.ts b/packages/turbopack-plugin/src/next-font/transform.vitest.test.ts deleted file mode 100644 index 45873ba56..000000000 --- a/packages/turbopack-plugin/src/next-font/transform.vitest.test.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { describe, it, expect } from 'vitest'; -import { transformNextFont } from './transform'; - -const idTs = '/abs/path/file.ts'; -const idTsx = '/abs/path/file.tsx'; -const idJsx = '/abs/path/file.jsx'; - -describe('next-font transform (SWC)', () => { - it('noop when no next/font usage', async () => { - const src = `export const x = 1;`; - const out = await transformNextFont(src, idTs); - expect(out.usedNextFont).toBe(false); - expect(out.changed).toBe(false); - expect(out.code).toContain('export const x = 1'); - }); - - it('local import removal and call rewrite', async () => { - const src = ` - import localFont from 'next/font/local'; - export const MyFont = localFont({ src: [{ path: './a.woff2', weight: '400' }] }); - `; - const out = await transformNextFont(src, idTs); - expect(out.usedNextFont).toBe(true); - expect(out.changed).toBe(true); - expect(out.code).not.toMatch(/from\s+['\"]next\/font\/local['\"]/); - expect(out.code).toMatch(/__veLocal\('MyFont'/); - expect(out.details.find((d) => d.exportName === 'MyFont')).toBeTruthy(); - // helper preamble injected once - const preambleCount = (out.code.match(/const __VE_FONT_MSG/g) || []).length; - expect(preambleCount).toBe(1); - }); - - it('google named imports → proxy consts; underscores→spaces', async () => { - const src = ` - import { Roboto, Roboto_Flex as Flex } from 'next/font/google'; - export const A = Roboto({ weight: '400' }); - export const B = Flex({ style: 'italic' }); - `; - const out = await transformNextFont(src, idTsx); - expect(out.usedNextFont).toBe(true); - expect(out.changed).toBe(true); - expect(out.code).not.toMatch(/from\s+['\"]next\/font\/google['\"]/); - expect(out.code).toMatch(/const Roboto = \(\.\.\.args\) => __veGoogle\('Roboto'/); - expect(out.code).toMatch(/const Flex = \(\.\.\.args\) => __veGoogle\('Roboto Flex'/); - expect(out.code).toMatch(/__veGoogle\('Roboto',/); - expect(out.code).toMatch(/__veGoogle\('Roboto Flex',/); - }); - - it('multiple font usages → inject helpers once', async () => { - const src = ` - import localFont from 'next/font/local'; - import { Roboto } from 'next/font/google'; - const A = localFont({ src: [{ path: './a.woff2', weight: '400' }] }); - const B = Roboto({ weight: '700' }); - `; - const out = await transformNextFont(src, idJsx); - const preambleCount = (out.code.match(/const __VE_FONT_MSG/g) || []).length; - expect(preambleCount).toBe(1); - }); - - it('exposes style.fontFamily and throws on className/variable at runtime (smoke)', async () => { - const src = ` - import localFont from 'next/font/local'; - const A = localFont({ fallback: ['system-ui'] }); - export { A }; - `; - const out = await transformNextFont(src, idTs); - const mod = { exports: {} as any }; - // eslint-disable-next-line no-new-func - const fn = new Function('module', out.code + '\nreturn module.exports;'); - const exports = fn(mod); - expect(typeof exports.A.style.fontFamily).toBe('string'); - expect(() => (exports.A as any).className).toThrow(); - expect(() => (exports.A as any).variable).toThrow(); - }); - - it('gracefully handles malformed input without crashing', async () => { - const src = `import localFont from 'next/font/local'; export const A = localFont( /* missing */ `; - const out = await transformNextFont(src, idTs); - // Either SWC path or regex fallback returns string output - expect(typeof out.code).toBe('string'); - }); -}); - - diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index eb1462b89..53bc2258e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -37,7 +37,7 @@ importers: version: 2.8.2 '@testing-library/jest-dom': specifier: ^6.4.2 - version: 6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)))(vitest@3.2.4(@types/node@22.15.3)(jsdom@20.0.3)(terser@5.26.0)(tsx@4.17.0)) + version: 6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)))(vitest@3.2.4(@types/node@22.15.3)(jsdom@20.0.3)(terser@5.26.0)(tsx@4.17.0)) '@types/jest': specifier: ^29.5.12 version: 29.5.12 @@ -55,7 +55,7 @@ importers: version: 7.0.3 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)) + version: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)) jest-environment-jsdom: specifier: ^29.7.0 version: 29.7.0 @@ -135,7 +135,7 @@ importers: devDependencies: '@remix-run/dev': specifier: ^2.8.0 - version: 2.8.0(@remix-run/serve@2.8.0(typescript@5.8.3))(@types/node@22.15.3)(terser@5.26.0)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3))(typescript@5.8.3)(vite@7.0.3(@types/node@22.15.3)(terser@5.26.0)(tsx@4.17.0)) + version: 2.8.0(@remix-run/serve@2.8.0(typescript@5.8.3))(@types/node@22.15.3)(terser@5.26.0)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3))(typescript@5.8.3)(vite@7.0.3(@types/node@22.15.3)(terser@5.26.0)(tsx@4.17.0)) '@types/react': specifier: ^18.2.55 version: 18.2.55 @@ -189,10 +189,10 @@ importers: version: 18.2.0(react@18.2.0) tailwindcss: specifier: ^2.1.2 - version: 2.2.19(autoprefixer@10.4.17(postcss@8.5.6))(postcss@8.5.6)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)) + version: 2.2.19(autoprefixer@10.4.17(postcss@8.5.6))(postcss@8.5.6)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)) webpack: specifier: ^5.90.0 - version: 5.90.0(webpack-cli@5.1.4) + version: 5.90.0(@swc/core@1.13.5)(webpack-cli@5.1.4) webpack-cli: specifier: ^5.1.4 version: 5.1.4(webpack-bundle-analyzer@4.5.0)(webpack-dev-server@5.0.4)(webpack@5.90.0) @@ -231,6 +231,86 @@ importers: specifier: workspace:^ version: link:../../packages/css + fixtures/next-15-app-pages-router: + dependencies: + '@fixtures/features': + specifier: workspace:* + version: link:../features + '@fixtures/recipes': + specifier: workspace:* + version: link:../recipes + '@fixtures/sprinkles': + specifier: workspace:* + version: link:../sprinkles + '@vanilla-extract/css': + specifier: workspace:* + version: link:../../packages/css + '@vanilla-extract/recipes': + specifier: workspace:* + version: link:../../packages/recipes + '@vanilla-extract/sprinkles': + specifier: workspace:* + version: link:../../packages/sprinkles + next: + specifier: 15.3.0 + version: 15.3.0(@babel/core@7.23.9)(@playwright/test@1.43.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + devDependencies: + '@types/react': + specifier: ^18.2.55 + version: 18.2.55 + '@vanilla-extract/next-plugin': + specifier: workspace:* + version: link:../../packages/next-plugin + '@vanilla-extract/webpack-plugin': + specifier: workspace:* + version: link:../../packages/webpack-plugin + + fixtures/next-16-app-pages-router: + dependencies: + '@fixtures/features': + specifier: workspace:* + version: link:../features + '@fixtures/recipes': + specifier: workspace:* + version: link:../recipes + '@fixtures/sprinkles': + specifier: workspace:* + version: link:../sprinkles + '@vanilla-extract/css': + specifier: workspace:* + version: link:../../packages/css + '@vanilla-extract/recipes': + specifier: workspace:* + version: link:../../packages/recipes + '@vanilla-extract/sprinkles': + specifier: workspace:* + version: link:../../packages/sprinkles + next: + specifier: ^16.0.0 + version: 16.0.0(@babel/core@7.23.9)(@playwright/test@1.43.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + devDependencies: + '@types/react': + specifier: ^18.2.55 + version: 18.2.55 + '@vanilla-extract/next-plugin': + specifier: workspace:* + version: link:../../packages/next-plugin + '@vanilla-extract/webpack-plugin': + specifier: workspace:* + version: link:../../packages/webpack-plugin + fixtures/next-app-router: dependencies: '@fixtures/features': @@ -555,13 +635,19 @@ importers: '@vanilla-extract/webpack-plugin': specifier: workspace:^ version: link:../webpack-plugin + semver: + specifier: ^7.6.3 + version: 7.7.3 devDependencies: + '@types/semver': + specifier: ^7.7.1 + version: 7.7.1 next: specifier: 12.3.4 version: 12.3.4(@babel/core@7.23.9)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) webpack: specifier: ^5.90.0 - version: 5.90.0(webpack-cli@5.1.4) + version: 5.90.0(@swc/core@1.13.5) packages/parcel-transformer: dependencies: @@ -619,6 +705,9 @@ importers: packages/turbopack-plugin: dependencies: + '@swc/core': + specifier: ^1.13.5 + version: 1.13.5 '@vanilla-extract/compiler': specifier: workspace:^ version: link:../compiler @@ -665,7 +754,7 @@ importers: version: 4.1.7 webpack: specifier: ^5.90.0 - version: 5.90.0(webpack-cli@5.1.4) + version: 5.90.0(@swc/core@1.13.5) scripts: devDependencies: @@ -759,7 +848,7 @@ importers: version: 2.2.4 '@types/webpack-bundle-analyzer': specifier: ^4 - version: 4.4.1(webpack-cli@5.1.4) + version: 4.4.1(@swc/core@1.13.5)(webpack-cli@5.1.4) '@vanilla-extract/css': specifier: workspace:* version: link:../packages/css @@ -813,7 +902,7 @@ importers: version: 2.7.7(webpack@5.90.0) netlify-cli: specifier: ^11.8.3 - version: 11.8.3(@types/express@4.17.21) + version: 11.8.3(@swc/core@1.13.5)(@types/express@4.17.21) null-loader: specifier: ^4.0.1 version: 4.0.1(webpack@5.90.0) @@ -822,10 +911,10 @@ importers: version: 0.3.0 tailwindcss: specifier: ^2.1.2 - version: 2.2.19(autoprefixer@10.4.17(postcss@8.5.6))(postcss@8.5.6)(ts-node@10.9.1(@types/node@16.11.10)(typescript@4.9.4)) + version: 2.2.19(autoprefixer@10.4.17(postcss@8.5.6))(postcss@8.5.6)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@16.11.10)(typescript@4.9.4)) webpack: specifier: ^5.90.0 - version: 5.90.0(webpack-cli@5.1.4) + version: 5.90.0(@swc/core@1.13.5)(webpack-cli@5.1.4) webpack-bundle-analyzer: specifier: ^4.4.1 version: 4.5.0 @@ -853,12 +942,18 @@ importers: '@fixtures/low-level': specifier: workspace:* version: link:../fixtures/low-level - '@fixtures/next-app-router': + '@fixtures/next-12-pages-router': + specifier: workspace:* + version: link:../fixtures/next-pages-router + '@fixtures/next-13-app-router': specifier: workspace:* version: link:../fixtures/next-app-router - '@fixtures/next-pages-router': + '@fixtures/next-15-app-pages-router': specifier: workspace:* - version: link:../fixtures/next-pages-router + version: link:../fixtures/next-15-app-pages-router + '@fixtures/next-16-app-pages-router': + specifier: workspace:* + version: link:../fixtures/next-16-app-pages-router '@fixtures/recipes': specifier: workspace:* version: link:../fixtures/recipes @@ -885,7 +980,7 @@ importers: version: 2.11.0 '@types/mini-css-extract-plugin': specifier: ^1.2.2 - version: 1.4.3(esbuild@0.25.0) + version: 1.4.3(@swc/core@1.13.5)(esbuild@0.25.0) '@types/webpack-dev-server': specifier: ^3.11.1 version: 3.11.6 @@ -906,10 +1001,10 @@ importers: version: link:../packages/webpack-plugin babel-loader: specifier: ^9.1.3 - version: 9.1.3(@babel/core@7.23.9)(webpack@5.90.0(esbuild@0.25.0)) + version: 9.1.3(@babel/core@7.23.9)(webpack@5.90.0(@swc/core@1.13.5)(esbuild@0.25.0)) css-loader: specifier: ^7.1.2 - version: 7.1.2(webpack@5.90.0(esbuild@0.25.0)) + version: 7.1.2(webpack@5.90.0(@swc/core@1.13.5)(esbuild@0.25.0)) cssnano: specifier: ^5.1.15 version: 5.1.15(postcss@8.5.6) @@ -924,10 +1019,10 @@ importers: version: 11.8.3 html-webpack-plugin: specifier: ^5.3.1 - version: 5.5.0(webpack@5.90.0(esbuild@0.25.0)) + version: 5.5.0(webpack@5.90.0(@swc/core@1.13.5)(esbuild@0.25.0)) mini-css-extract-plugin: specifier: ^2.7.7 - version: 2.7.7(webpack@5.90.0(esbuild@0.25.0)) + version: 2.7.7(webpack@5.90.0(@swc/core@1.13.5)(esbuild@0.25.0)) minimist: specifier: ^1.2.5 version: 1.2.8 @@ -948,7 +1043,7 @@ importers: version: 6.1.3 style-loader: specifier: ^2.0.0 - version: 2.0.0(webpack@5.90.0(esbuild@0.25.0)) + version: 2.0.0(webpack@5.90.0(@swc/core@1.13.5)(esbuild@0.25.0)) vite: specifier: ^5.0.0 || ^6.0.0 || ^7.0.0 version: 7.0.3(@types/node@22.15.3)(terser@5.26.0)(tsx@4.17.0) @@ -957,10 +1052,10 @@ importers: version: 11.3.0(vite@7.0.3(@types/node@22.15.3)(terser@5.26.0)(tsx@4.17.0)) webpack: specifier: ^5.90.0 - version: 5.90.0(esbuild@0.25.0) + version: 5.90.0(@swc/core@1.13.5)(esbuild@0.25.0) webpack-dev-server: specifier: ^5.0.4 - version: 5.0.4(webpack@5.90.0(esbuild@0.25.0)) + version: 5.0.4(webpack@5.90.0(@swc/core@1.13.5)(esbuild@0.25.0)) webpack-merge: specifier: ^6.0.1 version: 6.0.1 @@ -985,7 +1080,7 @@ importers: version: 10.0.0 '@testing-library/jest-dom': specifier: ^6.4.2 - version: 6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)))(vitest@3.2.4(@types/node@22.15.3)(jsdom@20.0.3)(terser@5.26.0)(tsx@4.17.0)) + version: 6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)))(vitest@3.2.4(@types/node@22.15.3)(jsdom@20.0.3)(terser@5.26.0)(tsx@4.17.0)) '@vanilla-extract-private/test-helpers': specifier: workspace:* version: link:../test-helpers @@ -1896,6 +1991,9 @@ packages: '@emnapi/runtime@1.4.4': resolution: {integrity: sha512-hHyapA4A3gPaDCNfiqyZUStTMqIkKRshqPIuDOXv1hcBnD4U3l8cP0T1HMCfGRxQ6V64TGCcoswChANyOAwbQg==} + '@emnapi/runtime@1.6.0': + resolution: {integrity: sha512-obtUmAHTMjll499P+D9A3axeJFlhdjOWdKUNs/U6QIGT7V5RjcUW1xToAzjvmgTSQhDbYn/NwfTRoJcQ2rNBxA==} + '@emnapi/wasi-threads@1.0.3': resolution: {integrity: sha512-8K5IFFsQqF9wQNJptGbS6FNKgUTsSRYnTqNCG1vPP8jFdjSv18n2mQfJpkt2Oibo9iBEzcDnDxNwKTzC7svlJw==} @@ -2604,6 +2702,132 @@ packages: cpu: [x64] os: [win32] + '@img/colour@1.0.0': + resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==} + engines: {node: '>=18'} + + '@img/sharp-darwin-arm64@0.34.4': + resolution: {integrity: sha512-sitdlPzDVyvmINUdJle3TNHl+AG9QcwiAMsXmccqsCOMZNIdW2/7S26w0LyU8euiLVzFBL3dXPwVCq/ODnf2vA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.34.4': + resolution: {integrity: sha512-rZheupWIoa3+SOdF/IcUe1ah4ZDpKBGWcsPX6MT0lYniH9micvIU7HQkYTfrx5Xi8u+YqwLtxC/3vl8TQN6rMg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.2.3': + resolution: {integrity: sha512-QzWAKo7kpHxbuHqUC28DZ9pIKpSi2ts2OJnoIGI26+HMgq92ZZ4vk8iJd4XsxN+tYfNJxzH6W62X5eTcsBymHw==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.2.3': + resolution: {integrity: sha512-Ju+g2xn1E2AKO6YBhxjj+ACcsPQRHT0bhpglxcEf+3uyPY+/gL8veniKoo96335ZaPo03bdDXMv0t+BBFAbmRA==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.2.3': + resolution: {integrity: sha512-I4RxkXU90cpufazhGPyVujYwfIm9Nk1QDEmiIsaPwdnm013F7RIceaCc87kAH+oUB1ezqEvC6ga4m7MSlqsJvQ==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linux-arm@1.2.3': + resolution: {integrity: sha512-x1uE93lyP6wEwGvgAIV0gP6zmaL/a0tGzJs/BIDDG0zeBhMnuUPm7ptxGhUbcGs4okDJrk4nxgrmxpib9g6HpA==} + cpu: [arm] + os: [linux] + + '@img/sharp-libvips-linux-ppc64@1.2.3': + resolution: {integrity: sha512-Y2T7IsQvJLMCBM+pmPbM3bKT/yYJvVtLJGfCs4Sp95SjvnFIjynbjzsa7dY1fRJX45FTSfDksbTp6AGWudiyCg==} + cpu: [ppc64] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.2.3': + resolution: {integrity: sha512-RgWrs/gVU7f+K7P+KeHFaBAJlNkD1nIZuVXdQv6S+fNA6syCcoboNjsV2Pou7zNlVdNQoQUpQTk8SWDHUA3y/w==} + cpu: [s390x] + os: [linux] + + '@img/sharp-libvips-linux-x64@1.2.3': + resolution: {integrity: sha512-3JU7LmR85K6bBiRzSUc/Ff9JBVIFVvq6bomKE0e63UXGeRw2HPVEjoJke1Yx+iU4rL7/7kUjES4dZ/81Qjhyxg==} + cpu: [x64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-arm64@1.2.3': + resolution: {integrity: sha512-F9q83RZ8yaCwENw1GieztSfj5msz7GGykG/BA+MOUefvER69K/ubgFHNeSyUu64amHIYKGDs4sRCMzXVj8sEyw==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-x64@1.2.3': + resolution: {integrity: sha512-U5PUY5jbc45ANM6tSJpsgqmBF/VsL6LnxJmIf11kB7J5DctHgqm0SkuXzVWtIY90GnJxKnC/JT251TDnk1fu/g==} + cpu: [x64] + os: [linux] + + '@img/sharp-linux-arm64@0.34.4': + resolution: {integrity: sha512-YXU1F/mN/Wu786tl72CyJjP/Ngl8mGHN1hST4BGl+hiW5jhCnV2uRVTNOcaYPs73NeT/H8Upm3y9582JVuZHrQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linux-arm@0.34.4': + resolution: {integrity: sha512-Xyam4mlqM0KkTHYVSuc6wXRmM7LGN0P12li03jAnZ3EJWZqj83+hi8Y9UxZUbxsgsK1qOEwg7O0Bc0LjqQVtxA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + + '@img/sharp-linux-ppc64@0.34.4': + resolution: {integrity: sha512-F4PDtF4Cy8L8hXA2p3TO6s4aDt93v+LKmpcYFLAVdkkD3hSxZzee0rh6/+94FpAynsuMpLX5h+LRsSG3rIciUQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ppc64] + os: [linux] + + '@img/sharp-linux-s390x@0.34.4': + resolution: {integrity: sha512-qVrZKE9Bsnzy+myf7lFKvng6bQzhNUAYcVORq2P7bDlvmF6u2sCmK2KyEQEBdYk+u3T01pVsPrkj943T1aJAsw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + + '@img/sharp-linux-x64@0.34.4': + resolution: {integrity: sha512-ZfGtcp2xS51iG79c6Vhw9CWqQC8l2Ot8dygxoDoIQPTat/Ov3qAa8qpxSrtAEAJW+UjTXc4yxCjNfxm4h6Xm2A==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-linuxmusl-arm64@0.34.4': + resolution: {integrity: sha512-8hDVvW9eu4yHWnjaOOR8kHVrew1iIX+MUgwxSuH2XyYeNRtLUe4VNioSqbNkB7ZYQJj9rUTT4PyRscyk2PXFKA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linuxmusl-x64@0.34.4': + resolution: {integrity: sha512-lU0aA5L8QTlfKjpDCEFOZsTYGn3AEiO6db8W5aQDxj0nQkVrZWmN3ZP9sYKWJdtq3PWPhUNlqehWyXpYDcI9Sg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-wasm32@0.34.4': + resolution: {integrity: sha512-33QL6ZO/qpRyG7woB/HUALz28WnTMI2W1jgX3Nu2bypqLIKx/QKMILLJzJjI+SIbvXdG9fUnmrxR7vbi1sTBeA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-arm64@0.34.4': + resolution: {integrity: sha512-2Q250do/5WXTwxW3zjsEuMSv5sUU4Tq9VThWKlU2EYLm4MB7ZeMwF+SFJutldYODXF6jzc6YEOC+VfX0SZQPqA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [win32] + + '@img/sharp-win32-ia32@0.34.4': + resolution: {integrity: sha512-3ZeLue5V82dT92CNL6rsal6I2weKw1cYu+rGKm8fOCCtJTR2gYeUfY3FqUnIJsMUPIH68oS5jmZ0NiJ508YpEw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.34.4': + resolution: {integrity: sha512-xIyj4wpYs8J18sVN3mSQjwrw7fKUqRw+Z5rnHNCy5fYTxigBz81u5mOMPmFumwjcn8+ld1ppptMBCLic1nz6ig==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + '@import-maps/resolve@1.0.1': resolution: {integrity: sha512-tWZNBIS1CoekcwlMuyG2mr0a1Wo5lb5lEHwwWvZo+5GLgr3e9LLDTtmgtCWEwBpXMkxn9D+2W9j2FY6eZQq0tA==} @@ -3151,6 +3375,12 @@ packages: '@next/env@13.5.4': resolution: {integrity: sha512-LGegJkMvRNw90WWphGJ3RMHMVplYcOfRWf2Be3td3sUa+1AaxmsYyANsA+znrGCBjXJNi4XAQlSoEfUxs/4kIQ==} + '@next/env@15.3.0': + resolution: {integrity: sha512-6mDmHX24nWlHOlbwUiAOmMyY7KELimmi+ed8qWcJYjqXeC+G6JzPZ3QosOAfjNwgMIzwhXBiRiCgdh8axTTdTA==} + + '@next/env@16.0.0': + resolution: {integrity: sha512-s5j2iFGp38QsG1LWRQaE2iUY3h1jc014/melHFfLdrsMJPqxqDQwWNwyQTcNoUSGZlCVZuM7t7JDMmSyRilsnA==} + '@next/swc-android-arm-eabi@12.3.4': resolution: {integrity: sha512-cM42Cw6V4Bz/2+j/xIzO8nK/Q3Ly+VSlZJTa1vHzsocJRYz8KT6MrreXaci2++SIZCF1rVRCDgAg5PpqRibdIA==} engines: {node: '>= 10'} @@ -3175,6 +3405,18 @@ packages: cpu: [arm64] os: [darwin] + '@next/swc-darwin-arm64@15.3.0': + resolution: {integrity: sha512-PDQcByT0ZfF2q7QR9d+PNj3wlNN4K6Q8JoHMwFyk252gWo4gKt7BF8Y2+KBgDjTFBETXZ/TkBEUY7NIIY7A/Kw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@next/swc-darwin-arm64@16.0.0': + resolution: {integrity: sha512-/CntqDCnk5w2qIwMiF0a9r6+9qunZzFmU0cBX4T82LOflE72zzH6gnOjCwUXYKOBlQi8OpP/rMj8cBIr18x4TA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + '@next/swc-darwin-x64@12.3.4': resolution: {integrity: sha512-PPF7tbWD4k0dJ2EcUSnOsaOJ5rhT3rlEt/3LhZUGiYNL8KvoqczFrETlUx0cUYaXe11dRA3F80Hpt727QIwByQ==} engines: {node: '>= 10'} @@ -3187,6 +3429,18 @@ packages: cpu: [x64] os: [darwin] + '@next/swc-darwin-x64@15.3.0': + resolution: {integrity: sha512-m+eO21yg80En8HJ5c49AOQpFDq+nP51nu88ZOMCorvw3g//8g1JSUsEiPSiFpJo1KCTQ+jm9H0hwXK49H/RmXg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@next/swc-darwin-x64@16.0.0': + resolution: {integrity: sha512-hB4GZnJGKa8m4efvTGNyii6qs76vTNl+3dKHTCAUaksN6KjYy4iEO3Q5ira405NW2PKb3EcqWiRaL9DrYJfMHg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + '@next/swc-freebsd-x64@12.3.4': resolution: {integrity: sha512-KM9JXRXi/U2PUM928z7l4tnfQ9u8bTco/jb939pdFUHqc28V43Ohd31MmZD1QzEK4aFlMRaIBQOWQZh4D/E5lQ==} engines: {node: '>= 10'} @@ -3211,6 +3465,18 @@ packages: cpu: [arm64] os: [linux] + '@next/swc-linux-arm64-gnu@15.3.0': + resolution: {integrity: sha512-H0Kk04ZNzb6Aq/G6e0un4B3HekPnyy6D+eUBYPJv9Abx8KDYgNMWzKt4Qhj57HXV3sTTjsfc1Trc1SxuhQB+Tg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-arm64-gnu@16.0.0': + resolution: {integrity: sha512-E2IHMdE+C1k+nUgndM13/BY/iJY9KGCphCftMh7SXWcaQqExq/pJU/1Hgn8n/tFwSoLoYC/yUghOv97tAsIxqg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + '@next/swc-linux-arm64-musl@12.3.4': resolution: {integrity: sha512-EETZPa1juczrKLWk5okoW2hv7D7WvonU+Cf2CgsSoxgsYbUCZ1voOpL4JZTOb6IbKMDo6ja+SbY0vzXZBUMvkQ==} engines: {node: '>= 10'} @@ -3223,6 +3489,18 @@ packages: cpu: [arm64] os: [linux] + '@next/swc-linux-arm64-musl@15.3.0': + resolution: {integrity: sha512-k8GVkdMrh/+J9uIv/GpnHakzgDQhrprJ/FbGQvwWmstaeFG06nnAoZCJV+wO/bb603iKV1BXt4gHG+s2buJqZA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-arm64-musl@16.0.0': + resolution: {integrity: sha512-xzgl7c7BVk4+7PDWldU+On2nlwnGgFqJ1siWp3/8S0KBBLCjonB6zwJYPtl4MUY7YZJrzzumdUpUoquu5zk8vg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + '@next/swc-linux-x64-gnu@12.3.4': resolution: {integrity: sha512-4csPbRbfZbuWOk3ATyWcvVFdD9/Rsdq5YHKvRuEni68OCLkfy4f+4I9OBpyK1SKJ00Cih16NJbHE+k+ljPPpag==} engines: {node: '>= 10'} @@ -3235,6 +3513,18 @@ packages: cpu: [x64] os: [linux] + '@next/swc-linux-x64-gnu@15.3.0': + resolution: {integrity: sha512-ZMQ9yzDEts/vkpFLRAqfYO1wSpIJGlQNK9gZ09PgyjBJUmg8F/bb8fw2EXKgEaHbCc4gmqMpDfh+T07qUphp9A==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-linux-x64-gnu@16.0.0': + resolution: {integrity: sha512-sdyOg4cbiCw7YUr0F/7ya42oiVBXLD21EYkSwN+PhE4csJH4MSXUsYyslliiiBwkM+KsuQH/y9wuxVz6s7Nstg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + '@next/swc-linux-x64-musl@12.3.4': resolution: {integrity: sha512-YeBmI+63Ro75SUiL/QXEVXQ19T++58aI/IINOyhpsRL1LKdyfK/35iilraZEFz9bLQrwy1LYAR5lK200A9Gjbg==} engines: {node: '>= 10'} @@ -3247,6 +3537,18 @@ packages: cpu: [x64] os: [linux] + '@next/swc-linux-x64-musl@15.3.0': + resolution: {integrity: sha512-RFwq5VKYTw9TMr4T3e5HRP6T4RiAzfDJ6XsxH8j/ZeYq2aLsBqCkFzwMI0FmnSsLaUbOb46Uov0VvN3UciHX5A==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-linux-x64-musl@16.0.0': + resolution: {integrity: sha512-IAXv3OBYqVaNOgyd3kxR4L3msuhmSy1bcchPHxDOjypG33i2yDWvGBwFD94OuuTjjTt/7cuIKtAmoOOml6kfbg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + '@next/swc-win32-arm64-msvc@12.3.4': resolution: {integrity: sha512-Sd0qFUJv8Tj0PukAYbCCDbmXcMkbIuhnTeHm9m4ZGjCf6kt7E/RMs55Pd3R5ePjOkN7dJEuxYBehawTR/aPDSQ==} engines: {node: '>= 10'} @@ -3259,6 +3561,18 @@ packages: cpu: [arm64] os: [win32] + '@next/swc-win32-arm64-msvc@15.3.0': + resolution: {integrity: sha512-a7kUbqa/k09xPjfCl0RSVAvEjAkYBYxUzSVAzk2ptXiNEL+4bDBo9wNC43G/osLA/EOGzG4CuNRFnQyIHfkRgQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@next/swc-win32-arm64-msvc@16.0.0': + resolution: {integrity: sha512-bmo3ncIJKUS9PWK1JD9pEVv0yuvp1KPuOsyJTHXTv8KDrEmgV/K+U0C75rl9rhIaODcS7JEb6/7eJhdwXI0XmA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + '@next/swc-win32-ia32-msvc@12.3.4': resolution: {integrity: sha512-rt/vv/vg/ZGGkrkKcuJ0LyliRdbskQU+91bje+PgoYmxTZf/tYs6IfbmgudBJk6gH3QnjHWbkphDdRQrseRefQ==} engines: {node: '>= 10'} @@ -3283,6 +3597,18 @@ packages: cpu: [x64] os: [win32] + '@next/swc-win32-x64-msvc@15.3.0': + resolution: {integrity: sha512-vHUQS4YVGJPmpjn7r5lEZuMhK5UQBNBRSB+iGDvJjaNk649pTIcRluDWNb9siunyLLiu/LDPHfvxBtNamyuLTw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@next/swc-win32-x64-msvc@16.0.0': + resolution: {integrity: sha512-O1cJbT+lZp+cTjYyZGiDwsOjO3UHHzSqobkPNipdlnnuPb1swfcuY6r3p8dsKU4hAIEO4cO67ZCfVVH/M1ETXA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -4125,15 +4451,93 @@ packages: '@sinonjs/fake-timers@10.0.2': resolution: {integrity: sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==} + '@swc/core-darwin-arm64@1.13.5': + resolution: {integrity: sha512-lKNv7SujeXvKn16gvQqUQI5DdyY8v7xcoO3k06/FJbHJS90zEwZdQiMNRiqpYw/orU543tPaWgz7cIYWhbopiQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.13.5': + resolution: {integrity: sha512-ILd38Fg/w23vHb0yVjlWvQBoE37ZJTdlLHa8LRCFDdX4WKfnVBiblsCU9ar4QTMNdeTBEX9iUF4IrbNWhaF1Ng==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.13.5': + resolution: {integrity: sha512-Q6eS3Pt8GLkXxqz9TAw+AUk9HpVJt8Uzm54MvPsqp2yuGmY0/sNaPPNVqctCX9fu/Nu8eaWUen0si6iEiCsazQ==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.13.5': + resolution: {integrity: sha512-aNDfeN+9af+y+M2MYfxCzCy/VDq7Z5YIbMqRI739o8Ganz6ST+27kjQFd8Y/57JN/hcnUEa9xqdS3XY7WaVtSw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-arm64-musl@1.13.5': + resolution: {integrity: sha512-9+ZxFN5GJag4CnYnq6apKTnnezpfJhCumyz0504/JbHLo+Ue+ZtJnf3RhyA9W9TINtLE0bC4hKpWi8ZKoETyOQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-x64-gnu@1.13.5': + resolution: {integrity: sha512-WD530qvHrki8Ywt/PloKUjaRKgstQqNGvmZl54g06kA+hqtSE2FTG9gngXr3UJxYu/cNAjJYiBifm7+w4nbHbA==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-linux-x64-musl@1.13.5': + resolution: {integrity: sha512-Luj8y4OFYx4DHNQTWjdIuKTq2f5k6uSXICqx+FSabnXptaOBAbJHNbHT/06JZh6NRUouaf0mYXN0mcsqvkhd7Q==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-win32-arm64-msvc@1.13.5': + resolution: {integrity: sha512-cZ6UpumhF9SDJvv4DA2fo9WIzlNFuKSkZpZmPG1c+4PFSEMy5DFOjBSllCvnqihCabzXzpn6ykCwBmHpy31vQw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.13.5': + resolution: {integrity: sha512-C5Yi/xIikrFUzZcyGj9L3RpKljFvKiDMtyDzPKzlsDrKIw2EYY+bF88gB6oGY5RGmv4DAX8dbnpRAqgFD0FMEw==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.13.5': + resolution: {integrity: sha512-YrKdMVxbYmlfybCSbRtrilc6UA8GF5aPmGKBdPvjrarvsmf4i7ZHGCEnLtfOMd3Lwbs2WUZq3WdMbozYeLU93Q==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.13.5': + resolution: {integrity: sha512-WezcBo8a0Dg2rnR82zhwoR6aRNxeTGfK5QCD6TQ+kg3xx/zNT02s/0o+81h/3zhvFSB24NtqEr8FTw88O5W/JQ==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '>=0.5.17' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + '@swc/helpers@0.4.11': resolution: {integrity: sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw==} '@swc/helpers@0.4.14': resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} + '@swc/helpers@0.5.15': + resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + '@swc/helpers@0.5.2': resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} + '@swc/types@0.1.25': + resolution: {integrity: sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==} + '@szmarczak/http-timer@1.1.2': resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} engines: {node: '>=6'} @@ -4416,8 +4820,8 @@ packages: '@types/semver@6.2.3': resolution: {integrity: sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A==} - '@types/semver@7.5.5': - resolution: {integrity: sha512-+d+WYC1BxJ6yVOgUgzK8gWvp5qF8ssV5r4nsDcZWKRWcDQLQ619tvWAxJQYGgBrO1MnLJC7a5GtiYsAoQ47dJg==} + '@types/semver@7.7.1': + resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} '@types/send@0.17.4': resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} @@ -5992,6 +6396,10 @@ packages: resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} engines: {node: '>=8'} + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} @@ -8835,23 +9243,65 @@ packages: peerDependenciesMeta: fibers: optional: true - node-sass: + node-sass: + optional: true + sass: + optional: true + + next@13.5.4: + resolution: {integrity: sha512-+93un5S779gho8y9ASQhb/bTkQF17FNQOtXLKAj3lsNgltEcF0C5PMLLncDmH+8X1EnJH1kbqAERa29nRXqhjA==} + engines: {node: '>=16.14.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + sass: + optional: true + + next@15.3.0: + resolution: {integrity: sha512-k0MgP6BsK8cZ73wRjMazl2y2UcXj49ZXLDEgx6BikWuby/CN+nh81qFFI16edgd7xYpe/jj2OZEIwCoqnzz0bQ==} + engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 + 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 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + babel-plugin-react-compiler: optional: true sass: optional: true - next@13.5.4: - resolution: {integrity: sha512-+93un5S779gho8y9ASQhb/bTkQF17FNQOtXLKAj3lsNgltEcF0C5PMLLncDmH+8X1EnJH1kbqAERa29nRXqhjA==} - engines: {node: '>=16.14.0'} + next@16.0.0: + resolution: {integrity: sha512-nYohiNdxGu4OmBzggxy9rczmjIGI+TpR5vbKTsE1HqYwNm1B+YSiugSrFguX6omMOKnDHAmBPY4+8TNJk0Idyg==} + engines: {node: '>=20.9.0'} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 - 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 peerDependenciesMeta: '@opentelemetry/api': optional: true + '@playwright/test': + optional: true + babel-plugin-react-compiler: + optional: true sass: optional: true @@ -10427,6 +10877,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.7.3: + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} + engines: {node: '>=10'} + hasBin: true + send@0.18.0: resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} engines: {node: '>= 0.8.0'} @@ -10472,6 +10927,10 @@ packages: resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} engines: {node: '>=8'} + sharp@0.34.4: + resolution: {integrity: sha512-FUH39xp3SBPnxWvd5iib1X8XY7J0K0X7d93sie9CJg2PO8/7gmg89Nve6OjItK53/MlAushNNxteBYfM6DEuoA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} @@ -10860,6 +11319,19 @@ packages: babel-plugin-macros: optional: true + styled-jsx@5.1.6: + 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 || ^19.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + stylehacks@5.1.1: resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} engines: {node: ^10 || ^12 || >=14.0} @@ -11202,6 +11674,9 @@ packages: tslib@2.5.0: resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tsutils@3.21.0: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} @@ -13062,7 +13537,7 @@ snapshots: outdent: 0.5.0 prettier: 2.8.8 resolve-from: 5.0.0 - semver: 7.6.0 + semver: 7.7.3 '@changesets/assemble-release-plan@6.0.4': dependencies: @@ -13071,7 +13546,7 @@ snapshots: '@changesets/should-skip-package': 0.1.1 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 - semver: 7.6.0 + semver: 7.7.3 '@changesets/changelog-git@0.2.0': dependencies: @@ -13102,7 +13577,7 @@ snapshots: '@changesets/types': 6.0.0 '@changesets/write': 0.3.2 '@manypkg/get-packages': 1.1.3 - '@types/semver': 7.5.5 + '@types/semver': 7.7.1 ansi-colors: 4.1.3 ci-info: 3.9.0 enquirer: 2.3.6 @@ -13114,7 +13589,7 @@ snapshots: package-manager-detector: 0.2.0 picocolors: 1.1.1 resolve-from: 5.0.0 - semver: 7.6.0 + semver: 7.7.3 spawndamnit: 2.0.0 term-size: 2.2.1 @@ -13137,7 +13612,7 @@ snapshots: '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 picocolors: 1.1.1 - semver: 7.6.0 + semver: 7.7.3 '@changesets/get-github-info@0.6.0': dependencies: @@ -13247,6 +13722,11 @@ snapshots: tslib: 2.5.0 optional: true + '@emnapi/runtime@1.6.0': + dependencies: + tslib: 2.5.0 + optional: true + '@emnapi/wasi-threads@1.0.3': dependencies: tslib: 2.5.0 @@ -13605,6 +14085,95 @@ snapshots: '@esbuild/win32-x64@0.25.0': optional: true + '@img/colour@1.0.0': + optional: true + + '@img/sharp-darwin-arm64@0.34.4': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.2.3 + optional: true + + '@img/sharp-darwin-x64@0.34.4': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.2.3 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.2.3': + optional: true + + '@img/sharp-libvips-darwin-x64@1.2.3': + optional: true + + '@img/sharp-libvips-linux-arm64@1.2.3': + optional: true + + '@img/sharp-libvips-linux-arm@1.2.3': + optional: true + + '@img/sharp-libvips-linux-ppc64@1.2.3': + optional: true + + '@img/sharp-libvips-linux-s390x@1.2.3': + optional: true + + '@img/sharp-libvips-linux-x64@1.2.3': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.2.3': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.2.3': + optional: true + + '@img/sharp-linux-arm64@0.34.4': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.2.3 + optional: true + + '@img/sharp-linux-arm@0.34.4': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.2.3 + optional: true + + '@img/sharp-linux-ppc64@0.34.4': + optionalDependencies: + '@img/sharp-libvips-linux-ppc64': 1.2.3 + optional: true + + '@img/sharp-linux-s390x@0.34.4': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.2.3 + optional: true + + '@img/sharp-linux-x64@0.34.4': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.2.3 + optional: true + + '@img/sharp-linuxmusl-arm64@0.34.4': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.2.3 + optional: true + + '@img/sharp-linuxmusl-x64@0.34.4': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.2.3 + optional: true + + '@img/sharp-wasm32@0.34.4': + dependencies: + '@emnapi/runtime': 1.6.0 + optional: true + + '@img/sharp-win32-arm64@0.34.4': + optional: true + + '@img/sharp-win32-ia32@0.34.4': + optional: true + + '@img/sharp-win32-x64@0.34.4': + optional: true + '@import-maps/resolve@1.0.1': {} '@isaacs/cliui@8.0.2': @@ -13635,7 +14204,7 @@ snapshots: jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3))': + '@jest/core@29.7.0(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -13649,7 +14218,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)) + jest-config: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -13956,7 +14525,7 @@ snapshots: nopt: 5.0.0 npmlog: 5.0.1 rimraf: 3.0.2 - semver: 7.6.0 + semver: 7.7.3 tar: 6.1.11 transitivePeerDependencies: - encoding @@ -14063,7 +14632,7 @@ snapshots: '@netlify/binary-info@1.0.0': {} - '@netlify/build@27.18.5': + '@netlify/build@27.18.5(@swc/core@1.13.5)': dependencies: '@bugsnag/js': 7.18.0 '@netlify/cache-utils': 4.1.4(supports-color@9.2.3) @@ -14109,13 +14678,13 @@ snapshots: resolve: 2.0.0-next.4 rfdc: 1.3.0 safe-json-stringify: 1.2.0 - semver: 7.6.0 + semver: 7.7.3 statsd-client: 0.4.7 string-width: 5.1.2 strip-ansi: 7.0.1 supports-color: 9.2.3 tmp-promise: 3.0.3 - ts-node: 10.9.1(@types/node@16.11.10)(typescript@4.9.4) + ts-node: 10.9.1(@swc/core@1.13.5)(@types/node@16.11.10)(typescript@4.9.4) typescript: 4.9.4 update-notifier: 5.1.0 uuid: 8.3.2 @@ -14181,7 +14750,7 @@ snapshots: p-retry: 5.1.1 p-wait-for: 4.1.0 path-key: 4.0.0 - semver: 7.6.0 + semver: 7.7.3 tmp-promise: 3.0.3 uuid: 9.0.0 @@ -14277,7 +14846,7 @@ snapshots: p-filter: 3.0.0 p-locate: 6.0.0 read-pkg-up: 9.1.0 - semver: 7.6.0 + semver: 7.7.3 '@netlify/functions-utils@4.2.9(supports-color@9.2.3)': dependencies: @@ -14384,7 +14953,7 @@ snapshots: read-package-json-fast: 2.0.3 require-package-name: 2.0.1 resolve: 2.0.0-next.4 - semver: 7.6.0 + semver: 7.7.3 tmp-promise: 3.0.3 toml: 3.0.0 unixify: 1.0.0 @@ -14397,6 +14966,10 @@ snapshots: '@next/env@13.5.4': {} + '@next/env@15.3.0': {} + + '@next/env@16.0.0': {} + '@next/swc-android-arm-eabi@12.3.4': optional: true @@ -14409,12 +14982,24 @@ snapshots: '@next/swc-darwin-arm64@13.5.4': optional: true + '@next/swc-darwin-arm64@15.3.0': + optional: true + + '@next/swc-darwin-arm64@16.0.0': + optional: true + '@next/swc-darwin-x64@12.3.4': optional: true '@next/swc-darwin-x64@13.5.4': optional: true + '@next/swc-darwin-x64@15.3.0': + optional: true + + '@next/swc-darwin-x64@16.0.0': + optional: true + '@next/swc-freebsd-x64@12.3.4': optional: true @@ -14427,30 +15012,60 @@ snapshots: '@next/swc-linux-arm64-gnu@13.5.4': optional: true + '@next/swc-linux-arm64-gnu@15.3.0': + optional: true + + '@next/swc-linux-arm64-gnu@16.0.0': + optional: true + '@next/swc-linux-arm64-musl@12.3.4': optional: true '@next/swc-linux-arm64-musl@13.5.4': optional: true + '@next/swc-linux-arm64-musl@15.3.0': + optional: true + + '@next/swc-linux-arm64-musl@16.0.0': + optional: true + '@next/swc-linux-x64-gnu@12.3.4': optional: true '@next/swc-linux-x64-gnu@13.5.4': optional: true + '@next/swc-linux-x64-gnu@15.3.0': + optional: true + + '@next/swc-linux-x64-gnu@16.0.0': + optional: true + '@next/swc-linux-x64-musl@12.3.4': optional: true '@next/swc-linux-x64-musl@13.5.4': optional: true + '@next/swc-linux-x64-musl@15.3.0': + optional: true + + '@next/swc-linux-x64-musl@16.0.0': + optional: true + '@next/swc-win32-arm64-msvc@12.3.4': optional: true '@next/swc-win32-arm64-msvc@13.5.4': optional: true + '@next/swc-win32-arm64-msvc@15.3.0': + optional: true + + '@next/swc-win32-arm64-msvc@16.0.0': + optional: true + '@next/swc-win32-ia32-msvc@12.3.4': optional: true @@ -14463,6 +15078,12 @@ snapshots: '@next/swc-win32-x64-msvc@13.5.4': optional: true + '@next/swc-win32-x64-msvc@15.3.0': + optional: true + + '@next/swc-win32-x64-msvc@16.0.0': + optional: true + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -14479,7 +15100,7 @@ snapshots: '@npmcli/fs@3.1.0': dependencies: - semver: 7.6.0 + semver: 7.7.3 '@npmcli/git@4.1.0': dependencies: @@ -14489,7 +15110,7 @@ snapshots: proc-log: 3.0.0 promise-inflight: 1.0.1 promise-retry: 2.0.1 - semver: 7.6.0 + semver: 7.7.3 which: 3.0.1 transitivePeerDependencies: - bluebird @@ -14502,7 +15123,7 @@ snapshots: json-parse-even-better-errors: 3.0.1 normalize-package-data: 5.0.0 proc-log: 3.0.0 - semver: 7.6.0 + semver: 7.7.3 transitivePeerDependencies: - bluebird @@ -14700,7 +15321,7 @@ snapshots: json5: 2.2.3 msgpackr: 1.10.1 nullthrows: 1.1.1 - semver: 7.6.0 + semver: 7.7.3 '@parcel/diagnostic@2.11.0': dependencies: @@ -14792,7 +15413,7 @@ snapshots: '@parcel/rust': 2.11.0 '@parcel/utils': 2.11.0 nullthrows: 1.1.1 - semver: 7.6.0 + semver: 7.7.3 transitivePeerDependencies: - '@parcel/core' @@ -14865,7 +15486,7 @@ snapshots: '@parcel/types': 2.11.0(@parcel/core@2.11.0) '@parcel/utils': 2.11.0 '@parcel/workers': 2.11.0(@parcel/core@2.11.0) - semver: 7.6.0 + semver: 7.7.3 '@parcel/package-manager@2.8.3(@parcel/core@2.11.0)': dependencies: @@ -15293,7 +15914,7 @@ snapshots: resolve: 1.22.8 resolve-from: 5.0.0 rollup: 2.79.1 - semver: 7.6.0 + semver: 7.7.3 terser: 5.26.0 v8-compile-cache: 2.3.0 zod: 3.22.4 @@ -15314,7 +15935,7 @@ snapshots: make-synchronized: 0.2.9 prettier: 3.4.2 - '@remix-run/dev@2.8.0(@remix-run/serve@2.8.0(typescript@5.8.3))(@types/node@22.15.3)(terser@5.26.0)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3))(typescript@5.8.3)(vite@7.0.3(@types/node@22.15.3)(terser@5.26.0)(tsx@4.17.0))': + '@remix-run/dev@2.8.0(@remix-run/serve@2.8.0(typescript@5.8.3))(@types/node@22.15.3)(terser@5.26.0)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3))(typescript@5.8.3)(vite@7.0.3(@types/node@22.15.3)(terser@5.26.0)(tsx@4.17.0))': dependencies: '@babel/core': 7.23.9 '@babel/generator': 7.23.6 @@ -15357,7 +15978,7 @@ snapshots: pidtree: 0.6.0 postcss: 8.5.6 postcss-discard-duplicates: 5.1.0(postcss@8.5.6) - postcss-load-config: 4.0.2(postcss@8.5.6)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)) + postcss-load-config: 4.0.2(postcss@8.5.6)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)) postcss-modules: 6.0.0(postcss@8.5.6) prettier: 2.8.8 pretty-ms: 7.0.1 @@ -15689,6 +16310,54 @@ snapshots: dependencies: '@sinonjs/commons': 2.0.0 + '@swc/core-darwin-arm64@1.13.5': + optional: true + + '@swc/core-darwin-x64@1.13.5': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.13.5': + optional: true + + '@swc/core-linux-arm64-gnu@1.13.5': + optional: true + + '@swc/core-linux-arm64-musl@1.13.5': + optional: true + + '@swc/core-linux-x64-gnu@1.13.5': + optional: true + + '@swc/core-linux-x64-musl@1.13.5': + optional: true + + '@swc/core-win32-arm64-msvc@1.13.5': + optional: true + + '@swc/core-win32-ia32-msvc@1.13.5': + optional: true + + '@swc/core-win32-x64-msvc@1.13.5': + optional: true + + '@swc/core@1.13.5': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.25 + optionalDependencies: + '@swc/core-darwin-arm64': 1.13.5 + '@swc/core-darwin-x64': 1.13.5 + '@swc/core-linux-arm-gnueabihf': 1.13.5 + '@swc/core-linux-arm64-gnu': 1.13.5 + '@swc/core-linux-arm64-musl': 1.13.5 + '@swc/core-linux-x64-gnu': 1.13.5 + '@swc/core-linux-x64-musl': 1.13.5 + '@swc/core-win32-arm64-msvc': 1.13.5 + '@swc/core-win32-ia32-msvc': 1.13.5 + '@swc/core-win32-x64-msvc': 1.13.5 + + '@swc/counter@0.1.3': {} + '@swc/helpers@0.4.11': dependencies: tslib: 2.5.0 @@ -15697,10 +16366,18 @@ snapshots: dependencies: tslib: 2.5.0 + '@swc/helpers@0.5.15': + dependencies: + tslib: 2.8.1 + '@swc/helpers@0.5.2': dependencies: tslib: 2.5.0 + '@swc/types@0.1.25': + dependencies: + '@swc/counter': 0.1.3 + '@szmarczak/http-timer@1.1.2': dependencies: defer-to-connect: 1.1.3 @@ -15724,7 +16401,7 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 - '@testing-library/jest-dom@6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)))(vitest@3.2.4(@types/node@22.15.3)(jsdom@20.0.3)(terser@5.26.0)(tsx@4.17.0))': + '@testing-library/jest-dom@6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)))(vitest@3.2.4(@types/node@22.15.3)(jsdom@20.0.3)(terser@5.26.0)(tsx@4.17.0))': dependencies: '@adobe/css-tools': 4.3.3 '@babel/runtime': 7.23.9 @@ -15737,7 +16414,7 @@ snapshots: optionalDependencies: '@jest/globals': 29.7.0 '@types/jest': 29.5.12 - jest: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)) + jest: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)) vitest: 3.2.4(@types/node@22.15.3)(jsdom@20.0.3)(terser@5.26.0)(tsx@4.17.0) '@tootallnate/once@2.0.0': {} @@ -15940,11 +16617,11 @@ snapshots: '@types/mime@1.3.2': {} - '@types/mini-css-extract-plugin@1.4.3(esbuild@0.25.0)': + '@types/mini-css-extract-plugin@1.4.3(@swc/core@1.13.5)(esbuild@0.25.0)': dependencies: '@types/node': 22.15.3 tapable: 2.2.1 - webpack: 5.90.0(esbuild@0.25.0) + webpack: 5.90.0(@swc/core@1.13.5)(esbuild@0.25.0) transitivePeerDependencies: - '@swc/core' - esbuild @@ -16031,7 +16708,7 @@ snapshots: '@types/semver@6.2.3': {} - '@types/semver@7.5.5': {} + '@types/semver@7.7.1': {} '@types/send@0.17.4': dependencies: @@ -16072,11 +16749,11 @@ snapshots: '@types/unist@2.0.6': {} - '@types/webpack-bundle-analyzer@4.4.1(webpack-cli@5.1.4)': + '@types/webpack-bundle-analyzer@4.4.1(@swc/core@1.13.5)(webpack-cli@5.1.4)': dependencies: '@types/node': 22.15.3 tapable: 2.2.1 - webpack: 5.90.0(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.13.5)(webpack-cli@5.1.4) transitivePeerDependencies: - '@swc/core' - esbuild @@ -16135,7 +16812,7 @@ snapshots: debug: 4.4.1(supports-color@9.2.3) globby: 11.1.0 is-glob: 4.0.3 - semver: 7.6.0 + semver: 7.7.3 tsutils: 3.21.0(typescript@4.9.4) optionalDependencies: typescript: 4.9.4 @@ -16355,17 +17032,17 @@ snapshots: '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.90.0)': dependencies: - webpack: 5.90.0(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.13.5)(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-bundle-analyzer@4.5.0)(webpack-dev-server@5.0.4)(webpack@5.90.0) '@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.90.0)': dependencies: - webpack: 5.90.0(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.13.5)(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-bundle-analyzer@4.5.0)(webpack-dev-server@5.0.4)(webpack@5.90.0) '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack-dev-server@5.0.4)(webpack@5.90.0)': dependencies: - webpack: 5.90.0(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.13.5)(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-bundle-analyzer@4.5.0)(webpack-dev-server@5.0.4)(webpack@5.90.0) optionalDependencies: webpack-dev-server: 5.0.4(webpack-cli@5.1.4)(webpack@5.90.0) @@ -16491,7 +17168,7 @@ snapshots: global-cache-dir: 2.0.0 jest-validate: 25.5.0 path-exists: 4.0.0 - semver: 7.6.0 + semver: 7.7.3 write-file-atomic: 3.0.3 ansi-align@3.0.1: @@ -16681,19 +17358,19 @@ snapshots: transitivePeerDependencies: - supports-color - babel-loader@9.1.3(@babel/core@7.23.9)(webpack@5.90.0(esbuild@0.25.0)): + babel-loader@9.1.3(@babel/core@7.23.9)(webpack@5.90.0(@swc/core@1.13.5)(esbuild@0.25.0)): dependencies: '@babel/core': 7.23.9 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.90.0(esbuild@0.25.0) + webpack: 5.90.0(@swc/core@1.13.5)(esbuild@0.25.0) babel-loader@9.1.3(@babel/core@7.23.9)(webpack@5.90.0): dependencies: '@babel/core': 7.23.9 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.90.0(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.13.5)(webpack-cli@5.1.4) babel-plugin-apply-mdx-type-prop@1.6.22(@babel/core@7.12.9): dependencies: @@ -16937,7 +17614,7 @@ snapshots: builtins@5.0.1: dependencies: - semver: 7.6.0 + semver: 7.7.3 bundle-name@4.1.0: dependencies: @@ -17388,7 +18065,7 @@ snapshots: js-string-escape: 1.0.1 lodash: 4.17.21 md5-hex: 3.0.1 - semver: 7.6.0 + semver: 7.7.3 well-known-symbols: 2.0.0 config-chain@1.1.13: @@ -17460,7 +18137,7 @@ snapshots: normalize-path: 3.0.0 schema-utils: 4.2.0 serialize-javascript: 6.0.2 - webpack: 5.90.0(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.13.5)(webpack-cli@5.1.4) core-js-compat@3.36.0: dependencies: @@ -17511,13 +18188,13 @@ snapshots: crc-32: 1.2.2 readable-stream: 3.6.0 - create-jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)): + create-jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.10 - jest-config: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)) + jest-config: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -17556,7 +18233,7 @@ snapshots: dependencies: postcss: 8.5.6 - css-loader@7.1.2(webpack@5.90.0(esbuild@0.25.0)): + css-loader@7.1.2(webpack@5.90.0(@swc/core@1.13.5)(esbuild@0.25.0)): dependencies: icss-utils: 5.1.0(postcss@8.5.6) postcss: 8.5.6 @@ -17567,7 +18244,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.6.0 optionalDependencies: - webpack: 5.90.0(esbuild@0.25.0) + webpack: 5.90.0(@swc/core@1.13.5)(esbuild@0.25.0) css-loader@7.1.2(webpack@5.90.0): dependencies: @@ -17580,7 +18257,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.6.0 optionalDependencies: - webpack: 5.90.0(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.13.5)(webpack-cli@5.1.4) css-select@4.1.3: dependencies: @@ -17869,6 +18546,9 @@ snapshots: detect-libc@2.0.2: {} + detect-libc@2.1.2: + optional: true + detect-newline@3.1.0: {} detect-node@2.1.0: {} @@ -18820,10 +19500,10 @@ snapshots: dependencies: '@types/download': 8.0.1 '@types/node-fetch': 2.6.2 - '@types/semver': 7.5.5 + '@types/semver': 7.7.1 download: 8.0.0 node-fetch: 2.6.7 - semver: 7.6.0 + semver: 7.7.3 transitivePeerDependencies: - encoding @@ -19270,14 +19950,14 @@ snapshots: html-void-elements@1.0.5: {} - html-webpack-plugin@5.5.0(webpack@5.90.0(esbuild@0.25.0)): + html-webpack-plugin@5.5.0(webpack@5.90.0(@swc/core@1.13.5)(esbuild@0.25.0)): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.90.0(esbuild@0.25.0) + webpack: 5.90.0(@swc/core@1.13.5)(esbuild@0.25.0) html-webpack-plugin@5.5.0(webpack@5.90.0): dependencies: @@ -19286,7 +19966,7 @@ snapshots: lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.90.0(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.13.5)(webpack-cli@5.1.4) htmlnano@2.0.3(cssnano@5.1.15(postcss@8.5.6))(postcss@8.5.6)(relateurl@0.2.7)(srcset@4.0.0)(svgo@2.8.0)(terser@5.26.0): dependencies: @@ -19797,7 +20477,7 @@ snapshots: '@babel/parser': 7.23.9 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 - semver: 7.6.0 + semver: 7.7.3 transitivePeerDependencies: - supports-color @@ -19865,16 +20545,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)): + jest-cli@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)) + '@jest/core': 29.7.0(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)) + create-jest: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)) exit: 0.1.2 import-local: 3.0.3 - jest-config: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)) + jest-config: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -19884,7 +20564,7 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)): + jest-config@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)): dependencies: '@babel/core': 7.23.9 '@jest/test-sequencer': 29.7.0 @@ -19910,7 +20590,7 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 22.15.3 - ts-node: 10.9.1(@types/node@22.15.3)(typescript@5.8.3) + ts-node: 10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -20109,7 +20789,7 @@ snapshots: jest-util: 29.7.0 natural-compare: 1.4.0 pretty-format: 29.7.0 - semver: 7.6.0 + semver: 7.7.3 transitivePeerDependencies: - supports-color @@ -20179,12 +20859,12 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)): + jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)) + '@jest/core': 29.7.0(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)) '@jest/types': 29.6.3 import-local: 3.0.3 - jest-cli: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)) + jest-cli: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -20566,7 +21246,7 @@ snapshots: jest-validate: 27.5.1 map-obj: 5.0.2 moize: 6.1.3 - semver: 7.6.0 + semver: 7.7.3 log-symbols@1.0.2: dependencies: @@ -21213,15 +21893,15 @@ snapshots: min-indent@1.0.1: {} - mini-css-extract-plugin@2.7.7(webpack@5.90.0(esbuild@0.25.0)): + mini-css-extract-plugin@2.7.7(webpack@5.90.0(@swc/core@1.13.5)(esbuild@0.25.0)): dependencies: schema-utils: 4.2.0 - webpack: 5.90.0(esbuild@0.25.0) + webpack: 5.90.0(@swc/core@1.13.5)(esbuild@0.25.0) mini-css-extract-plugin@2.7.7(webpack@5.90.0): dependencies: schema-utils: 4.2.0 - webpack: 5.90.0(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.13.5)(webpack-cli@5.1.4) minimalistic-assert@1.0.1: {} @@ -21381,9 +22061,9 @@ snapshots: nested-error-stacks@2.1.1: {} - netlify-cli@11.8.3(@types/express@4.17.21): + netlify-cli@11.8.3(@swc/core@1.13.5)(@types/express@4.17.21): dependencies: - '@netlify/build': 27.18.5 + '@netlify/build': 27.18.5(@swc/core@1.13.5) '@netlify/config': 18.2.3 '@netlify/edge-bundler': 2.2.0 '@netlify/framework-info': 9.2.0 @@ -21473,7 +22153,7 @@ snapshots: pump: 3.0.0 raw-body: 2.5.1 read-pkg-up: 7.0.1 - semver: 7.6.0 + semver: 7.7.3 source-map-support: 0.5.21 static-server: 2.2.1 string-similarity: 4.0.4 @@ -21589,6 +22269,56 @@ snapshots: - '@babel/core' - babel-plugin-macros + next@15.3.0(@babel/core@7.23.9)(@playwright/test@1.43.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + '@next/env': 15.3.0 + '@swc/counter': 0.1.3 + '@swc/helpers': 0.5.15 + busboy: 1.6.0 + caniuse-lite: 1.0.30001587 + postcss: 8.4.31 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + styled-jsx: 5.1.6(@babel/core@7.23.9)(react@18.2.0) + optionalDependencies: + '@next/swc-darwin-arm64': 15.3.0 + '@next/swc-darwin-x64': 15.3.0 + '@next/swc-linux-arm64-gnu': 15.3.0 + '@next/swc-linux-arm64-musl': 15.3.0 + '@next/swc-linux-x64-gnu': 15.3.0 + '@next/swc-linux-x64-musl': 15.3.0 + '@next/swc-win32-arm64-msvc': 15.3.0 + '@next/swc-win32-x64-msvc': 15.3.0 + '@playwright/test': 1.43.1 + sharp: 0.34.4 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + + next@16.0.0(@babel/core@7.23.9)(@playwright/test@1.43.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + '@next/env': 16.0.0 + '@swc/helpers': 0.5.15 + caniuse-lite: 1.0.30001587 + postcss: 8.4.31 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + styled-jsx: 5.1.6(@babel/core@7.23.9)(react@18.2.0) + optionalDependencies: + '@next/swc-darwin-arm64': 16.0.0 + '@next/swc-darwin-x64': 16.0.0 + '@next/swc-linux-arm64-gnu': 16.0.0 + '@next/swc-linux-arm64-musl': 16.0.0 + '@next/swc-linux-x64-gnu': 16.0.0 + '@next/swc-linux-x64-musl': 16.0.0 + '@next/swc-win32-arm64-msvc': 16.0.0 + '@next/swc-win32-x64-msvc': 16.0.0 + '@playwright/test': 1.43.1 + sharp: 0.34.4 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + no-case@2.3.2: dependencies: lower-case: 1.1.4 @@ -21654,7 +22384,7 @@ snapshots: jest-validate: 25.5.0 normalize-node-version: 10.0.0 path-exists: 4.0.0 - semver: 7.6.0 + semver: 7.7.3 noop2@2.0.0: {} @@ -21667,7 +22397,7 @@ snapshots: all-node-versions: 8.0.0 filter-obj: 2.0.2 jest-validate: 25.5.0 - semver: 7.6.0 + semver: 7.7.3 normalize-package-data@2.5.0: dependencies: @@ -21680,14 +22410,14 @@ snapshots: dependencies: hosted-git-info: 4.1.0 is-core-module: 2.13.1 - semver: 7.6.0 + semver: 7.7.3 validate-npm-package-license: 3.0.4 normalize-package-data@5.0.0: dependencies: hosted-git-info: 6.1.1 is-core-module: 2.13.1 - semver: 7.6.0 + semver: 7.7.3 validate-npm-package-license: 3.0.4 normalize-path@2.1.1: @@ -21716,7 +22446,7 @@ snapshots: npm-install-checks@6.3.0: dependencies: - semver: 7.6.0 + semver: 7.7.3 npm-normalize-package-bin@1.0.1: {} @@ -21726,7 +22456,7 @@ snapshots: dependencies: hosted-git-info: 6.1.1 proc-log: 3.0.0 - semver: 7.6.0 + semver: 7.7.3 validate-npm-package-name: 5.0.0 npm-packlist@2.2.2: @@ -21741,7 +22471,7 @@ snapshots: npm-install-checks: 6.3.0 npm-normalize-package-bin: 3.0.1 npm-package-arg: 10.1.0 - semver: 7.6.0 + semver: 7.7.3 npm-run-path@4.0.1: dependencies: @@ -21766,7 +22496,7 @@ snapshots: dependencies: loader-utils: 2.0.2 schema-utils: 3.3.0 - webpack: 5.90.0(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.13.5)(webpack-cli@5.1.4) nullthrows@1.1.1: {} @@ -22006,7 +22736,7 @@ snapshots: got: 12.6.1 registry-auth-token: 5.0.2 registry-url: 6.0.1 - semver: 7.6.0 + semver: 7.7.3 package-manager-detector@0.2.0: {} @@ -22266,29 +22996,29 @@ snapshots: camelcase-css: 2.0.1 postcss: 8.5.6 - postcss-load-config@3.1.0(ts-node@10.9.1(@types/node@16.11.10)(typescript@4.9.4)): + postcss-load-config@3.1.0(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@16.11.10)(typescript@4.9.4)): dependencies: import-cwd: 3.0.0 lilconfig: 2.1.0 yaml: 1.10.2 optionalDependencies: - ts-node: 10.9.1(@types/node@16.11.10)(typescript@4.9.4) + ts-node: 10.9.1(@swc/core@1.13.5)(@types/node@16.11.10)(typescript@4.9.4) - postcss-load-config@3.1.0(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)): + postcss-load-config@3.1.0(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)): dependencies: import-cwd: 3.0.0 lilconfig: 2.1.0 yaml: 1.10.2 optionalDependencies: - ts-node: 10.9.1(@types/node@22.15.3)(typescript@5.8.3) + ts-node: 10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3) - postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)): + postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)): dependencies: lilconfig: 3.1.0 yaml: 2.3.4 optionalDependencies: postcss: 8.5.6 - ts-node: 10.9.1(@types/node@22.15.3)(typescript@5.8.3) + ts-node: 10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3) postcss-merge-longhand@5.1.7(postcss@8.5.6): dependencies: @@ -23263,6 +23993,8 @@ snapshots: dependencies: lru-cache: 6.0.0 + semver@7.7.3: {} + send@0.18.0: dependencies: debug: 2.6.9(supports-color@9.2.3) @@ -23348,6 +24080,36 @@ snapshots: dependencies: kind-of: 6.0.3 + sharp@0.34.4: + dependencies: + '@img/colour': 1.0.0 + detect-libc: 2.1.2 + semver: 7.7.3 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.34.4 + '@img/sharp-darwin-x64': 0.34.4 + '@img/sharp-libvips-darwin-arm64': 1.2.3 + '@img/sharp-libvips-darwin-x64': 1.2.3 + '@img/sharp-libvips-linux-arm': 1.2.3 + '@img/sharp-libvips-linux-arm64': 1.2.3 + '@img/sharp-libvips-linux-ppc64': 1.2.3 + '@img/sharp-libvips-linux-s390x': 1.2.3 + '@img/sharp-libvips-linux-x64': 1.2.3 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.3 + '@img/sharp-libvips-linuxmusl-x64': 1.2.3 + '@img/sharp-linux-arm': 0.34.4 + '@img/sharp-linux-arm64': 0.34.4 + '@img/sharp-linux-ppc64': 0.34.4 + '@img/sharp-linux-s390x': 0.34.4 + '@img/sharp-linux-x64': 0.34.4 + '@img/sharp-linuxmusl-arm64': 0.34.4 + '@img/sharp-linuxmusl-x64': 0.34.4 + '@img/sharp-wasm32': 0.34.4 + '@img/sharp-win32-arm64': 0.34.4 + '@img/sharp-win32-ia32': 0.34.4 + '@img/sharp-win32-x64': 0.34.4 + optional: true + shebang-command@1.2.0: dependencies: shebang-regex: 1.0.0 @@ -23694,11 +24456,11 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 - style-loader@2.0.0(webpack@5.90.0(esbuild@0.25.0)): + style-loader@2.0.0(webpack@5.90.0(@swc/core@1.13.5)(esbuild@0.25.0)): dependencies: loader-utils: 2.0.2 schema-utils: 3.3.0 - webpack: 5.90.0(esbuild@0.25.0) + webpack: 5.90.0(@swc/core@1.13.5)(esbuild@0.25.0) style-to-object@0.3.0: dependencies: @@ -23721,6 +24483,13 @@ snapshots: optionalDependencies: '@babel/core': 7.23.9 + styled-jsx@5.1.6(@babel/core@7.23.9)(react@18.2.0): + dependencies: + client-only: 0.0.1 + react: 18.2.0 + optionalDependencies: + '@babel/core': 7.23.9 + stylehacks@5.1.1(postcss@8.5.6): dependencies: browserslist: 4.23.0 @@ -23782,7 +24551,7 @@ snapshots: transitivePeerDependencies: - supports-color - tailwindcss@2.2.19(autoprefixer@10.4.17(postcss@8.5.6))(postcss@8.5.6)(ts-node@10.9.1(@types/node@16.11.10)(typescript@4.9.4)): + tailwindcss@2.2.19(autoprefixer@10.4.17(postcss@8.5.6))(postcss@8.5.6)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@16.11.10)(typescript@4.9.4)): dependencies: arg: 5.0.2 autoprefixer: 10.4.17(postcss@8.5.6) @@ -23808,7 +24577,7 @@ snapshots: object-hash: 2.2.0 postcss: 8.5.6 postcss-js: 3.0.3 - postcss-load-config: 3.1.0(ts-node@10.9.1(@types/node@16.11.10)(typescript@4.9.4)) + postcss-load-config: 3.1.0(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@16.11.10)(typescript@4.9.4)) postcss-nested: 5.0.6(postcss@8.5.6) postcss-selector-parser: 6.0.11 postcss-value-parser: 4.2.0 @@ -23821,7 +24590,7 @@ snapshots: transitivePeerDependencies: - ts-node - tailwindcss@2.2.19(autoprefixer@10.4.17(postcss@8.5.6))(postcss@8.5.6)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)): + tailwindcss@2.2.19(autoprefixer@10.4.17(postcss@8.5.6))(postcss@8.5.6)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)): dependencies: arg: 5.0.2 autoprefixer: 10.4.17(postcss@8.5.6) @@ -23847,7 +24616,7 @@ snapshots: object-hash: 2.2.0 postcss: 8.5.6 postcss-js: 3.0.3 - postcss-load-config: 3.1.0(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)) + postcss-load-config: 3.1.0(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)) postcss-nested: 5.0.6(postcss@8.5.6) postcss-selector-parser: 6.0.11 postcss-value-parser: 4.2.0 @@ -23913,25 +24682,39 @@ snapshots: ansi-escapes: 4.3.2 supports-hyperlinks: 2.2.0 - terser-webpack-plugin@5.3.10(esbuild@0.25.0)(webpack@5.90.0(esbuild@0.25.0)): + terser-webpack-plugin@5.3.10(@swc/core@1.13.5)(esbuild@0.25.0)(webpack@5.90.0(@swc/core@1.13.5)(esbuild@0.25.0)): dependencies: '@jridgewell/trace-mapping': 0.3.22 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.26.0 - webpack: 5.90.0(esbuild@0.25.0) + webpack: 5.90.0(@swc/core@1.13.5)(esbuild@0.25.0) optionalDependencies: + '@swc/core': 1.13.5 esbuild: 0.25.0 - terser-webpack-plugin@5.3.10(webpack@5.90.0): + terser-webpack-plugin@5.3.10(@swc/core@1.13.5)(webpack@5.90.0(@swc/core@1.13.5)): + dependencies: + '@jridgewell/trace-mapping': 0.3.22 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.2 + terser: 5.26.0 + webpack: 5.90.0(@swc/core@1.13.5) + optionalDependencies: + '@swc/core': 1.13.5 + + terser-webpack-plugin@5.3.10(@swc/core@1.13.5)(webpack@5.90.0): dependencies: '@jridgewell/trace-mapping': 0.3.22 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.26.0 - webpack: 5.90.0(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.13.5)(webpack-cli@5.1.4) + optionalDependencies: + '@swc/core': 1.13.5 terser@5.26.0: dependencies: @@ -24096,7 +24879,7 @@ snapshots: trough@2.2.0: {} - ts-node@10.9.1(@types/node@16.11.10)(typescript@4.9.4): + ts-node@10.9.1(@swc/core@1.13.5)(@types/node@16.11.10)(typescript@4.9.4): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.8 @@ -24113,8 +24896,10 @@ snapshots: typescript: 4.9.4 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.13.5 - ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3): + ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.8 @@ -24131,6 +24916,8 @@ snapshots: typescript: 5.8.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.13.5 optional: true tsconfck@3.1.4(typescript@5.8.3): @@ -24147,6 +24934,8 @@ snapshots: tslib@2.5.0: {} + tslib@2.8.1: {} + tsutils@3.21.0(typescript@4.9.4): dependencies: tslib: 1.14.1 @@ -24426,7 +25215,7 @@ snapshots: is-yarn-global: 0.3.0 latest-version: 5.1.0 pupa: 2.1.1 - semver: 7.6.0 + semver: 7.7.3 semver-diff: 3.1.1 xdg-basedir: 4.0.0 @@ -24769,13 +25558,13 @@ snapshots: import-local: 3.0.3 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.90.0(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.13.5)(webpack-cli@5.1.4) webpack-merge: 5.8.0 optionalDependencies: webpack-bundle-analyzer: 4.5.0 webpack-dev-server: 5.0.4(webpack-cli@5.1.4)(webpack@5.90.0) - webpack-dev-middleware@7.3.0(webpack@5.90.0(esbuild@0.25.0)): + webpack-dev-middleware@7.3.0(webpack@5.90.0(@swc/core@1.13.5)(esbuild@0.25.0)): dependencies: colorette: 2.0.16 memfs: 4.11.1 @@ -24784,7 +25573,7 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.2.0 optionalDependencies: - webpack: 5.90.0(esbuild@0.25.0) + webpack: 5.90.0(@swc/core@1.13.5)(esbuild@0.25.0) webpack-dev-middleware@7.3.0(webpack@5.90.0): dependencies: @@ -24795,7 +25584,7 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.2.0 optionalDependencies: - webpack: 5.90.0(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.13.5)(webpack-cli@5.1.4) webpack-dev-server@5.0.4(webpack-cli@5.1.4)(webpack@5.90.0): dependencies: @@ -24830,7 +25619,7 @@ snapshots: webpack-dev-middleware: 7.3.0(webpack@5.90.0) ws: 8.16.0 optionalDependencies: - webpack: 5.90.0(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.13.5)(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-bundle-analyzer@4.5.0)(webpack-dev-server@5.0.4)(webpack@5.90.0) transitivePeerDependencies: - bufferutil @@ -24838,7 +25627,7 @@ snapshots: - supports-color - utf-8-validate - webpack-dev-server@5.0.4(webpack@5.90.0(esbuild@0.25.0)): + webpack-dev-server@5.0.4(webpack@5.90.0(@swc/core@1.13.5)(esbuild@0.25.0)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -24868,10 +25657,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.3.0(webpack@5.90.0(esbuild@0.25.0)) + webpack-dev-middleware: 7.3.0(webpack@5.90.0(@swc/core@1.13.5)(esbuild@0.25.0)) ws: 8.16.0 optionalDependencies: - webpack: 5.90.0(esbuild@0.25.0) + webpack: 5.90.0(@swc/core@1.13.5)(esbuild@0.25.0) transitivePeerDependencies: - bufferutil - debug @@ -24893,7 +25682,38 @@ snapshots: webpack-sources@3.2.3: {} - webpack@5.90.0(esbuild@0.25.0): + webpack@5.90.0(@swc/core@1.13.5): + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.8 + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/wasm-edit': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + acorn: 8.11.2 + acorn-import-assertions: 1.9.0(acorn@8.11.2) + browserslist: 4.23.0 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.15.0 + es-module-lexer: 1.7.0 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.10 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.2.0 + mime-types: 2.1.34 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.10(@swc/core@1.13.5)(webpack@5.90.0(@swc/core@1.13.5)) + watchpack: 2.4.0 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + + webpack@5.90.0(@swc/core@1.13.5)(esbuild@0.25.0): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -24916,7 +25736,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(esbuild@0.25.0)(webpack@5.90.0(esbuild@0.25.0)) + terser-webpack-plugin: 5.3.10(@swc/core@1.13.5)(esbuild@0.25.0)(webpack@5.90.0(@swc/core@1.13.5)(esbuild@0.25.0)) watchpack: 2.4.0 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -24924,7 +25744,7 @@ snapshots: - esbuild - uglify-js - webpack@5.90.0(webpack-cli@5.1.4): + webpack@5.90.0(@swc/core@1.13.5)(webpack-cli@5.1.4): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -24947,7 +25767,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(webpack@5.90.0) + terser-webpack-plugin: 5.3.10(@swc/core@1.13.5)(webpack@5.90.0) watchpack: 2.4.0 webpack-sources: 3.2.3 optionalDependencies: diff --git a/site/docs/integrations/next.md b/site/docs/integrations/next.md index 1a805696c..b8bc52614 100644 --- a/site/docs/integrations/next.md +++ b/site/docs/integrations/next.md @@ -15,41 +15,46 @@ npm install --save-dev @vanilla-extract/next-plugin ## Setup -If you don't have a `next.config.js` file in the root of your project, create one. Add the plugin to your `next.config.js` file. +If you don't have a `next.config.js` or `next.config.ts` file in the root of your project, create one. Add the plugin to your Next.js config file. -```js -const { - createVanillaExtractPlugin -} = require('@vanilla-extract/next-plugin'); +```ts +// next.config.ts +import type { NextConfig } from 'next'; +import { createVanillaExtractPlugin } from '@vanilla-extract/next-plugin'; const withVanillaExtract = createVanillaExtractPlugin(); -/** @type {import('next').NextConfig} */ -const nextConfig = {}; +const nextConfig: NextConfig = {}; -module.exports = withVanillaExtract(nextConfig); +export default withVanillaExtract(nextConfig); ``` If required, this plugin can be composed with other plugins. -```js -const { - createVanillaExtractPlugin -} = require('@vanilla-extract/next-plugin'); +```ts +// next.config.ts +import type { NextConfig } from 'next'; +import { createVanillaExtractPlugin } from '@vanilla-extract/next-plugin'; +import createMDX from '@next/mdx'; + const withVanillaExtract = createVanillaExtractPlugin(); -const withMDX = require('@next/mdx')({ +const withMDX = createMDX({ extension: /\.mdx$/ }); -/** @type {import('next').NextConfig} */ -const nextConfig = {}; +const nextConfig: NextConfig = {}; -module.exports = withVanillaExtract(withMDX(nextConfig)); +export default withVanillaExtract(withMDX(nextConfig)); ``` +## Version Support + +- **Next.js >= 15.3**: Both Turbopack and Webpack are supported +- **Next.js <= 15.2**: Webpack-only support + ## Configuration -The plugin accepts the following as optional configuration: +The plugin accepts the following as optional configuration, passed to `createVanillaExtractPlugin`. ### identifiers @@ -60,6 +65,9 @@ Different formatting of identifiers (e.g. class names, keyframes, CSS Vars, etc) - A custom identifier function takes an object parameter with properties `hash`, `filePath`, `debugId`, and `packageName`, and returns a customized identifier. e.g. ```ts +// next.config.ts +import { createVanillaExtractPlugin } from '@vanilla-extract/next-plugin'; + const withVanillaExtract = createVanillaExtractPlugin({ identifiers: ({ hash }) => `prefix_${hash}` }); @@ -67,6 +75,57 @@ const withVanillaExtract = createVanillaExtractPlugin({ Each integration will set a default value based on the configuration options passed to the bundler. +### turbopackMode + +You can control Turbopack autoconfiguration using `turbopackMode`: + +- `auto` (default): enable Turbopack config only when Next >= 15.3 +- `on`: force-enable Turbopack config +- `off`: never configure Turbopack (Webpack-only) + +Disable Turbopack integration explicitly: + +```ts +// next.config.ts +import { createVanillaExtractPlugin } from '@vanilla-extract/next-plugin'; + +const withVanillaExtract = createVanillaExtractPlugin({ + turbopackMode: 'off' +}); + +export default withVanillaExtract({}); +``` + +Force-enable Turbopack integration: + +```ts +// next.config.ts +import { createVanillaExtractPlugin } from '@vanilla-extract/next-plugin'; + +const withVanillaExtract = createVanillaExtractPlugin({ + turbopackMode: 'on' +}); + +export default withVanillaExtract({}); +``` + +If you already manage `turbopack.rules` yourself for the same file globs, the plugin will throw to avoid rule conflicts. In that case, set `turbopackMode: 'off'` and apply your Turbopack config manually. + +### turbopackGlob + +By default Turbopack integration processes `**/*.css.{ts,tsx,js,jsx}`. You can override this via `turbopackGlob`: + +```ts +// next.config.ts +import { createVanillaExtractPlugin } from '@vanilla-extract/next-plugin'; + +const withVanillaExtract = createVanillaExtractPlugin({ + turbopackGlob: ['**/*.css.ts', '**/*.css.tsx'] +}); + +export default withVanillaExtract({}); +``` + ## Transpiling Vanilla Extract-dependent Libraries By default, Next.js does not allow importing of TypeScript files outside of the app root. @@ -83,20 +142,18 @@ export default function App() { } ``` -```js -// next.config.js -const { - createVanillaExtractPlugin -} = require('@vanilla-extract/next-plugin'); +```ts +// next.config.ts +import type { NextConfig } from 'next'; +import { createVanillaExtractPlugin } from '@vanilla-extract/next-plugin'; const withVanillaExtract = createVanillaExtractPlugin(); -/** @type {import('next').NextConfig} */ -const nextConfig = { +const nextConfig: NextConfig = { transpilePackages: ['@company/design-system'] }; // Next.js Vanilla Extract integration will now compile @company/design-system styles -module.exports = withVanillaExtract(nextConfig); +export default withVanillaExtract(nextConfig); ``` [`transpilepackages`]: https://nextjs.org/docs/app/api-reference/next-config-js/transpilePackages diff --git a/test-helpers/package.json b/test-helpers/package.json index 28f11b5c2..dbecca272 100644 --- a/test-helpers/package.json +++ b/test-helpers/package.json @@ -10,10 +10,12 @@ "@fixtures/features": "workspace:*", "@fixtures/layers": "workspace:*", "@fixtures/low-level": "workspace:*", - "@fixtures/next-app-router": "workspace:*", - "@fixtures/next-pages-router": "workspace:*", + "@fixtures/next-13-app-router": "workspace:*", + "@fixtures/next-12-pages-router": "workspace:*", "@fixtures/recipes": "workspace:*", "@fixtures/sprinkles": "workspace:*", + "@fixtures/next-15-app-pages-router": "workspace:*", + "@fixtures/next-16-app-pages-router": "workspace:*", "@fixtures/template-string-paths": "workspace:*", "@fixtures/themed": "workspace:*", "@fixtures/thirdparty": "workspace:*", From 1ecc4dfd31c628f3cf4f50f58cf5949bba0715ef Mon Sep 17 00:00:00 2001 From: Robbie Date: Thu, 23 Oct 2025 09:35:51 -0600 Subject: [PATCH 09/52] package version fixes --- .../next-15-app-pages-router/package.json | 4 +--- .../next-16-app-pages-router/package.json | 4 +--- pnpm-lock.yaml | 23 +++++++------------ test-helpers/package.json | 6 ++--- 4 files changed, 13 insertions(+), 24 deletions(-) diff --git a/fixtures/next-15-app-pages-router/package.json b/fixtures/next-15-app-pages-router/package.json index 38a305fe2..37ec57fc7 100644 --- a/fixtures/next-15-app-pages-router/package.json +++ b/fixtures/next-15-app-pages-router/package.json @@ -19,7 +19,7 @@ "@vanilla-extract/css": "workspace:*", "@vanilla-extract/recipes": "workspace:*", "@vanilla-extract/sprinkles": "workspace:*", - "next": "15.3.0", + "next": "npm:next@15.3.0", "react": "^18.2.0", "react-dom": "^18.2.0" }, @@ -29,5 +29,3 @@ "@vanilla-extract/webpack-plugin": "workspace:*" } } - - diff --git a/fixtures/next-16-app-pages-router/package.json b/fixtures/next-16-app-pages-router/package.json index 7e1d0642a..bce37ccb5 100644 --- a/fixtures/next-16-app-pages-router/package.json +++ b/fixtures/next-16-app-pages-router/package.json @@ -19,7 +19,7 @@ "@vanilla-extract/css": "workspace:*", "@vanilla-extract/recipes": "workspace:*", "@vanilla-extract/sprinkles": "workspace:*", - "next": "^16.0.0", + "next": "npm:next@^16.0.0", "react": "^18.2.0", "react-dom": "^18.2.0" }, @@ -29,5 +29,3 @@ "@vanilla-extract/webpack-plugin": "workspace:*" } } - - diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 53bc2258e..d26f9606a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -252,7 +252,7 @@ importers: specifier: workspace:* version: link:../../packages/sprinkles next: - specifier: 15.3.0 + specifier: npm:next@15.3.0 version: 15.3.0(@babel/core@7.23.9)(@playwright/test@1.43.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: specifier: ^18.2.0 @@ -292,7 +292,7 @@ importers: specifier: workspace:* version: link:../../packages/sprinkles next: - specifier: ^16.0.0 + specifier: npm:next@^16.0.0 version: 16.0.0(@babel/core@7.23.9)(@playwright/test@1.43.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: specifier: ^18.2.0 @@ -6392,10 +6392,6 @@ packages: engines: {node: '>=0.10'} hasBin: true - detect-libc@2.0.2: - resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} - engines: {node: '>=8'} - detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} @@ -13724,7 +13720,7 @@ snapshots: '@emnapi/runtime@1.6.0': dependencies: - tslib: 2.5.0 + tslib: 2.8.1 optional: true '@emnapi/wasi-threads@1.0.3': @@ -14518,7 +14514,7 @@ snapshots: '@mapbox/node-pre-gyp@1.0.10(supports-color@9.2.3)': dependencies: - detect-libc: 2.0.2 + detect-libc: 2.1.2 https-proxy-agent: 5.0.1(supports-color@9.2.3) make-dir: 3.1.0 node-fetch: 2.6.7 @@ -18544,10 +18540,7 @@ snapshots: detect-libc@1.0.3: {} - detect-libc@2.0.2: {} - - detect-libc@2.1.2: - optional: true + detect-libc@2.1.2: {} detect-newline@3.1.0: {} @@ -21295,7 +21288,7 @@ snapshots: lower-case@2.0.2: dependencies: - tslib: 2.5.0 + tslib: 2.8.1 lowercase-keys@1.0.0: {} @@ -22326,7 +22319,7 @@ snapshots: no-case@3.0.4: dependencies: lower-case: 2.0.2 - tslib: 2.5.0 + tslib: 2.8.1 node-addon-api@4.3.0: {} @@ -22359,7 +22352,7 @@ snapshots: node-gyp-build-optional-packages@5.1.1: dependencies: - detect-libc: 2.0.2 + detect-libc: 2.1.2 node-gyp-build@4.5.0: {} diff --git a/test-helpers/package.json b/test-helpers/package.json index dbecca272..2829a9984 100644 --- a/test-helpers/package.json +++ b/test-helpers/package.json @@ -10,12 +10,12 @@ "@fixtures/features": "workspace:*", "@fixtures/layers": "workspace:*", "@fixtures/low-level": "workspace:*", - "@fixtures/next-13-app-router": "workspace:*", "@fixtures/next-12-pages-router": "workspace:*", - "@fixtures/recipes": "workspace:*", - "@fixtures/sprinkles": "workspace:*", + "@fixtures/next-13-app-router": "workspace:*", "@fixtures/next-15-app-pages-router": "workspace:*", "@fixtures/next-16-app-pages-router": "workspace:*", + "@fixtures/recipes": "workspace:*", + "@fixtures/sprinkles": "workspace:*", "@fixtures/template-string-paths": "workspace:*", "@fixtures/themed": "workspace:*", "@fixtures/thirdparty": "workspace:*", From 17197d7563675a94ed7d74d87fb7eaed1495d12a Mon Sep 17 00:00:00 2001 From: Robbie Date: Thu, 23 Oct 2025 10:01:25 -0600 Subject: [PATCH 10/52] format, lint --- .prettierignore | 1 + .../src/app/features/page.tsx | 4 - .../src/app/layout.tsx | 8 +- .../src/app/next-font/page.tsx | 37 ++++-- .../next-15-app-pages-router/src/app/page.tsx | 3 - .../src/app/recipes/page.tsx | 2 - .../src/app/sprinkles/page.tsx | 2 - .../src/pages/pages-router/features/index.tsx | 2 - .../src/pages/pages-router/index.tsx | 2 - .../src/pages/pages-router/recipes/index.tsx | 2 - .../pages/pages-router/sprinkles/index.tsx | 2 - .../src/styles/fonts.ts | 39 ++++-- .../src/styles/nextFont.css.ts | 2 - .../next-15-app-pages-router/tsconfig.json | 14 +-- .../next-16-app-pages-router/next-env.d.ts | 2 +- .../next-16-app-pages-router/next.config.ts | 2 +- .../src/app/features/page.tsx | 2 - .../src/app/layout.tsx | 8 +- .../src/app/next-font/page.tsx | 37 ++++-- .../next-16-app-pages-router/src/app/page.tsx | 2 - .../src/app/recipes/page.tsx | 2 - .../src/app/sprinkles/page.tsx | 2 - .../src/pages/pages-router/features/index.tsx | 2 - .../src/pages/pages-router/index.tsx | 3 - .../src/pages/pages-router/recipes/index.tsx | 2 - .../pages/pages-router/sprinkles/index.tsx | 2 - .../next-16-app-pages-router/tsconfig.json | 14 +-- packages/next-plugin/src/index.ts | 3 +- packages/turbopack-plugin/src/index.ts | 15 ++- .../src/next-font/devValidation.ts | 16 +-- .../turbopack-plugin/src/next-font/plugin.ts | 22 +++- .../src/next-font/transform.ts | 112 +++++++++++++----- test-helpers/src/startFixture/next.ts | 2 +- 33 files changed, 223 insertions(+), 147 deletions(-) diff --git a/.prettierignore b/.prettierignore index 869b8973d..27ad4b20b 100644 --- a/.prettierignore +++ b/.prettierignore @@ -12,3 +12,4 @@ pnpm-lock.yaml *-snapshots test-results examples/remix/build +.pnpm-store \ No newline at end of file diff --git a/fixtures/next-15-app-pages-router/src/app/features/page.tsx b/fixtures/next-15-app-pages-router/src/app/features/page.tsx index 098f49cc3..ffffe61a8 100644 --- a/fixtures/next-15-app-pages-router/src/app/features/page.tsx +++ b/fixtures/next-15-app-pages-router/src/app/features/page.tsx @@ -1,14 +1,10 @@ import html from '@fixtures/features/src/html'; - export default function Features() { return ( <>

- ); } - - diff --git a/fixtures/next-15-app-pages-router/src/app/layout.tsx b/fixtures/next-15-app-pages-router/src/app/layout.tsx index 5a1fd5c7b..225b6038d 100644 --- a/fixtures/next-15-app-pages-router/src/app/layout.tsx +++ b/fixtures/next-15-app-pages-router/src/app/layout.tsx @@ -1,9 +1,11 @@ -export default function RootLayout({ children }: { children: React.ReactNode }) { +export default function RootLayout({ + children, +}: { + children: React.ReactNode; +}) { return ( {children} ); } - - diff --git a/fixtures/next-15-app-pages-router/src/app/next-font/page.tsx b/fixtures/next-15-app-pages-router/src/app/next-font/page.tsx index bc2b5e8e0..f2bb19f88 100644 --- a/fixtures/next-15-app-pages-router/src/app/next-font/page.tsx +++ b/fixtures/next-15-app-pages-router/src/app/next-font/page.tsx @@ -2,16 +2,20 @@ import * as directFonts from '../../styles/fonts'; import { pickedValues } from '../../styles/nextFont.css'; export default function NextFontChecks() { - const pairs: Array<[ - string, - string | number | undefined, - string | number | undefined, - ]> = []; + const pairs: Array< + [string, string | number | undefined, string | number | undefined] + > = []; - for (const [name, vePicked] of Object.entries(pickedValues) as Array<[ - string, - { fontFamily: string | undefined; fontWeight: number | undefined; fontStyle: string | undefined }, - ]>) { + for (const [name, vePicked] of Object.entries(pickedValues) as Array< + [ + string, + { + fontFamily: string | undefined; + fontWeight: number | undefined; + fontStyle: string | undefined; + }, + ] + >) { const direct: any = (directFonts as any)[name]; const style = (direct && (direct as any).style) || {}; pairs.push([`${name}-family`, vePicked.fontFamily, style.fontFamily]); @@ -21,7 +25,11 @@ export default function NextFontChecks() { for (const [name, fromVe, direct] of pairs) { if (fromVe !== direct) { - throw new Error(`[next-font] mismatch: ${name}: ${String(fromVe)} !== ${String(direct)}`); + throw new Error( + `[next-font] mismatch: ${name}: ${String(fromVe)} !== ${String( + direct, + )}`, + ); } } @@ -30,7 +38,12 @@ export default function NextFontChecks() {

next 15 next/font comparisons

    {pairs.map(([name, fromVe, direct]) => ( -
  • +
  • {name}: {String(fromVe)}
  • ))} @@ -38,5 +51,3 @@ export default function NextFontChecks() {
); } - - diff --git a/fixtures/next-15-app-pages-router/src/app/page.tsx b/fixtures/next-15-app-pages-router/src/app/page.tsx index 4a2448ed3..171850fc9 100644 --- a/fixtures/next-15-app-pages-router/src/app/page.tsx +++ b/fixtures/next-15-app-pages-router/src/app/page.tsx @@ -1,6 +1,5 @@ import Link from 'next/link'; - export default function Home() { return ( <> @@ -12,5 +11,3 @@ export default function Home() { ); } - - diff --git a/fixtures/next-15-app-pages-router/src/app/recipes/page.tsx b/fixtures/next-15-app-pages-router/src/app/recipes/page.tsx index 5a335b86d..fcde26b0d 100644 --- a/fixtures/next-15-app-pages-router/src/app/recipes/page.tsx +++ b/fixtures/next-15-app-pages-router/src/app/recipes/page.tsx @@ -8,5 +8,3 @@ export default function Recipes() { ); } - - diff --git a/fixtures/next-15-app-pages-router/src/app/sprinkles/page.tsx b/fixtures/next-15-app-pages-router/src/app/sprinkles/page.tsx index ff1006464..f70bcf5d4 100644 --- a/fixtures/next-15-app-pages-router/src/app/sprinkles/page.tsx +++ b/fixtures/next-15-app-pages-router/src/app/sprinkles/page.tsx @@ -8,5 +8,3 @@ export default function Sprinkles() { ); } - - diff --git a/fixtures/next-15-app-pages-router/src/pages/pages-router/features/index.tsx b/fixtures/next-15-app-pages-router/src/pages/pages-router/features/index.tsx index 306cdd676..ffffe61a8 100644 --- a/fixtures/next-15-app-pages-router/src/pages/pages-router/features/index.tsx +++ b/fixtures/next-15-app-pages-router/src/pages/pages-router/features/index.tsx @@ -8,5 +8,3 @@ export default function Features() { ); } - - diff --git a/fixtures/next-15-app-pages-router/src/pages/pages-router/index.tsx b/fixtures/next-15-app-pages-router/src/pages/pages-router/index.tsx index d1982f2f9..3a09b6975 100644 --- a/fixtures/next-15-app-pages-router/src/pages/pages-router/index.tsx +++ b/fixtures/next-15-app-pages-router/src/pages/pages-router/index.tsx @@ -11,5 +11,3 @@ export default function Home() { ); } - - diff --git a/fixtures/next-15-app-pages-router/src/pages/pages-router/recipes/index.tsx b/fixtures/next-15-app-pages-router/src/pages/pages-router/recipes/index.tsx index 5a335b86d..fcde26b0d 100644 --- a/fixtures/next-15-app-pages-router/src/pages/pages-router/recipes/index.tsx +++ b/fixtures/next-15-app-pages-router/src/pages/pages-router/recipes/index.tsx @@ -8,5 +8,3 @@ export default function Recipes() { ); } - - diff --git a/fixtures/next-15-app-pages-router/src/pages/pages-router/sprinkles/index.tsx b/fixtures/next-15-app-pages-router/src/pages/pages-router/sprinkles/index.tsx index ff1006464..f70bcf5d4 100644 --- a/fixtures/next-15-app-pages-router/src/pages/pages-router/sprinkles/index.tsx +++ b/fixtures/next-15-app-pages-router/src/pages/pages-router/sprinkles/index.tsx @@ -8,5 +8,3 @@ export default function Sprinkles() { ); } - - diff --git a/fixtures/next-15-app-pages-router/src/styles/fonts.ts b/fixtures/next-15-app-pages-router/src/styles/fonts.ts index ecfbfa88b..4ec1642bc 100644 --- a/fixtures/next-15-app-pages-router/src/styles/fonts.ts +++ b/fixtures/next-15-app-pages-router/src/styles/fonts.ts @@ -1,5 +1,9 @@ import localF from 'next/font/local'; -import { Roboto as R, Roboto_Flex as RF, Noto_Serif as NotoSerif } from 'next/font/google'; +import { + Roboto as R, + Roboto_Flex as RF, + Noto_Serif as NotoSerif, +} from 'next/font/google'; // intentionally odd local variable name to exercise transform edge-cases export const __Local_Font = localF({ @@ -43,18 +47,39 @@ export const _localDupFallback = localF({ fallback: ['system-ui', 'system-ui', 'ui-serif', 'weird_font'], }); -export const _robotoDefaultStyle = R({ subsets: ['latin'], fallback: ['serif'] }); +export const _robotoDefaultStyle = R({ + subsets: ['latin'], + fallback: ['serif'], +}); -export const _robotoItalic = R({ subsets: ['latin'], fallback: ['sans-serif'], style: 'italic', weight: '400' }); +export const _robotoItalic = R({ + subsets: ['latin'], + fallback: ['sans-serif'], + style: 'italic', + weight: '400', +}); -export const _robotoMultiStyle = R({ subsets: ['latin'], fallback: ['monospace'], style: ['italic', 'normal'] }); +export const _robotoMultiStyle = R({ + subsets: ['latin'], + fallback: ['monospace'], + style: ['italic', 'normal'], +}); export const _robotoWeightStr = R({ weight: '400' }); export const _robotoWeightVar = R({ weight: 'variable' }); -export const _notoSerif = NotoSerif({ subsets: ['latin'], fallback: ['system-ui'] }); +export const _notoSerif = NotoSerif({ + subsets: ['latin'], + fallback: ['system-ui'], +}); -export const _robotoFallbackSpaces = R({ subsets: ['latin'], fallback: ['Times New Roman', 'Gill Sans', 'Avenir Next'] }); +export const _robotoFallbackSpaces = R({ + subsets: ['latin'], + fallback: ['Times New Roman', 'Gill Sans', 'Avenir Next'], +}); -export const _robotoDupFallback = R({ subsets: ['latin'], fallback: ['system-ui', 'system-ui', 'ui-serif', 'weird_font'] }); +export const _robotoDupFallback = R({ + subsets: ['latin'], + fallback: ['system-ui', 'system-ui', 'ui-serif', 'weird_font'], +}); diff --git a/fixtures/next-15-app-pages-router/src/styles/nextFont.css.ts b/fixtures/next-15-app-pages-router/src/styles/nextFont.css.ts index 7483af9ab..6b3175e6e 100644 --- a/fixtures/next-15-app-pages-router/src/styles/nextFont.css.ts +++ b/fixtures/next-15-app-pages-router/src/styles/nextFont.css.ts @@ -20,5 +20,3 @@ export const pickedValues = Object.fromEntries( fontStyle: string; } >; - - diff --git a/fixtures/next-15-app-pages-router/tsconfig.json b/fixtures/next-15-app-pages-router/tsconfig.json index e97b3da31..601b3702c 100644 --- a/fixtures/next-15-app-pages-router/tsconfig.json +++ b/fixtures/next-15-app-pages-router/tsconfig.json @@ -1,11 +1,7 @@ { "compilerOptions": { "target": "ES2017", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], + "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, "strict": true, @@ -23,9 +19,7 @@ } ], "paths": { - "@/*": [ - "./*" - ] + "@/*": ["./*"] } }, "include": [ @@ -37,7 +31,5 @@ "next-env.d.ts", "dist/types/**/*.ts" ], - "exclude": [ - "node_modules" - ] + "exclude": ["node_modules"] } diff --git a/fixtures/next-16-app-pages-router/next-env.d.ts b/fixtures/next-16-app-pages-router/next-env.d.ts index 204c793b8..8c9df6326 100644 --- a/fixtures/next-16-app-pages-router/next-env.d.ts +++ b/fixtures/next-16-app-pages-router/next-env.d.ts @@ -1,7 +1,7 @@ /// /// /// -import "./dist/types/routes.d.ts"; +import './dist/types/routes.d.ts'; // NOTE: This file should not be edited // see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/fixtures/next-16-app-pages-router/next.config.ts b/fixtures/next-16-app-pages-router/next.config.ts index b87982e71..d3460abf1 100644 --- a/fixtures/next-16-app-pages-router/next.config.ts +++ b/fixtures/next-16-app-pages-router/next.config.ts @@ -6,7 +6,7 @@ export const config = { distDir: process.env.NODE_ENV === 'production' ? 'dist' : '.next', experimental: { externalDir: true }, onDemandEntries: { maxInactiveAge: 1000 * 60 * 60 }, - transpilePackages: ['@fixtures/sprinkles/src/html'] + transpilePackages: ['@fixtures/sprinkles/src/html'], }; export default withVanillaExtract(config); diff --git a/fixtures/next-16-app-pages-router/src/app/features/page.tsx b/fixtures/next-16-app-pages-router/src/app/features/page.tsx index 306cdd676..ffffe61a8 100644 --- a/fixtures/next-16-app-pages-router/src/app/features/page.tsx +++ b/fixtures/next-16-app-pages-router/src/app/features/page.tsx @@ -8,5 +8,3 @@ export default function Features() { ); } - - diff --git a/fixtures/next-16-app-pages-router/src/app/layout.tsx b/fixtures/next-16-app-pages-router/src/app/layout.tsx index 5a1fd5c7b..225b6038d 100644 --- a/fixtures/next-16-app-pages-router/src/app/layout.tsx +++ b/fixtures/next-16-app-pages-router/src/app/layout.tsx @@ -1,9 +1,11 @@ -export default function RootLayout({ children }: { children: React.ReactNode }) { +export default function RootLayout({ + children, +}: { + children: React.ReactNode; +}) { return ( {children} ); } - - diff --git a/fixtures/next-16-app-pages-router/src/app/next-font/page.tsx b/fixtures/next-16-app-pages-router/src/app/next-font/page.tsx index 54f5271ef..5889e1fbc 100644 --- a/fixtures/next-16-app-pages-router/src/app/next-font/page.tsx +++ b/fixtures/next-16-app-pages-router/src/app/next-font/page.tsx @@ -2,16 +2,20 @@ import * as directFonts from '../../styles/fonts'; import { pickedValues } from '../../styles/nextFont.css'; export default function NextFontChecks() { - const pairs: Array<[ - string, - string | number | undefined, - string | number | undefined, - ]> = []; + const pairs: Array< + [string, string | number | undefined, string | number | undefined] + > = []; - for (const [name, vePicked] of Object.entries(pickedValues) as Array<[ - string, - { fontFamily: string | undefined; fontWeight: number | undefined; fontStyle: string | undefined }, - ]>) { + for (const [name, vePicked] of Object.entries(pickedValues) as Array< + [ + string, + { + fontFamily: string | undefined; + fontWeight: number | undefined; + fontStyle: string | undefined; + }, + ] + >) { const direct: any = (directFonts as any)[name]; const style = (direct && (direct as any).style) || {}; pairs.push([`${name}-family`, vePicked.fontFamily, style.fontFamily]); @@ -21,7 +25,11 @@ export default function NextFontChecks() { for (const [name, fromVe, direct] of pairs) { if (fromVe !== direct) { - throw new Error(`[next-font] mismatch: ${name}: ${String(fromVe)} !== ${String(direct)}`); + throw new Error( + `[next-font] mismatch: ${name}: ${String(fromVe)} !== ${String( + direct, + )}`, + ); } } @@ -30,7 +38,12 @@ export default function NextFontChecks() {

next 16 next/font comparisons

    {pairs.map(([name, fromVe, direct]) => ( -
  • +
  • {name}: {String(fromVe)}
  • ))} @@ -38,5 +51,3 @@ export default function NextFontChecks() {
); } - - diff --git a/fixtures/next-16-app-pages-router/src/app/page.tsx b/fixtures/next-16-app-pages-router/src/app/page.tsx index 78831522b..171850fc9 100644 --- a/fixtures/next-16-app-pages-router/src/app/page.tsx +++ b/fixtures/next-16-app-pages-router/src/app/page.tsx @@ -11,5 +11,3 @@ export default function Home() { ); } - - diff --git a/fixtures/next-16-app-pages-router/src/app/recipes/page.tsx b/fixtures/next-16-app-pages-router/src/app/recipes/page.tsx index 5a335b86d..fcde26b0d 100644 --- a/fixtures/next-16-app-pages-router/src/app/recipes/page.tsx +++ b/fixtures/next-16-app-pages-router/src/app/recipes/page.tsx @@ -8,5 +8,3 @@ export default function Recipes() { ); } - - diff --git a/fixtures/next-16-app-pages-router/src/app/sprinkles/page.tsx b/fixtures/next-16-app-pages-router/src/app/sprinkles/page.tsx index ff1006464..f70bcf5d4 100644 --- a/fixtures/next-16-app-pages-router/src/app/sprinkles/page.tsx +++ b/fixtures/next-16-app-pages-router/src/app/sprinkles/page.tsx @@ -8,5 +8,3 @@ export default function Sprinkles() { ); } - - diff --git a/fixtures/next-16-app-pages-router/src/pages/pages-router/features/index.tsx b/fixtures/next-16-app-pages-router/src/pages/pages-router/features/index.tsx index 306cdd676..ffffe61a8 100644 --- a/fixtures/next-16-app-pages-router/src/pages/pages-router/features/index.tsx +++ b/fixtures/next-16-app-pages-router/src/pages/pages-router/features/index.tsx @@ -8,5 +8,3 @@ export default function Features() { ); } - - diff --git a/fixtures/next-16-app-pages-router/src/pages/pages-router/index.tsx b/fixtures/next-16-app-pages-router/src/pages/pages-router/index.tsx index b170a06f1..3a09b6975 100644 --- a/fixtures/next-16-app-pages-router/src/pages/pages-router/index.tsx +++ b/fixtures/next-16-app-pages-router/src/pages/pages-router/index.tsx @@ -1,6 +1,5 @@ import Link from 'next/link'; - export default function Home() { return ( <> @@ -12,5 +11,3 @@ export default function Home() { ); } - - diff --git a/fixtures/next-16-app-pages-router/src/pages/pages-router/recipes/index.tsx b/fixtures/next-16-app-pages-router/src/pages/pages-router/recipes/index.tsx index 5a335b86d..fcde26b0d 100644 --- a/fixtures/next-16-app-pages-router/src/pages/pages-router/recipes/index.tsx +++ b/fixtures/next-16-app-pages-router/src/pages/pages-router/recipes/index.tsx @@ -8,5 +8,3 @@ export default function Recipes() { ); } - - diff --git a/fixtures/next-16-app-pages-router/src/pages/pages-router/sprinkles/index.tsx b/fixtures/next-16-app-pages-router/src/pages/pages-router/sprinkles/index.tsx index ff1006464..f70bcf5d4 100644 --- a/fixtures/next-16-app-pages-router/src/pages/pages-router/sprinkles/index.tsx +++ b/fixtures/next-16-app-pages-router/src/pages/pages-router/sprinkles/index.tsx @@ -8,5 +8,3 @@ export default function Sprinkles() { ); } - - diff --git a/fixtures/next-16-app-pages-router/tsconfig.json b/fixtures/next-16-app-pages-router/tsconfig.json index 0400cf02b..d90e7e088 100644 --- a/fixtures/next-16-app-pages-router/tsconfig.json +++ b/fixtures/next-16-app-pages-router/tsconfig.json @@ -1,11 +1,7 @@ { "compilerOptions": { "target": "ES2017", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], + "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, "strict": true, @@ -23,9 +19,7 @@ } ], "paths": { - "@/*": [ - "./*" - ] + "@/*": ["./*"] } }, "include": [ @@ -38,7 +32,5 @@ "dist/types/**/*.ts", "dist/dev/types/**/*.ts" ], - "exclude": [ - "node_modules" - ] + "exclude": ["node_modules"] } diff --git a/packages/next-plugin/src/index.ts b/packages/next-plugin/src/index.ts index 3179e3474..040227412 100644 --- a/packages/next-plugin/src/index.ts +++ b/packages/next-plugin/src/index.ts @@ -167,7 +167,8 @@ export const createVanillaExtractPlugin = ( const coerced = nextVersion ? semver.coerce(nextVersion) : null; const supportsTurbopackRules = !!coerced && semver.gte(coerced, '15.3.0'); const enableTurbopack = - turbopackMode === 'on' || (turbopackMode === 'auto' && supportsTurbopackRules); + turbopackMode === 'on' || + (turbopackMode === 'auto' && supportsTurbopackRules); let turbopack: typeof nextConfig.turbopack; if (enableTurbopack) { diff --git a/packages/turbopack-plugin/src/index.ts b/packages/turbopack-plugin/src/index.ts index 369d2205f..e922a975d 100644 --- a/packages/turbopack-plugin/src/index.ts +++ b/packages/turbopack-plugin/src/index.ts @@ -5,7 +5,10 @@ import { import { type IdentifierOption } from '@vanilla-extract/integration'; import * as path from 'node:path'; import { buildValidationPrelude } from './next-font/devValidation'; -import { createNextFontVePlugins, type NextFontPluginState } from './next-font/plugin'; +import { + createNextFontVePlugins, + type NextFontPluginState, +} from './next-font/plugin'; type LoaderContext = { getOptions: (schema?: unknown) => OptionsType; @@ -118,9 +121,15 @@ export default async function turbopackVanillaExtractLoader( // prepend next/font dev validation if this file used any providers let veSourceWithValidation = veSource; if (nextFontState && watchFiles && watchFiles.size > 0) { - const usedProviders = [...watchFiles].filter((f) => nextFontState!.fontProviders.has(f)); + const usedProviders = [...watchFiles].filter((f) => + nextFontState!.fontProviders.has(f), + ); if (usedProviders.length > 0) { - const prelude = buildValidationPrelude(this.resourcePath, usedProviders, nextFontState.fontProviderDetails); + const prelude = buildValidationPrelude( + this.resourcePath, + usedProviders, + nextFontState.fontProviderDetails, + ); if (prelude) { veSourceWithValidation = `${prelude}\n${veSource}`; } diff --git a/packages/turbopack-plugin/src/next-font/devValidation.ts b/packages/turbopack-plugin/src/next-font/devValidation.ts index a3f252fa9..62d81326d 100644 --- a/packages/turbopack-plugin/src/next-font/devValidation.ts +++ b/packages/turbopack-plugin/src/next-font/devValidation.ts @@ -5,14 +5,18 @@ export function buildValidationPrelude( usedProviders: string[], detailsMap: Map, ): string { - if (process.env.NODE_ENV === 'production' || usedProviders.length === 0) return ''; + if (process.env.NODE_ENV === 'production' || usedProviders.length === 0) + return ''; const imports: string[] = []; const validationLogic: string[] = []; usedProviders.forEach((providerPath, index) => { const importAlias = `__ve_font_prov_${index}`; - let relativePath = path.posix.relative(path.dirname(absolutePath), providerPath); + let relativePath = path.posix.relative( + path.dirname(absolutePath), + providerPath, + ); relativePath = relativePath.replace(/\.(ts|tsx)$/, ''); if (!relativePath.startsWith('.')) relativePath = `./${relativePath}`; imports.push(`import * as ${importAlias} from "${relativePath}";`); @@ -26,7 +30,9 @@ try { const stubbedFamily = ${JSON.stringify(fontInfo.stubbedFamily)}; if (realFont && realFont.style && realFont.style.fontFamily) { if (realFont.style.fontFamily !== stubbedFamily) { - console.error('[VE Font Check] mismatch:', ${JSON.stringify(path.basename(providerPath))}, ${JSON.stringify(fontInfo.exportName)}); + console.error('[VE Font Check] mismatch:', ${JSON.stringify( + path.basename(providerPath), + )}, ${JSON.stringify(fontInfo.exportName)}); } } } catch (e) { /* ignore */ }`; @@ -43,7 +49,3 @@ ${validationLogic.join('\n')} } `; } - - - - diff --git a/packages/turbopack-plugin/src/next-font/plugin.ts b/packages/turbopack-plugin/src/next-font/plugin.ts index 0025aec94..983f1c4e3 100644 --- a/packages/turbopack-plugin/src/next-font/plugin.ts +++ b/packages/turbopack-plugin/src/next-font/plugin.ts @@ -2,7 +2,10 @@ import { transformNextFont } from './transform'; export type NextFontPluginState = { fontProviders: Set; - fontProviderDetails: Map; + fontProviderDetails: Map< + string, + { exportName: string; stubbedFamily: string }[] + >; }; type Plugin = { @@ -11,13 +14,22 @@ type Plugin = { transform?: ( code: string, id: string, - ) => Promise<{ code: string; map: any } | null> | { code: string; map: any } | null; + ) => + | Promise<{ code: string; map: any } | null> + | { code: string; map: any } + | null; }; -export function createNextFontVePlugins(): { plugins: Plugin[]; state: NextFontPluginState } { +export function createNextFontVePlugins(): { + plugins: Plugin[]; + state: NextFontPluginState; +} { const state: NextFontPluginState = { fontProviders: new Set(), - fontProviderDetails: new Map(), + fontProviderDetails: new Map< + string, + { exportName: string; stubbedFamily: string }[] + >(), }; const nextFontStubPlugin: Plugin = { @@ -41,5 +53,3 @@ export function createNextFontVePlugins(): { plugins: Plugin[]; state: NextFontP return { plugins: [nextFontStubPlugin], state }; } - - diff --git a/packages/turbopack-plugin/src/next-font/transform.ts b/packages/turbopack-plugin/src/next-font/transform.ts index d5655a300..24ec48624 100644 --- a/packages/turbopack-plugin/src/next-font/transform.ts +++ b/packages/turbopack-plugin/src/next-font/transform.ts @@ -8,23 +8,23 @@ export type NextFontTransformResult = { }; const HELPERS_PREAMBLE = [ - "const __VE_FONT_MSG = \"next/font class names are generated by Turbopack and aren't available during vanilla-extract evaluation. Use style.* in VE files, and apply the real font's className/variable in runtime code.\";", + 'const __VE_FONT_MSG = "next/font class names are generated by Turbopack and aren\'t available during vanilla-extract evaluation. Use style.* in VE files, and apply the real font\'s className/variable in runtime code.";', "function __ve_normalizeName(s){ return String(s).replace(/['\\\"]/g,''); }", - "function __ve_toCssListRaw(items){ return items.map((s)=>__ve_normalizeName(s)); } ", + 'function __ve_toCssListRaw(items){ return items.map((s)=>__ve_normalizeName(s)); } ', "function __ve_buildFontFamily(family, fallback, includeVariant = true){ const base=__ve_normalizeName(family); const parts = [`'${base}'`]; if (includeVariant) parts.push(`'${base} Fallback'`); if (Array.isArray(fallback)) parts.push(...__ve_toCssListRaw(fallback)); return parts.join(', '); }", "function __ve_pickSingle(values){ const arr = Array.isArray(values) ? Array.from(new Set(values.filter(Boolean))) : (values!=null?[values]:[]); if (arr.length!==1) return undefined; const v = arr[0]; if (typeof v !== 'string') return v; if (v.includes(' ')) return undefined; return v; }", 'function __veLocal(family, options = {}) {', - " const style = { fontFamily: __ve_buildFontFamily(String(family), options.fallback, true) };", + ' const style = { fontFamily: __ve_buildFontFamily(String(family), options.fallback, true) };', // next/font/local does not expose top-level weight/style in style props - " return { get className(){ throw new Error(__VE_FONT_MSG); }, get variable(){ throw new Error(__VE_FONT_MSG); }, style };", + ' return { get className(){ throw new Error(__VE_FONT_MSG); }, get variable(){ throw new Error(__VE_FONT_MSG); }, style };', '}', 'function __veGoogle(fontName, options = {}) {', ' const family = String(fontName);', - " const style = { fontFamily: __ve_buildFontFamily(family, options.fallback, options.fallback == null) };", + ' const style = { fontFamily: __ve_buildFontFamily(family, options.fallback, options.fallback == null) };', " if (typeof options.weight === 'string' && options.weight && !options.weight.includes(' ')) { const n=Number(options.weight); if (!Number.isNaN(n)) style.fontWeight = n; } else if (typeof options.weight === 'number') { style.fontWeight = options.weight; }", - " const pickedStyle = __ve_pickSingle(options.style);", + ' const pickedStyle = __ve_pickSingle(options.style);', " if (typeof pickedStyle === 'string' && pickedStyle && !pickedStyle.includes(' ')) { style.fontStyle = pickedStyle; } else if (options.style === undefined) { style.fontStyle = 'normal'; }", - " return { get className(){ throw new Error(__VE_FONT_MSG); }, get variable(){ throw new Error(__VE_FONT_MSG); }, style };", + ' return { get className(){ throw new Error(__VE_FONT_MSG); }, get variable(){ throw new Error(__VE_FONT_MSG); }, style };', '}', ].join('\n'); @@ -36,7 +36,6 @@ function computeStubbedFamily(exportName: string, fallback?: string[]): string { return parts.join(', '); } - export async function transformNextFont( code: string, id: string, @@ -46,17 +45,41 @@ export async function transformNextFont( const isJsx = /\.(?:jsx)$/.test(id); const parseOptions: any = isTs - ? { syntax: 'typescript', tsx: isTsx, dynamicImport: true, decorators: false } + ? { + syntax: 'typescript', + tsx: isTsx, + dynamicImport: true, + decorators: false, + } : { syntax: 'ecmascript', jsx: isJsx, dynamicImport: true }; - const parseModule = async (src: string) => swc.parse(src, { ...parseOptions, target: 'esnext', comments: false, script: false, isModule: true }); + const parseModule = async (src: string) => + swc.parse(src, { + ...parseOptions, + target: 'esnext', + comments: false, + script: false, + isModule: true, + }); const printModule = async (mod: any) => { - const { code: out } = await swc.print(mod, { minify: false, sourceMaps: false }); + const { code: out } = await swc.print(mod, { + minify: false, + sourceMaps: false, + }); return out as string; }; const printExpr = async (expr: any, programSpan: any): Promise => { - const mod = { type: 'Module', span: programSpan, body: [{ type: 'ExpressionStatement', expression: expr, span: programSpan }] } as any; - const { code: out } = await swc.print(mod, { minify: false, sourceMaps: false }); + const mod = { + type: 'Module', + span: programSpan, + body: [ + { type: 'ExpressionStatement', expression: expr, span: programSpan }, + ], + } as any; + const { code: out } = await swc.print(mod, { + minify: false, + sourceMaps: false, + }); return String(out).trim().replace(/;$/, ''); }; const parseExpr = async (exprCode: string): Promise => { @@ -95,11 +118,16 @@ export async function transformNextFont( if (spec.type === 'ImportSpecifier') { const local = spec.local?.value; let importedName: string | undefined; - if (spec.imported?.type === 'Identifier') importedName = spec.imported.value; - if (spec.imported?.type === 'StringLiteral') importedName = spec.imported.value; + if (spec.imported?.type === 'Identifier') + importedName = spec.imported.value; + if (spec.imported?.type === 'StringLiteral') + importedName = spec.imported.value; if (!importedName) importedName = local; if (local && importedName) { - googleSpecs.push({ local, pretty: String(importedName).replace(/_/g, ' ') }); + googleSpecs.push({ + local, + pretty: String(importedName).replace(/_/g, ' '), + }); } } } @@ -121,7 +149,12 @@ export async function transformNextFont( // Proxies for google fonts if (googleSpecs.length > 0) { const proxySrc = googleSpecs - .map(({ local, pretty }) => `const ${local} = (...args) => __veGoogle(${JSON.stringify(pretty)}, ...args);`) + .map( + ({ local, pretty }) => + `const ${local} = (...args) => __veGoogle(${JSON.stringify( + pretty, + )}, ...args);`, + ) .join('\n'); const items = await parseItems(proxySrc); newBody.unshift(...items); @@ -141,7 +174,8 @@ export async function transformNextFont( } // Utilities to find fallback arrays - const isIdentifierNamed = (node: any, name: string) => node && node.type === 'Identifier' && node.value === name; + const isIdentifierNamed = (node: any, name: string) => + node && node.type === 'Identifier' && node.value === name; const toArrayOfStringLiterals = (node: any): string[] | undefined => { if (!node || node.type !== 'ArrayExpression') return undefined; const out: string[] = []; @@ -162,8 +196,10 @@ export async function transformNextFont( if (!prop || prop.type !== 'Property') continue; const key = prop.key; let isFallback = false; - if (key.type === 'Identifier' && key.value === 'fallback') isFallback = true; - if (key.type === 'StringLiteral' && key.value === 'fallback') isFallback = true; + if (key.type === 'Identifier' && key.value === 'fallback') + isFallback = true; + if (key.type === 'StringLiteral' && key.value === 'fallback') + isFallback = true; if (isFallback) { const arr = toArrayOfStringLiterals(prop.value); if (arr) return arr; @@ -189,12 +225,18 @@ export async function transformNextFont( const full = await printExpr(init, program.span); const open = full.indexOf('('); const close = full.lastIndexOf(')'); - const argsCode = open >= 0 && close > open ? full.slice(open + 1, close).trim() : ''; - const callCode = `__veLocal(${JSON.stringify(varName)}${argsCode ? ', ' + argsCode : ''})`; + const argsCode = + open >= 0 && close > open ? full.slice(open + 1, close).trim() : ''; + const callCode = `__veLocal(${JSON.stringify(varName)}${ + argsCode ? ', ' + argsCode : '' + })`; const parsed = await parseExpr(callCode); if (parsed) d.init = parsed; const fb = findFallbackInArgs(args); - details.push({ exportName: varName, stubbedFamily: computeStubbedFamily(varName, fb) }); + details.push({ + exportName: varName, + stubbedFamily: computeStubbedFamily(varName, fb), + }); changed = true; usedNextFont = true; continue; @@ -206,12 +248,18 @@ export async function transformNextFont( const full = await printExpr(init, program.span); const open = full.indexOf('('); const close = full.lastIndexOf(')'); - const argsCode = open >= 0 && close > open ? full.slice(open + 1, close).trim() : ''; - const callCode = `__veGoogle(${JSON.stringify(spec.pretty)}${argsCode ? ', ' + argsCode : ''})`; + const argsCode = + open >= 0 && close > open ? full.slice(open + 1, close).trim() : ''; + const callCode = `__veGoogle(${JSON.stringify(spec.pretty)}${ + argsCode ? ', ' + argsCode : '' + })`; const parsed = await parseExpr(callCode); if (parsed) d.init = parsed; const fb = findFallbackInArgs(args); - details.push({ exportName: varName, stubbedFamily: computeStubbedFamily(spec.pretty, fb) }); + details.push({ + exportName: varName, + stubbedFamily: computeStubbedFamily(spec.pretty, fb), + }); changed = true; usedNextFont = true; continue; @@ -223,11 +271,19 @@ export async function transformNextFont( for (const item of newBody) { if (item.type === 'VariableDeclaration') { await rewriteVarDecl(item); - } else if (item.type === 'ExportDeclaration' && item.declaration && item.declaration.type === 'VariableDeclaration') { + } else if ( + item.type === 'ExportDeclaration' && + item.declaration && + item.declaration.type === 'VariableDeclaration' + ) { await rewriteVarDecl(item.declaration); } } - const outCode = await printModule({ type: 'Module', span: program.span, body: newBody }); + const outCode = await printModule({ + type: 'Module', + span: program.span, + body: newBody, + }); return { code: outCode, usedNextFont, details, changed }; } diff --git a/test-helpers/src/startFixture/next.ts b/test-helpers/src/startFixture/next.ts index b4bb25326..2db02c6ba 100644 --- a/test-helpers/src/startFixture/next.ts +++ b/test-helpers/src/startFixture/next.ts @@ -1,7 +1,7 @@ import type { NextServer, NextServerOptions, -} from '@fixtures/next-pages-router/node_modules/next/dist/server/next'; +} from '@fixtures/next-12-pages-router/node_modules/next/dist/server/next'; import { existsSync } from 'fs'; import { Server as _Server, createServer } from 'http'; import path from 'path'; From 99a6087bbab9fb1b593dacaf0c432f77c7aa7d3b Mon Sep 17 00:00:00 2001 From: Robbie Date: Thu, 30 Oct 2025 14:19:53 -0600 Subject: [PATCH 11/52] resolve all modules via turbopack --- packages/turbopack-plugin/src/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/turbopack-plugin/src/index.ts b/packages/turbopack-plugin/src/index.ts index e922a975d..525951282 100644 --- a/packages/turbopack-plugin/src/index.ts +++ b/packages/turbopack-plugin/src/index.ts @@ -69,6 +69,7 @@ const getCompiler = async ( { // avoid module resolution errors by letting turbopack resolve our modules for us name: 'vanilla-extract-turbo-resolve', + enforce: 'pre', async resolveId(source: string, importer: string | undefined) { if (!getResolve || !importer) return null; const resolver = getResolve({}); From 64ef34b3efe57108cfee5f8e4ce1dabe49f079a4 Mon Sep 17 00:00:00 2001 From: Robbie Date: Mon, 3 Nov 2025 09:24:33 -0700 Subject: [PATCH 12/52] HMR fixes --- packages/turbopack-plugin/src/index.ts | 94 +++++++++++++++----------- 1 file changed, 56 insertions(+), 38 deletions(-) diff --git a/packages/turbopack-plugin/src/index.ts b/packages/turbopack-plugin/src/index.ts index 525951282..46a6d5548 100644 --- a/packages/turbopack-plugin/src/index.ts +++ b/packages/turbopack-plugin/src/index.ts @@ -41,52 +41,69 @@ export type TurboLoaderOptions = { let singletonCompiler: VeCompiler | undefined; let nextFontState: NextFontPluginState | undefined; +let processedPaths = new Set(); const getCompiler = async ( root: string, identifiers: IdentifierOption, - getResolve?: LoaderContext['getResolve'], - nextEnv?: Record | null, + getResolve: LoaderContext['getResolve'] | undefined, + nextEnv: Record | null | undefined, + currentFilePath: string, ): Promise => { - if (singletonCompiler) return singletonCompiler; - - const defineEnv: Record = {}; - for (const [key, value] of Object.entries(nextEnv ?? {})) { - defineEnv[`process.env.${key}`] = JSON.stringify(value); + // If we've already processed this file with the current compiler, create a fresh compiler. + if (singletonCompiler && processedPaths.has(currentFilePath)) { + try { + await singletonCompiler.close(); + } catch {} + singletonCompiler = undefined; + processedPaths.clear(); + // helpful log for diagnosing compiler resets during HMR + console.log('[vanilla-extract] Resetting style compiler'); } - singletonCompiler = createCompiler({ - root, - identifiers, - viteConfig: { - define: defineEnv, - plugins: [ - ...(() => { - const created = createNextFontVePlugins(); - nextFontState = created.state; - return created.plugins; - })(), - { - // avoid module resolution errors by letting turbopack resolve our modules for us - name: 'vanilla-extract-turbo-resolve', - enforce: 'pre', - async resolveId(source: string, importer: string | undefined) { - if (!getResolve || !importer) return null; - const resolver = getResolve({}); - return new Promise((resolve) => { - resolver( - path.dirname(importer), - source, - (_err: any, result?: string) => { - resolve(result); - }, - ); - }); + if (!singletonCompiler) { + const defineEnv: Record = {}; + for (const [key, value] of Object.entries(nextEnv ?? {})) { + defineEnv[`process.env.${key}`] = JSON.stringify(value); + } + + console.log('[vanilla-extract] Creating style compiler'); + singletonCompiler = createCompiler({ + root, + identifiers, + viteConfig: { + define: defineEnv, + plugins: [ + ...(() => { + const created = createNextFontVePlugins(); + nextFontState = created.state; + return created.plugins; + })(), + { + // avoid module resolution errors by letting turbopack resolve our modules for us + name: 'vanilla-extract-turbo-resolve', + enforce: 'pre', + async resolveId(source: string, importer: string | undefined) { + if (!getResolve || !importer) return null; + const resolver = getResolve({}); + return new Promise((resolve) => { + resolver( + path.dirname(importer), + source, + (_err: any, result?: string) => { + resolve(result); + }, + ); + }); + }, }, - }, - ], - }, - }); + ], + }, + }); + } + + // record the file as processed for this compiler instance + processedPaths.add(currentFilePath); return singletonCompiler; }; @@ -111,6 +128,7 @@ export default async function turbopackVanillaExtractLoader( identifiers, this.getResolve, options.nextEnv, + this.resourcePath, ); const { source: veSource, watchFiles } = await compiler.processVanillaFile( this.resourcePath, From 8a519a32ad241b32a6054638d0381406604f3ce4 Mon Sep 17 00:00:00 2001 From: Robbie Date: Mon, 3 Nov 2025 17:45:53 -0700 Subject: [PATCH 13/52] font improvments, experimental next stubbing --- .changeset/fresh-wombats-stick.md | 2 +- .../src/app/next-font/page.tsx | 42 +-- .../next-16-app-pages-router/next-env.d.ts | 2 +- .../src/app/barrel-test/page.tsx | 14 + .../src/app/next-font/page.tsx | 38 +- .../src/styles/barrel-import.css.ts | 15 + .../src/styles/barrel-with-next.ts | 20 ++ .../src/styles/fonts.ts | 163 +++++---- packages/turbopack-plugin/src/index.ts | 20 +- .../src/next-font/devValidation.ts | 48 ++- .../turbopack-plugin/src/next-font/plugin.ts | 14 +- .../src/next-font/transform.ts | 330 ++++++++++++------ .../src/next-stubs/plugin.test.ts | 100 ++++++ .../turbopack-plugin/src/next-stubs/plugin.ts | 240 +++++++++++++ 14 files changed, 803 insertions(+), 245 deletions(-) create mode 100644 fixtures/next-16-app-pages-router/src/app/barrel-test/page.tsx create mode 100644 fixtures/next-16-app-pages-router/src/styles/barrel-import.css.ts create mode 100644 fixtures/next-16-app-pages-router/src/styles/barrel-with-next.ts create mode 100644 packages/turbopack-plugin/src/next-stubs/plugin.test.ts create mode 100644 packages/turbopack-plugin/src/next-stubs/plugin.ts diff --git a/.changeset/fresh-wombats-stick.md b/.changeset/fresh-wombats-stick.md index 134228826..c13c2de84 100644 --- a/.changeset/fresh-wombats-stick.md +++ b/.changeset/fresh-wombats-stick.md @@ -3,4 +3,4 @@ '@vanilla-extract/next-plugin': minor --- -turbopack support for next.js +turbopack support for next.js >= 15.3 diff --git a/fixtures/next-15-app-pages-router/src/app/next-font/page.tsx b/fixtures/next-15-app-pages-router/src/app/next-font/page.tsx index f2bb19f88..8982569c1 100644 --- a/fixtures/next-15-app-pages-router/src/app/next-font/page.tsx +++ b/fixtures/next-15-app-pages-router/src/app/next-font/page.tsx @@ -6,45 +6,27 @@ export default function NextFontChecks() { [string, string | number | undefined, string | number | undefined] > = []; - for (const [name, vePicked] of Object.entries(pickedValues) as Array< - [ - string, - { - fontFamily: string | undefined; - fontWeight: number | undefined; - fontStyle: string | undefined; - }, - ] - >) { - const direct: any = (directFonts as any)[name]; - const style = (direct && (direct as any).style) || {}; - pairs.push([`${name}-family`, vePicked.fontFamily, style.fontFamily]); - pairs.push([`${name}-weight`, vePicked.fontWeight, style.fontWeight]); - pairs.push([`${name}-style`, vePicked.fontStyle, style.fontStyle]); + for (const [name, vePicked] of Object.entries(pickedValues)) { + const direct = directFonts[name as keyof typeof directFonts]; + const style = direct?.style || {}; + pairs.push([`${name} family`, vePicked.fontFamily, style.fontFamily]); + pairs.push([`${name} weight`, vePicked.fontWeight, style.fontWeight]); + pairs.push([`${name} style`, vePicked.fontStyle, style.fontStyle]); } for (const [name, fromVe, direct] of pairs) { - if (fromVe !== direct) { - throw new Error( - `[next-font] mismatch: ${name}: ${String(fromVe)} !== ${String( - direct, - )}`, - ); + if (String(fromVe) !== String(direct)) { + throw new Error(`[next-font] mismatch for ${name}:\n${String(fromVe)} !==\n${String(direct)}`); } } return ( -
-

next 15 next/font comparisons

+
+

next 16 next/font comparisons

    {pairs.map(([name, fromVe, direct]) => ( -
  • - {name}: {String(fromVe)} +
  • + {name}: {fromVe}
  • ))}
diff --git a/fixtures/next-16-app-pages-router/next-env.d.ts b/fixtures/next-16-app-pages-router/next-env.d.ts index 8c9df6326..204c793b8 100644 --- a/fixtures/next-16-app-pages-router/next-env.d.ts +++ b/fixtures/next-16-app-pages-router/next-env.d.ts @@ -1,7 +1,7 @@ /// /// /// -import './dist/types/routes.d.ts'; +import "./dist/types/routes.d.ts"; // NOTE: This file should not be edited // see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/fixtures/next-16-app-pages-router/src/app/barrel-test/page.tsx b/fixtures/next-16-app-pages-router/src/app/barrel-test/page.tsx new file mode 100644 index 000000000..7db8cd3aa --- /dev/null +++ b/fixtures/next-16-app-pages-router/src/app/barrel-test/page.tsx @@ -0,0 +1,14 @@ +import * as styles from '../../styles/barrel-import.css'; + +export default function BarrelTestPage() { + return ( +
+

Barrel Import Test

+

+ This page imports from a barrel that re-exports Next.js APIs. + The stubs prevent AsyncLocalStorage errors during CSS evaluation. +

+
+ ); +} + diff --git a/fixtures/next-16-app-pages-router/src/app/next-font/page.tsx b/fixtures/next-16-app-pages-router/src/app/next-font/page.tsx index 5889e1fbc..8982569c1 100644 --- a/fixtures/next-16-app-pages-router/src/app/next-font/page.tsx +++ b/fixtures/next-16-app-pages-router/src/app/next-font/page.tsx @@ -6,30 +6,17 @@ export default function NextFontChecks() { [string, string | number | undefined, string | number | undefined] > = []; - for (const [name, vePicked] of Object.entries(pickedValues) as Array< - [ - string, - { - fontFamily: string | undefined; - fontWeight: number | undefined; - fontStyle: string | undefined; - }, - ] - >) { - const direct: any = (directFonts as any)[name]; - const style = (direct && (direct as any).style) || {}; - pairs.push([`${name}-family`, vePicked.fontFamily, style.fontFamily]); - pairs.push([`${name}-weight`, vePicked.fontWeight, style.fontWeight]); - pairs.push([`${name}-style`, vePicked.fontStyle, style.fontStyle]); + for (const [name, vePicked] of Object.entries(pickedValues)) { + const direct = directFonts[name as keyof typeof directFonts]; + const style = direct?.style || {}; + pairs.push([`${name} family`, vePicked.fontFamily, style.fontFamily]); + pairs.push([`${name} weight`, vePicked.fontWeight, style.fontWeight]); + pairs.push([`${name} style`, vePicked.fontStyle, style.fontStyle]); } for (const [name, fromVe, direct] of pairs) { - if (fromVe !== direct) { - throw new Error( - `[next-font] mismatch: ${name}: ${String(fromVe)} !== ${String( - direct, - )}`, - ); + if (String(fromVe) !== String(direct)) { + throw new Error(`[next-font] mismatch for ${name}:\n${String(fromVe)} !==\n${String(direct)}`); } } @@ -38,13 +25,8 @@ export default function NextFontChecks() {

next 16 next/font comparisons

    {pairs.map(([name, fromVe, direct]) => ( -
  • - {name}: {String(fromVe)} +
  • + {name}: {fromVe}
  • ))}
diff --git a/fixtures/next-16-app-pages-router/src/styles/barrel-import.css.ts b/fixtures/next-16-app-pages-router/src/styles/barrel-import.css.ts new file mode 100644 index 000000000..04f3aa969 --- /dev/null +++ b/fixtures/next-16-app-pages-router/src/styles/barrel-import.css.ts @@ -0,0 +1,15 @@ +import { style } from '@vanilla-extract/css'; +// this import would normally crash during evaluation because it pulls in next apis +// but our stubs prevent the AsyncLocalStorage error +import { colors, spacing } from './barrel-with-next'; + +export const container = style({ + backgroundColor: colors.primary, + padding: spacing.md, +}); + +export const header = style({ + color: colors.secondary, + marginBottom: spacing.lg, +}); + diff --git a/fixtures/next-16-app-pages-router/src/styles/barrel-with-next.ts b/fixtures/next-16-app-pages-router/src/styles/barrel-with-next.ts new file mode 100644 index 000000000..ac235ec6e --- /dev/null +++ b/fixtures/next-16-app-pages-router/src/styles/barrel-with-next.ts @@ -0,0 +1,20 @@ +// barrel that re-exports both tokens and next apis +// this would normally cause AsyncLocalStorage errors during css.ts evaluation +// but our stubs prevent that + +export { headers, cookies } from 'next/headers'; +export { redirect } from 'next/navigation'; +export { after } from 'next/server'; + +// safe token exports +export const colors = { + primary: 'blue', + secondary: 'green', +} as const; + +export const spacing = { + sm: '8px', + md: '16px', + lg: '24px', +} as const; + diff --git a/fixtures/next-16-app-pages-router/src/styles/fonts.ts b/fixtures/next-16-app-pages-router/src/styles/fonts.ts index bf30aebdd..6f82fe82e 100644 --- a/fixtures/next-16-app-pages-router/src/styles/fonts.ts +++ b/fixtures/next-16-app-pages-router/src/styles/fonts.ts @@ -1,124 +1,135 @@ -import local from 'next/font/local'; -import { - Inter as InterGoogle, - Roboto_Flex as Flex, - Noto_Serif as NotoSerif, -} from 'next/font/google'; - -// weirdly named local font variable to cover edge cases -export const local__font$Weird = local({ - src: [{ path: './fonts/Inter-Regular.woff2', weight: '400' }], - fallback: ['system-ui'], +// --- 1. Imports --- +// Test weirdly named imports for both local and google fonts. + +import { Inter as Weird_Renamed_Font$8a_ } from 'next/font/google'; +import weird_renamed_local$3_ from 'next/font/local'; + +// ================================================================= +// next/font/local (using weird_renamed_local$3_) +// ================================================================= + +// --- 2. Local: Variable Name Edge Cases (Export) --- +// The import name is already tested. This tests weird export names. + +export const localSimple = weird_renamed_local$3_({ + src: './fonts/Inter-Regular.woff2', }); -// renamed google imports -export const _googleInter = InterGoogle({ - subsets: ['latin'], +export const $local_weird_EXPORT_name_ = weird_renamed_local$3_({ + src: './fonts/Inter-Regular.woff2', fallback: ['system-ui'], - style: 'italic', - weight: 'variable', }); -export const _googleFlex = Flex({ - subsets: ['latin'], + +// --- 3. Local: Fallback Prop --- + +export const localFallbackOmitted = weird_renamed_local$3_({ + src: './fonts/Inter-Regular.woff2', + // fallback is omitted +}); + +export const localFallbackSingleArray = weird_renamed_local$3_({ + src: './fonts/Inter-Regular.woff2', fallback: ['system-ui'], }); -// additional local next/font cases -export const _localMultiFallback = local({ - src: [{ path: './fonts/Inter-Regular.woff2' }], - fallback: ['system-ui', 'ui-monospace', 'third font'], +export const localFallbackMultiArray = weird_renamed_local$3_({ + src: './fonts/Inter-Regular.woff2', + fallback: ['Times New Roman', 'Gill Sans', 'emoji'], }); -export const _localExplicit = local({ - src: [{ path: './fonts/Inter-Regular.woff2' }], - weight: '400', +// --- 4. Local: Style Prop --- + +export const localStyleOmitted = weird_renamed_local$3_({ + src: './fonts/Inter-Regular.woff2', + // style is omitted +}); + +export const localStyleSingle = weird_renamed_local$3_({ + src: './fonts/Inter-Regular.woff2', style: 'italic', - fallback: ['Times New Roman', 'Gill Sans'], }); -export const _localDupFallback = local({ - src: [{ path: './fonts/Inter-Regular.woff2' }], - fallback: ['system-ui', 'system-ui', 'ui-serif', 'weird_font'], +// --- 5. Local: Weight Prop --- + +export const localWeightOmitted = weird_renamed_local$3_({ + src: './fonts/Inter-Regular.woff2', + // weight is omitted }); -// additional google next/font cases (Inter) -export const _googleInterDefaultStyle = InterGoogle({ - subsets: ['latin'], - fallback: ['serif'], +export const localWeightSingle = weird_renamed_local$3_({ + src: './fonts/Inter-Regular.woff2', + weight: '400', }); -export const _googleInterItalic = InterGoogle({ +// ================================================================= +// next/font/google (using Weird_Renamed_Font$8a_) +// ================================================================= + +// --- 6. Google: Variable Name Edge Cases (Export) --- +// The import name is already tested. This tests weird export names. + +export const googleSimple = Weird_Renamed_Font$8a_({ subsets: ['latin'], - fallback: ['sans-serif'], - style: 'italic', - weight: '400', }); -export const _googleInterMultiStyle = InterGoogle({ +export const $google_weird_EXPORT_name_ = Weird_Renamed_Font$8a_({ subsets: ['latin'], - fallback: ['monospace'], - style: ['italic', 'normal'], + fallback: ['system-ui'], }); -export const _googleInterWeightStr = InterGoogle({ weight: '400' }); +// --- 7. Google: Fallback Prop --- -export const _googleInterWeightVar = InterGoogle({ weight: 'variable' }); +export const googleFallbackOmitted = Weird_Renamed_Font$8a_({ + subsets: ['latin'], + // fallback is omitted +}); -export const _googleNotoSerif = NotoSerif({ +export const googleFallbackSingleArray = Weird_Renamed_Font$8a_({ subsets: ['latin'], fallback: ['system-ui'], }); -export const _googleInterFallbackSpaces = InterGoogle({ +export const googleFallbackMultiArray = Weird_Renamed_Font$8a_({ subsets: ['latin'], - fallback: ['Times New Roman', 'Gill Sans', 'Avenir Next'], + fallback: ['Times New Roman', 'Gill Sans', 'emoji'], }); -export const _googleInterDupFallback = InterGoogle({ +// --- 8. Google: Style Prop --- + +export const googleStyleOmitted = Weird_Renamed_Font$8a_({ subsets: ['latin'], - fallback: ['system-ui', 'system-ui', 'ui-serif', 'weird_font'], + // style is omitted }); -// local name edge-cases and option variations -export const localSimple = local({ - src: [{ path: './fonts/Inter-Regular.woff2' }], +export const googleStyleSingle = Weird_Renamed_Font$8a_({ + subsets: ['latin'], + style: 'italic', }); -export const _LocalCamelCase = local({ - src: [{ path: './fonts/Inter-Regular.woff2' }], - fallback: ['serif'], +export const googleStyleArray = Weird_Renamed_Font$8a_({ + subsets: ['latin'], + style: ['italic', 'normal'], }); -export const local$Dollar = local({ - src: [{ path: './fonts/Inter-Regular.woff2' }], - fallback: ['ui-sans-serif', 'emoji'], +// --- 9. Google: Weight Prop --- + +export const googleWeightOmitted = Weird_Renamed_Font$8a_({ + subsets: ['latin'], + // weight is omitted }); -export const _local_underscore123 = local({ - src: [ - { path: './fonts/Inter-Regular.woff2', weight: '400' }, - { path: './fonts/Inter-Regular.woff2', style: 'italic' }, - ], - fallback: ['Times New Roman'], +export const googleWeightSingle = Weird_Renamed_Font$8a_({ + subsets: ['latin'], + weight: '400', }); -// google extra coverage -export const _googleFlexMultiWeights = Flex({ +export const googleWeightVariable = Weird_Renamed_Font$8a_({ subsets: ['latin'], - weight: ['200', '300'], - fallback: ['system-ui'], + weight: 'variable', }); -export const _googleInterGenericFallbacks = InterGoogle({ +export const googleWeightArray = Weird_Renamed_Font$8a_({ subsets: ['latin'], - fallback: [ - 'ui-serif', - 'ui-sans-serif', - 'monospace', - 'emoji', - 'math', - 'ui-rounded', - ], + weight: ['400', '700', '900'], }); -export const _googleInterNoFallback = InterGoogle({ subsets: ['latin'] }); diff --git a/packages/turbopack-plugin/src/index.ts b/packages/turbopack-plugin/src/index.ts index 46a6d5548..a2d9fc54c 100644 --- a/packages/turbopack-plugin/src/index.ts +++ b/packages/turbopack-plugin/src/index.ts @@ -9,6 +9,7 @@ import { createNextFontVePlugins, type NextFontPluginState, } from './next-font/plugin'; +import { createNextStubsVePlugin } from './next-stubs/plugin'; type LoaderContext = { getOptions: (schema?: unknown) => OptionsType; @@ -40,6 +41,7 @@ export type TurboLoaderOptions = { }; let singletonCompiler: VeCompiler | undefined; +// font state includes family, weight, and style for validation let nextFontState: NextFontPluginState | undefined; let processedPaths = new Set(); @@ -74,6 +76,7 @@ const getCompiler = async ( viteConfig: { define: defineEnv, plugins: [ + createNextStubsVePlugin(), ...(() => { const created = createNextFontVePlugins(); nextFontState = created.state; @@ -82,9 +85,22 @@ const getCompiler = async ( { // avoid module resolution errors by letting turbopack resolve our modules for us name: 'vanilla-extract-turbo-resolve', - enforce: 'pre', + // we cannot use enforce: 'pre' because turbopack doesn't support server relative imports + // so we'll let vite try to resolve first, then delegate async resolveId(source: string, importer: string | undefined) { - if (!getResolve || !importer) return null; + // never delegate virtual ids or our stub ids to turbopack + if ( + source.startsWith('ve-stub:') || + source.startsWith('\\0') || + source.includes('\\0') || + !getResolve || + !importer || + importer.startsWith('ve-stub:') || + importer.startsWith('\\0') || + importer.includes('\\0') + ) { + return null; + } const resolver = getResolve({}); return new Promise((resolve) => { resolver( diff --git a/packages/turbopack-plugin/src/next-font/devValidation.ts b/packages/turbopack-plugin/src/next-font/devValidation.ts index 62d81326d..9152e0fc2 100644 --- a/packages/turbopack-plugin/src/next-font/devValidation.ts +++ b/packages/turbopack-plugin/src/next-font/devValidation.ts @@ -3,7 +3,15 @@ import * as path from 'node:path'; export function buildValidationPrelude( absolutePath: string, usedProviders: string[], - detailsMap: Map, + detailsMap: Map< + string, + { + exportName: string; + stubbedFamily: string; + stubbedWeight: number | undefined; + stubbedStyle: string | undefined; + }[] + >, ): string { if (process.env.NODE_ENV === 'production' || usedProviders.length === 0) return ''; @@ -28,11 +36,41 @@ export function buildValidationPrelude( try { const realFont = ${importAlias}[${JSON.stringify(fontInfo.exportName)}]; const stubbedFamily = ${JSON.stringify(fontInfo.stubbedFamily)}; - if (realFont && realFont.style && realFont.style.fontFamily) { + const stubbedWeight = ${fontInfo.stubbedWeight !== undefined ? fontInfo.stubbedWeight : 'undefined'}; + const stubbedStyle = ${fontInfo.stubbedStyle !== undefined ? JSON.stringify(fontInfo.stubbedStyle) : 'undefined'}; + if (realFont && realFont.style) { + let mismatches = []; if (realFont.style.fontFamily !== stubbedFamily) { - console.error('[VE Font Check] mismatch:', ${JSON.stringify( - path.basename(providerPath), - )}, ${JSON.stringify(fontInfo.exportName)}); + mismatches.push({ + property: 'fontFamily', + expected: stubbedFamily, + actual: realFont.style.fontFamily + }); + } + if (realFont.style.fontWeight !== stubbedWeight) { + mismatches.push({ + property: 'fontWeight', + expected: stubbedWeight, + actual: realFont.style.fontWeight + }); + } + if (realFont.style.fontStyle !== stubbedStyle) { + mismatches.push({ + property: 'fontStyle', + expected: stubbedStyle, + actual: realFont.style.fontStyle + }); + } + if (mismatches.length > 0) { + console.error('\\n[vanilla-extract] next/font style mismatch detected'); + console.error('Location: ${path.basename(providerPath)} > ' + ${JSON.stringify(fontInfo.exportName)}); + mismatches.forEach(function(m) { + console.error(' ' + m.property + ':'); + console.error(' Turbopack\\'s Value: ' + JSON.stringify(m.actual)); + console.error(' Vanilla Extract\\'s Value: ' + JSON.stringify(m.expected)); + }); + console.error('This is a bug in vanilla-extract. Please report it at:'); + console.error('https://github.com/vanilla-extract-css/vanilla-extract/issues\\n'); } } } catch (e) { /* ignore */ }`; diff --git a/packages/turbopack-plugin/src/next-font/plugin.ts b/packages/turbopack-plugin/src/next-font/plugin.ts index 983f1c4e3..770e1304a 100644 --- a/packages/turbopack-plugin/src/next-font/plugin.ts +++ b/packages/turbopack-plugin/src/next-font/plugin.ts @@ -4,7 +4,12 @@ export type NextFontPluginState = { fontProviders: Set; fontProviderDetails: Map< string, - { exportName: string; stubbedFamily: string }[] + { + exportName: string; + stubbedFamily: string; + stubbedWeight: number | undefined; + stubbedStyle: string | undefined; + }[] >; }; @@ -28,7 +33,12 @@ export function createNextFontVePlugins(): { fontProviders: new Set(), fontProviderDetails: new Map< string, - { exportName: string; stubbedFamily: string }[] + { + exportName: string; + stubbedFamily: string; + stubbedWeight: number | undefined; + stubbedStyle: string | undefined; + }[] >(), }; diff --git a/packages/turbopack-plugin/src/next-font/transform.ts b/packages/turbopack-plugin/src/next-font/transform.ts index 24ec48624..a6ebe29a8 100644 --- a/packages/turbopack-plugin/src/next-font/transform.ts +++ b/packages/turbopack-plugin/src/next-font/transform.ts @@ -1,5 +1,10 @@ import * as swc from '@swc/core'; -export type FontDetail = { exportName: string; stubbedFamily: string }; +export type FontDetail = { + exportName: string; + stubbedFamily: string; + stubbedWeight: number | undefined; + stubbedStyle: string | undefined; +}; export type NextFontTransformResult = { code: string; usedNextFont: boolean; @@ -7,35 +12,83 @@ export type NextFontTransformResult = { changed: boolean; }; -const HELPERS_PREAMBLE = [ - 'const __VE_FONT_MSG = "next/font class names are generated by Turbopack and aren\'t available during vanilla-extract evaluation. Use style.* in VE files, and apply the real font\'s className/variable in runtime code.";', - "function __ve_normalizeName(s){ return String(s).replace(/['\\\"]/g,''); }", - 'function __ve_toCssListRaw(items){ return items.map((s)=>__ve_normalizeName(s)); } ', - "function __ve_buildFontFamily(family, fallback, includeVariant = true){ const base=__ve_normalizeName(family); const parts = [`'${base}'`]; if (includeVariant) parts.push(`'${base} Fallback'`); if (Array.isArray(fallback)) parts.push(...__ve_toCssListRaw(fallback)); return parts.join(', '); }", - "function __ve_pickSingle(values){ const arr = Array.isArray(values) ? Array.from(new Set(values.filter(Boolean))) : (values!=null?[values]:[]); if (arr.length!==1) return undefined; const v = arr[0]; if (typeof v !== 'string') return v; if (v.includes(' ')) return undefined; return v; }", - 'function __veLocal(family, options = {}) {', - ' const style = { fontFamily: __ve_buildFontFamily(String(family), options.fallback, true) };', - // next/font/local does not expose top-level weight/style in style props - ' return { get className(){ throw new Error(__VE_FONT_MSG); }, get variable(){ throw new Error(__VE_FONT_MSG); }, style };', - '}', - 'function __veGoogle(fontName, options = {}) {', - ' const family = String(fontName);', - ' const style = { fontFamily: __ve_buildFontFamily(family, options.fallback, options.fallback == null) };', - " if (typeof options.weight === 'string' && options.weight && !options.weight.includes(' ')) { const n=Number(options.weight); if (!Number.isNaN(n)) style.fontWeight = n; } else if (typeof options.weight === 'number') { style.fontWeight = options.weight; }", - ' const pickedStyle = __ve_pickSingle(options.style);', - " if (typeof pickedStyle === 'string' && pickedStyle && !pickedStyle.includes(' ')) { style.fontStyle = pickedStyle; } else if (options.style === undefined) { style.fontStyle = 'normal'; }", - ' return { get className(){ throw new Error(__VE_FONT_MSG); }, get variable(){ throw new Error(__VE_FONT_MSG); }, style };', - '}', -].join('\n'); +const THROW_MSG = + "next/font class names are generated by Turbopack and aren't available during vanilla-extract evaluation. Use style.* in VE files, and apply the real font's className/variable in runtime code."; + +function computeStubbedFamily( + exportName: string, + fallback: string[] | undefined, + isLocal: boolean, +): string { + // Generic CSS font families that should not be quoted + const genericFamilies = new Set([ + 'serif', 'sans-serif', 'monospace', 'cursive', 'fantasy', + 'system-ui', 'ui-serif', 'ui-sans-serif', 'ui-monospace', 'ui-rounded', + 'emoji', 'math', 'fangsong' + ]); + + const formatFamily = (s: string) => { + // Remove existing quotes + const clean = s.replace(/['"]/g, ''); + // Don't quote generic CSS font families + if (genericFamilies.has(clean.toLowerCase())) { + return clean; + } + // Quote everything else (custom fonts, fonts with spaces, etc.) + return `'${clean}'`; + }; + + const parts = [formatFamily(exportName)]; -function computeStubbedFamily(exportName: string, fallback?: string[]): string { - const normalize = (s: string) => s.replace(/['\\\"]/g, ''); - const toCssList = (items: string[]) => items.map(normalize); - const parts = toCssList([exportName, `${exportName} Fallback`]); - if (Array.isArray(fallback)) parts.push(...toCssList(fallback)); + if (isLocal) { + // Local fonts always include the generated fallback variant + parts.push(formatFamily(`${exportName} Fallback`)); + // And then append any user-provided fallbacks + if (Array.isArray(fallback)) { + // Manual fallbacks are appended as-is (unquoted), mirroring Turbopack + parts.push(...fallback); + } + } else { + // Google fonts: if user fallbacks provided, use them; otherwise use ' Fallback' + if (Array.isArray(fallback)) { + // Manual fallbacks are appended as-is (unquoted), mirroring Turbopack + parts.push(...fallback); + } else { + parts.push(formatFamily(`${exportName} Fallback`)); + } + } return parts.join(', '); } +function computeStubbedWeight(weight: any): number | undefined { + if (typeof weight === 'number') { + return weight; + } + if (typeof weight === 'string' && weight && !weight.includes(' ')) { + const n = Number(weight); + if (!Number.isNaN(n)) { + return n; + } + } + return undefined; +} + +function computeStubbedStyle(style: any, isGoogleFont: boolean): string | undefined { + // If a single style string is provided, use it + if (typeof style === 'string' && style && !style.includes(' ')) { + return style; + } + // Arrays always resolve to undefined for both providers + if (Array.isArray(style)) { + return undefined; + } + // For Google fonts, missing style defaults to "normal"; local stays undefined + if (style === undefined) { + return isGoogleFont ? 'normal' : undefined; + } + return undefined; +} + export async function transformNextFont( code: string, id: string, @@ -68,20 +121,6 @@ export async function transformNextFont( }); return out as string; }; - const printExpr = async (expr: any, programSpan: any): Promise => { - const mod = { - type: 'Module', - span: programSpan, - body: [ - { type: 'ExpressionStatement', expression: expr, span: programSpan }, - ], - } as any; - const { code: out } = await swc.print(mod, { - minify: false, - sourceMaps: false, - }); - return String(out).trim().replace(/;$/, ''); - }; const parseExpr = async (exprCode: string): Promise => { const m = await parseModule(`const __e = ${exprCode};`); const first = m.body && m.body[0]; @@ -139,49 +178,20 @@ export async function transformNextFont( newBody.push(item); } - // Helper to parse snippet into ModuleItems - const parseItems = async (snippet: string): Promise => { - if (!snippet.trim()) return []; - const m = await parseModule(snippet); - return m.body || []; - }; - - // Proxies for google fonts - if (googleSpecs.length > 0) { - const proxySrc = googleSpecs - .map( - ({ local, pretty }) => - `const ${local} = (...args) => __veGoogle(${JSON.stringify( - pretty, - )}, ...args);`, - ) - .join('\n'); - const items = await parseItems(proxySrc); - newBody.unshift(...items); - } - - // Fallback alias for local alias to throw at runtime if called directly - if (localAlias) { - const aliasSrc = `const ${localAlias} = (..._args) => { throw new Error(__VE_FONT_MSG); };`; - const items = await parseItems(aliasSrc); - newBody.unshift(...items); - } - - // Inject helpers at the very top if we touched next/font - if (changed) { - const helpersItems = await parseItems(HELPERS_PREAMBLE); - newBody.unshift(...helpersItems); - } + // Note: We don't inject any helper functions anymore. + // Instead, we'll compute values during the rewrite and inject them directly. // Utilities to find fallback arrays const isIdentifierNamed = (node: any, name: string) => node && node.type === 'Identifier' && node.value === name; + const unwrapExpr = (n: any) => (n && typeof n === 'object' && 'expression' in n ? (n as any).expression : n); const toArrayOfStringLiterals = (node: any): string[] | undefined => { + node = unwrapExpr(node); if (!node || node.type !== 'ArrayExpression') return undefined; const out: string[] = []; for (const el of node.elements || []) { if (!el) return undefined; - const expr = (el as any).expression || el; + const expr = unwrapExpr(el); if (!expr || expr.type !== 'StringLiteral') return undefined; out.push(String(expr.value)); } @@ -189,11 +199,11 @@ export async function transformNextFont( }; const findFallbackInArgs = (args: any[]): string[] | undefined => { for (const arg of args || []) { - const expr = arg.expression || arg; + const expr = unwrapExpr(arg); if (!expr) continue; if (expr.type === 'ObjectExpression') { for (const prop of expr.properties || []) { - if (!prop || prop.type !== 'Property') continue; + if (!prop || (prop.type !== 'KeyValueProperty' && prop.type !== 'Property')) continue; const key = prop.key; let isFallback = false; if (key.type === 'Identifier' && key.value === 'fallback') @@ -201,7 +211,8 @@ export async function transformNextFont( if (key.type === 'StringLiteral' && key.value === 'fallback') isFallback = true; if (isFallback) { - const arr = toArrayOfStringLiterals(prop.value); + const valNode: any = 'value' in prop ? (prop as any).value : (prop as any).value; + const arr = toArrayOfStringLiterals(unwrapExpr(valNode)); if (arr) return arr; } } @@ -210,6 +221,83 @@ export async function transformNextFont( return undefined; }; + const isLocalSrcSingleString = (args: any[]): boolean => { + for (const arg of args || []) { + const expr = unwrapExpr(arg); + if (!expr) continue; + if (expr.type === 'ObjectExpression') { + for (const prop of expr.properties || []) { + if (!prop || (prop.type !== 'KeyValueProperty' && prop.type !== 'Property')) continue; + const key = prop.key; + let isSrc = false; + if (key.type === 'Identifier' && key.value === 'src') isSrc = true; + if (key.type === 'StringLiteral' && key.value === 'src') isSrc = true; + if (isSrc) { + const valNode: any = 'value' in prop ? (prop as any).value : (prop as any).value; + const val = unwrapExpr(valNode); + return val?.type === 'StringLiteral'; + } + } + } + } + return false; + }; + + const findWeightInArgs = (args: any[]): any => { + for (const arg of args || []) { + const expr = unwrapExpr(arg); + if (!expr) continue; + if (expr.type === 'ObjectExpression') { + for (const prop of expr.properties || []) { + if (!prop || (prop.type !== 'KeyValueProperty' && prop.type !== 'Property')) continue; + const key = prop.key; + let isWeight = false; + if (key.type === 'Identifier' && key.value === 'weight') + isWeight = true; + if (key.type === 'StringLiteral' && key.value === 'weight') + isWeight = true; + if (isWeight) { + const valNode: any = 'value' in prop ? (prop as any).value : (prop as any).value; + const val = unwrapExpr(valNode); + if (val.type === 'NumericLiteral') return val.value; + if (val.type === 'StringLiteral') return val.value; + return undefined; + } + } + } + } + return undefined; + }; + + const findStyleInArgs = (args: any[]): any => { + for (const arg of args || []) { + const expr = unwrapExpr(arg); + if (!expr) continue; + if (expr.type === 'ObjectExpression') { + for (const prop of expr.properties || []) { + if (!prop || (prop.type !== 'KeyValueProperty' && prop.type !== 'Property')) continue; + const key = prop.key; + let isStyle = false; + if (key.type === 'Identifier' && key.value === 'style') + isStyle = true; + if (key.type === 'StringLiteral' && key.value === 'style') + isStyle = true; + if (isStyle) { + const valNode: any = 'value' in prop ? (prop as any).value : (prop as any).value; + const val = unwrapExpr(valNode); + if (val.type === 'StringLiteral') return val.value; + if (val.type === 'ArrayExpression') { + const arr = toArrayOfStringLiterals(val); + return arr; + } + return undefined; + } + } + } + } + return undefined; + }; + // Rewrite variable declarators const rewriteVarDecl = async (decl: any) => { for (const d of decl.declarations || []) { @@ -221,22 +309,43 @@ export async function transformNextFont( if (d.id && d.id.type === 'Identifier') varName = d.id.value; if (localAlias && isIdentifierNamed(callee, localAlias)) { - // replace with __veLocal('Var', ...originalArgs) - const full = await printExpr(init, program.span); - const open = full.indexOf('('); - const close = full.lastIndexOf(')'); - const argsCode = - open >= 0 && close > open ? full.slice(open + 1, close).trim() : ''; - const callCode = `__veLocal(${JSON.stringify(varName)}${ - argsCode ? ', ' + argsCode : '' - })`; - const parsed = await parseExpr(callCode); - if (parsed) d.init = parsed; + // compute the font family for local font const fb = findFallbackInArgs(args); + const weight = findWeightInArgs(args); + const style = findStyleInArgs(args); + const singleSrcString = isLocalSrcSingleString(args); + + const computedFamily = computeStubbedFamily(varName, fb, true); + const computedWeight = singleSrcString ? computeStubbedWeight(weight) : undefined; + const computedStyle = singleSrcString ? computeStubbedStyle(style, false) : undefined; // false = not a Google font + details.push({ exportName: varName, - stubbedFamily: computeStubbedFamily(varName, fb), + stubbedFamily: computedFamily, + stubbedWeight: computedWeight, + stubbedStyle: computedStyle, }); + + // build the style object with only defined properties + const styleProps: string[] = [ + `fontFamily: ${JSON.stringify(computedFamily)}`, + ]; + if (computedWeight !== undefined) { + styleProps.push(`fontWeight: ${computedWeight}`); + } + if (computedStyle !== undefined) { + styleProps.push(`fontStyle: ${JSON.stringify(computedStyle)}`); + } + + // inject the computed value directly as an object literal + const stubCode = `{ + get className() { throw new Error(${JSON.stringify(THROW_MSG)}); }, + get variable() { throw new Error(${JSON.stringify(THROW_MSG)}); }, + style: { ${styleProps.join(', ')} } + }`; + const parsed = await parseExpr(stubCode); + if (parsed) d.init = parsed; + changed = true; usedNextFont = true; continue; @@ -245,21 +354,42 @@ export async function transformNextFont( if (callee && callee.type === 'Identifier') { const spec = googleSpecs.find((g) => g.local === callee.value); if (spec) { - const full = await printExpr(init, program.span); - const open = full.indexOf('('); - const close = full.lastIndexOf(')'); - const argsCode = - open >= 0 && close > open ? full.slice(open + 1, close).trim() : ''; - const callCode = `__veGoogle(${JSON.stringify(spec.pretty)}${ - argsCode ? ', ' + argsCode : '' - })`; - const parsed = await parseExpr(callCode); - if (parsed) d.init = parsed; + // compute all the values for google font const fb = findFallbackInArgs(args); + const weight = findWeightInArgs(args); + const style = findStyleInArgs(args); + + const computedFamily = computeStubbedFamily(spec.pretty, fb, false); + const computedWeight = computeStubbedWeight(weight); + const computedStyle = computeStubbedStyle(style, true); // true = Google font + details.push({ exportName: varName, - stubbedFamily: computeStubbedFamily(spec.pretty, fb), + stubbedFamily: computedFamily, + stubbedWeight: computedWeight, + stubbedStyle: computedStyle, }); + + // build the style object with only defined properties + const styleProps: string[] = [ + `fontFamily: ${JSON.stringify(computedFamily)}`, + ]; + if (computedWeight !== undefined) { + styleProps.push(`fontWeight: ${computedWeight}`); + } + if (computedStyle !== undefined) { + styleProps.push(`fontStyle: ${JSON.stringify(computedStyle)}`); + } + + // inject the computed value directly as an object literal + const stubCode = `{ + get className() { throw new Error(${JSON.stringify(THROW_MSG)}); }, + get variable() { throw new Error(${JSON.stringify(THROW_MSG)}); }, + style: { ${styleProps.join(', ')} } + }`; + const parsed = await parseExpr(stubCode); + if (parsed) d.init = parsed; + changed = true; usedNextFont = true; continue; diff --git a/packages/turbopack-plugin/src/next-stubs/plugin.test.ts b/packages/turbopack-plugin/src/next-stubs/plugin.test.ts new file mode 100644 index 000000000..12b4c4079 --- /dev/null +++ b/packages/turbopack-plugin/src/next-stubs/plugin.test.ts @@ -0,0 +1,100 @@ +import { createNextStubsVePlugin } from './plugin'; + +describe('next-stubs plugin', () => { + const plugin = createNextStubsVePlugin(); + + test('should resolve stubbed modules', () => { + expect(plugin.resolveId?.('next/headers', undefined)).toEqual({ + id: 've-stub:next/headers', + }); + expect(plugin.resolveId?.('next/cache', undefined)).toEqual({ + id: 've-stub:next/cache', + }); + expect(plugin.resolveId?.('next/navigation', undefined)).toEqual({ + id: 've-stub:next/navigation', + }); + expect(plugin.resolveId?.('next/server', undefined)).toEqual({ + id: 've-stub:next/server', + }); + expect(plugin.resolveId?.('next/draft-mode', undefined)).toEqual({ + id: 've-stub:next/draft-mode', + }); + expect(plugin.resolveId?.('next/cookies', undefined)).toEqual({ + id: 've-stub:next/cookies', + }); + }); + + test('should not resolve non-stubbed modules', () => { + expect(plugin.resolveId?.('next/image', undefined)).toBe(null); + expect(plugin.resolveId?.('react', undefined)).toBe(null); + expect(plugin.resolveId?.('./myModule', undefined)).toBe(null); + }); + + test('should load stub code for resolved modules', () => { + const headerStub = plugin.load?.('ve-stub:next/headers'); + expect(headerStub).toBeTruthy(); + expect(headerStub?.code).toContain('function headers()'); + expect(headerStub?.code).toContain('function cookies()'); + expect(headerStub?.code).toContain('function draftMode()'); + + const cacheStub = plugin.load?.('ve-stub:next/cache'); + expect(cacheStub).toBeTruthy(); + expect(cacheStub?.code).toContain('function unstable_cache()'); + expect(cacheStub?.code).toContain('function revalidateTag()'); + + const navigationStub = plugin.load?.('ve-stub:next/navigation'); + expect(navigationStub).toBeTruthy(); + expect(navigationStub?.code).toContain('function redirect()'); + expect(navigationStub?.code).toContain('function useRouter()'); + + const serverStub = plugin.load?.('ve-stub:next/server'); + expect(serverStub).toBeTruthy(); + expect(serverStub?.code).toContain('class ImageResponse'); + expect(serverStub?.code).toContain('function after()'); + expect(serverStub?.code).toContain('function connection()'); + }); + + test('should not load code for non-stub ids', () => { + expect(plugin.load?.('next/image')).toBe(null); + expect(plugin.load?.('./myModule.ts')).toBe(null); + }); + + test('stub functions should throw when called', () => { + // eval the stub code and test that functions throw + const headerStub = plugin.load?.('ve-stub:next/headers'); + expect(headerStub).toBeTruthy(); + + // create a test environment + const testEnv: Record = {}; + const esmToCjs = (src: string) => + src + .replace(/^export\s+function\s+(\w+)\s*\(/gm, 'exports.$1 = function $1(') + .replace(/^export\s+class\s+(\w+)/gm, 'exports.$1 = class $1') + .replace(/^export\s+\{[^}]*\};?$/gm, ''); + const fn = new Function('exports', esmToCjs(headerStub!.code)); + fn(testEnv); + + expect(() => testEnv.headers()).toThrow(/not available during vanilla-extract evaluation/); + expect(() => testEnv.cookies()).toThrow(/not available during vanilla-extract evaluation/); + expect(() => testEnv.draftMode()).toThrow(/not available during vanilla-extract evaluation/); + }); + + test('stub classes should throw when instantiated', () => { + const serverStub = plugin.load?.('ve-stub:next/server'); + expect(serverStub).toBeTruthy(); + + const testEnv: Record = {}; + const esmToCjs = (src: string) => + src + .replace(/^export\s+function\s+(\w+)\s*\(/gm, 'exports.$1 = function $1(') + .replace(/^export\s+class\s+(\w+)/gm, 'exports.$1 = class $1') + .replace(/^export\s+\{[^}]*\};?$/gm, ''); + const fn = new Function('exports', esmToCjs(serverStub!.code)); + fn(testEnv); + + expect(() => new testEnv.ImageResponse()).toThrow(/not available during vanilla-extract evaluation/); + expect(() => new testEnv.NextRequest()).toThrow(/not available during vanilla-extract evaluation/); + expect(() => new testEnv.NextResponse()).toThrow(/not available during vanilla-extract evaluation/); + }); +}); + diff --git a/packages/turbopack-plugin/src/next-stubs/plugin.ts b/packages/turbopack-plugin/src/next-stubs/plugin.ts new file mode 100644 index 000000000..e2dc2a2d6 --- /dev/null +++ b/packages/turbopack-plugin/src/next-stubs/plugin.ts @@ -0,0 +1,240 @@ +type Plugin = { + name: string; + enforce?: 'pre' | 'post'; + resolveId?: ( + source: string, + importer: string | undefined, + ) => { id: string } | null; + load?: (id: string) => { code: string } | null; +}; + +const STUBBED_MODULES = [ + 'next/headers', + 'next/cache', + 'next/navigation', + 'next/server', + 'next/draft-mode', + 'next/cookies', +] as const; + +const STUB_CODE: Record = { + 'next/headers': ` +function throwNotAvailable(name) { + throw new Error( + \`"\${name}" is not available during vanilla-extract evaluation. \\n\` + + \`This API accesses request-scoped data that isn't available at build time. \\n\` + + \`Move dynamic data access to your component and pass values via CSS variables or data attributes.\` + ); +} + +export function headers() { + throwNotAvailable('headers()'); +} + +export function cookies() { + throwNotAvailable('cookies()'); +} + +export function draftMode() { + throwNotAvailable('draftMode()'); +} +`, + 'next/cache': ` +function throwNotAvailable(name) { + throw new Error( + \`"\${name}" is not available during vanilla-extract evaluation. \\n\` + + \`This API accesses request-scoped data that isn't available at build time. \\n\` + + \`Move dynamic data access to your component and pass values via CSS variables or data attributes.\` + ); +} + +export function unstable_cache() { + throwNotAvailable('unstable_cache()'); +} + +export function revalidateTag() { + throwNotAvailable('revalidateTag()'); +} + +export function revalidatePath() { + throwNotAvailable('revalidatePath()'); +} + +export function updateTag() { + throwNotAvailable('updateTag()'); +} + +export function refresh() { + throwNotAvailable('refresh()'); +} +`, + 'next/navigation': ` +function throwNotAvailable(name) { + throw new Error( + \`"\${name}" is not available during vanilla-extract evaluation. \\n\` + + \`This API accesses request-scoped data that isn't available at build time. \\n\` + + \`Move dynamic data access to your component and pass values via CSS variables or data attributes.\` + ); +} + +export function redirect() { + throwNotAvailable('redirect()'); +} + +export function permanentRedirect() { + throwNotAvailable('permanentRedirect()'); +} + +export function notFound() { + throwNotAvailable('notFound()'); +} + +export function forbidden() { + throwNotAvailable('forbidden()'); +} + +export function unauthorized() { + throwNotAvailable('unauthorized()'); +} + +export function unstable_rethrow() { + throwNotAvailable('unstable_rethrow()'); +} + +export function useRouter() { + throwNotAvailable('useRouter()'); +} + +export function useParams() { + throwNotAvailable('useParams()'); +} + +export function usePathname() { + throwNotAvailable('usePathname()'); +} + +export function useSearchParams() { + throwNotAvailable('useSearchParams()'); +} + +export function useSelectedLayoutSegment() { + throwNotAvailable('useSelectedLayoutSegment()'); +} + +export function useSelectedLayoutSegments() { + throwNotAvailable('useSelectedLayoutSegments()'); +} + +export const ServerInsertedHTMLContext = {}; + +export function useServerInsertedHTML() { + throwNotAvailable('useServerInsertedHTML()'); +} + +export class ReadonlyURLSearchParams { + constructor() { + throwNotAvailable('ReadonlyURLSearchParams'); + } +} +`, + 'next/server': ` +function throwNotAvailable(name) { + throw new Error( + \`"\${name}" is not available during vanilla-extract evaluation. \\n\` + + \`This API accesses request-scoped data that isn't available at build time. \\n\` + + \`Move dynamic data access to your component and pass values via CSS variables or data attributes.\` + ); +} + +export class ImageResponse { + constructor() { + throwNotAvailable('ImageResponse'); + } +} + +export class NextRequest { + constructor() { + throwNotAvailable('NextRequest'); + } +} + +export class NextResponse { + constructor() { + throwNotAvailable('NextResponse'); + } +} + +export function after() { + throwNotAvailable('after()'); +} + +export function connection() { + throwNotAvailable('connection()'); +} + +export function userAgent() { + throwNotAvailable('userAgent()'); +} + +export function userAgentFromString() { + throwNotAvailable('userAgentFromString()'); +} + +export class URLPattern { + constructor() { + throwNotAvailable('URLPattern'); + } +} +`, + 'next/draft-mode': ` +function throwNotAvailable(name) { + throw new Error( + \`"\${name}" is not available during vanilla-extract evaluation. \\n\` + + \`This API accesses request-scoped data that isn't available at build time. \\n\` + + \`Move dynamic data access to your component and pass values via CSS variables or data attributes.\` + ); +} + +export function draftMode() { + throwNotAvailable('draftMode()'); +} +`, + 'next/cookies': ` +function throwNotAvailable(name) { + throw new Error( + \`"\${name}" is not available during vanilla-extract evaluation. \\n\` + + \`This API accesses request-scoped data that isn't available at build time. \\n\` + + \`Move dynamic data access to your component and pass values via CSS variables or data attributes.\` + ); +} + +export function cookies() { + throwNotAvailable('cookies()'); +} +`, +}; + +export function createNextStubsVePlugin(): Plugin { + return { + name: 've-next-stubs', + enforce: 'pre', + resolveId(source: string) { + if (STUBBED_MODULES.includes(source as any)) { + // return a filesystem-safe virtual id (no NUL prefix) + return { id: `ve-stub:${source}` }; + } + return null; + }, + load(id: string) { + if (id.startsWith('ve-stub:')) { + const moduleName = id.slice('ve-stub:'.length); + const code = STUB_CODE[moduleName]; + if (code) { + return { code }; + } + } + return null; + }, + }; +} + From 31a01ce074350469e67a726564e6e6f3689dbe3e Mon Sep 17 00:00:00 2001 From: Robbie Date: Tue, 4 Nov 2025 11:46:41 -0700 Subject: [PATCH 14/52] fix: correctly detect production for identifiers default --- packages/turbopack-plugin/src/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/turbopack-plugin/src/index.ts b/packages/turbopack-plugin/src/index.ts index a2d9fc54c..f2e2ae501 100644 --- a/packages/turbopack-plugin/src/index.ts +++ b/packages/turbopack-plugin/src/index.ts @@ -27,7 +27,6 @@ type LoaderContext = { additionalData?: unknown, ) => void; addDependency: (file: string) => void; - mode: 'none' | 'development' | 'production'; rootContext: string; resourcePath: string; resourceQuery?: string; @@ -136,7 +135,8 @@ export default async function turbopackVanillaExtractLoader( try { const options = this.getOptions(); const identifiers = - options.identifiers ?? (this.mode === 'production' ? 'short' : 'debug'); + options.identifiers ?? + (process.env.NODE_ENV === 'production' ? 'short' : 'debug'); const outputCss = options.outputCss ?? true; const compiler = await getCompiler( From b492ce066e22c7a3dda996383c8a3ce220fc3986 Mon Sep 17 00:00:00 2001 From: Robbie Date: Sun, 9 Nov 2025 21:19:52 -0600 Subject: [PATCH 15/52] fix: errors during HMR are unrecoverable --- .../src/app/next-font/page.tsx | 6 +- .../next-16-app-pages-router/next-env.d.ts | 2 +- .../src/app/barrel-test/page.tsx | 5 +- .../src/app/next-font/page.tsx | 6 +- .../src/styles/barrel-import.css.ts | 1 - .../src/styles/barrel-with-next.ts | 1 - .../src/styles/fonts.ts | 1 - packages/compiler/src/compiler.ts | 59 +++++++++---- packages/turbopack-plugin/src/index.ts | 12 +++ .../src/next-font/devValidation.ts | 14 +++- .../src/next-font/transform.ts | 82 ++++++++++++++----- .../src/next-stubs/plugin.test.ts | 35 ++++++-- .../turbopack-plugin/src/next-stubs/plugin.ts | 1 - 13 files changed, 166 insertions(+), 59 deletions(-) diff --git a/fixtures/next-15-app-pages-router/src/app/next-font/page.tsx b/fixtures/next-15-app-pages-router/src/app/next-font/page.tsx index 8982569c1..009e049c1 100644 --- a/fixtures/next-15-app-pages-router/src/app/next-font/page.tsx +++ b/fixtures/next-15-app-pages-router/src/app/next-font/page.tsx @@ -16,7 +16,11 @@ export default function NextFontChecks() { for (const [name, fromVe, direct] of pairs) { if (String(fromVe) !== String(direct)) { - throw new Error(`[next-font] mismatch for ${name}:\n${String(fromVe)} !==\n${String(direct)}`); + throw new Error( + `[next-font] mismatch for ${name}:\n${String(fromVe)} !==\n${String( + direct, + )}`, + ); } } diff --git a/fixtures/next-16-app-pages-router/next-env.d.ts b/fixtures/next-16-app-pages-router/next-env.d.ts index 204c793b8..8c9df6326 100644 --- a/fixtures/next-16-app-pages-router/next-env.d.ts +++ b/fixtures/next-16-app-pages-router/next-env.d.ts @@ -1,7 +1,7 @@ /// /// /// -import "./dist/types/routes.d.ts"; +import './dist/types/routes.d.ts'; // NOTE: This file should not be edited // see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/fixtures/next-16-app-pages-router/src/app/barrel-test/page.tsx b/fixtures/next-16-app-pages-router/src/app/barrel-test/page.tsx index 7db8cd3aa..c34800660 100644 --- a/fixtures/next-16-app-pages-router/src/app/barrel-test/page.tsx +++ b/fixtures/next-16-app-pages-router/src/app/barrel-test/page.tsx @@ -5,10 +5,9 @@ export default function BarrelTestPage() {

Barrel Import Test

- This page imports from a barrel that re-exports Next.js APIs. - The stubs prevent AsyncLocalStorage errors during CSS evaluation. + This page imports from a barrel that re-exports Next.js APIs. The stubs + prevent AsyncLocalStorage errors during CSS evaluation.

); } - diff --git a/fixtures/next-16-app-pages-router/src/app/next-font/page.tsx b/fixtures/next-16-app-pages-router/src/app/next-font/page.tsx index 8982569c1..009e049c1 100644 --- a/fixtures/next-16-app-pages-router/src/app/next-font/page.tsx +++ b/fixtures/next-16-app-pages-router/src/app/next-font/page.tsx @@ -16,7 +16,11 @@ export default function NextFontChecks() { for (const [name, fromVe, direct] of pairs) { if (String(fromVe) !== String(direct)) { - throw new Error(`[next-font] mismatch for ${name}:\n${String(fromVe)} !==\n${String(direct)}`); + throw new Error( + `[next-font] mismatch for ${name}:\n${String(fromVe)} !==\n${String( + direct, + )}`, + ); } } diff --git a/fixtures/next-16-app-pages-router/src/styles/barrel-import.css.ts b/fixtures/next-16-app-pages-router/src/styles/barrel-import.css.ts index 04f3aa969..fc01402e9 100644 --- a/fixtures/next-16-app-pages-router/src/styles/barrel-import.css.ts +++ b/fixtures/next-16-app-pages-router/src/styles/barrel-import.css.ts @@ -12,4 +12,3 @@ export const header = style({ color: colors.secondary, marginBottom: spacing.lg, }); - diff --git a/fixtures/next-16-app-pages-router/src/styles/barrel-with-next.ts b/fixtures/next-16-app-pages-router/src/styles/barrel-with-next.ts index ac235ec6e..72111bcd0 100644 --- a/fixtures/next-16-app-pages-router/src/styles/barrel-with-next.ts +++ b/fixtures/next-16-app-pages-router/src/styles/barrel-with-next.ts @@ -17,4 +17,3 @@ export const spacing = { md: '16px', lg: '24px', } as const; - diff --git a/fixtures/next-16-app-pages-router/src/styles/fonts.ts b/fixtures/next-16-app-pages-router/src/styles/fonts.ts index 6f82fe82e..520b00636 100644 --- a/fixtures/next-16-app-pages-router/src/styles/fonts.ts +++ b/fixtures/next-16-app-pages-router/src/styles/fonts.ts @@ -132,4 +132,3 @@ export const googleWeightArray = Weird_Renamed_Font$8a_({ subsets: ['latin'], weight: ['400', '700', '900'], }); - diff --git a/packages/compiler/src/compiler.ts b/packages/compiler/src/compiler.ts index 9f524922b..6a0c10a90 100644 --- a/packages/compiler/src/compiler.ts +++ b/packages/compiler/src/compiler.ts @@ -303,6 +303,17 @@ export const createCompiler = ({ composedClassLists: Array; }>(root); + const collectWatchFiles = (moduleNode: ModuleNode | null | undefined) => { + if (!moduleNode) { + return new Set(); + } + + const scanModule = createModuleScanner(); + const { watchFiles } = scanModule(moduleNode); + + return watchFiles; + }; + return { async processVanillaFile( filePath, @@ -390,8 +401,13 @@ export const createCompiler = ({ }, }; - const { fileExports, cssImports, watchFiles, lastInvalidationTimestamp } = - await lock(async () => { + try { + const { + fileExports, + cssImports, + watchFiles, + lastInvalidationTimestamp, + } = await lock(async () => { runner.cssAdapter = cssAdapter; const fileExports = await runner.executeFile(filePath); @@ -464,21 +480,34 @@ export const createCompiler = ({ }; }); - const result: ProcessedVanillaFile = { - source: serializeVanillaModule( - cssImports, - fileExports, - null, // This compiler currently retains all composition classes - ), - watchFiles, - }; + const result: ProcessedVanillaFile = { + source: serializeVanillaModule( + cssImports, + fileExports, + null, // This compiler currently retains all composition classes + ), + watchFiles, + }; + + processVanillaFileCache.set(cacheKey, { + lastInvalidationTimestamp, + result, + }); - processVanillaFileCache.set(cacheKey, { - lastInvalidationTimestamp, - result, - }); + return result; + } catch (error) { + const moduleId = normalizePath(filePath); + const moduleNode = server.moduleGraph.getModuleById(moduleId); + const watchFiles = collectWatchFiles(moduleNode) ?? new Set(); - return result; + if (watchFiles.size === 0) { + watchFiles.add(filePath); + } + + (error as Error & { watchFiles?: Set }).watchFiles = watchFiles; + + throw error; + } }, getCssForFile(filePath: string) { filePath = isAbsolute(filePath) ? filePath : join(root, filePath); diff --git a/packages/turbopack-plugin/src/index.ts b/packages/turbopack-plugin/src/index.ts index f2e2ae501..85ba3a9c9 100644 --- a/packages/turbopack-plugin/src/index.ts +++ b/packages/turbopack-plugin/src/index.ts @@ -202,6 +202,18 @@ export default async function turbopackVanillaExtractLoader( callback(null, transformed); } catch (e) { + const errorWithWatchFiles = e as Error & { + watchFiles?: Iterable; + }; + + if (errorWithWatchFiles.watchFiles) { + for (const file of errorWithWatchFiles.watchFiles) { + this.addDependency(file); + } + } else { + this.addDependency(this.resourcePath); + } + callback(e as Error); } } diff --git a/packages/turbopack-plugin/src/next-font/devValidation.ts b/packages/turbopack-plugin/src/next-font/devValidation.ts index 9152e0fc2..70784efcd 100644 --- a/packages/turbopack-plugin/src/next-font/devValidation.ts +++ b/packages/turbopack-plugin/src/next-font/devValidation.ts @@ -36,8 +36,14 @@ export function buildValidationPrelude( try { const realFont = ${importAlias}[${JSON.stringify(fontInfo.exportName)}]; const stubbedFamily = ${JSON.stringify(fontInfo.stubbedFamily)}; - const stubbedWeight = ${fontInfo.stubbedWeight !== undefined ? fontInfo.stubbedWeight : 'undefined'}; - const stubbedStyle = ${fontInfo.stubbedStyle !== undefined ? JSON.stringify(fontInfo.stubbedStyle) : 'undefined'}; + const stubbedWeight = ${ + fontInfo.stubbedWeight !== undefined ? fontInfo.stubbedWeight : 'undefined' + }; + const stubbedStyle = ${ + fontInfo.stubbedStyle !== undefined + ? JSON.stringify(fontInfo.stubbedStyle) + : 'undefined' + }; if (realFont && realFont.style) { let mismatches = []; if (realFont.style.fontFamily !== stubbedFamily) { @@ -63,7 +69,9 @@ try { } if (mismatches.length > 0) { console.error('\\n[vanilla-extract] next/font style mismatch detected'); - console.error('Location: ${path.basename(providerPath)} > ' + ${JSON.stringify(fontInfo.exportName)}); + console.error('Location: ${path.basename( + providerPath, + )} > ' + ${JSON.stringify(fontInfo.exportName)}); mismatches.forEach(function(m) { console.error(' ' + m.property + ':'); console.error(' Turbopack\\'s Value: ' + JSON.stringify(m.actual)); diff --git a/packages/turbopack-plugin/src/next-font/transform.ts b/packages/turbopack-plugin/src/next-font/transform.ts index a6ebe29a8..95576dcc2 100644 --- a/packages/turbopack-plugin/src/next-font/transform.ts +++ b/packages/turbopack-plugin/src/next-font/transform.ts @@ -22,9 +22,19 @@ function computeStubbedFamily( ): string { // Generic CSS font families that should not be quoted const genericFamilies = new Set([ - 'serif', 'sans-serif', 'monospace', 'cursive', 'fantasy', - 'system-ui', 'ui-serif', 'ui-sans-serif', 'ui-monospace', 'ui-rounded', - 'emoji', 'math', 'fangsong' + 'serif', + 'sans-serif', + 'monospace', + 'cursive', + 'fantasy', + 'system-ui', + 'ui-serif', + 'ui-sans-serif', + 'ui-monospace', + 'ui-rounded', + 'emoji', + 'math', + 'fangsong', ]); const formatFamily = (s: string) => { @@ -37,7 +47,7 @@ function computeStubbedFamily( // Quote everything else (custom fonts, fonts with spaces, etc.) return `'${clean}'`; }; - + const parts = [formatFamily(exportName)]; if (isLocal) { @@ -73,7 +83,10 @@ function computeStubbedWeight(weight: any): number | undefined { return undefined; } -function computeStubbedStyle(style: any, isGoogleFont: boolean): string | undefined { +function computeStubbedStyle( + style: any, + isGoogleFont: boolean, +): string | undefined { // If a single style string is provided, use it if (typeof style === 'string' && style && !style.includes(' ')) { return style; @@ -184,7 +197,8 @@ export async function transformNextFont( // Utilities to find fallback arrays const isIdentifierNamed = (node: any, name: string) => node && node.type === 'Identifier' && node.value === name; - const unwrapExpr = (n: any) => (n && typeof n === 'object' && 'expression' in n ? (n as any).expression : n); + const unwrapExpr = (n: any) => + n && typeof n === 'object' && 'expression' in n ? (n as any).expression : n; const toArrayOfStringLiterals = (node: any): string[] | undefined => { node = unwrapExpr(node); if (!node || node.type !== 'ArrayExpression') return undefined; @@ -203,7 +217,11 @@ export async function transformNextFont( if (!expr) continue; if (expr.type === 'ObjectExpression') { for (const prop of expr.properties || []) { - if (!prop || (prop.type !== 'KeyValueProperty' && prop.type !== 'Property')) continue; + if ( + !prop || + (prop.type !== 'KeyValueProperty' && prop.type !== 'Property') + ) + continue; const key = prop.key; let isFallback = false; if (key.type === 'Identifier' && key.value === 'fallback') @@ -211,7 +229,8 @@ export async function transformNextFont( if (key.type === 'StringLiteral' && key.value === 'fallback') isFallback = true; if (isFallback) { - const valNode: any = 'value' in prop ? (prop as any).value : (prop as any).value; + const valNode: any = + 'value' in prop ? (prop as any).value : (prop as any).value; const arr = toArrayOfStringLiterals(unwrapExpr(valNode)); if (arr) return arr; } @@ -227,13 +246,18 @@ export async function transformNextFont( if (!expr) continue; if (expr.type === 'ObjectExpression') { for (const prop of expr.properties || []) { - if (!prop || (prop.type !== 'KeyValueProperty' && prop.type !== 'Property')) continue; + if ( + !prop || + (prop.type !== 'KeyValueProperty' && prop.type !== 'Property') + ) + continue; const key = prop.key; let isSrc = false; if (key.type === 'Identifier' && key.value === 'src') isSrc = true; if (key.type === 'StringLiteral' && key.value === 'src') isSrc = true; if (isSrc) { - const valNode: any = 'value' in prop ? (prop as any).value : (prop as any).value; + const valNode: any = + 'value' in prop ? (prop as any).value : (prop as any).value; const val = unwrapExpr(valNode); return val?.type === 'StringLiteral'; } @@ -249,7 +273,11 @@ export async function transformNextFont( if (!expr) continue; if (expr.type === 'ObjectExpression') { for (const prop of expr.properties || []) { - if (!prop || (prop.type !== 'KeyValueProperty' && prop.type !== 'Property')) continue; + if ( + !prop || + (prop.type !== 'KeyValueProperty' && prop.type !== 'Property') + ) + continue; const key = prop.key; let isWeight = false; if (key.type === 'Identifier' && key.value === 'weight') @@ -257,7 +285,8 @@ export async function transformNextFont( if (key.type === 'StringLiteral' && key.value === 'weight') isWeight = true; if (isWeight) { - const valNode: any = 'value' in prop ? (prop as any).value : (prop as any).value; + const valNode: any = + 'value' in prop ? (prop as any).value : (prop as any).value; const val = unwrapExpr(valNode); if (val.type === 'NumericLiteral') return val.value; if (val.type === 'StringLiteral') return val.value; @@ -275,7 +304,11 @@ export async function transformNextFont( if (!expr) continue; if (expr.type === 'ObjectExpression') { for (const prop of expr.properties || []) { - if (!prop || (prop.type !== 'KeyValueProperty' && prop.type !== 'Property')) continue; + if ( + !prop || + (prop.type !== 'KeyValueProperty' && prop.type !== 'Property') + ) + continue; const key = prop.key; let isStyle = false; if (key.type === 'Identifier' && key.value === 'style') @@ -283,7 +316,8 @@ export async function transformNextFont( if (key.type === 'StringLiteral' && key.value === 'style') isStyle = true; if (isStyle) { - const valNode: any = 'value' in prop ? (prop as any).value : (prop as any).value; + const valNode: any = + 'value' in prop ? (prop as any).value : (prop as any).value; const val = unwrapExpr(valNode); if (val.type === 'StringLiteral') return val.value; if (val.type === 'ArrayExpression') { @@ -314,11 +348,15 @@ export async function transformNextFont( const weight = findWeightInArgs(args); const style = findStyleInArgs(args); const singleSrcString = isLocalSrcSingleString(args); - + const computedFamily = computeStubbedFamily(varName, fb, true); - const computedWeight = singleSrcString ? computeStubbedWeight(weight) : undefined; - const computedStyle = singleSrcString ? computeStubbedStyle(style, false) : undefined; // false = not a Google font - + const computedWeight = singleSrcString + ? computeStubbedWeight(weight) + : undefined; + const computedStyle = singleSrcString + ? computeStubbedStyle(style, false) + : undefined; // false = not a Google font + details.push({ exportName: varName, stubbedFamily: computedFamily, @@ -345,7 +383,7 @@ export async function transformNextFont( }`; const parsed = await parseExpr(stubCode); if (parsed) d.init = parsed; - + changed = true; usedNextFont = true; continue; @@ -358,11 +396,11 @@ export async function transformNextFont( const fb = findFallbackInArgs(args); const weight = findWeightInArgs(args); const style = findStyleInArgs(args); - + const computedFamily = computeStubbedFamily(spec.pretty, fb, false); const computedWeight = computeStubbedWeight(weight); const computedStyle = computeStubbedStyle(style, true); // true = Google font - + details.push({ exportName: varName, stubbedFamily: computedFamily, @@ -389,7 +427,7 @@ export async function transformNextFont( }`; const parsed = await parseExpr(stubCode); if (parsed) d.init = parsed; - + changed = true; usedNextFont = true; continue; diff --git a/packages/turbopack-plugin/src/next-stubs/plugin.test.ts b/packages/turbopack-plugin/src/next-stubs/plugin.test.ts index 12b4c4079..a89711bfb 100644 --- a/packages/turbopack-plugin/src/next-stubs/plugin.test.ts +++ b/packages/turbopack-plugin/src/next-stubs/plugin.test.ts @@ -68,15 +68,24 @@ describe('next-stubs plugin', () => { const testEnv: Record = {}; const esmToCjs = (src: string) => src - .replace(/^export\s+function\s+(\w+)\s*\(/gm, 'exports.$1 = function $1(') + .replace( + /^export\s+function\s+(\w+)\s*\(/gm, + 'exports.$1 = function $1(', + ) .replace(/^export\s+class\s+(\w+)/gm, 'exports.$1 = class $1') .replace(/^export\s+\{[^}]*\};?$/gm, ''); const fn = new Function('exports', esmToCjs(headerStub!.code)); fn(testEnv); - expect(() => testEnv.headers()).toThrow(/not available during vanilla-extract evaluation/); - expect(() => testEnv.cookies()).toThrow(/not available during vanilla-extract evaluation/); - expect(() => testEnv.draftMode()).toThrow(/not available during vanilla-extract evaluation/); + expect(() => testEnv.headers()).toThrow( + /not available during vanilla-extract evaluation/, + ); + expect(() => testEnv.cookies()).toThrow( + /not available during vanilla-extract evaluation/, + ); + expect(() => testEnv.draftMode()).toThrow( + /not available during vanilla-extract evaluation/, + ); }); test('stub classes should throw when instantiated', () => { @@ -86,15 +95,23 @@ describe('next-stubs plugin', () => { const testEnv: Record = {}; const esmToCjs = (src: string) => src - .replace(/^export\s+function\s+(\w+)\s*\(/gm, 'exports.$1 = function $1(') + .replace( + /^export\s+function\s+(\w+)\s*\(/gm, + 'exports.$1 = function $1(', + ) .replace(/^export\s+class\s+(\w+)/gm, 'exports.$1 = class $1') .replace(/^export\s+\{[^}]*\};?$/gm, ''); const fn = new Function('exports', esmToCjs(serverStub!.code)); fn(testEnv); - expect(() => new testEnv.ImageResponse()).toThrow(/not available during vanilla-extract evaluation/); - expect(() => new testEnv.NextRequest()).toThrow(/not available during vanilla-extract evaluation/); - expect(() => new testEnv.NextResponse()).toThrow(/not available during vanilla-extract evaluation/); + expect(() => new testEnv.ImageResponse()).toThrow( + /not available during vanilla-extract evaluation/, + ); + expect(() => new testEnv.NextRequest()).toThrow( + /not available during vanilla-extract evaluation/, + ); + expect(() => new testEnv.NextResponse()).toThrow( + /not available during vanilla-extract evaluation/, + ); }); }); - diff --git a/packages/turbopack-plugin/src/next-stubs/plugin.ts b/packages/turbopack-plugin/src/next-stubs/plugin.ts index e2dc2a2d6..6cdfc87b3 100644 --- a/packages/turbopack-plugin/src/next-stubs/plugin.ts +++ b/packages/turbopack-plugin/src/next-stubs/plugin.ts @@ -237,4 +237,3 @@ export function createNextStubsVePlugin(): Plugin { }, }; } - From ca539f2b70d02e7a8cbdcfd3bfbea1b92985282a Mon Sep 17 00:00:00 2001 From: Robbie Date: Thu, 13 Nov 2025 13:07:17 -0700 Subject: [PATCH 16/52] log cleanup --- packages/turbopack-plugin/src/index.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/turbopack-plugin/src/index.ts b/packages/turbopack-plugin/src/index.ts index 85ba3a9c9..41b35e34c 100644 --- a/packages/turbopack-plugin/src/index.ts +++ b/packages/turbopack-plugin/src/index.ts @@ -58,8 +58,6 @@ const getCompiler = async ( } catch {} singletonCompiler = undefined; processedPaths.clear(); - // helpful log for diagnosing compiler resets during HMR - console.log('[vanilla-extract] Resetting style compiler'); } if (!singletonCompiler) { @@ -68,7 +66,6 @@ const getCompiler = async ( defineEnv[`process.env.${key}`] = JSON.stringify(value); } - console.log('[vanilla-extract] Creating style compiler'); singletonCompiler = createCompiler({ root, identifiers, From 568bd26a7be05939f4b32b689940c389fe9f849c Mon Sep 17 00:00:00 2001 From: Robbie Date: Mon, 17 Nov 2025 13:35:17 -0700 Subject: [PATCH 17/52] enforcement strategy test --- packages/turbopack-plugin/src/index.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/turbopack-plugin/src/index.ts b/packages/turbopack-plugin/src/index.ts index 41b35e34c..c85ba78a0 100644 --- a/packages/turbopack-plugin/src/index.ts +++ b/packages/turbopack-plugin/src/index.ts @@ -81,9 +81,11 @@ const getCompiler = async ( { // avoid module resolution errors by letting turbopack resolve our modules for us name: 'vanilla-extract-turbo-resolve', - // we cannot use enforce: 'pre' because turbopack doesn't support server relative imports - // so we'll let vite try to resolve first, then delegate + enforce: 'pre', async resolveId(source: string, importer: string | undefined) { + // turbopack cannot resolve server relative imports + if (source.startsWith('/')) return null; + // never delegate virtual ids or our stub ids to turbopack if ( source.startsWith('ve-stub:') || From 129f1e540527464d8b407fa4bd7b1e0e0d9aa1bd Mon Sep 17 00:00:00 2001 From: Robbie Date: Mon, 17 Nov 2025 13:52:29 -0700 Subject: [PATCH 18/52] Revert "enforcement strategy test" This reverts commit 568bd26a7be05939f4b32b689940c389fe9f849c. --- packages/turbopack-plugin/src/index.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/turbopack-plugin/src/index.ts b/packages/turbopack-plugin/src/index.ts index c85ba78a0..41b35e34c 100644 --- a/packages/turbopack-plugin/src/index.ts +++ b/packages/turbopack-plugin/src/index.ts @@ -81,11 +81,9 @@ const getCompiler = async ( { // avoid module resolution errors by letting turbopack resolve our modules for us name: 'vanilla-extract-turbo-resolve', - enforce: 'pre', + // we cannot use enforce: 'pre' because turbopack doesn't support server relative imports + // so we'll let vite try to resolve first, then delegate async resolveId(source: string, importer: string | undefined) { - // turbopack cannot resolve server relative imports - if (source.startsWith('/')) return null; - // never delegate virtual ids or our stub ids to turbopack if ( source.startsWith('ve-stub:') || From c1146fe61c8d8c00e2740d44ce34fedc88675ef6 Mon Sep 17 00:00:00 2001 From: Robbie Date: Fri, 21 Nov 2025 13:15:14 -0700 Subject: [PATCH 19/52] cleanup, several misc fixes, drop support for next 15.x --- .../next-15-app-pages-router/next-env.d.ts | 6 - .../next-15-app-pages-router/next.config.ts | 10 - .../next-15-app-pages-router/package.json | 31 --- .../src/app/features/page.tsx | 10 - .../src/app/layout.tsx | 11 - .../src/app/next-font/page.tsx | 39 --- .../next-15-app-pages-router/src/app/page.tsx | 13 - .../src/app/recipes/page.tsx | 10 - .../src/app/sprinkles/page.tsx | 10 - .../src/pages/pages-router/features/index.tsx | 10 - .../src/pages/pages-router/index.tsx | 13 - .../src/pages/pages-router/recipes/index.tsx | 10 - .../pages/pages-router/sprinkles/index.tsx | 10 - .../src/styles/fonts.ts | 85 ------ .../src/styles/fonts/Inter-Regular.woff2 | Bin 111268 -> 0 bytes .../src/styles/nextFont.css.ts | 22 -- .../next-15-app-pages-router/tsconfig.json | 35 --- .../next-16-app-pages-router/package.json | 4 +- .../src/app/function-serializer/page.tsx | 12 + .../src/app/function-serializer/runtime.tsx | 14 + .../src/app/function-serializer/source.css.ts | 12 + .../src/app/function-serializer/styled.ts | 28 ++ .../next-16-app-pages-router/src/app/page.tsx | 2 + .../src/styles/fonts.ts | 86 +++++- packages/compiler/src/compiler.ts | 69 ++--- packages/turbopack-plugin/package.json | 3 +- packages/turbopack-plugin/src/index.ts | 261 ++++++------------ .../src/next-font/devValidation.ts | 97 ------- .../turbopack-plugin/src/next-font/plugin.ts | 57 +--- .../src/next-stubs/plugin.test.ts | 117 -------- .../turbopack-plugin/src/next-stubs/plugin.ts | 239 ---------------- pnpm-lock.yaml | 255 +++++------------ site/docs/integrations/next.md | 4 +- test-helpers/package.json | 1 - 34 files changed, 348 insertions(+), 1238 deletions(-) delete mode 100644 fixtures/next-15-app-pages-router/next-env.d.ts delete mode 100644 fixtures/next-15-app-pages-router/next.config.ts delete mode 100644 fixtures/next-15-app-pages-router/package.json delete mode 100644 fixtures/next-15-app-pages-router/src/app/features/page.tsx delete mode 100644 fixtures/next-15-app-pages-router/src/app/layout.tsx delete mode 100644 fixtures/next-15-app-pages-router/src/app/next-font/page.tsx delete mode 100644 fixtures/next-15-app-pages-router/src/app/page.tsx delete mode 100644 fixtures/next-15-app-pages-router/src/app/recipes/page.tsx delete mode 100644 fixtures/next-15-app-pages-router/src/app/sprinkles/page.tsx delete mode 100644 fixtures/next-15-app-pages-router/src/pages/pages-router/features/index.tsx delete mode 100644 fixtures/next-15-app-pages-router/src/pages/pages-router/index.tsx delete mode 100644 fixtures/next-15-app-pages-router/src/pages/pages-router/recipes/index.tsx delete mode 100644 fixtures/next-15-app-pages-router/src/pages/pages-router/sprinkles/index.tsx delete mode 100644 fixtures/next-15-app-pages-router/src/styles/fonts.ts delete mode 100644 fixtures/next-15-app-pages-router/src/styles/fonts/Inter-Regular.woff2 delete mode 100644 fixtures/next-15-app-pages-router/src/styles/nextFont.css.ts delete mode 100644 fixtures/next-15-app-pages-router/tsconfig.json create mode 100644 fixtures/next-16-app-pages-router/src/app/function-serializer/page.tsx create mode 100644 fixtures/next-16-app-pages-router/src/app/function-serializer/runtime.tsx create mode 100644 fixtures/next-16-app-pages-router/src/app/function-serializer/source.css.ts create mode 100644 fixtures/next-16-app-pages-router/src/app/function-serializer/styled.ts delete mode 100644 packages/turbopack-plugin/src/next-font/devValidation.ts delete mode 100644 packages/turbopack-plugin/src/next-stubs/plugin.test.ts delete mode 100644 packages/turbopack-plugin/src/next-stubs/plugin.ts diff --git a/fixtures/next-15-app-pages-router/next-env.d.ts b/fixtures/next-15-app-pages-router/next-env.d.ts deleted file mode 100644 index 3cd7048ed..000000000 --- a/fixtures/next-15-app-pages-router/next-env.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/// -/// -/// - -// NOTE: This file should not be edited -// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/fixtures/next-15-app-pages-router/next.config.ts b/fixtures/next-15-app-pages-router/next.config.ts deleted file mode 100644 index 36b3fad0b..000000000 --- a/fixtures/next-15-app-pages-router/next.config.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { createVanillaExtractPlugin } from '@vanilla-extract/next-plugin'; -const withVanillaExtract = createVanillaExtractPlugin(); - -export const config = { - distDir: process.env.NODE_ENV === 'production' ? 'dist' : '.next', - experimental: { externalDir: true }, - onDemandEntries: { maxInactiveAge: 1000 * 60 * 60 }, -}; - -export default withVanillaExtract(config); diff --git a/fixtures/next-15-app-pages-router/package.json b/fixtures/next-15-app-pages-router/package.json deleted file mode 100644 index 37ec57fc7..000000000 --- a/fixtures/next-15-app-pages-router/package.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "name": "@fixtures/next-15-app-pages-router", - "version": "0.0.1", - "private": true, - "description": "Next 15 fixture with app + pages routers; supports webpack and turbopack builds", - "scripts": { - "dev": "next dev", - "build": "next build --turbopack", - "start": "next start", - "clean-build": "pnpm clean && pnpm build", - "clean": "pnpm clean:dev && pnpm clean:prod", - "clean:dev": "rm -rf .next", - "clean:prod": "rm -rf dist" - }, - "dependencies": { - "@fixtures/features": "workspace:*", - "@fixtures/recipes": "workspace:*", - "@fixtures/sprinkles": "workspace:*", - "@vanilla-extract/css": "workspace:*", - "@vanilla-extract/recipes": "workspace:*", - "@vanilla-extract/sprinkles": "workspace:*", - "next": "npm:next@15.3.0", - "react": "^18.2.0", - "react-dom": "^18.2.0" - }, - "devDependencies": { - "@types/react": "^18.2.55", - "@vanilla-extract/next-plugin": "workspace:*", - "@vanilla-extract/webpack-plugin": "workspace:*" - } -} diff --git a/fixtures/next-15-app-pages-router/src/app/features/page.tsx b/fixtures/next-15-app-pages-router/src/app/features/page.tsx deleted file mode 100644 index ffffe61a8..000000000 --- a/fixtures/next-15-app-pages-router/src/app/features/page.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import html from '@fixtures/features/src/html'; - -export default function Features() { - return ( - <> - -
- - ); -} diff --git a/fixtures/next-15-app-pages-router/src/app/layout.tsx b/fixtures/next-15-app-pages-router/src/app/layout.tsx deleted file mode 100644 index 225b6038d..000000000 --- a/fixtures/next-15-app-pages-router/src/app/layout.tsx +++ /dev/null @@ -1,11 +0,0 @@ -export default function RootLayout({ - children, -}: { - children: React.ReactNode; -}) { - return ( - - {children} - - ); -} diff --git a/fixtures/next-15-app-pages-router/src/app/next-font/page.tsx b/fixtures/next-15-app-pages-router/src/app/next-font/page.tsx deleted file mode 100644 index 009e049c1..000000000 --- a/fixtures/next-15-app-pages-router/src/app/next-font/page.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import * as directFonts from '../../styles/fonts'; -import { pickedValues } from '../../styles/nextFont.css'; - -export default function NextFontChecks() { - const pairs: Array< - [string, string | number | undefined, string | number | undefined] - > = []; - - for (const [name, vePicked] of Object.entries(pickedValues)) { - const direct = directFonts[name as keyof typeof directFonts]; - const style = direct?.style || {}; - pairs.push([`${name} family`, vePicked.fontFamily, style.fontFamily]); - pairs.push([`${name} weight`, vePicked.fontWeight, style.fontWeight]); - pairs.push([`${name} style`, vePicked.fontStyle, style.fontStyle]); - } - - for (const [name, fromVe, direct] of pairs) { - if (String(fromVe) !== String(direct)) { - throw new Error( - `[next-font] mismatch for ${name}:\n${String(fromVe)} !==\n${String( - direct, - )}`, - ); - } - } - - return ( -
-

next 16 next/font comparisons

-
    - {pairs.map(([name, fromVe, direct]) => ( -
  • - {name}: {fromVe} -
  • - ))} -
-
- ); -} diff --git a/fixtures/next-15-app-pages-router/src/app/page.tsx b/fixtures/next-15-app-pages-router/src/app/page.tsx deleted file mode 100644 index 171850fc9..000000000 --- a/fixtures/next-15-app-pages-router/src/app/page.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Link from 'next/link'; - -export default function Home() { - return ( - <> - sprinkles -
- recipes -
- features - - ); -} diff --git a/fixtures/next-15-app-pages-router/src/app/recipes/page.tsx b/fixtures/next-15-app-pages-router/src/app/recipes/page.tsx deleted file mode 100644 index fcde26b0d..000000000 --- a/fixtures/next-15-app-pages-router/src/app/recipes/page.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import html from '@fixtures/recipes/src/html'; - -export default function Recipes() { - return ( - <> - -
- - ); -} diff --git a/fixtures/next-15-app-pages-router/src/app/sprinkles/page.tsx b/fixtures/next-15-app-pages-router/src/app/sprinkles/page.tsx deleted file mode 100644 index f70bcf5d4..000000000 --- a/fixtures/next-15-app-pages-router/src/app/sprinkles/page.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import html from '@fixtures/sprinkles/src/html'; - -export default function Sprinkles() { - return ( - <> - -
- - ); -} diff --git a/fixtures/next-15-app-pages-router/src/pages/pages-router/features/index.tsx b/fixtures/next-15-app-pages-router/src/pages/pages-router/features/index.tsx deleted file mode 100644 index ffffe61a8..000000000 --- a/fixtures/next-15-app-pages-router/src/pages/pages-router/features/index.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import html from '@fixtures/features/src/html'; - -export default function Features() { - return ( - <> - -
- - ); -} diff --git a/fixtures/next-15-app-pages-router/src/pages/pages-router/index.tsx b/fixtures/next-15-app-pages-router/src/pages/pages-router/index.tsx deleted file mode 100644 index 3a09b6975..000000000 --- a/fixtures/next-15-app-pages-router/src/pages/pages-router/index.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Link from 'next/link'; - -export default function Home() { - return ( - <> - sprinkles -
- recipes -
- features - - ); -} diff --git a/fixtures/next-15-app-pages-router/src/pages/pages-router/recipes/index.tsx b/fixtures/next-15-app-pages-router/src/pages/pages-router/recipes/index.tsx deleted file mode 100644 index fcde26b0d..000000000 --- a/fixtures/next-15-app-pages-router/src/pages/pages-router/recipes/index.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import html from '@fixtures/recipes/src/html'; - -export default function Recipes() { - return ( - <> - -
- - ); -} diff --git a/fixtures/next-15-app-pages-router/src/pages/pages-router/sprinkles/index.tsx b/fixtures/next-15-app-pages-router/src/pages/pages-router/sprinkles/index.tsx deleted file mode 100644 index f70bcf5d4..000000000 --- a/fixtures/next-15-app-pages-router/src/pages/pages-router/sprinkles/index.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import html from '@fixtures/sprinkles/src/html'; - -export default function Sprinkles() { - return ( - <> - -
- - ); -} diff --git a/fixtures/next-15-app-pages-router/src/styles/fonts.ts b/fixtures/next-15-app-pages-router/src/styles/fonts.ts deleted file mode 100644 index 4ec1642bc..000000000 --- a/fixtures/next-15-app-pages-router/src/styles/fonts.ts +++ /dev/null @@ -1,85 +0,0 @@ -import localF from 'next/font/local'; -import { - Roboto as R, - Roboto_Flex as RF, - Noto_Serif as NotoSerif, -} from 'next/font/google'; - -// intentionally odd local variable name to exercise transform edge-cases -export const __Local_Font = localF({ - src: [{ path: './fonts/Inter-Regular.woff2', weight: '400' }], - fallback: ['system-ui'], -}); - -// renamed imports -export const _Roboto = R({ - weight: '400', - subsets: ['latin'], - fallback: ['system-ui', 'skibidi', 'third font'], - style: ['italic', 'normal'], -}); - -export const _Flex = RF({ - subsets: ['latin', 'greek'], - weight: ['200', '300'], - adjustFontFallback: false, - style: 'normal', - fallback: ['system-ui'], -}); - -// style properties are consumed dynamically in nextFont.css.ts via pickedValues - -// mirror additional cases from next-16 -export const _localMultiFallback = localF({ - src: [{ path: './fonts/Inter-Regular.woff2' }], - fallback: ['system-ui', 'ui-monospace', 'third font'], -}); - -export const _localExplicit = localF({ - src: [{ path: './fonts/Inter-Regular.woff2' }], - weight: '400', - style: 'italic', - fallback: ['Times New Roman', 'Gill Sans'], -}); - -export const _localDupFallback = localF({ - src: [{ path: './fonts/Inter-Regular.woff2' }], - fallback: ['system-ui', 'system-ui', 'ui-serif', 'weird_font'], -}); - -export const _robotoDefaultStyle = R({ - subsets: ['latin'], - fallback: ['serif'], -}); - -export const _robotoItalic = R({ - subsets: ['latin'], - fallback: ['sans-serif'], - style: 'italic', - weight: '400', -}); - -export const _robotoMultiStyle = R({ - subsets: ['latin'], - fallback: ['monospace'], - style: ['italic', 'normal'], -}); - -export const _robotoWeightStr = R({ weight: '400' }); - -export const _robotoWeightVar = R({ weight: 'variable' }); - -export const _notoSerif = NotoSerif({ - subsets: ['latin'], - fallback: ['system-ui'], -}); - -export const _robotoFallbackSpaces = R({ - subsets: ['latin'], - fallback: ['Times New Roman', 'Gill Sans', 'Avenir Next'], -}); - -export const _robotoDupFallback = R({ - subsets: ['latin'], - fallback: ['system-ui', 'system-ui', 'ui-serif', 'weird_font'], -}); diff --git a/fixtures/next-15-app-pages-router/src/styles/fonts/Inter-Regular.woff2 b/fixtures/next-15-app-pages-router/src/styles/fonts/Inter-Regular.woff2 deleted file mode 100644 index 2bcd222ecfae996d035ff72bf70672305cc29261..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 111268 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 YlP_pm ztM9Q_f^Ju1U)kTCx1hKLRy|sob}2&j2&ldb*lu^!byk+hq!~}+_;u0>%whduh(~N+;TSmC{wFV7$q?xsq7HHtMXK!Bh!IC?>zVs z4&UzGhlt&#PF~ytjIoG2{EVzwA9Ayn;0-nF>|uE@byk1q(c@|?JQr1hR#*>F-g@|3 z?d-u%RhtFtnGy!$p9|0OCFNRm^z%%F8(4ACq<8yCY_Hc|D8qZYSm*17Mn{Q9zjQ7{ zWfdcpJ30>$V|E`dKo#O~);}W*c`NIB=ixeXAWr4{M&@5$vHbWzt2~(8LaUJGqAPVJ)q4w>fZ@NJ>GjaD5Za+z3T(KUb6?k6#p55W& zzdE(3wqIfzb5xdWH)5pQl}g&^b7iso(49RpBYsl+z&Ctcv$65{CqiX_R~PMr-M*qk zMelENM32kx+LqlCdk3_bIp9<3eCw7gFi=ub6zCs=GQ3KL9W)6`Ru|96ft0=62$k8| zVOV(-+H(-=L$ddL>u0g3Jh$w-J3c;QaKf~Qd8czNBf7Gtu6nwvZPy`U^C3&S1G(q1 zr$34x5bWzPFd;1p#28_0z$r$+P1q9wJL13yW(6F|N~Me%`>)4TzsrGQFYie+@f8cJCrV-T8JxXD=5 zJrdSonp)91%bh=&Jz=jb$AhL5qzRPPEoM!%zEg%Kmt)s!=7$I^i}Dw`EWjbBL`$Y& zk}*nY;`rIChMh(Yow>6GBp+SYeW}>tp|!=!bB2q%Z(B3b*gui-0a^NY>l{__6Ya62 z|71g`ABa3sAy;yce)@2JibjfE+luE(DnDt`T(ig~O7}|uBO2@wCOa5tDaE8xe?iZE zt*pzaU9d^Q#vuY#Fso`TJdBjVVM`O0B}y8JDJ3sq03iLV_Cq=+3<|t~4a7Kk^7_}M zNH1LGzJt|m%v3vaW3xW38?;gCe1DPq#a+l$Qf($O*d_&#;zzJb8F%kd4 zDm2=jD7%Ui)nEr}CGT*xE9D?Qe9XWs&QympaHq}Xm6%HuY?yKrlB9-#hh`B0F<~8|0QHjtaY~aZX{1O<$ID_nw3iwV4}3~!{1*h z#VcpV3ah`-sxSN*|IWk;5<3FpWmT36p}{ zN_fRy`tLdWq)NUmPTqv$i!{@<^C%1Q5fW#+0e~-Qe3UT7t$|rg0u`OtsXsEBvxhWS zE7|kU_1*MtPEU9)`p2tm)MQ!Iupaeq*!y==LwwzSuC(eJo=E9lU?9YVujY_ik7wBL z>uSFMtJbM;yuQ)g)uzol9JNzU&LKDMQyh`YBqq@dSYk;Fn*r-fb-UVd+oWboS)6RI zN2|l~sj}br`}EUPX6D@7{fErZ{Qohkhw&fq7yDmSZp3$HueoH@=YQ$*Lvn;hQ2X>$ zcbzb2G^_jOuIW2hZ1hJP{J8UDaeecZPiFakc<1av@zkwVXooy%qiXxkXjWg3$`WM7 z0n_HVx11ns0NDwuqwC2AhFV8Qzo$uWXHOJNH2)mKMzM9HUoEAxekuC}&whSue;Cdq z@UwHPG3oEs->kut2X3FEob+#Fcj*Y!&Yfp6coz;Y_lx;sfB8PvFSHl$J^jQ_t(kY! zfyvDbe-{Au-kw>)S1XmVQET`c7FZ7JOEUN!m5Nsdt;|OyylC0Ik$+f)W+k_l)ViLB z4(@E`kX%u~|3$T`@7)c~e|j{nZJWXO^pV1}(oi0(v95cK8=LF5CVe}m;N@2>1pGff C!H4<) diff --git a/fixtures/next-15-app-pages-router/src/styles/nextFont.css.ts b/fixtures/next-15-app-pages-router/src/styles/nextFont.css.ts deleted file mode 100644 index 6b3175e6e..000000000 --- a/fixtures/next-15-app-pages-router/src/styles/nextFont.css.ts +++ /dev/null @@ -1,22 +0,0 @@ -import * as fonts from './fonts'; - -export const pickedValues = Object.fromEntries( - Object.entries(fonts).map( - ([importName, { style }]) => - [ - importName, - { - fontFamily: style.fontFamily, - fontWeight: style.fontWeight, - fontStyle: style.fontStyle, - }, - ] as const, - ), -) as Record< - keyof typeof fonts, - { - fontFamily: string; - fontWeight: number; - fontStyle: string; - } ->; diff --git a/fixtures/next-15-app-pages-router/tsconfig.json b/fixtures/next-15-app-pages-router/tsconfig.json deleted file mode 100644 index 601b3702c..000000000 --- a/fixtures/next-15-app-pages-router/tsconfig.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "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": "preserve", - "incremental": true, - "plugins": [ - { - "name": "next" - } - ], - "paths": { - "@/*": ["./*"] - } - }, - "include": [ - "**/*.mts", - "**/*.ts", - "**/*.tsx", - ".next/dev/types/**/*.ts", - ".next/types/**/*.ts", - "next-env.d.ts", - "dist/types/**/*.ts" - ], - "exclude": ["node_modules"] -} diff --git a/fixtures/next-16-app-pages-router/package.json b/fixtures/next-16-app-pages-router/package.json index bce37ccb5..27b643ad8 100644 --- a/fixtures/next-16-app-pages-router/package.json +++ b/fixtures/next-16-app-pages-router/package.json @@ -20,8 +20,8 @@ "@vanilla-extract/recipes": "workspace:*", "@vanilla-extract/sprinkles": "workspace:*", "next": "npm:next@^16.0.0", - "react": "^18.2.0", - "react-dom": "^18.2.0" + "react": "^19.2.0", + "react-dom": "^19.2.0" }, "devDependencies": { "@types/react": "^18.2.55", diff --git a/fixtures/next-16-app-pages-router/src/app/function-serializer/page.tsx b/fixtures/next-16-app-pages-router/src/app/function-serializer/page.tsx new file mode 100644 index 000000000..426255cca --- /dev/null +++ b/fixtures/next-16-app-pages-router/src/app/function-serializer/page.tsx @@ -0,0 +1,12 @@ +import { RedBox, BlueText } from './source.css'; + +export default function Page() { + return ( +

+

Function Serializer Test

+ + This should be a red box with blue text inside + +
+ ); +} diff --git a/fixtures/next-16-app-pages-router/src/app/function-serializer/runtime.tsx b/fixtures/next-16-app-pages-router/src/app/function-serializer/runtime.tsx new file mode 100644 index 000000000..6ead362c9 --- /dev/null +++ b/fixtures/next-16-app-pages-router/src/app/function-serializer/runtime.tsx @@ -0,0 +1,14 @@ +export function runtimeStyled( + tag: Tag, + className: string, +) { + return function Component(props: React.ComponentProps) { + const Element = tag as any; + return ( + + ); + }; +} diff --git a/fixtures/next-16-app-pages-router/src/app/function-serializer/source.css.ts b/fixtures/next-16-app-pages-router/src/app/function-serializer/source.css.ts new file mode 100644 index 000000000..85d8aa56d --- /dev/null +++ b/fixtures/next-16-app-pages-router/src/app/function-serializer/source.css.ts @@ -0,0 +1,12 @@ +import { styled } from './styled'; + +export const RedBox = styled('div', { + backgroundColor: 'red', + color: 'white', + padding: '20px', +}); + +export const BlueText = styled('span', { + color: 'blue', + fontWeight: 'bold', +}); diff --git a/fixtures/next-16-app-pages-router/src/app/function-serializer/styled.ts b/fixtures/next-16-app-pages-router/src/app/function-serializer/styled.ts new file mode 100644 index 000000000..d4b8e684b --- /dev/null +++ b/fixtures/next-16-app-pages-router/src/app/function-serializer/styled.ts @@ -0,0 +1,28 @@ +import { addFunctionSerializer } from '@vanilla-extract/css/functionSerializer'; +import { style, type StyleRule } from '@vanilla-extract/css'; +import { runtimeStyled } from './runtime'; +import React from 'react'; + +if (React.version.includes('canary')) { + throw new Error( + 'detected vendored React in styles, this will cause errors in some projects', + ); +} + +export function styled( + tag: Tag, + styles: StyleRule, +) { + const className = style(styles); + const args = [tag, className] as const; + + const Component = runtimeStyled(...args); + + addFunctionSerializer(Component, { + importPath: './runtime', + importName: 'runtimeStyled', + args, + }); + + return Component; +} diff --git a/fixtures/next-16-app-pages-router/src/app/page.tsx b/fixtures/next-16-app-pages-router/src/app/page.tsx index 171850fc9..307038b85 100644 --- a/fixtures/next-16-app-pages-router/src/app/page.tsx +++ b/fixtures/next-16-app-pages-router/src/app/page.tsx @@ -8,6 +8,8 @@ export default function Home() { recipes
features +
+ function serializer ); } diff --git a/fixtures/next-16-app-pages-router/src/styles/fonts.ts b/fixtures/next-16-app-pages-router/src/styles/fonts.ts index 520b00636..0970d16e6 100644 --- a/fixtures/next-16-app-pages-router/src/styles/fonts.ts +++ b/fixtures/next-16-app-pages-router/src/styles/fonts.ts @@ -1,7 +1,12 @@ // --- 1. Imports --- // Test weirdly named imports for both local and google fonts. -import { Inter as Weird_Renamed_Font$8a_ } from 'next/font/google'; +import { + Noto_Serif as NotoSerif, + Roboto as R, + Roboto_Flex as RF, + Inter as Weird_Renamed_Font$8a_, +} from 'next/font/google'; import weird_renamed_local$3_ from 'next/font/local'; // ================================================================= @@ -132,3 +137,82 @@ export const googleWeightArray = Weird_Renamed_Font$8a_({ subsets: ['latin'], weight: ['400', '700', '900'], }); + +// intentionally odd local variable name to exercise transform edge-cases +export const __Local_Font = weird_renamed_local$3_({ + src: [{ path: './fonts/Inter-Regular.woff2', weight: '400' }], + fallback: ['system-ui'], +}); + +// renamed imports +export const _Roboto = R({ + weight: '400', + subsets: ['latin'], + fallback: ['system-ui', 'skibidi', 'third font'], + style: ['italic', 'normal'], +}); + +export const _Flex = RF({ + subsets: ['latin', 'greek'], + weight: ['200', '300'], + adjustFontFallback: false, + style: 'normal', + fallback: ['system-ui'], +}); + +// style properties are consumed dynamically in nextFont.css.ts via pickedValues + +// mirror additional cases from next-16 +export const _localMultiFallback = weird_renamed_local$3_({ + src: [{ path: './fonts/Inter-Regular.woff2' }], + fallback: ['system-ui', 'ui-monospace', 'third font'], +}); + +export const _localExplicit = weird_renamed_local$3_({ + src: [{ path: './fonts/Inter-Regular.woff2' }], + weight: '400', + style: 'italic', + fallback: ['Times New Roman', 'Gill Sans'], +}); + +export const _localDupFallback = weird_renamed_local$3_({ + src: [{ path: './fonts/Inter-Regular.woff2' }], + fallback: ['system-ui', 'system-ui', 'ui-serif', 'weird_font'], +}); + +export const _robotoDefaultStyle = R({ + subsets: ['latin'], + fallback: ['serif'], +}); + +export const _robotoItalic = R({ + subsets: ['latin'], + fallback: ['sans-serif'], + style: 'italic', + weight: '400', +}); + +export const _robotoMultiStyle = R({ + subsets: ['latin'], + fallback: ['monospace'], + style: ['italic', 'normal'], +}); + +export const _robotoWeightStr = R({ weight: '400' }); + +export const _robotoWeightVar = R({ weight: 'variable' }); + +export const _notoSerif = NotoSerif({ + subsets: ['latin'], + fallback: ['system-ui'], +}); + +export const _robotoFallbackSpaces = R({ + subsets: ['latin'], + fallback: ['Times New Roman', 'Gill Sans', 'Avenir Next'], +}); + +export const _robotoDupFallback = R({ + subsets: ['latin'], + fallback: ['system-ui', 'system-ui', 'ui-serif', 'weird_font'], +}); diff --git a/packages/compiler/src/compiler.ts b/packages/compiler/src/compiler.ts index 6a0c10a90..9c24c9b3e 100644 --- a/packages/compiler/src/compiler.ts +++ b/packages/compiler/src/compiler.ts @@ -257,7 +257,7 @@ export interface CreateCompilerOptions { * @default true */ enableFileWatcher?: boolean; - cssImportSpecifier?: (filePath: string) => string; + cssImportSpecifier?: (filePath: string, css: string) => string; identifiers?: IdentifierOption; viteConfig?: ViteUserConfig; /** @deprecated */ @@ -303,17 +303,6 @@ export const createCompiler = ({ composedClassLists: Array; }>(root); - const collectWatchFiles = (moduleNode: ModuleNode | null | undefined) => { - if (!moduleNode) { - return new Set(); - } - - const scanModule = createModuleScanner(); - const { watchFiles } = scanModule(moduleNode); - - return watchFiles; - }; - return { async processVanillaFile( filePath, @@ -401,13 +390,8 @@ export const createCompiler = ({ }, }; - try { - const { - fileExports, - cssImports, - watchFiles, - lastInvalidationTimestamp, - } = await lock(async () => { + const { fileExports, cssImports, watchFiles, lastInvalidationTimestamp } = + await lock(async () => { runner.cssAdapter = cssAdapter; const fileExports = await runner.executeFile(filePath); @@ -465,9 +449,13 @@ export const createCompiler = ({ ); } - if (cssObjs || cachedCss?.css) { + const cssContent = cssObjs + ? cssCache.get(cssDepModuleId)?.css + : cachedCss?.css; + + if (cssContent) { cssImports.push( - `import '${cssImportSpecifier(cssDepModuleId)}';`, + `import '${cssImportSpecifier(cssDepModuleId, cssContent)}';`, ); } } @@ -480,34 +468,21 @@ export const createCompiler = ({ }; }); - const result: ProcessedVanillaFile = { - source: serializeVanillaModule( - cssImports, - fileExports, - null, // This compiler currently retains all composition classes - ), - watchFiles, - }; - - processVanillaFileCache.set(cacheKey, { - lastInvalidationTimestamp, - result, - }); - - return result; - } catch (error) { - const moduleId = normalizePath(filePath); - const moduleNode = server.moduleGraph.getModuleById(moduleId); - const watchFiles = collectWatchFiles(moduleNode) ?? new Set(); - - if (watchFiles.size === 0) { - watchFiles.add(filePath); - } + const result: ProcessedVanillaFile = { + source: serializeVanillaModule( + cssImports, + fileExports, + null, // This compiler currently retains all composition classes + ), + watchFiles, + }; - (error as Error & { watchFiles?: Set }).watchFiles = watchFiles; + processVanillaFileCache.set(cacheKey, { + lastInvalidationTimestamp, + result, + }); - throw error; - } + return result; }, getCssForFile(filePath: string) { filePath = isAbsolute(filePath) ? filePath : join(root, filePath); diff --git a/packages/turbopack-plugin/package.json b/packages/turbopack-plugin/package.json index 64a4760cb..641f605b2 100644 --- a/packages/turbopack-plugin/package.json +++ b/packages/turbopack-plugin/package.json @@ -26,7 +26,8 @@ "@vanilla-extract/integration": "workspace:^" }, "devDependencies": { - "next": "12.3.4" + "next": "12.3.4", + "vite": "^7.0.3" }, "peerDependencies": { "next": ">=12.1.7" diff --git a/packages/turbopack-plugin/src/index.ts b/packages/turbopack-plugin/src/index.ts index 41b35e34c..f9eb78a1c 100644 --- a/packages/turbopack-plugin/src/index.ts +++ b/packages/turbopack-plugin/src/index.ts @@ -4,109 +4,101 @@ import { } from '@vanilla-extract/compiler'; import { type IdentifierOption } from '@vanilla-extract/integration'; import * as path from 'node:path'; -import { buildValidationPrelude } from './next-font/devValidation'; -import { - createNextFontVePlugins, - type NextFontPluginState, -} from './next-font/plugin'; -import { createNextStubsVePlugin } from './next-stubs/plugin'; +import { createNextFontVePlugin } from './next-font/plugin'; +import type fs from 'node:fs'; + +export type TurboLoaderContext = { + getOptions: { + (): OptionsType; + }; + getResolve: (options: unknown) => { + ( + context: string, + request: string, + callback: ( + err: Error | null, + res?: string | false, + req?: unknown, + ) => void, + ): void; + (context: string, request: string): Promise; + }; + + fs: { + readFile: typeof fs.readFile; + }; -type LoaderContext = { - getOptions: (schema?: unknown) => OptionsType; - getResolve?: ( - options?: unknown, - ) => ( - context: string, - request: string, - callback: (err: any, result?: string) => void, - ) => void; - async: () => ( - err?: Error | null, - content?: string, - sourceMap?: unknown, - additionalData?: unknown, - ) => void; - addDependency: (file: string) => void; rootContext: string; resourcePath: string; - resourceQuery?: string; + + mode?: never; // turbopack doesn't support this, use process.env.NODE_ENV instead }; export type TurboLoaderOptions = { identifiers: IdentifierOption | null; - nextEnv: Record | null; outputCss: boolean | null; - distDir: string | null; + nextEnv: Record | null; }; -let singletonCompiler: VeCompiler | undefined; -// font state includes family, weight, and style for validation -let nextFontState: NextFontPluginState | undefined; -let processedPaths = new Set(); - -const getCompiler = async ( - root: string, - identifiers: IdentifierOption, - getResolve: LoaderContext['getResolve'] | undefined, - nextEnv: Record | null | undefined, - currentFilePath: string, -): Promise => { - // If we've already processed this file with the current compiler, create a fresh compiler. - if (singletonCompiler && processedPaths.has(currentFilePath)) { - try { - await singletonCompiler.close(); - } catch {} - singletonCompiler = undefined; - processedPaths.clear(); - } - - if (!singletonCompiler) { +let globalCompiler: VeCompiler | undefined; + +const getOrMakeCompiler = async ({ + identifiers, + nextEnv, + loaderContext, +}: { + identifiers: IdentifierOption; + nextEnv: Record | null; + loaderContext: TurboLoaderContext; +}): Promise => { + if (!globalCompiler) { const defineEnv: Record = {}; for (const [key, value] of Object.entries(nextEnv ?? {})) { defineEnv[`process.env.${key}`] = JSON.stringify(value); } - singletonCompiler = createCompiler({ - root, + globalCompiler = createCompiler({ + root: loaderContext.rootContext, identifiers, + cssImportSpecifier: (_filePath, css) => { + const base64 = Buffer.from(css, 'utf8').toString('base64'); + return `data:text/css;base64,${base64}`; + }, viteConfig: { define: defineEnv, plugins: [ - createNextStubsVePlugin(), - ...(() => { - const created = createNextFontVePlugins(); - nextFontState = created.state; - return created.plugins; - })(), + createNextFontVePlugin(), + { + // route vite file reads through turbopack's fs to handle dependency tracking automatically + name: 'vanilla-extract-turbo-fs', + enforce: 'pre', + async load(id: string) { + return new Promise((resolve, reject) => { + loaderContext.fs.readFile(id, (error, data) => { + if (error) { + reject(error); + } else if (typeof data === 'string') { + resolve({ code: data }); + } else resolve(null); + }); + }); + }, + }, { // avoid module resolution errors by letting turbopack resolve our modules for us name: 'vanilla-extract-turbo-resolve', - // we cannot use enforce: 'pre' because turbopack doesn't support server relative imports - // so we'll let vite try to resolve first, then delegate + // do NOT enforce pre as it breaks builds on some projects (not sure why) async resolveId(source: string, importer: string | undefined) { - // never delegate virtual ids or our stub ids to turbopack - if ( - source.startsWith('ve-stub:') || - source.startsWith('\\0') || - source.includes('\\0') || - !getResolve || - !importer || - importer.startsWith('ve-stub:') || - importer.startsWith('\\0') || - importer.includes('\\0') - ) { + if (source.startsWith('/')) return null; // turbopack doesn't support server relative imports + if (!importer) return null; + + // react is vendored by next, so we need to use the upstream version to avoid errors + if (source === 'react' || source === 'react-dom') { return null; } - const resolver = getResolve({}); - return new Promise((resolve) => { - resolver( - path.dirname(importer), - source, - (_err: any, result?: string) => { - resolve(result); - }, - ); - }); + + const resolver = loaderContext.getResolve({}); + return resolver(path.dirname(importer), source); }, }, ], @@ -114,103 +106,26 @@ const getCompiler = async ( }); } - // record the file as processed for this compiler instance - processedPaths.add(currentFilePath); - - return singletonCompiler; + return globalCompiler; }; -/** - * The Turbopack-compatible loader for vanilla-extract. - * - JS mode: processes .css.{ts,tsx,js,jsx} files, compiles and extracts CSS. - * - CSS mode: when applied to a request with ?ve-source, emits the provided CSS. - */ export default async function turbopackVanillaExtractLoader( - this: LoaderContext, + this: TurboLoaderContext, ) { - const callback = this.async(); - try { - const options = this.getOptions(); - const identifiers = - options.identifiers ?? - (process.env.NODE_ENV === 'production' ? 'short' : 'debug'); - const outputCss = options.outputCss ?? true; - - const compiler = await getCompiler( - this.rootContext, - identifiers, - this.getResolve, - options.nextEnv, - this.resourcePath, - ); - const { source: veSource, watchFiles } = await compiler.processVanillaFile( - this.resourcePath, - { outputCss }, - ); - - watchFiles?.forEach((file) => this.addDependency(file)); - - // prepend next/font dev validation if this file used any providers - let veSourceWithValidation = veSource; - if (nextFontState && watchFiles && watchFiles.size > 0) { - const usedProviders = [...watchFiles].filter((f) => - nextFontState!.fontProviders.has(f), - ); - if (usedProviders.length > 0) { - const prelude = buildValidationPrelude( - this.resourcePath, - usedProviders, - nextFontState.fontProviderDetails, - ); - if (prelude) { - veSourceWithValidation = `${prelude}\n${veSource}`; - } - } - } - - // rewrite compiler-emitted .vanilla.css imports to data URL side-effect imports - - let transformed = veSourceWithValidation; - const importRegex = /import\s+['"](.+?\.vanilla\.css)['"];?/g; - const matches = Array.from(veSourceWithValidation.matchAll(importRegex)); - - for (const match of matches) { - const fullImport = match[0]; - const cssImportPath = match[1]; - if (!fullImport || !cssImportPath) continue; - - let cssModulePath = cssImportPath; - if (cssModulePath.endsWith('.vanilla.css')) { - cssModulePath = cssModulePath.slice(0, -'.vanilla.css'.length); - } - - const { css } = compiler.getCssForFile(cssModulePath); - - if (css) { - const base64 = Buffer.from(css, 'utf8').toString('base64'); - const dataUrl = `data:text/css;base64,${base64}`; - const newImport = `import '${dataUrl}';`; - transformed = transformed.replace(fullImport, newImport); - } else { - // no css available for this import; drop it - transformed = transformed.replace(fullImport, ''); - } - } - - callback(null, transformed); - } catch (e) { - const errorWithWatchFiles = e as Error & { - watchFiles?: Iterable; - }; - - if (errorWithWatchFiles.watchFiles) { - for (const file of errorWithWatchFiles.watchFiles) { - this.addDependency(file); - } - } else { - this.addDependency(this.resourcePath); - } - - callback(e as Error); - } + const options = this.getOptions() as TurboLoaderOptions; + const identifiers = + options.identifiers ?? + (process.env.NODE_ENV === 'production' ? 'short' : 'debug'); + const outputCss = options.outputCss ?? true; + + const compiler = await getOrMakeCompiler({ + identifiers, + nextEnv: options.nextEnv, + loaderContext: this, + }); + const { source } = await compiler.processVanillaFile(this.resourcePath, { + outputCss, + }); + + return source; } diff --git a/packages/turbopack-plugin/src/next-font/devValidation.ts b/packages/turbopack-plugin/src/next-font/devValidation.ts deleted file mode 100644 index 70784efcd..000000000 --- a/packages/turbopack-plugin/src/next-font/devValidation.ts +++ /dev/null @@ -1,97 +0,0 @@ -import * as path from 'node:path'; - -export function buildValidationPrelude( - absolutePath: string, - usedProviders: string[], - detailsMap: Map< - string, - { - exportName: string; - stubbedFamily: string; - stubbedWeight: number | undefined; - stubbedStyle: string | undefined; - }[] - >, -): string { - if (process.env.NODE_ENV === 'production' || usedProviders.length === 0) - return ''; - - const imports: string[] = []; - const validationLogic: string[] = []; - - usedProviders.forEach((providerPath, index) => { - const importAlias = `__ve_font_prov_${index}`; - let relativePath = path.posix.relative( - path.dirname(absolutePath), - providerPath, - ); - relativePath = relativePath.replace(/\.(ts|tsx)$/, ''); - if (!relativePath.startsWith('.')) relativePath = `./${relativePath}`; - imports.push(`import * as ${importAlias} from "${relativePath}";`); - - const details = detailsMap.get(providerPath); - if (details) { - details.forEach((fontInfo) => { - const validationSnippet = ` -try { - const realFont = ${importAlias}[${JSON.stringify(fontInfo.exportName)}]; - const stubbedFamily = ${JSON.stringify(fontInfo.stubbedFamily)}; - const stubbedWeight = ${ - fontInfo.stubbedWeight !== undefined ? fontInfo.stubbedWeight : 'undefined' - }; - const stubbedStyle = ${ - fontInfo.stubbedStyle !== undefined - ? JSON.stringify(fontInfo.stubbedStyle) - : 'undefined' - }; - if (realFont && realFont.style) { - let mismatches = []; - if (realFont.style.fontFamily !== stubbedFamily) { - mismatches.push({ - property: 'fontFamily', - expected: stubbedFamily, - actual: realFont.style.fontFamily - }); - } - if (realFont.style.fontWeight !== stubbedWeight) { - mismatches.push({ - property: 'fontWeight', - expected: stubbedWeight, - actual: realFont.style.fontWeight - }); - } - if (realFont.style.fontStyle !== stubbedStyle) { - mismatches.push({ - property: 'fontStyle', - expected: stubbedStyle, - actual: realFont.style.fontStyle - }); - } - if (mismatches.length > 0) { - console.error('\\n[vanilla-extract] next/font style mismatch detected'); - console.error('Location: ${path.basename( - providerPath, - )} > ' + ${JSON.stringify(fontInfo.exportName)}); - mismatches.forEach(function(m) { - console.error(' ' + m.property + ':'); - console.error(' Turbopack\\'s Value: ' + JSON.stringify(m.actual)); - console.error(' Vanilla Extract\\'s Value: ' + JSON.stringify(m.expected)); - }); - console.error('This is a bug in vanilla-extract. Please report it at:'); - console.error('https://github.com/vanilla-extract-css/vanilla-extract/issues\\n'); - } - } -} catch (e) { /* ignore */ }`; - validationLogic.push(validationSnippet); - }); - } - }); - - if (validationLogic.length === 0) return ''; - - return `${imports.join('\n')} -if (process.env.NODE_ENV !== 'production') { -${validationLogic.join('\n')} -} -`; -} diff --git a/packages/turbopack-plugin/src/next-font/plugin.ts b/packages/turbopack-plugin/src/next-font/plugin.ts index 770e1304a..987e08c89 100644 --- a/packages/turbopack-plugin/src/next-font/plugin.ts +++ b/packages/turbopack-plugin/src/next-font/plugin.ts @@ -1,48 +1,8 @@ import { transformNextFont } from './transform'; +import type { Plugin } from 'vite'; -export type NextFontPluginState = { - fontProviders: Set; - fontProviderDetails: Map< - string, - { - exportName: string; - stubbedFamily: string; - stubbedWeight: number | undefined; - stubbedStyle: string | undefined; - }[] - >; -}; - -type Plugin = { - name: string; - enforce?: 'pre' | 'post'; - transform?: ( - code: string, - id: string, - ) => - | Promise<{ code: string; map: any } | null> - | { code: string; map: any } - | null; -}; - -export function createNextFontVePlugins(): { - plugins: Plugin[]; - state: NextFontPluginState; -} { - const state: NextFontPluginState = { - fontProviders: new Set(), - fontProviderDetails: new Map< - string, - { - exportName: string; - stubbedFamily: string; - stubbedWeight: number | undefined; - stubbedStyle: string | undefined; - }[] - >(), - }; - - const nextFontStubPlugin: Plugin = { +export function createNextFontVePlugin(): Plugin { + return { name: 've-next-font-stub', enforce: 'pre', async transform(code: string, id: string) { @@ -50,16 +10,7 @@ export function createNextFontVePlugins(): { return null; } - const result = await transformNextFont(code, id); - if (result.usedNextFont) { - state.fontProviders.add(id); - if (result.details.length > 0) { - state.fontProviderDetails.set(id, result.details); - } - } - return result.changed ? { code: result.code, map: null } : null; + return await transformNextFont(code, id); }, }; - - return { plugins: [nextFontStubPlugin], state }; } diff --git a/packages/turbopack-plugin/src/next-stubs/plugin.test.ts b/packages/turbopack-plugin/src/next-stubs/plugin.test.ts deleted file mode 100644 index a89711bfb..000000000 --- a/packages/turbopack-plugin/src/next-stubs/plugin.test.ts +++ /dev/null @@ -1,117 +0,0 @@ -import { createNextStubsVePlugin } from './plugin'; - -describe('next-stubs plugin', () => { - const plugin = createNextStubsVePlugin(); - - test('should resolve stubbed modules', () => { - expect(plugin.resolveId?.('next/headers', undefined)).toEqual({ - id: 've-stub:next/headers', - }); - expect(plugin.resolveId?.('next/cache', undefined)).toEqual({ - id: 've-stub:next/cache', - }); - expect(plugin.resolveId?.('next/navigation', undefined)).toEqual({ - id: 've-stub:next/navigation', - }); - expect(plugin.resolveId?.('next/server', undefined)).toEqual({ - id: 've-stub:next/server', - }); - expect(plugin.resolveId?.('next/draft-mode', undefined)).toEqual({ - id: 've-stub:next/draft-mode', - }); - expect(plugin.resolveId?.('next/cookies', undefined)).toEqual({ - id: 've-stub:next/cookies', - }); - }); - - test('should not resolve non-stubbed modules', () => { - expect(plugin.resolveId?.('next/image', undefined)).toBe(null); - expect(plugin.resolveId?.('react', undefined)).toBe(null); - expect(plugin.resolveId?.('./myModule', undefined)).toBe(null); - }); - - test('should load stub code for resolved modules', () => { - const headerStub = plugin.load?.('ve-stub:next/headers'); - expect(headerStub).toBeTruthy(); - expect(headerStub?.code).toContain('function headers()'); - expect(headerStub?.code).toContain('function cookies()'); - expect(headerStub?.code).toContain('function draftMode()'); - - const cacheStub = plugin.load?.('ve-stub:next/cache'); - expect(cacheStub).toBeTruthy(); - expect(cacheStub?.code).toContain('function unstable_cache()'); - expect(cacheStub?.code).toContain('function revalidateTag()'); - - const navigationStub = plugin.load?.('ve-stub:next/navigation'); - expect(navigationStub).toBeTruthy(); - expect(navigationStub?.code).toContain('function redirect()'); - expect(navigationStub?.code).toContain('function useRouter()'); - - const serverStub = plugin.load?.('ve-stub:next/server'); - expect(serverStub).toBeTruthy(); - expect(serverStub?.code).toContain('class ImageResponse'); - expect(serverStub?.code).toContain('function after()'); - expect(serverStub?.code).toContain('function connection()'); - }); - - test('should not load code for non-stub ids', () => { - expect(plugin.load?.('next/image')).toBe(null); - expect(plugin.load?.('./myModule.ts')).toBe(null); - }); - - test('stub functions should throw when called', () => { - // eval the stub code and test that functions throw - const headerStub = plugin.load?.('ve-stub:next/headers'); - expect(headerStub).toBeTruthy(); - - // create a test environment - const testEnv: Record = {}; - const esmToCjs = (src: string) => - src - .replace( - /^export\s+function\s+(\w+)\s*\(/gm, - 'exports.$1 = function $1(', - ) - .replace(/^export\s+class\s+(\w+)/gm, 'exports.$1 = class $1') - .replace(/^export\s+\{[^}]*\};?$/gm, ''); - const fn = new Function('exports', esmToCjs(headerStub!.code)); - fn(testEnv); - - expect(() => testEnv.headers()).toThrow( - /not available during vanilla-extract evaluation/, - ); - expect(() => testEnv.cookies()).toThrow( - /not available during vanilla-extract evaluation/, - ); - expect(() => testEnv.draftMode()).toThrow( - /not available during vanilla-extract evaluation/, - ); - }); - - test('stub classes should throw when instantiated', () => { - const serverStub = plugin.load?.('ve-stub:next/server'); - expect(serverStub).toBeTruthy(); - - const testEnv: Record = {}; - const esmToCjs = (src: string) => - src - .replace( - /^export\s+function\s+(\w+)\s*\(/gm, - 'exports.$1 = function $1(', - ) - .replace(/^export\s+class\s+(\w+)/gm, 'exports.$1 = class $1') - .replace(/^export\s+\{[^}]*\};?$/gm, ''); - const fn = new Function('exports', esmToCjs(serverStub!.code)); - fn(testEnv); - - expect(() => new testEnv.ImageResponse()).toThrow( - /not available during vanilla-extract evaluation/, - ); - expect(() => new testEnv.NextRequest()).toThrow( - /not available during vanilla-extract evaluation/, - ); - expect(() => new testEnv.NextResponse()).toThrow( - /not available during vanilla-extract evaluation/, - ); - }); -}); diff --git a/packages/turbopack-plugin/src/next-stubs/plugin.ts b/packages/turbopack-plugin/src/next-stubs/plugin.ts deleted file mode 100644 index 6cdfc87b3..000000000 --- a/packages/turbopack-plugin/src/next-stubs/plugin.ts +++ /dev/null @@ -1,239 +0,0 @@ -type Plugin = { - name: string; - enforce?: 'pre' | 'post'; - resolveId?: ( - source: string, - importer: string | undefined, - ) => { id: string } | null; - load?: (id: string) => { code: string } | null; -}; - -const STUBBED_MODULES = [ - 'next/headers', - 'next/cache', - 'next/navigation', - 'next/server', - 'next/draft-mode', - 'next/cookies', -] as const; - -const STUB_CODE: Record = { - 'next/headers': ` -function throwNotAvailable(name) { - throw new Error( - \`"\${name}" is not available during vanilla-extract evaluation. \\n\` + - \`This API accesses request-scoped data that isn't available at build time. \\n\` + - \`Move dynamic data access to your component and pass values via CSS variables or data attributes.\` - ); -} - -export function headers() { - throwNotAvailable('headers()'); -} - -export function cookies() { - throwNotAvailable('cookies()'); -} - -export function draftMode() { - throwNotAvailable('draftMode()'); -} -`, - 'next/cache': ` -function throwNotAvailable(name) { - throw new Error( - \`"\${name}" is not available during vanilla-extract evaluation. \\n\` + - \`This API accesses request-scoped data that isn't available at build time. \\n\` + - \`Move dynamic data access to your component and pass values via CSS variables or data attributes.\` - ); -} - -export function unstable_cache() { - throwNotAvailable('unstable_cache()'); -} - -export function revalidateTag() { - throwNotAvailable('revalidateTag()'); -} - -export function revalidatePath() { - throwNotAvailable('revalidatePath()'); -} - -export function updateTag() { - throwNotAvailable('updateTag()'); -} - -export function refresh() { - throwNotAvailable('refresh()'); -} -`, - 'next/navigation': ` -function throwNotAvailable(name) { - throw new Error( - \`"\${name}" is not available during vanilla-extract evaluation. \\n\` + - \`This API accesses request-scoped data that isn't available at build time. \\n\` + - \`Move dynamic data access to your component and pass values via CSS variables or data attributes.\` - ); -} - -export function redirect() { - throwNotAvailable('redirect()'); -} - -export function permanentRedirect() { - throwNotAvailable('permanentRedirect()'); -} - -export function notFound() { - throwNotAvailable('notFound()'); -} - -export function forbidden() { - throwNotAvailable('forbidden()'); -} - -export function unauthorized() { - throwNotAvailable('unauthorized()'); -} - -export function unstable_rethrow() { - throwNotAvailable('unstable_rethrow()'); -} - -export function useRouter() { - throwNotAvailable('useRouter()'); -} - -export function useParams() { - throwNotAvailable('useParams()'); -} - -export function usePathname() { - throwNotAvailable('usePathname()'); -} - -export function useSearchParams() { - throwNotAvailable('useSearchParams()'); -} - -export function useSelectedLayoutSegment() { - throwNotAvailable('useSelectedLayoutSegment()'); -} - -export function useSelectedLayoutSegments() { - throwNotAvailable('useSelectedLayoutSegments()'); -} - -export const ServerInsertedHTMLContext = {}; - -export function useServerInsertedHTML() { - throwNotAvailable('useServerInsertedHTML()'); -} - -export class ReadonlyURLSearchParams { - constructor() { - throwNotAvailable('ReadonlyURLSearchParams'); - } -} -`, - 'next/server': ` -function throwNotAvailable(name) { - throw new Error( - \`"\${name}" is not available during vanilla-extract evaluation. \\n\` + - \`This API accesses request-scoped data that isn't available at build time. \\n\` + - \`Move dynamic data access to your component and pass values via CSS variables or data attributes.\` - ); -} - -export class ImageResponse { - constructor() { - throwNotAvailable('ImageResponse'); - } -} - -export class NextRequest { - constructor() { - throwNotAvailable('NextRequest'); - } -} - -export class NextResponse { - constructor() { - throwNotAvailable('NextResponse'); - } -} - -export function after() { - throwNotAvailable('after()'); -} - -export function connection() { - throwNotAvailable('connection()'); -} - -export function userAgent() { - throwNotAvailable('userAgent()'); -} - -export function userAgentFromString() { - throwNotAvailable('userAgentFromString()'); -} - -export class URLPattern { - constructor() { - throwNotAvailable('URLPattern'); - } -} -`, - 'next/draft-mode': ` -function throwNotAvailable(name) { - throw new Error( - \`"\${name}" is not available during vanilla-extract evaluation. \\n\` + - \`This API accesses request-scoped data that isn't available at build time. \\n\` + - \`Move dynamic data access to your component and pass values via CSS variables or data attributes.\` - ); -} - -export function draftMode() { - throwNotAvailable('draftMode()'); -} -`, - 'next/cookies': ` -function throwNotAvailable(name) { - throw new Error( - \`"\${name}" is not available during vanilla-extract evaluation. \\n\` + - \`This API accesses request-scoped data that isn't available at build time. \\n\` + - \`Move dynamic data access to your component and pass values via CSS variables or data attributes.\` - ); -} - -export function cookies() { - throwNotAvailable('cookies()'); -} -`, -}; - -export function createNextStubsVePlugin(): Plugin { - return { - name: 've-next-stubs', - enforce: 'pre', - resolveId(source: string) { - if (STUBBED_MODULES.includes(source as any)) { - // return a filesystem-safe virtual id (no NUL prefix) - return { id: `ve-stub:${source}` }; - } - return null; - }, - load(id: string) { - if (id.startsWith('ve-stub:')) { - const moduleName = id.slice('ve-stub:'.length); - const code = STUB_CODE[moduleName]; - if (code) { - return { code }; - } - } - return null; - }, - }; -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d26f9606a..d172d1392 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -231,46 +231,6 @@ importers: specifier: workspace:^ version: link:../../packages/css - fixtures/next-15-app-pages-router: - dependencies: - '@fixtures/features': - specifier: workspace:* - version: link:../features - '@fixtures/recipes': - specifier: workspace:* - version: link:../recipes - '@fixtures/sprinkles': - specifier: workspace:* - version: link:../sprinkles - '@vanilla-extract/css': - specifier: workspace:* - version: link:../../packages/css - '@vanilla-extract/recipes': - specifier: workspace:* - version: link:../../packages/recipes - '@vanilla-extract/sprinkles': - specifier: workspace:* - version: link:../../packages/sprinkles - next: - specifier: npm:next@15.3.0 - version: 15.3.0(@babel/core@7.23.9)(@playwright/test@1.43.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: - specifier: ^18.2.0 - version: 18.2.0 - react-dom: - specifier: ^18.2.0 - version: 18.2.0(react@18.2.0) - devDependencies: - '@types/react': - specifier: ^18.2.55 - version: 18.2.55 - '@vanilla-extract/next-plugin': - specifier: workspace:* - version: link:../../packages/next-plugin - '@vanilla-extract/webpack-plugin': - specifier: workspace:* - version: link:../../packages/webpack-plugin - fixtures/next-16-app-pages-router: dependencies: '@fixtures/features': @@ -293,13 +253,13 @@ importers: version: link:../../packages/sprinkles next: specifier: npm:next@^16.0.0 - version: 16.0.0(@babel/core@7.23.9)(@playwright/test@1.43.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 16.0.0(@babel/core@7.23.9)(@playwright/test@1.43.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) react: - specifier: ^18.2.0 - version: 18.2.0 + specifier: ^19.2.0 + version: 19.2.0 react-dom: - specifier: ^18.2.0 - version: 18.2.0(react@18.2.0) + specifier: ^19.2.0 + version: 19.2.0(react@19.2.0) devDependencies: '@types/react': specifier: ^18.2.55 @@ -644,7 +604,7 @@ importers: version: 7.7.1 next: specifier: 12.3.4 - version: 12.3.4(@babel/core@7.23.9)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 12.3.4(@babel/core@7.23.9)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) webpack: specifier: ^5.90.0 version: 5.90.0(@swc/core@1.13.5) @@ -717,7 +677,10 @@ importers: devDependencies: next: specifier: 12.3.4 - version: 12.3.4(@babel/core@7.23.9)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 12.3.4(@babel/core@7.23.9)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + vite: + specifier: ^7.0.3 + version: 7.0.3(@types/node@22.15.3)(terser@5.26.0)(tsx@4.17.0) packages/utils: {} @@ -948,9 +911,6 @@ importers: '@fixtures/next-13-app-router': specifier: workspace:* version: link:../fixtures/next-app-router - '@fixtures/next-15-app-pages-router': - specifier: workspace:* - version: link:../fixtures/next-15-app-pages-router '@fixtures/next-16-app-pages-router': specifier: workspace:* version: link:../fixtures/next-16-app-pages-router @@ -3375,9 +3335,6 @@ packages: '@next/env@13.5.4': resolution: {integrity: sha512-LGegJkMvRNw90WWphGJ3RMHMVplYcOfRWf2Be3td3sUa+1AaxmsYyANsA+znrGCBjXJNi4XAQlSoEfUxs/4kIQ==} - '@next/env@15.3.0': - resolution: {integrity: sha512-6mDmHX24nWlHOlbwUiAOmMyY7KELimmi+ed8qWcJYjqXeC+G6JzPZ3QosOAfjNwgMIzwhXBiRiCgdh8axTTdTA==} - '@next/env@16.0.0': resolution: {integrity: sha512-s5j2iFGp38QsG1LWRQaE2iUY3h1jc014/melHFfLdrsMJPqxqDQwWNwyQTcNoUSGZlCVZuM7t7JDMmSyRilsnA==} @@ -3405,12 +3362,6 @@ packages: cpu: [arm64] os: [darwin] - '@next/swc-darwin-arm64@15.3.0': - resolution: {integrity: sha512-PDQcByT0ZfF2q7QR9d+PNj3wlNN4K6Q8JoHMwFyk252gWo4gKt7BF8Y2+KBgDjTFBETXZ/TkBEUY7NIIY7A/Kw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - '@next/swc-darwin-arm64@16.0.0': resolution: {integrity: sha512-/CntqDCnk5w2qIwMiF0a9r6+9qunZzFmU0cBX4T82LOflE72zzH6gnOjCwUXYKOBlQi8OpP/rMj8cBIr18x4TA==} engines: {node: '>= 10'} @@ -3429,12 +3380,6 @@ packages: cpu: [x64] os: [darwin] - '@next/swc-darwin-x64@15.3.0': - resolution: {integrity: sha512-m+eO21yg80En8HJ5c49AOQpFDq+nP51nu88ZOMCorvw3g//8g1JSUsEiPSiFpJo1KCTQ+jm9H0hwXK49H/RmXg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - '@next/swc-darwin-x64@16.0.0': resolution: {integrity: sha512-hB4GZnJGKa8m4efvTGNyii6qs76vTNl+3dKHTCAUaksN6KjYy4iEO3Q5ira405NW2PKb3EcqWiRaL9DrYJfMHg==} engines: {node: '>= 10'} @@ -3465,12 +3410,6 @@ packages: cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-gnu@15.3.0': - resolution: {integrity: sha512-H0Kk04ZNzb6Aq/G6e0un4B3HekPnyy6D+eUBYPJv9Abx8KDYgNMWzKt4Qhj57HXV3sTTjsfc1Trc1SxuhQB+Tg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - '@next/swc-linux-arm64-gnu@16.0.0': resolution: {integrity: sha512-E2IHMdE+C1k+nUgndM13/BY/iJY9KGCphCftMh7SXWcaQqExq/pJU/1Hgn8n/tFwSoLoYC/yUghOv97tAsIxqg==} engines: {node: '>= 10'} @@ -3489,12 +3428,6 @@ packages: cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@15.3.0': - resolution: {integrity: sha512-k8GVkdMrh/+J9uIv/GpnHakzgDQhrprJ/FbGQvwWmstaeFG06nnAoZCJV+wO/bb603iKV1BXt4gHG+s2buJqZA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - '@next/swc-linux-arm64-musl@16.0.0': resolution: {integrity: sha512-xzgl7c7BVk4+7PDWldU+On2nlwnGgFqJ1siWp3/8S0KBBLCjonB6zwJYPtl4MUY7YZJrzzumdUpUoquu5zk8vg==} engines: {node: '>= 10'} @@ -3513,12 +3446,6 @@ packages: cpu: [x64] os: [linux] - '@next/swc-linux-x64-gnu@15.3.0': - resolution: {integrity: sha512-ZMQ9yzDEts/vkpFLRAqfYO1wSpIJGlQNK9gZ09PgyjBJUmg8F/bb8fw2EXKgEaHbCc4gmqMpDfh+T07qUphp9A==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - '@next/swc-linux-x64-gnu@16.0.0': resolution: {integrity: sha512-sdyOg4cbiCw7YUr0F/7ya42oiVBXLD21EYkSwN+PhE4csJH4MSXUsYyslliiiBwkM+KsuQH/y9wuxVz6s7Nstg==} engines: {node: '>= 10'} @@ -3537,12 +3464,6 @@ packages: cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@15.3.0': - resolution: {integrity: sha512-RFwq5VKYTw9TMr4T3e5HRP6T4RiAzfDJ6XsxH8j/ZeYq2aLsBqCkFzwMI0FmnSsLaUbOb46Uov0VvN3UciHX5A==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - '@next/swc-linux-x64-musl@16.0.0': resolution: {integrity: sha512-IAXv3OBYqVaNOgyd3kxR4L3msuhmSy1bcchPHxDOjypG33i2yDWvGBwFD94OuuTjjTt/7cuIKtAmoOOml6kfbg==} engines: {node: '>= 10'} @@ -3561,12 +3482,6 @@ packages: cpu: [arm64] os: [win32] - '@next/swc-win32-arm64-msvc@15.3.0': - resolution: {integrity: sha512-a7kUbqa/k09xPjfCl0RSVAvEjAkYBYxUzSVAzk2ptXiNEL+4bDBo9wNC43G/osLA/EOGzG4CuNRFnQyIHfkRgQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - '@next/swc-win32-arm64-msvc@16.0.0': resolution: {integrity: sha512-bmo3ncIJKUS9PWK1JD9pEVv0yuvp1KPuOsyJTHXTv8KDrEmgV/K+U0C75rl9rhIaODcS7JEb6/7eJhdwXI0XmA==} engines: {node: '>= 10'} @@ -3597,12 +3512,6 @@ packages: cpu: [x64] os: [win32] - '@next/swc-win32-x64-msvc@15.3.0': - resolution: {integrity: sha512-vHUQS4YVGJPmpjn7r5lEZuMhK5UQBNBRSB+iGDvJjaNk649pTIcRluDWNb9siunyLLiu/LDPHfvxBtNamyuLTw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - '@next/swc-win32-x64-msvc@16.0.0': resolution: {integrity: sha512-O1cJbT+lZp+cTjYyZGiDwsOjO3UHHzSqobkPNipdlnnuPb1swfcuY6r3p8dsKU4hAIEO4cO67ZCfVVH/M1ETXA==} engines: {node: '>= 10'} @@ -9259,27 +9168,6 @@ packages: sass: optional: true - next@15.3.0: - resolution: {integrity: sha512-k0MgP6BsK8cZ73wRjMazl2y2UcXj49ZXLDEgx6BikWuby/CN+nh81qFFI16edgd7xYpe/jj2OZEIwCoqnzz0bQ==} - engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} - hasBin: true - peerDependencies: - '@opentelemetry/api': ^1.1.0 - '@playwright/test': ^1.41.2 - 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 - peerDependenciesMeta: - '@opentelemetry/api': - optional: true - '@playwright/test': - optional: true - babel-plugin-react-compiler: - optional: true - sass: - optional: true - next@16.0.0: resolution: {integrity: sha512-nYohiNdxGu4OmBzggxy9rczmjIGI+TpR5vbKTsE1HqYwNm1B+YSiugSrFguX6omMOKnDHAmBPY4+8TNJk0Idyg==} engines: {node: '>=20.9.0'} @@ -10410,6 +10298,11 @@ packages: peerDependencies: react: ^18.2.0 + react-dom@19.2.0: + resolution: {integrity: sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==} + peerDependencies: + react: ^19.2.0 + react-error-overlay@6.0.9: resolution: {integrity: sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==} @@ -10464,6 +10357,10 @@ packages: resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} engines: {node: '>=0.10.0'} + react@19.2.0: + resolution: {integrity: sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==} + engines: {node: '>=0.10.0'} + read-package-json-fast@2.0.3: resolution: {integrity: sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==} engines: {node: '>=10'} @@ -10830,6 +10727,9 @@ packages: scheduler@0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + scheduler@0.27.0: + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + schema-utils@3.3.0: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} @@ -14962,8 +14862,6 @@ snapshots: '@next/env@13.5.4': {} - '@next/env@15.3.0': {} - '@next/env@16.0.0': {} '@next/swc-android-arm-eabi@12.3.4': @@ -14978,9 +14876,6 @@ snapshots: '@next/swc-darwin-arm64@13.5.4': optional: true - '@next/swc-darwin-arm64@15.3.0': - optional: true - '@next/swc-darwin-arm64@16.0.0': optional: true @@ -14990,9 +14885,6 @@ snapshots: '@next/swc-darwin-x64@13.5.4': optional: true - '@next/swc-darwin-x64@15.3.0': - optional: true - '@next/swc-darwin-x64@16.0.0': optional: true @@ -15008,9 +14900,6 @@ snapshots: '@next/swc-linux-arm64-gnu@13.5.4': optional: true - '@next/swc-linux-arm64-gnu@15.3.0': - optional: true - '@next/swc-linux-arm64-gnu@16.0.0': optional: true @@ -15020,9 +14909,6 @@ snapshots: '@next/swc-linux-arm64-musl@13.5.4': optional: true - '@next/swc-linux-arm64-musl@15.3.0': - optional: true - '@next/swc-linux-arm64-musl@16.0.0': optional: true @@ -15032,9 +14918,6 @@ snapshots: '@next/swc-linux-x64-gnu@13.5.4': optional: true - '@next/swc-linux-x64-gnu@15.3.0': - optional: true - '@next/swc-linux-x64-gnu@16.0.0': optional: true @@ -15044,9 +14927,6 @@ snapshots: '@next/swc-linux-x64-musl@13.5.4': optional: true - '@next/swc-linux-x64-musl@15.3.0': - optional: true - '@next/swc-linux-x64-musl@16.0.0': optional: true @@ -15056,9 +14936,6 @@ snapshots: '@next/swc-win32-arm64-msvc@13.5.4': optional: true - '@next/swc-win32-arm64-msvc@15.3.0': - optional: true - '@next/swc-win32-arm64-msvc@16.0.0': optional: true @@ -15074,9 +14951,6 @@ snapshots: '@next/swc-win32-x64-msvc@13.5.4': optional: true - '@next/swc-win32-x64-msvc@15.3.0': - optional: true - '@next/swc-win32-x64-msvc@16.0.0': optional: true @@ -22237,6 +22111,34 @@ snapshots: - '@babel/core' - babel-plugin-macros + next@12.3.4(@babel/core@7.23.9)(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + dependencies: + '@next/env': 12.3.4 + '@swc/helpers': 0.4.11 + caniuse-lite: 1.0.30001587 + postcss: 8.4.14 + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + styled-jsx: 5.0.7(@babel/core@7.23.9)(react@19.2.0) + use-sync-external-store: 1.2.0(react@19.2.0) + optionalDependencies: + '@next/swc-android-arm-eabi': 12.3.4 + '@next/swc-android-arm64': 12.3.4 + '@next/swc-darwin-arm64': 12.3.4 + '@next/swc-darwin-x64': 12.3.4 + '@next/swc-freebsd-x64': 12.3.4 + '@next/swc-linux-arm-gnueabihf': 12.3.4 + '@next/swc-linux-arm64-gnu': 12.3.4 + '@next/swc-linux-arm64-musl': 12.3.4 + '@next/swc-linux-x64-gnu': 12.3.4 + '@next/swc-linux-x64-musl': 12.3.4 + '@next/swc-win32-arm64-msvc': 12.3.4 + '@next/swc-win32-ia32-msvc': 12.3.4 + '@next/swc-win32-x64-msvc': 12.3.4 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + next@13.5.4(@babel/core@7.23.9)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@next/env': 13.5.4 @@ -22262,41 +22164,15 @@ snapshots: - '@babel/core' - babel-plugin-macros - next@15.3.0(@babel/core@7.23.9)(@playwright/test@1.43.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - '@next/env': 15.3.0 - '@swc/counter': 0.1.3 - '@swc/helpers': 0.5.15 - busboy: 1.6.0 - caniuse-lite: 1.0.30001587 - postcss: 8.4.31 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.6(@babel/core@7.23.9)(react@18.2.0) - optionalDependencies: - '@next/swc-darwin-arm64': 15.3.0 - '@next/swc-darwin-x64': 15.3.0 - '@next/swc-linux-arm64-gnu': 15.3.0 - '@next/swc-linux-arm64-musl': 15.3.0 - '@next/swc-linux-x64-gnu': 15.3.0 - '@next/swc-linux-x64-musl': 15.3.0 - '@next/swc-win32-arm64-msvc': 15.3.0 - '@next/swc-win32-x64-msvc': 15.3.0 - '@playwright/test': 1.43.1 - sharp: 0.34.4 - transitivePeerDependencies: - - '@babel/core' - - babel-plugin-macros - - next@16.0.0(@babel/core@7.23.9)(@playwright/test@1.43.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + next@16.0.0(@babel/core@7.23.9)(@playwright/test@1.43.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: '@next/env': 16.0.0 '@swc/helpers': 0.5.15 caniuse-lite: 1.0.30001587 postcss: 8.4.31 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.6(@babel/core@7.23.9)(react@18.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + styled-jsx: 5.1.6(@babel/core@7.23.9)(react@19.2.0) optionalDependencies: '@next/swc-darwin-arm64': 16.0.0 '@next/swc-darwin-x64': 16.0.0 @@ -23407,6 +23283,11 @@ snapshots: react: 18.2.0 scheduler: 0.23.0 + react-dom@19.2.0(react@19.2.0): + dependencies: + react: 19.2.0 + scheduler: 0.27.0 + react-error-overlay@6.0.9: {} react-head@3.4.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0): @@ -23456,6 +23337,8 @@ snapshots: dependencies: loose-envify: 1.4.0 + react@19.2.0: {} + read-package-json-fast@2.0.3: dependencies: json-parse-even-better-errors: 2.3.1 @@ -23940,6 +23823,8 @@ snapshots: dependencies: loose-envify: 1.4.0 + scheduler@0.27.0: {} + schema-utils@3.3.0: dependencies: '@types/json-schema': 7.0.9 @@ -24469,6 +24354,12 @@ snapshots: optionalDependencies: '@babel/core': 7.23.9 + styled-jsx@5.0.7(@babel/core@7.23.9)(react@19.2.0): + dependencies: + react: 19.2.0 + optionalDependencies: + '@babel/core': 7.23.9 + styled-jsx@5.1.1(@babel/core@7.23.9)(react@18.2.0): dependencies: client-only: 0.0.1 @@ -24476,10 +24367,10 @@ snapshots: optionalDependencies: '@babel/core': 7.23.9 - styled-jsx@5.1.6(@babel/core@7.23.9)(react@18.2.0): + styled-jsx@5.1.6(@babel/core@7.23.9)(react@19.2.0): dependencies: client-only: 0.0.1 - react: 18.2.0 + react: 19.2.0 optionalDependencies: '@babel/core': 7.23.9 @@ -25239,6 +25130,10 @@ snapshots: dependencies: react: 18.2.0 + use-sync-external-store@1.2.0(react@19.2.0): + dependencies: + react: 19.2.0 + use@3.1.1: {} util-deprecate@1.0.2: {} diff --git a/site/docs/integrations/next.md b/site/docs/integrations/next.md index b8bc52614..bbe47fea4 100644 --- a/site/docs/integrations/next.md +++ b/site/docs/integrations/next.md @@ -49,8 +49,8 @@ export default withVanillaExtract(withMDX(nextConfig)); ## Version Support -- **Next.js >= 15.3**: Both Turbopack and Webpack are supported -- **Next.js <= 15.2**: Webpack-only support +- **Next.js >= 16.x**: Both Turbopack and Webpack are supported +- **Next.js <= 15.x**: Webpack-only support ## Configuration diff --git a/test-helpers/package.json b/test-helpers/package.json index 2829a9984..f64664d03 100644 --- a/test-helpers/package.json +++ b/test-helpers/package.json @@ -12,7 +12,6 @@ "@fixtures/low-level": "workspace:*", "@fixtures/next-12-pages-router": "workspace:*", "@fixtures/next-13-app-router": "workspace:*", - "@fixtures/next-15-app-pages-router": "workspace:*", "@fixtures/next-16-app-pages-router": "workspace:*", "@fixtures/recipes": "workspace:*", "@fixtures/sprinkles": "workspace:*", From 40b43425716e346004a0e5081b93458dba71071a Mon Sep 17 00:00:00 2001 From: Robbie Date: Fri, 21 Nov 2025 13:34:59 -0700 Subject: [PATCH 20/52] cleanup --- .changeset/fresh-wombats-stick.md | 2 +- .prettierignore | 3 +-- .../src/app/barrel-test/page.tsx | 13 ------------- .../src/styles/barrel-import.css.ts | 14 -------------- .../src/styles/barrel-with-next.ts | 19 ------------------- 5 files changed, 2 insertions(+), 49 deletions(-) delete mode 100644 fixtures/next-16-app-pages-router/src/app/barrel-test/page.tsx delete mode 100644 fixtures/next-16-app-pages-router/src/styles/barrel-import.css.ts delete mode 100644 fixtures/next-16-app-pages-router/src/styles/barrel-with-next.ts diff --git a/.changeset/fresh-wombats-stick.md b/.changeset/fresh-wombats-stick.md index c13c2de84..0753c0684 100644 --- a/.changeset/fresh-wombats-stick.md +++ b/.changeset/fresh-wombats-stick.md @@ -3,4 +3,4 @@ '@vanilla-extract/next-plugin': minor --- -turbopack support for next.js >= 15.3 +turbopack support for next.js >= 16.0.0 diff --git a/.prettierignore b/.prettierignore index 27ad4b20b..832dab3eb 100644 --- a/.prettierignore +++ b/.prettierignore @@ -11,5 +11,4 @@ site/docs-manifest.json pnpm-lock.yaml *-snapshots test-results -examples/remix/build -.pnpm-store \ No newline at end of file +examples/remix/build \ No newline at end of file diff --git a/fixtures/next-16-app-pages-router/src/app/barrel-test/page.tsx b/fixtures/next-16-app-pages-router/src/app/barrel-test/page.tsx deleted file mode 100644 index c34800660..000000000 --- a/fixtures/next-16-app-pages-router/src/app/barrel-test/page.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import * as styles from '../../styles/barrel-import.css'; - -export default function BarrelTestPage() { - return ( -
-

Barrel Import Test

-

- This page imports from a barrel that re-exports Next.js APIs. The stubs - prevent AsyncLocalStorage errors during CSS evaluation. -

-
- ); -} diff --git a/fixtures/next-16-app-pages-router/src/styles/barrel-import.css.ts b/fixtures/next-16-app-pages-router/src/styles/barrel-import.css.ts deleted file mode 100644 index fc01402e9..000000000 --- a/fixtures/next-16-app-pages-router/src/styles/barrel-import.css.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { style } from '@vanilla-extract/css'; -// this import would normally crash during evaluation because it pulls in next apis -// but our stubs prevent the AsyncLocalStorage error -import { colors, spacing } from './barrel-with-next'; - -export const container = style({ - backgroundColor: colors.primary, - padding: spacing.md, -}); - -export const header = style({ - color: colors.secondary, - marginBottom: spacing.lg, -}); diff --git a/fixtures/next-16-app-pages-router/src/styles/barrel-with-next.ts b/fixtures/next-16-app-pages-router/src/styles/barrel-with-next.ts deleted file mode 100644 index 72111bcd0..000000000 --- a/fixtures/next-16-app-pages-router/src/styles/barrel-with-next.ts +++ /dev/null @@ -1,19 +0,0 @@ -// barrel that re-exports both tokens and next apis -// this would normally cause AsyncLocalStorage errors during css.ts evaluation -// but our stubs prevent that - -export { headers, cookies } from 'next/headers'; -export { redirect } from 'next/navigation'; -export { after } from 'next/server'; - -// safe token exports -export const colors = { - primary: 'blue', - secondary: 'green', -} as const; - -export const spacing = { - sm: '8px', - md: '16px', - lg: '24px', -} as const; From 37559add53c47f3a2754cf940d2e58c78fd2a7f0 Mon Sep 17 00:00:00 2001 From: Robbie Date: Fri, 21 Nov 2025 13:40:15 -0700 Subject: [PATCH 21/52] auto configure cleanup --- packages/next-plugin/src/index.ts | 5 ++--- site/docs/integrations/next.md | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/next-plugin/src/index.ts b/packages/next-plugin/src/index.ts index 040227412..d82a3a9ef 100644 --- a/packages/next-plugin/src/index.ts +++ b/packages/next-plugin/src/index.ts @@ -21,7 +21,7 @@ const require = createRequire(import.meta.url); type PluginOptions = ConstructorParameters[0] & { turbopackGlob?: string[]; // controls whether we attempt to configure turbopack - // auto: enable only when Next >= 15.3 + // auto: enable only when Next >= 16.0.0 // on: force enable regardless of detected Next version // off: never configure turbopack, webpack only turbopackMode?: 'auto' | 'on' | 'off'; @@ -165,7 +165,7 @@ export const createVanillaExtractPlugin = ( } })(); const coerced = nextVersion ? semver.coerce(nextVersion) : null; - const supportsTurbopackRules = !!coerced && semver.gte(coerced, '15.3.0'); + const supportsTurbopackRules = !!coerced && semver.gte(coerced, '16.0.0'); const enableTurbopack = turbopackMode === 'on' || (turbopackMode === 'auto' && supportsTurbopackRules); @@ -189,7 +189,6 @@ export const createVanillaExtractPlugin = ( nextEnv: nextConfig.env ?? null, outputCss: pluginOptions.outputCss ?? null, identifiers: pluginOptions.identifiers ?? null, - distDir: nextConfig.distDir ?? null, } satisfies TurboLoaderOptions, }, ], diff --git a/site/docs/integrations/next.md b/site/docs/integrations/next.md index bbe47fea4..8c90c84af 100644 --- a/site/docs/integrations/next.md +++ b/site/docs/integrations/next.md @@ -79,7 +79,7 @@ Each integration will set a default value based on the configuration options pas You can control Turbopack autoconfiguration using `turbopackMode`: -- `auto` (default): enable Turbopack config only when Next >= 15.3 +- `auto` (default): enable Turbopack config only when Next >= 16.0.0 - `on`: force-enable Turbopack config - `off`: never configure Turbopack (Webpack-only) From 4096a6d6f8043fefdb3628b8a8ce95c994c0d121 Mon Sep 17 00:00:00 2001 From: Robbie Date: Fri, 21 Nov 2025 14:01:42 -0700 Subject: [PATCH 22/52] cleanup --- .prettierignore | 2 +- .../next-16-app-pages-router/package.json | 2 +- .../src/styles/fonts.ts | 37 ++++++++++++++++++- packages/next-plugin/src/index.ts | 14 ++++--- 4 files changed, 46 insertions(+), 9 deletions(-) diff --git a/.prettierignore b/.prettierignore index 832dab3eb..869b8973d 100644 --- a/.prettierignore +++ b/.prettierignore @@ -11,4 +11,4 @@ site/docs-manifest.json pnpm-lock.yaml *-snapshots test-results -examples/remix/build \ No newline at end of file +examples/remix/build diff --git a/fixtures/next-16-app-pages-router/package.json b/fixtures/next-16-app-pages-router/package.json index 27b643ad8..241637491 100644 --- a/fixtures/next-16-app-pages-router/package.json +++ b/fixtures/next-16-app-pages-router/package.json @@ -7,7 +7,7 @@ "dev": "next dev", "build": "next build", "start": "next start", - "clean-build": "pnpm clean && pnpm build", + "clean-build": "pnpm clean && pnpm build --turbo && pnpm build --webpack", "clean": "pnpm clean:dev && pnpm clean:prod", "clean:dev": "rm -rf .next", "clean:prod": "rm -rf dist" diff --git a/fixtures/next-16-app-pages-router/src/styles/fonts.ts b/fixtures/next-16-app-pages-router/src/styles/fonts.ts index 0970d16e6..9024f1e66 100644 --- a/fixtures/next-16-app-pages-router/src/styles/fonts.ts +++ b/fixtures/next-16-app-pages-router/src/styles/fonts.ts @@ -18,11 +18,13 @@ import weird_renamed_local$3_ from 'next/font/local'; export const localSimple = weird_renamed_local$3_({ src: './fonts/Inter-Regular.woff2', + preload: false, }); export const $local_weird_EXPORT_name_ = weird_renamed_local$3_({ src: './fonts/Inter-Regular.woff2', fallback: ['system-ui'], + preload: false, }); // --- 3. Local: Fallback Prop --- @@ -30,16 +32,19 @@ export const $local_weird_EXPORT_name_ = weird_renamed_local$3_({ export const localFallbackOmitted = weird_renamed_local$3_({ src: './fonts/Inter-Regular.woff2', // fallback is omitted + preload: false, }); export const localFallbackSingleArray = weird_renamed_local$3_({ src: './fonts/Inter-Regular.woff2', fallback: ['system-ui'], + preload: false, }); export const localFallbackMultiArray = weird_renamed_local$3_({ src: './fonts/Inter-Regular.woff2', fallback: ['Times New Roman', 'Gill Sans', 'emoji'], + preload: false, }); // --- 4. Local: Style Prop --- @@ -47,11 +52,13 @@ export const localFallbackMultiArray = weird_renamed_local$3_({ export const localStyleOmitted = weird_renamed_local$3_({ src: './fonts/Inter-Regular.woff2', // style is omitted + preload: false, }); export const localStyleSingle = weird_renamed_local$3_({ src: './fonts/Inter-Regular.woff2', style: 'italic', + preload: false, }); // --- 5. Local: Weight Prop --- @@ -59,11 +66,13 @@ export const localStyleSingle = weird_renamed_local$3_({ export const localWeightOmitted = weird_renamed_local$3_({ src: './fonts/Inter-Regular.woff2', // weight is omitted + preload: false, }); export const localWeightSingle = weird_renamed_local$3_({ src: './fonts/Inter-Regular.woff2', weight: '400', + preload: false, }); // ================================================================= @@ -75,11 +84,13 @@ export const localWeightSingle = weird_renamed_local$3_({ export const googleSimple = Weird_Renamed_Font$8a_({ subsets: ['latin'], + preload: false, }); export const $google_weird_EXPORT_name_ = Weird_Renamed_Font$8a_({ subsets: ['latin'], fallback: ['system-ui'], + preload: false, }); // --- 7. Google: Fallback Prop --- @@ -87,16 +98,19 @@ export const $google_weird_EXPORT_name_ = Weird_Renamed_Font$8a_({ export const googleFallbackOmitted = Weird_Renamed_Font$8a_({ subsets: ['latin'], // fallback is omitted + preload: false, }); export const googleFallbackSingleArray = Weird_Renamed_Font$8a_({ subsets: ['latin'], fallback: ['system-ui'], + preload: false, }); export const googleFallbackMultiArray = Weird_Renamed_Font$8a_({ subsets: ['latin'], fallback: ['Times New Roman', 'Gill Sans', 'emoji'], + preload: false, }); // --- 8. Google: Style Prop --- @@ -104,16 +118,19 @@ export const googleFallbackMultiArray = Weird_Renamed_Font$8a_({ export const googleStyleOmitted = Weird_Renamed_Font$8a_({ subsets: ['latin'], // style is omitted + preload: false, }); export const googleStyleSingle = Weird_Renamed_Font$8a_({ subsets: ['latin'], style: 'italic', + preload: false, }); export const googleStyleArray = Weird_Renamed_Font$8a_({ subsets: ['latin'], style: ['italic', 'normal'], + preload: false, }); // --- 9. Google: Weight Prop --- @@ -121,27 +138,32 @@ export const googleStyleArray = Weird_Renamed_Font$8a_({ export const googleWeightOmitted = Weird_Renamed_Font$8a_({ subsets: ['latin'], // weight is omitted + preload: false, }); export const googleWeightSingle = Weird_Renamed_Font$8a_({ subsets: ['latin'], weight: '400', + preload: false, }); export const googleWeightVariable = Weird_Renamed_Font$8a_({ subsets: ['latin'], weight: 'variable', + preload: false, }); export const googleWeightArray = Weird_Renamed_Font$8a_({ subsets: ['latin'], weight: ['400', '700', '900'], + preload: false, }); // intentionally odd local variable name to exercise transform edge-cases export const __Local_Font = weird_renamed_local$3_({ src: [{ path: './fonts/Inter-Regular.woff2', weight: '400' }], fallback: ['system-ui'], + preload: false, }); // renamed imports @@ -150,6 +172,7 @@ export const _Roboto = R({ subsets: ['latin'], fallback: ['system-ui', 'skibidi', 'third font'], style: ['italic', 'normal'], + preload: false, }); export const _Flex = RF({ @@ -158,6 +181,7 @@ export const _Flex = RF({ adjustFontFallback: false, style: 'normal', fallback: ['system-ui'], + preload: false, }); // style properties are consumed dynamically in nextFont.css.ts via pickedValues @@ -166,6 +190,7 @@ export const _Flex = RF({ export const _localMultiFallback = weird_renamed_local$3_({ src: [{ path: './fonts/Inter-Regular.woff2' }], fallback: ['system-ui', 'ui-monospace', 'third font'], + preload: false, }); export const _localExplicit = weird_renamed_local$3_({ @@ -173,16 +198,19 @@ export const _localExplicit = weird_renamed_local$3_({ weight: '400', style: 'italic', fallback: ['Times New Roman', 'Gill Sans'], + preload: false, }); export const _localDupFallback = weird_renamed_local$3_({ src: [{ path: './fonts/Inter-Regular.woff2' }], fallback: ['system-ui', 'system-ui', 'ui-serif', 'weird_font'], + preload: false, }); export const _robotoDefaultStyle = R({ subsets: ['latin'], fallback: ['serif'], + preload: false, }); export const _robotoItalic = R({ @@ -190,29 +218,34 @@ export const _robotoItalic = R({ fallback: ['sans-serif'], style: 'italic', weight: '400', + preload: false, }); export const _robotoMultiStyle = R({ subsets: ['latin'], fallback: ['monospace'], style: ['italic', 'normal'], + preload: false, }); -export const _robotoWeightStr = R({ weight: '400' }); +export const _robotoWeightStr = R({ weight: '400', preload: false }); -export const _robotoWeightVar = R({ weight: 'variable' }); +export const _robotoWeightVar = R({ weight: 'variable', preload: false }); export const _notoSerif = NotoSerif({ subsets: ['latin'], fallback: ['system-ui'], + preload: false, }); export const _robotoFallbackSpaces = R({ subsets: ['latin'], fallback: ['Times New Roman', 'Gill Sans', 'Avenir Next'], + preload: false, }); export const _robotoDupFallback = R({ subsets: ['latin'], fallback: ['system-ui', 'system-ui', 'ui-serif', 'weird_font'], + preload: false, }); diff --git a/packages/next-plugin/src/index.ts b/packages/next-plugin/src/index.ts index d82a3a9ef..8d9a4ec50 100644 --- a/packages/next-plugin/src/index.ts +++ b/packages/next-plugin/src/index.ts @@ -20,10 +20,12 @@ const require = createRequire(import.meta.url); type PluginOptions = ConstructorParameters[0] & { turbopackGlob?: string[]; - // controls whether we attempt to configure turbopack - // auto: enable only when Next >= 16.0.0 - // on: force enable regardless of detected Next version - // off: never configure turbopack, webpack only + /** + * controls whether we attempt to configure turbopack + * auto: enable only when Next >= 16.0.0 + * on: force enable regardless of detected Next version + * off: never configure turbopack, webpack only + */ turbopackMode?: 'auto' | 'on' | 'off'; }; @@ -254,7 +256,9 @@ export const createVanillaExtractPlugin = ( // RealContentHashPlugin to panic) if ( !config.plugins.some( - (p: any) => p instanceof NextMiniCssExtractPlugin, + (p: any) => + p instanceof NextMiniCssExtractPlugin || + p.constructor.name === 'NextMiniCssExtractPlugin', ) ) { // HMR reloads the CSS file when the content changes but does not use From 097e4382ea4f99078dce5c5ee0fd7498c841e720 Mon Sep 17 00:00:00 2001 From: Robbie Date: Fri, 21 Nov 2025 14:09:41 -0700 Subject: [PATCH 23/52] update docs --- packages/next-plugin/src/index.ts | 2 +- site/docs/integrations/next.md | 19 +++---------------- 2 files changed, 4 insertions(+), 17 deletions(-) diff --git a/packages/next-plugin/src/index.ts b/packages/next-plugin/src/index.ts index 8d9a4ec50..a2e2616ea 100644 --- a/packages/next-plugin/src/index.ts +++ b/packages/next-plugin/src/index.ts @@ -150,7 +150,7 @@ export const createVanillaExtractPlugin = ( return (nextConfig: NextConfig = {}): NextConfig => { const { turbopackMode = 'auto', - turbopackGlob = ['**/*.css.{ts,tsx,js,jsx}'], + turbopackGlob = ['**/*.css.{js,cjs,mjs,jsx,ts,tsx}'], ...webpackPluginOptions } = pluginOptions; // detect Next version and decide whether to configure turbopack diff --git a/site/docs/integrations/next.md b/site/docs/integrations/next.md index 8c90c84af..c47ba346c 100644 --- a/site/docs/integrations/next.md +++ b/site/docs/integrations/next.md @@ -83,7 +83,7 @@ You can control Turbopack autoconfiguration using `turbopackMode`: - `on`: force-enable Turbopack config - `off`: never configure Turbopack (Webpack-only) -Disable Turbopack integration explicitly: +For example, to disable Turbopack integration explicitly: ```ts // next.config.ts @@ -96,24 +96,11 @@ const withVanillaExtract = createVanillaExtractPlugin({ export default withVanillaExtract({}); ``` -Force-enable Turbopack integration: - -```ts -// next.config.ts -import { createVanillaExtractPlugin } from '@vanilla-extract/next-plugin'; - -const withVanillaExtract = createVanillaExtractPlugin({ - turbopackMode: 'on' -}); - -export default withVanillaExtract({}); -``` - -If you already manage `turbopack.rules` yourself for the same file globs, the plugin will throw to avoid rule conflicts. In that case, set `turbopackMode: 'off'` and apply your Turbopack config manually. +If you already manage `turbopack.rules` yourself for the same file globs, the plugin may throw to avoid rule conflicts. In that case, set `turbopackMode: 'off'` and apply your Turbopack config manually. ### turbopackGlob -By default Turbopack integration processes `**/*.css.{ts,tsx,js,jsx}`. You can override this via `turbopackGlob`: +By default Turbopack integration processes `**/*.css.{js,cjs,mjs,jsx,ts,tsx}`. You can override this via `turbopackGlob`: ```ts // next.config.ts From ebbde85725ed08364490a5d09967e7beaaca533e Mon Sep 17 00:00:00 2001 From: Robbie Date: Fri, 21 Nov 2025 14:13:12 -0700 Subject: [PATCH 24/52] cleanup --- packages/next-plugin/src/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/next-plugin/src/index.ts b/packages/next-plugin/src/index.ts index a2e2616ea..27a16a4db 100644 --- a/packages/next-plugin/src/index.ts +++ b/packages/next-plugin/src/index.ts @@ -174,7 +174,7 @@ export const createVanillaExtractPlugin = ( let turbopack: typeof nextConfig.turbopack; if (enableTurbopack) { - turbopack = { ...(nextConfig.turbopack || {}) } as any; + turbopack = { ...(nextConfig.turbopack || {}) }; if (turbopackGlob.some((glob) => turbopack.rules?.[glob])) { throw new Error( @@ -209,7 +209,7 @@ export const createVanillaExtractPlugin = ( webpack(config: any, options: WebpackConfigContext) { const { dir, dev, config: resolvedNextConfig } = options; - // https://github.com/vercel/next.js/blob/1f1632979c78b3edfe59fd85d8cce62efcdee688/packages/next/build/index.ts#L336 + // https://github.com/vercel/next.js/blob/1fb4cad2a8329811b5ccde47217b4a6ae739124e/packages/next/build/index.ts#L336 // https://github.com/vercel/next.js/blob/1fb4cad2a8329811b5ccde47217b4a6ae739124e/packages/next/build/webpack-config.ts#L626 // https://github.com/vercel/next.js/pull/43916 // on Next.js 12, findPagesDirResult is a string. on Next.js 13, findPagesDirResult is an object From 86c0a18d52f6dc2bce43bdff775a910043cd3abc Mon Sep 17 00:00:00 2001 From: Robbie Date: Fri, 21 Nov 2025 14:58:05 -0700 Subject: [PATCH 25/52] next font cleanup, webpack cleanup --- .../next-16-app-pages-router/next.config.ts | 3 +- packages/next-plugin/src/index.ts | 4 +- packages/turbopack-plugin/src/index.ts | 11 +- .../src/next-font/transform.ts | 593 ++++++------------ 4 files changed, 208 insertions(+), 403 deletions(-) diff --git a/fixtures/next-16-app-pages-router/next.config.ts b/fixtures/next-16-app-pages-router/next.config.ts index d3460abf1..fa4a2288d 100644 --- a/fixtures/next-16-app-pages-router/next.config.ts +++ b/fixtures/next-16-app-pages-router/next.config.ts @@ -1,5 +1,4 @@ -import { createVanillaExtractPlugin } from '@vanilla-extract/next-plugin'; -import { NextConfig } from 'next'; +import { createVanillaExtractPlugin } from './next-plugin/dist/vanilla-extract-next-plugin.cjs.js'; const withVanillaExtract = createVanillaExtractPlugin(); export const config = { diff --git a/packages/next-plugin/src/index.ts b/packages/next-plugin/src/index.ts index 27a16a4db..49b51b65c 100644 --- a/packages/next-plugin/src/index.ts +++ b/packages/next-plugin/src/index.ts @@ -256,9 +256,7 @@ export const createVanillaExtractPlugin = ( // RealContentHashPlugin to panic) if ( !config.plugins.some( - (p: any) => - p instanceof NextMiniCssExtractPlugin || - p.constructor.name === 'NextMiniCssExtractPlugin', + (p: any) => p instanceof NextMiniCssExtractPlugin, ) ) { // HMR reloads the CSS file when the content changes but does not use diff --git a/packages/turbopack-plugin/src/index.ts b/packages/turbopack-plugin/src/index.ts index f9eb78a1c..962652571 100644 --- a/packages/turbopack-plugin/src/index.ts +++ b/packages/turbopack-plugin/src/index.ts @@ -2,7 +2,7 @@ import { createCompiler, type Compiler as VeCompiler, } from '@vanilla-extract/compiler'; -import { type IdentifierOption } from '@vanilla-extract/integration'; +import type { IdentifierOption } from '@vanilla-extract/integration'; import * as path from 'node:path'; import { createNextFontVePlugin } from './next-font/plugin'; import type fs from 'node:fs'; @@ -12,15 +12,6 @@ export type TurboLoaderContext = { (): OptionsType; }; getResolve: (options: unknown) => { - ( - context: string, - request: string, - callback: ( - err: Error | null, - res?: string | false, - req?: unknown, - ) => void, - ): void; (context: string, request: string): Promise; }; diff --git a/packages/turbopack-plugin/src/next-font/transform.ts b/packages/turbopack-plugin/src/next-font/transform.ts index 95576dcc2..5bb5af7cd 100644 --- a/packages/turbopack-plugin/src/next-font/transform.ts +++ b/packages/turbopack-plugin/src/next-font/transform.ts @@ -1,457 +1,274 @@ import * as swc from '@swc/core'; -export type FontDetail = { - exportName: string; - stubbedFamily: string; - stubbedWeight: number | undefined; - stubbedStyle: string | undefined; -}; + export type NextFontTransformResult = { code: string; - usedNextFont: boolean; - details: FontDetail[]; - changed: boolean; + map: string | null; }; const THROW_MSG = "next/font class names are generated by Turbopack and aren't available during vanilla-extract evaluation. Use style.* in VE files, and apply the real font's className/variable in runtime code."; -function computeStubbedFamily( - exportName: string, - fallback: string[] | undefined, +const GENERIC_FAMILIES = new Set([ + 'serif', + 'sans-serif', + 'monospace', + 'cursive', + 'fantasy', + 'system-ui', + 'ui-serif', + 'ui-sans-serif', + 'ui-monospace', + 'ui-rounded', + 'emoji', + 'math', + 'fangsong', +]); + +// --- Helpers --- + +function formatFontFamily(name: string): string { + const clean = name.replace(/['"]/g, ''); + return GENERIC_FAMILIES.has(clean.toLowerCase()) ? clean : `'${clean}'`; +} + +function getFontFamily( + baseName: string, + fallbacks: string[] | undefined, isLocal: boolean, ): string { - // Generic CSS font families that should not be quoted - const genericFamilies = new Set([ - 'serif', - 'sans-serif', - 'monospace', - 'cursive', - 'fantasy', - 'system-ui', - 'ui-serif', - 'ui-sans-serif', - 'ui-monospace', - 'ui-rounded', - 'emoji', - 'math', - 'fangsong', - ]); - - const formatFamily = (s: string) => { - // Remove existing quotes - const clean = s.replace(/['"]/g, ''); - // Don't quote generic CSS font families - if (genericFamilies.has(clean.toLowerCase())) { - return clean; - } - // Quote everything else (custom fonts, fonts with spaces, etc.) - return `'${clean}'`; - }; - - const parts = [formatFamily(exportName)]; + const parts = [formatFontFamily(baseName)]; + // Local fonts always get a generated fallback. Google fonts get it if no user fallbacks. + // Original logic: + // Local: [Name, Name Fallback, ...UserFallbacks] + // Google: [Name, ...UserFallbacks] OR [Name, Name Fallback] if (isLocal) { - // Local fonts always include the generated fallback variant - parts.push(formatFamily(`${exportName} Fallback`)); - // And then append any user-provided fallbacks - if (Array.isArray(fallback)) { - // Manual fallbacks are appended as-is (unquoted), mirroring Turbopack - parts.push(...fallback); - } + parts.push(formatFontFamily(`${baseName} Fallback`)); + if (fallbacks) parts.push(...fallbacks); } else { - // Google fonts: if user fallbacks provided, use them; otherwise use ' Fallback' - if (Array.isArray(fallback)) { - // Manual fallbacks are appended as-is (unquoted), mirroring Turbopack - parts.push(...fallback); + if (fallbacks && fallbacks.length > 0) { + parts.push(...fallbacks); } else { - parts.push(formatFamily(`${exportName} Fallback`)); + parts.push(formatFontFamily(`${baseName} Fallback`)); } } + return parts.join(', '); } -function computeStubbedWeight(weight: any): number | undefined { - if (typeof weight === 'number') { - return weight; - } +function parseWeight(weight: any): number | undefined { + if (typeof weight === 'number') return weight; if (typeof weight === 'string' && weight && !weight.includes(' ')) { const n = Number(weight); - if (!Number.isNaN(n)) { - return n; - } + if (!Number.isNaN(n)) return n; } return undefined; } -function computeStubbedStyle( - style: any, - isGoogleFont: boolean, -): string | undefined { - // If a single style string is provided, use it - if (typeof style === 'string' && style && !style.includes(' ')) { - return style; - } - // Arrays always resolve to undefined for both providers - if (Array.isArray(style)) { - return undefined; +function parseStyle(style: any, isGoogle: boolean): string | undefined { + if (Array.isArray(style)) return undefined; + if (typeof style === 'string' && style && !style.includes(' ')) return style; + return isGoogle ? 'normal' : undefined; +} + +// --- AST Utilities --- + +type FontOptions = { + src?: any; + weight?: any; + style?: any; + fallback?: string[]; +}; + +/** + * Extract simple values from AST nodes (literals, arrays of literals). + * Returns `undefined` if too complex. + */ +function unwrapValue(node: any): any { + if (!node) return undefined; + + // Handle basic literals + if (node.type === 'StringLiteral' || node.type === 'NumericLiteral') { + return node.value; } - // For Google fonts, missing style defaults to "normal"; local stays undefined - if (style === undefined) { - return isGoogleFont ? 'normal' : undefined; + + // Handle arrays + if (node.type === 'ArrayExpression') { + return node.elements + .map((el: any) => unwrapValue(el?.expression || el)) + .filter((v: any) => v !== undefined); } + return undefined; } +/** + * Extracts the configuration object from the first argument of a call. + */ +function extractFontOptions(args: any[]): FontOptions { + const options: FontOptions = {}; + const configNode = args[0]?.expression; + + if (configNode?.type !== 'ObjectExpression') { + return options; + } + + for (const prop of configNode.properties) { + if (prop.type !== 'KeyValueProperty' && prop.type !== 'Property') continue; + + const key = prop.key.value || prop.key.name; // Handle StringLiteral or Identifier keys + const value = unwrapValue(prop.value); + + if (key === 'src') options.src = value; + if (key === 'weight') options.weight = value; + if (key === 'style') options.style = value; + if (key === 'fallback') options.fallback = value; + } + + return options; +} + +// --- Main Transform --- + export async function transformNextFont( code: string, - id: string, + filename: string, ): Promise { - const isTs = /\.(?:[cm]?ts|tsx)$/.test(id); - const isTsx = /\.(?:tsx)$/.test(id); - const isJsx = /\.(?:jsx)$/.test(id); - - const parseOptions: any = isTs - ? { - syntax: 'typescript', - tsx: isTsx, - dynamicImport: true, - decorators: false, - } - : { syntax: 'ecmascript', jsx: isJsx, dynamicImport: true }; - - const parseModule = async (src: string) => - swc.parse(src, { - ...parseOptions, - target: 'esnext', - comments: false, - script: false, - isModule: true, - }); - const printModule = async (mod: any) => { - const { code: out } = await swc.print(mod, { - minify: false, - sourceMaps: false, - }); - return out as string; - }; - const parseExpr = async (exprCode: string): Promise => { - const m = await parseModule(`const __e = ${exprCode};`); - const first = m.body && m.body[0]; - if (!first || first.type !== 'VariableDeclaration') return null; - const d = first.declarations && first.declarations[0]; - return d && d.init ? d.init : null; - }; - - const program: any = await parseModule(code); - const body: any[] = Array.isArray(program.body) ? [...program.body] : []; + // 1. Parse + const isTs = /\.(?:[cm]?ts|tsx)$/.test(filename); + const isTsx = /\.tsx$/.test(filename); + const isJsx = /\.jsx$/.test(filename); + + const module = await swc.parse(code, { + syntax: isTs ? 'typescript' : 'ecmascript', + tsx: isTsx, + jsx: isJsx, + dynamicImport: true, + decorators: false, + target: 'esnext', + comments: false, + script: false, + }); - let localAlias: string | null = null; - const googleSpecs: Array<{ local: string; pretty: string }> = []; - let usedNextFont = false; + const imports = new Map(); let changed = false; - const details: FontDetail[] = []; - const newBody: any[] = []; - for (const item of body) { + // 2. Scan imports & filter body + const newBody = []; + + for (const item of module.body) { if (item.type === 'ImportDeclaration') { - const src = item.source && item.source.value; - if (src === 'next/font/local') { - for (const spec of item.specifiers || []) { - if (spec.type === 'ImportDefaultSpecifier') { - localAlias = spec.local?.value || null; + const source = item.source.value; + if (source === 'next/font/local') { + item.specifiers.forEach((s) => { + if (s.type === 'ImportDefaultSpecifier') { + imports.set(s.local.value, { type: 'local', name: 'local' }); } - } - usedNextFont = true; + }); changed = true; - continue; // drop the import + continue; // Remove import } - if (src === 'next/font/google') { - for (const spec of item.specifiers || []) { - if (spec.type === 'ImportSpecifier') { - const local = spec.local?.value; - let importedName: string | undefined; - if (spec.imported?.type === 'Identifier') - importedName = spec.imported.value; - if (spec.imported?.type === 'StringLiteral') - importedName = spec.imported.value; - if (!importedName) importedName = local; - if (local && importedName) { - googleSpecs.push({ - local, - pretty: String(importedName).replace(/_/g, ' '), - }); - } + if (source === 'next/font/google') { + item.specifiers.forEach((s) => { + if (s.type === 'ImportSpecifier') { + const local = s.local.value; + const imported = s.imported?.value || local; + imports.set(local, { + type: 'google', + name: imported.replace(/_/g, ' '), + }); } - } - usedNextFont = true; + }); changed = true; - continue; // drop the import + continue; // Remove import } } newBody.push(item); } - // Note: We don't inject any helper functions anymore. - // Instead, we'll compute values during the rewrite and inject them directly. - - // Utilities to find fallback arrays - const isIdentifierNamed = (node: any, name: string) => - node && node.type === 'Identifier' && node.value === name; - const unwrapExpr = (n: any) => - n && typeof n === 'object' && 'expression' in n ? (n as any).expression : n; - const toArrayOfStringLiterals = (node: any): string[] | undefined => { - node = unwrapExpr(node); - if (!node || node.type !== 'ArrayExpression') return undefined; - const out: string[] = []; - for (const el of node.elements || []) { - if (!el) return undefined; - const expr = unwrapExpr(el); - if (!expr || expr.type !== 'StringLiteral') return undefined; - out.push(String(expr.value)); - } - return out; - }; - const findFallbackInArgs = (args: any[]): string[] | undefined => { - for (const arg of args || []) { - const expr = unwrapExpr(arg); - if (!expr) continue; - if (expr.type === 'ObjectExpression') { - for (const prop of expr.properties || []) { - if ( - !prop || - (prop.type !== 'KeyValueProperty' && prop.type !== 'Property') - ) - continue; - const key = prop.key; - let isFallback = false; - if (key.type === 'Identifier' && key.value === 'fallback') - isFallback = true; - if (key.type === 'StringLiteral' && key.value === 'fallback') - isFallback = true; - if (isFallback) { - const valNode: any = - 'value' in prop ? (prop as any).value : (prop as any).value; - const arr = toArrayOfStringLiterals(unwrapExpr(valNode)); - if (arr) return arr; - } - } - } - } - return undefined; - }; + const usedNextFont = changed; + if (!usedNextFont) { + return { code, map: null }; + } - const isLocalSrcSingleString = (args: any[]): boolean => { - for (const arg of args || []) { - const expr = unwrapExpr(arg); - if (!expr) continue; - if (expr.type === 'ObjectExpression') { - for (const prop of expr.properties || []) { - if ( - !prop || - (prop.type !== 'KeyValueProperty' && prop.type !== 'Property') - ) - continue; - const key = prop.key; - let isSrc = false; - if (key.type === 'Identifier' && key.value === 'src') isSrc = true; - if (key.type === 'StringLiteral' && key.value === 'src') isSrc = true; - if (isSrc) { - const valNode: any = - 'value' in prop ? (prop as any).value : (prop as any).value; - const val = unwrapExpr(valNode); - return val?.type === 'StringLiteral'; - } - } - } - } - return false; + // 3. Transform Declarations + // We need to parse the stub object asynchronously, so we create a helper. + const createStubNode = async ( + family: string, + weight: number | undefined, + style: string | undefined, + ) => { + const styleObj = [ + `fontFamily: ${JSON.stringify(family)}`, + weight !== undefined ? `fontWeight: ${weight}` : null, + style !== undefined ? `fontStyle: ${JSON.stringify(style)}` : null, + ] + .filter(Boolean) + .join(', '); + + const stubSource = `({ + get className() { throw new Error(${JSON.stringify(THROW_MSG)}); }, + get variable() { throw new Error(${JSON.stringify(THROW_MSG)}); }, + style: { ${styleObj} } + })`; + + // Parse this tiny snippet to get an Expression node + const m = await swc.parse(stubSource, { syntax: 'ecmascript' }); + return (m.body[0] as any).expression; }; - const findWeightInArgs = (args: any[]): any => { - for (const arg of args || []) { - const expr = unwrapExpr(arg); - if (!expr) continue; - if (expr.type === 'ObjectExpression') { - for (const prop of expr.properties || []) { - if ( - !prop || - (prop.type !== 'KeyValueProperty' && prop.type !== 'Property') - ) - continue; - const key = prop.key; - let isWeight = false; - if (key.type === 'Identifier' && key.value === 'weight') - isWeight = true; - if (key.type === 'StringLiteral' && key.value === 'weight') - isWeight = true; - if (isWeight) { - const valNode: any = - 'value' in prop ? (prop as any).value : (prop as any).value; - const val = unwrapExpr(valNode); - if (val.type === 'NumericLiteral') return val.value; - if (val.type === 'StringLiteral') return val.value; - return undefined; - } - } - } - } - return undefined; - }; + const processDeclarator = async (decl: any) => { + if (!decl.init || decl.init.type !== 'CallExpression') return; - const findStyleInArgs = (args: any[]): any => { - for (const arg of args || []) { - const expr = unwrapExpr(arg); - if (!expr) continue; - if (expr.type === 'ObjectExpression') { - for (const prop of expr.properties || []) { - if ( - !prop || - (prop.type !== 'KeyValueProperty' && prop.type !== 'Property') - ) - continue; - const key = prop.key; - let isStyle = false; - if (key.type === 'Identifier' && key.value === 'style') - isStyle = true; - if (key.type === 'StringLiteral' && key.value === 'style') - isStyle = true; - if (isStyle) { - const valNode: any = - 'value' in prop ? (prop as any).value : (prop as any).value; - const val = unwrapExpr(valNode); - if (val.type === 'StringLiteral') return val.value; - if (val.type === 'ArrayExpression') { - const arr = toArrayOfStringLiterals(val); - return arr; - } - return undefined; - } - } - } - } - return undefined; - }; + const callee = decl.init.callee; + if (callee.type !== 'Identifier') return; - // Rewrite variable declarators - const rewriteVarDecl = async (decl: any) => { - for (const d of decl.declarations || []) { - const init = d.init; - if (!init || init.type !== 'CallExpression') continue; - const callee = init.callee; - const args = init.arguments || []; - let varName = 'font'; - if (d.id && d.id.type === 'Identifier') varName = d.id.value; - - if (localAlias && isIdentifierNamed(callee, localAlias)) { - // compute the font family for local font - const fb = findFallbackInArgs(args); - const weight = findWeightInArgs(args); - const style = findStyleInArgs(args); - const singleSrcString = isLocalSrcSingleString(args); - - const computedFamily = computeStubbedFamily(varName, fb, true); - const computedWeight = singleSrcString - ? computeStubbedWeight(weight) - : undefined; - const computedStyle = singleSrcString - ? computeStubbedStyle(style, false) - : undefined; // false = not a Google font - - details.push({ - exportName: varName, - stubbedFamily: computedFamily, - stubbedWeight: computedWeight, - stubbedStyle: computedStyle, - }); + const fontDef = imports.get(callee.value); + if (!fontDef) return; - // build the style object with only defined properties - const styleProps: string[] = [ - `fontFamily: ${JSON.stringify(computedFamily)}`, - ]; - if (computedWeight !== undefined) { - styleProps.push(`fontWeight: ${computedWeight}`); - } - if (computedStyle !== undefined) { - styleProps.push(`fontStyle: ${JSON.stringify(computedStyle)}`); - } - - // inject the computed value directly as an object literal - const stubCode = `{ - get className() { throw new Error(${JSON.stringify(THROW_MSG)}); }, - get variable() { throw new Error(${JSON.stringify(THROW_MSG)}); }, - style: { ${styleProps.join(', ')} } - }`; - const parsed = await parseExpr(stubCode); - if (parsed) d.init = parsed; + const args = decl.init.arguments || []; + const opts = extractFontOptions(args); + const varName = decl.id.value || 'font'; - changed = true; - usedNextFont = true; - continue; - } + const isGoogle = fontDef.type === 'google'; + const familyName = isGoogle ? fontDef.name : varName; - if (callee && callee.type === 'Identifier') { - const spec = googleSpecs.find((g) => g.local === callee.value); - if (spec) { - // compute all the values for google font - const fb = findFallbackInArgs(args); - const weight = findWeightInArgs(args); - const style = findStyleInArgs(args); - - const computedFamily = computeStubbedFamily(spec.pretty, fb, false); - const computedWeight = computeStubbedWeight(weight); - const computedStyle = computeStubbedStyle(style, true); // true = Google font - - details.push({ - exportName: varName, - stubbedFamily: computedFamily, - stubbedWeight: computedWeight, - stubbedStyle: computedStyle, - }); - - // build the style object with only defined properties - const styleProps: string[] = [ - `fontFamily: ${JSON.stringify(computedFamily)}`, - ]; - if (computedWeight !== undefined) { - styleProps.push(`fontWeight: ${computedWeight}`); - } - if (computedStyle !== undefined) { - styleProps.push(`fontStyle: ${JSON.stringify(computedStyle)}`); - } + const family = getFontFamily(familyName, opts.fallback, !isGoogle); + let weight = parseWeight(opts.weight); + let style = parseStyle(opts.style, isGoogle); - // inject the computed value directly as an object literal - const stubCode = `{ - get className() { throw new Error(${JSON.stringify(THROW_MSG)}); }, - get variable() { throw new Error(${JSON.stringify(THROW_MSG)}); }, - style: { ${styleProps.join(', ')} } - }`; - const parsed = await parseExpr(stubCode); - if (parsed) d.init = parsed; - - changed = true; - usedNextFont = true; - continue; - } - } + // Local fonts only stub weight/style if src is a simple string + if (!isGoogle && typeof opts.src !== 'string') { + weight = undefined; + style = undefined; } + + decl.init = await createStubNode(family, weight, style); }; for (const item of newBody) { if (item.type === 'VariableDeclaration') { - await rewriteVarDecl(item); + for (const decl of item.declarations) { + await processDeclarator(decl); + } } else if ( item.type === 'ExportDeclaration' && - item.declaration && item.declaration.type === 'VariableDeclaration' ) { - await rewriteVarDecl(item.declaration); + for (const decl of item.declaration.declarations) { + await processDeclarator(decl); + } } } - const outCode = await printModule({ - type: 'Module', - span: program.span, - body: newBody, - }); - return { code: outCode, usedNextFont, details, changed }; + // 4. Generate Code + const { code: outputCode, map } = await swc.print( + { ...module, body: newBody }, + { minify: false, sourceMaps: true }, + ); + + return { + code: outputCode, + map: map || null, + }; } From c5123b83dc3fb765672ffb5902075379bb8090d8 Mon Sep 17 00:00:00 2001 From: Robbie Date: Fri, 21 Nov 2025 15:40:10 -0700 Subject: [PATCH 26/52] re-add next font injection --- .../src/app/creepster/page.tsx | 9 ++++ .../next-16-app-pages-router/src/app/page.tsx | 4 ++ .../src/styles/creepster-font.ts | 7 +++ .../src/styles/creepster.css.ts | 8 ++++ packages/turbopack-plugin/src/index.ts | 10 ++-- .../turbopack-plugin/src/next-font/inject.ts | 47 +++++++++++++++++++ 6 files changed, 81 insertions(+), 4 deletions(-) create mode 100644 fixtures/next-16-app-pages-router/src/app/creepster/page.tsx create mode 100644 fixtures/next-16-app-pages-router/src/styles/creepster-font.ts create mode 100644 fixtures/next-16-app-pages-router/src/styles/creepster.css.ts create mode 100644 packages/turbopack-plugin/src/next-font/inject.ts diff --git a/fixtures/next-16-app-pages-router/src/app/creepster/page.tsx b/fixtures/next-16-app-pages-router/src/app/creepster/page.tsx new file mode 100644 index 000000000..67ca334b4 --- /dev/null +++ b/fixtures/next-16-app-pages-router/src/app/creepster/page.tsx @@ -0,0 +1,9 @@ +import { creepsterText } from '../../styles/creepster.css'; + +export default function CreepsterPage() { + return ( +
+ This text should look scary (Creepster Font) +
+ ); +} diff --git a/fixtures/next-16-app-pages-router/src/app/page.tsx b/fixtures/next-16-app-pages-router/src/app/page.tsx index 307038b85..420ca8137 100644 --- a/fixtures/next-16-app-pages-router/src/app/page.tsx +++ b/fixtures/next-16-app-pages-router/src/app/page.tsx @@ -10,6 +10,10 @@ export default function Home() { features
function serializer +
+ creepster test +
+ next font ); } diff --git a/fixtures/next-16-app-pages-router/src/styles/creepster-font.ts b/fixtures/next-16-app-pages-router/src/styles/creepster-font.ts new file mode 100644 index 000000000..dd35e173c --- /dev/null +++ b/fixtures/next-16-app-pages-router/src/styles/creepster-font.ts @@ -0,0 +1,7 @@ +import { Creepster } from 'next/font/google'; + +export const creepster = Creepster({ + weight: '400', + subsets: ['latin'], + display: 'swap', +}); diff --git a/fixtures/next-16-app-pages-router/src/styles/creepster.css.ts b/fixtures/next-16-app-pages-router/src/styles/creepster.css.ts new file mode 100644 index 000000000..bb19251b1 --- /dev/null +++ b/fixtures/next-16-app-pages-router/src/styles/creepster.css.ts @@ -0,0 +1,8 @@ +import { style } from '@vanilla-extract/css'; +import { creepster } from './creepster-font'; + +export const creepsterText = style({ + fontFamily: creepster.style.fontFamily, + fontSize: '40px', + color: 'red', +}); diff --git a/packages/turbopack-plugin/src/index.ts b/packages/turbopack-plugin/src/index.ts index 962652571..4bed6169a 100644 --- a/packages/turbopack-plugin/src/index.ts +++ b/packages/turbopack-plugin/src/index.ts @@ -6,6 +6,7 @@ import type { IdentifierOption } from '@vanilla-extract/integration'; import * as path from 'node:path'; import { createNextFontVePlugin } from './next-font/plugin'; import type fs from 'node:fs'; +import { injectFontImports } from './next-font/inject'; export type TurboLoaderContext = { getOptions: { @@ -114,9 +115,10 @@ export default async function turbopackVanillaExtractLoader( nextEnv: options.nextEnv, loaderContext: this, }); - const { source } = await compiler.processVanillaFile(this.resourcePath, { - outputCss, - }); + const { source, watchFiles } = await compiler.processVanillaFile( + this.resourcePath, + { outputCss }, + ); - return source; + return await injectFontImports(source, watchFiles, this); } diff --git a/packages/turbopack-plugin/src/next-font/inject.ts b/packages/turbopack-plugin/src/next-font/inject.ts new file mode 100644 index 000000000..4f2b61aeb --- /dev/null +++ b/packages/turbopack-plugin/src/next-font/inject.ts @@ -0,0 +1,47 @@ +import type { TurboLoaderContext, TurboLoaderOptions } from '../index'; +import path from 'node:path'; +import { promisify } from 'node:util'; + +/** + * we need to ensure that any next/font/google or next/font/local imports + * are preserved in the output code, even if they are only used in CSS + * + * this is because next needs to see these imports to generate the font files + */ +export async function injectFontImports( + source: string, + watchFiles: Set, + loaderContext: TurboLoaderContext, +): Promise { + const readFile = promisify(loaderContext.fs.readFile); + const importsToInject: string[] = []; + + await Promise.all( + Array.from(watchFiles).map(async (file) => { + if (file.includes('node_modules')) return; + if (file === loaderContext.resourcePath) return; + if (!/\.(js|ts)x?$/.test(file)) return; + + const content = String(await readFile(file).catch(() => null)); + if ( + content.includes('from "next/font/google"') || + content.includes('from "next/font/local"') + ) { + const relativeImport = path.relative( + path.dirname(file), + loaderContext.resourcePath, + ); + + importsToInject.push(relativeImport); + } + }), + ); + + if (importsToInject.length > 0) { + return `${importsToInject + .map((importPath) => `import '${importPath}';`) + .join('\n')}\n${source}`; + } + + return source; +} From f5163f1577c56919d0ee70ac6b6c541e349fb5ce Mon Sep 17 00:00:00 2001 From: Robbie Date: Fri, 21 Nov 2025 15:58:37 -0700 Subject: [PATCH 27/52] version cleanup --- .prettierignore | 1 + .../next-16-app-pages-router/package.json | 4 +- packages/turbopack-plugin/package.json | 2 +- pnpm-lock.yaml | 626 +++++++++--------- 4 files changed, 331 insertions(+), 302 deletions(-) diff --git a/.prettierignore b/.prettierignore index 869b8973d..d57ff8a03 100644 --- a/.prettierignore +++ b/.prettierignore @@ -12,3 +12,4 @@ pnpm-lock.yaml *-snapshots test-results examples/remix/build +.pnpm-store diff --git a/fixtures/next-16-app-pages-router/package.json b/fixtures/next-16-app-pages-router/package.json index 241637491..4512ae230 100644 --- a/fixtures/next-16-app-pages-router/package.json +++ b/fixtures/next-16-app-pages-router/package.json @@ -20,8 +20,8 @@ "@vanilla-extract/recipes": "workspace:*", "@vanilla-extract/sprinkles": "workspace:*", "next": "npm:next@^16.0.0", - "react": "^19.2.0", - "react-dom": "^19.2.0" + "react": "npm:react@^19.2.0", + "react-dom": "npm:react-dom@^19.2.0" }, "devDependencies": { "@types/react": "^18.2.55", diff --git a/packages/turbopack-plugin/package.json b/packages/turbopack-plugin/package.json index 641f605b2..148691646 100644 --- a/packages/turbopack-plugin/package.json +++ b/packages/turbopack-plugin/package.json @@ -27,7 +27,7 @@ }, "devDependencies": { "next": "12.3.4", - "vite": "^7.0.3" + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0" }, "peerDependencies": { "next": ">=12.1.7" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d172d1392..37c06a4db 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -37,7 +37,7 @@ importers: version: 2.8.2 '@testing-library/jest-dom': specifier: ^6.4.2 - version: 6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)))(vitest@3.2.4(@types/node@22.15.3)(jsdom@20.0.3)(terser@5.26.0)(tsx@4.17.0)) + version: 6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)))(vitest@3.2.4(@types/node@22.15.3)(jsdom@20.0.3)(terser@5.26.0)(tsx@4.17.0)) '@types/jest': specifier: ^29.5.12 version: 29.5.12 @@ -55,7 +55,7 @@ importers: version: 7.0.3 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)) + version: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)) jest-environment-jsdom: specifier: ^29.7.0 version: 29.7.0 @@ -135,7 +135,7 @@ importers: devDependencies: '@remix-run/dev': specifier: ^2.8.0 - version: 2.8.0(@remix-run/serve@2.8.0(typescript@5.8.3))(@types/node@22.15.3)(terser@5.26.0)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3))(typescript@5.8.3)(vite@7.0.3(@types/node@22.15.3)(terser@5.26.0)(tsx@4.17.0)) + version: 2.8.0(@remix-run/serve@2.8.0(typescript@5.8.3))(@types/node@22.15.3)(terser@5.26.0)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3))(typescript@5.8.3)(vite@7.0.3(@types/node@22.15.3)(terser@5.26.0)(tsx@4.17.0)) '@types/react': specifier: ^18.2.55 version: 18.2.55 @@ -189,10 +189,10 @@ importers: version: 18.2.0(react@18.2.0) tailwindcss: specifier: ^2.1.2 - version: 2.2.19(autoprefixer@10.4.17(postcss@8.5.6))(postcss@8.5.6)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)) + version: 2.2.19(autoprefixer@10.4.17(postcss@8.5.6))(postcss@8.5.6)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)) webpack: specifier: ^5.90.0 - version: 5.90.0(@swc/core@1.13.5)(webpack-cli@5.1.4) + version: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) webpack-cli: specifier: ^5.1.4 version: 5.1.4(webpack-bundle-analyzer@4.5.0)(webpack-dev-server@5.0.4)(webpack@5.90.0) @@ -253,12 +253,12 @@ importers: version: link:../../packages/sprinkles next: specifier: npm:next@^16.0.0 - version: 16.0.0(@babel/core@7.23.9)(@playwright/test@1.43.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + version: 16.0.3(@babel/core@7.23.9)(@playwright/test@1.43.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) react: - specifier: ^19.2.0 + specifier: npm:react@^19.2.0 version: 19.2.0 react-dom: - specifier: ^19.2.0 + specifier: npm:react-dom@^19.2.0 version: 19.2.0(react@19.2.0) devDependencies: '@types/react': @@ -607,7 +607,7 @@ importers: version: 12.3.4(@babel/core@7.23.9)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) webpack: specifier: ^5.90.0 - version: 5.90.0(@swc/core@1.13.5) + version: 5.90.0(@swc/core@1.15.3) packages/parcel-transformer: dependencies: @@ -667,7 +667,7 @@ importers: dependencies: '@swc/core': specifier: ^1.13.5 - version: 1.13.5 + version: 1.15.3 '@vanilla-extract/compiler': specifier: workspace:^ version: link:../compiler @@ -679,7 +679,7 @@ importers: specifier: 12.3.4 version: 12.3.4(@babel/core@7.23.9)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) vite: - specifier: ^7.0.3 + specifier: ^5.0.0 || ^6.0.0 || ^7.0.0 version: 7.0.3(@types/node@22.15.3)(terser@5.26.0)(tsx@4.17.0) packages/utils: {} @@ -717,7 +717,7 @@ importers: version: 4.1.7 webpack: specifier: ^5.90.0 - version: 5.90.0(@swc/core@1.13.5) + version: 5.90.0(@swc/core@1.15.3) scripts: devDependencies: @@ -811,7 +811,7 @@ importers: version: 2.2.4 '@types/webpack-bundle-analyzer': specifier: ^4 - version: 4.4.1(@swc/core@1.13.5)(webpack-cli@5.1.4) + version: 4.4.1(@swc/core@1.15.3)(webpack-cli@5.1.4) '@vanilla-extract/css': specifier: workspace:* version: link:../packages/css @@ -865,7 +865,7 @@ importers: version: 2.7.7(webpack@5.90.0) netlify-cli: specifier: ^11.8.3 - version: 11.8.3(@swc/core@1.13.5)(@types/express@4.17.21) + version: 11.8.3(@swc/core@1.15.3)(@types/express@4.17.21) null-loader: specifier: ^4.0.1 version: 4.0.1(webpack@5.90.0) @@ -874,10 +874,10 @@ importers: version: 0.3.0 tailwindcss: specifier: ^2.1.2 - version: 2.2.19(autoprefixer@10.4.17(postcss@8.5.6))(postcss@8.5.6)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@16.11.10)(typescript@4.9.4)) + version: 2.2.19(autoprefixer@10.4.17(postcss@8.5.6))(postcss@8.5.6)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@16.11.10)(typescript@4.9.4)) webpack: specifier: ^5.90.0 - version: 5.90.0(@swc/core@1.13.5)(webpack-cli@5.1.4) + version: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) webpack-bundle-analyzer: specifier: ^4.4.1 version: 4.5.0 @@ -940,7 +940,7 @@ importers: version: 2.11.0 '@types/mini-css-extract-plugin': specifier: ^1.2.2 - version: 1.4.3(@swc/core@1.13.5)(esbuild@0.25.0) + version: 1.4.3(@swc/core@1.15.3)(esbuild@0.25.0) '@types/webpack-dev-server': specifier: ^3.11.1 version: 3.11.6 @@ -961,10 +961,10 @@ importers: version: link:../packages/webpack-plugin babel-loader: specifier: ^9.1.3 - version: 9.1.3(@babel/core@7.23.9)(webpack@5.90.0(@swc/core@1.13.5)(esbuild@0.25.0)) + version: 9.1.3(@babel/core@7.23.9)(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.25.0)) css-loader: specifier: ^7.1.2 - version: 7.1.2(webpack@5.90.0(@swc/core@1.13.5)(esbuild@0.25.0)) + version: 7.1.2(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.25.0)) cssnano: specifier: ^5.1.15 version: 5.1.15(postcss@8.5.6) @@ -979,10 +979,10 @@ importers: version: 11.8.3 html-webpack-plugin: specifier: ^5.3.1 - version: 5.5.0(webpack@5.90.0(@swc/core@1.13.5)(esbuild@0.25.0)) + version: 5.5.0(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.25.0)) mini-css-extract-plugin: specifier: ^2.7.7 - version: 2.7.7(webpack@5.90.0(@swc/core@1.13.5)(esbuild@0.25.0)) + version: 2.7.7(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.25.0)) minimist: specifier: ^1.2.5 version: 1.2.8 @@ -1003,7 +1003,7 @@ importers: version: 6.1.3 style-loader: specifier: ^2.0.0 - version: 2.0.0(webpack@5.90.0(@swc/core@1.13.5)(esbuild@0.25.0)) + version: 2.0.0(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.25.0)) vite: specifier: ^5.0.0 || ^6.0.0 || ^7.0.0 version: 7.0.3(@types/node@22.15.3)(terser@5.26.0)(tsx@4.17.0) @@ -1012,10 +1012,10 @@ importers: version: 11.3.0(vite@7.0.3(@types/node@22.15.3)(terser@5.26.0)(tsx@4.17.0)) webpack: specifier: ^5.90.0 - version: 5.90.0(@swc/core@1.13.5)(esbuild@0.25.0) + version: 5.90.0(@swc/core@1.15.3)(esbuild@0.25.0) webpack-dev-server: specifier: ^5.0.4 - version: 5.0.4(webpack@5.90.0(@swc/core@1.13.5)(esbuild@0.25.0)) + version: 5.0.4(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.25.0)) webpack-merge: specifier: ^6.0.1 version: 6.0.1 @@ -1040,7 +1040,7 @@ importers: version: 10.0.0 '@testing-library/jest-dom': specifier: ^6.4.2 - version: 6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)))(vitest@3.2.4(@types/node@22.15.3)(jsdom@20.0.3)(terser@5.26.0)(tsx@4.17.0)) + version: 6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)))(vitest@3.2.4(@types/node@22.15.3)(jsdom@20.0.3)(terser@5.26.0)(tsx@4.17.0)) '@vanilla-extract-private/test-helpers': specifier: workspace:* version: link:../test-helpers @@ -1951,8 +1951,8 @@ packages: '@emnapi/runtime@1.4.4': resolution: {integrity: sha512-hHyapA4A3gPaDCNfiqyZUStTMqIkKRshqPIuDOXv1hcBnD4U3l8cP0T1HMCfGRxQ6V64TGCcoswChANyOAwbQg==} - '@emnapi/runtime@1.6.0': - resolution: {integrity: sha512-obtUmAHTMjll499P+D9A3axeJFlhdjOWdKUNs/U6QIGT7V5RjcUW1xToAzjvmgTSQhDbYn/NwfTRoJcQ2rNBxA==} + '@emnapi/runtime@1.7.1': + resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} '@emnapi/wasi-threads@1.0.3': resolution: {integrity: sha512-8K5IFFsQqF9wQNJptGbS6FNKgUTsSRYnTqNCG1vPP8jFdjSv18n2mQfJpkt2Oibo9iBEzcDnDxNwKTzC7svlJw==} @@ -2666,124 +2666,135 @@ packages: resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==} engines: {node: '>=18'} - '@img/sharp-darwin-arm64@0.34.4': - resolution: {integrity: sha512-sitdlPzDVyvmINUdJle3TNHl+AG9QcwiAMsXmccqsCOMZNIdW2/7S26w0LyU8euiLVzFBL3dXPwVCq/ODnf2vA==} + '@img/sharp-darwin-arm64@0.34.5': + resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [darwin] - '@img/sharp-darwin-x64@0.34.4': - resolution: {integrity: sha512-rZheupWIoa3+SOdF/IcUe1ah4ZDpKBGWcsPX6MT0lYniH9micvIU7HQkYTfrx5Xi8u+YqwLtxC/3vl8TQN6rMg==} + '@img/sharp-darwin-x64@0.34.5': + resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [darwin] - '@img/sharp-libvips-darwin-arm64@1.2.3': - resolution: {integrity: sha512-QzWAKo7kpHxbuHqUC28DZ9pIKpSi2ts2OJnoIGI26+HMgq92ZZ4vk8iJd4XsxN+tYfNJxzH6W62X5eTcsBymHw==} + '@img/sharp-libvips-darwin-arm64@1.2.4': + resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} cpu: [arm64] os: [darwin] - '@img/sharp-libvips-darwin-x64@1.2.3': - resolution: {integrity: sha512-Ju+g2xn1E2AKO6YBhxjj+ACcsPQRHT0bhpglxcEf+3uyPY+/gL8veniKoo96335ZaPo03bdDXMv0t+BBFAbmRA==} + '@img/sharp-libvips-darwin-x64@1.2.4': + resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} cpu: [x64] os: [darwin] - '@img/sharp-libvips-linux-arm64@1.2.3': - resolution: {integrity: sha512-I4RxkXU90cpufazhGPyVujYwfIm9Nk1QDEmiIsaPwdnm013F7RIceaCc87kAH+oUB1ezqEvC6ga4m7MSlqsJvQ==} + '@img/sharp-libvips-linux-arm64@1.2.4': + resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} cpu: [arm64] os: [linux] - '@img/sharp-libvips-linux-arm@1.2.3': - resolution: {integrity: sha512-x1uE93lyP6wEwGvgAIV0gP6zmaL/a0tGzJs/BIDDG0zeBhMnuUPm7ptxGhUbcGs4okDJrk4nxgrmxpib9g6HpA==} + '@img/sharp-libvips-linux-arm@1.2.4': + resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} cpu: [arm] os: [linux] - '@img/sharp-libvips-linux-ppc64@1.2.3': - resolution: {integrity: sha512-Y2T7IsQvJLMCBM+pmPbM3bKT/yYJvVtLJGfCs4Sp95SjvnFIjynbjzsa7dY1fRJX45FTSfDksbTp6AGWudiyCg==} + '@img/sharp-libvips-linux-ppc64@1.2.4': + resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} cpu: [ppc64] os: [linux] - '@img/sharp-libvips-linux-s390x@1.2.3': - resolution: {integrity: sha512-RgWrs/gVU7f+K7P+KeHFaBAJlNkD1nIZuVXdQv6S+fNA6syCcoboNjsV2Pou7zNlVdNQoQUpQTk8SWDHUA3y/w==} + '@img/sharp-libvips-linux-riscv64@1.2.4': + resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} + cpu: [riscv64] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.2.4': + resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} cpu: [s390x] os: [linux] - '@img/sharp-libvips-linux-x64@1.2.3': - resolution: {integrity: sha512-3JU7LmR85K6bBiRzSUc/Ff9JBVIFVvq6bomKE0e63UXGeRw2HPVEjoJke1Yx+iU4rL7/7kUjES4dZ/81Qjhyxg==} + '@img/sharp-libvips-linux-x64@1.2.4': + resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} cpu: [x64] os: [linux] - '@img/sharp-libvips-linuxmusl-arm64@1.2.3': - resolution: {integrity: sha512-F9q83RZ8yaCwENw1GieztSfj5msz7GGykG/BA+MOUefvER69K/ubgFHNeSyUu64amHIYKGDs4sRCMzXVj8sEyw==} + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} cpu: [arm64] os: [linux] - '@img/sharp-libvips-linuxmusl-x64@1.2.3': - resolution: {integrity: sha512-U5PUY5jbc45ANM6tSJpsgqmBF/VsL6LnxJmIf11kB7J5DctHgqm0SkuXzVWtIY90GnJxKnC/JT251TDnk1fu/g==} + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} cpu: [x64] os: [linux] - '@img/sharp-linux-arm64@0.34.4': - resolution: {integrity: sha512-YXU1F/mN/Wu786tl72CyJjP/Ngl8mGHN1hST4BGl+hiW5jhCnV2uRVTNOcaYPs73NeT/H8Upm3y9582JVuZHrQ==} + '@img/sharp-linux-arm64@0.34.5': + resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - '@img/sharp-linux-arm@0.34.4': - resolution: {integrity: sha512-Xyam4mlqM0KkTHYVSuc6wXRmM7LGN0P12li03jAnZ3EJWZqj83+hi8Y9UxZUbxsgsK1qOEwg7O0Bc0LjqQVtxA==} + '@img/sharp-linux-arm@0.34.5': + resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] - '@img/sharp-linux-ppc64@0.34.4': - resolution: {integrity: sha512-F4PDtF4Cy8L8hXA2p3TO6s4aDt93v+LKmpcYFLAVdkkD3hSxZzee0rh6/+94FpAynsuMpLX5h+LRsSG3rIciUQ==} + '@img/sharp-linux-ppc64@0.34.5': + resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ppc64] os: [linux] - '@img/sharp-linux-s390x@0.34.4': - resolution: {integrity: sha512-qVrZKE9Bsnzy+myf7lFKvng6bQzhNUAYcVORq2P7bDlvmF6u2sCmK2KyEQEBdYk+u3T01pVsPrkj943T1aJAsw==} + '@img/sharp-linux-riscv64@0.34.5': + resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [riscv64] + os: [linux] + + '@img/sharp-linux-s390x@0.34.5': + resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] - '@img/sharp-linux-x64@0.34.4': - resolution: {integrity: sha512-ZfGtcp2xS51iG79c6Vhw9CWqQC8l2Ot8dygxoDoIQPTat/Ov3qAa8qpxSrtAEAJW+UjTXc4yxCjNfxm4h6Xm2A==} + '@img/sharp-linux-x64@0.34.5': + resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - '@img/sharp-linuxmusl-arm64@0.34.4': - resolution: {integrity: sha512-8hDVvW9eu4yHWnjaOOR8kHVrew1iIX+MUgwxSuH2XyYeNRtLUe4VNioSqbNkB7ZYQJj9rUTT4PyRscyk2PXFKA==} + '@img/sharp-linuxmusl-arm64@0.34.5': + resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - '@img/sharp-linuxmusl-x64@0.34.4': - resolution: {integrity: sha512-lU0aA5L8QTlfKjpDCEFOZsTYGn3AEiO6db8W5aQDxj0nQkVrZWmN3ZP9sYKWJdtq3PWPhUNlqehWyXpYDcI9Sg==} + '@img/sharp-linuxmusl-x64@0.34.5': + resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - '@img/sharp-wasm32@0.34.4': - resolution: {integrity: sha512-33QL6ZO/qpRyG7woB/HUALz28WnTMI2W1jgX3Nu2bypqLIKx/QKMILLJzJjI+SIbvXdG9fUnmrxR7vbi1sTBeA==} + '@img/sharp-wasm32@0.34.5': + resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [wasm32] - '@img/sharp-win32-arm64@0.34.4': - resolution: {integrity: sha512-2Q250do/5WXTwxW3zjsEuMSv5sUU4Tq9VThWKlU2EYLm4MB7ZeMwF+SFJutldYODXF6jzc6YEOC+VfX0SZQPqA==} + '@img/sharp-win32-arm64@0.34.5': + resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [win32] - '@img/sharp-win32-ia32@0.34.4': - resolution: {integrity: sha512-3ZeLue5V82dT92CNL6rsal6I2weKw1cYu+rGKm8fOCCtJTR2gYeUfY3FqUnIJsMUPIH68oS5jmZ0NiJ508YpEw==} + '@img/sharp-win32-ia32@0.34.5': + resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ia32] os: [win32] - '@img/sharp-win32-x64@0.34.4': - resolution: {integrity: sha512-xIyj4wpYs8J18sVN3mSQjwrw7fKUqRw+Z5rnHNCy5fYTxigBz81u5mOMPmFumwjcn8+ld1ppptMBCLic1nz6ig==} + '@img/sharp-win32-x64@0.34.5': + resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [win32] @@ -3335,8 +3346,8 @@ packages: '@next/env@13.5.4': resolution: {integrity: sha512-LGegJkMvRNw90WWphGJ3RMHMVplYcOfRWf2Be3td3sUa+1AaxmsYyANsA+znrGCBjXJNi4XAQlSoEfUxs/4kIQ==} - '@next/env@16.0.0': - resolution: {integrity: sha512-s5j2iFGp38QsG1LWRQaE2iUY3h1jc014/melHFfLdrsMJPqxqDQwWNwyQTcNoUSGZlCVZuM7t7JDMmSyRilsnA==} + '@next/env@16.0.3': + resolution: {integrity: sha512-IqgtY5Vwsm14mm/nmQaRMmywCU+yyMIYfk3/MHZ2ZTJvwVbBn3usZnjMi1GacrMVzVcAxJShTCpZlPs26EdEjQ==} '@next/swc-android-arm-eabi@12.3.4': resolution: {integrity: sha512-cM42Cw6V4Bz/2+j/xIzO8nK/Q3Ly+VSlZJTa1vHzsocJRYz8KT6MrreXaci2++SIZCF1rVRCDgAg5PpqRibdIA==} @@ -3362,8 +3373,8 @@ packages: cpu: [arm64] os: [darwin] - '@next/swc-darwin-arm64@16.0.0': - resolution: {integrity: sha512-/CntqDCnk5w2qIwMiF0a9r6+9qunZzFmU0cBX4T82LOflE72zzH6gnOjCwUXYKOBlQi8OpP/rMj8cBIr18x4TA==} + '@next/swc-darwin-arm64@16.0.3': + resolution: {integrity: sha512-MOnbd92+OByu0p6QBAzq1ahVWzF6nyfiH07dQDez4/Nku7G249NjxDVyEfVhz8WkLiOEU+KFVnqtgcsfP2nLXg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -3380,8 +3391,8 @@ packages: cpu: [x64] os: [darwin] - '@next/swc-darwin-x64@16.0.0': - resolution: {integrity: sha512-hB4GZnJGKa8m4efvTGNyii6qs76vTNl+3dKHTCAUaksN6KjYy4iEO3Q5ira405NW2PKb3EcqWiRaL9DrYJfMHg==} + '@next/swc-darwin-x64@16.0.3': + resolution: {integrity: sha512-i70C4O1VmbTivYdRlk+5lj9xRc2BlK3oUikt3yJeHT1unL4LsNtN7UiOhVanFdc7vDAgZn1tV/9mQwMkWOJvHg==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -3410,8 +3421,8 @@ packages: cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-gnu@16.0.0': - resolution: {integrity: sha512-E2IHMdE+C1k+nUgndM13/BY/iJY9KGCphCftMh7SXWcaQqExq/pJU/1Hgn8n/tFwSoLoYC/yUghOv97tAsIxqg==} + '@next/swc-linux-arm64-gnu@16.0.3': + resolution: {integrity: sha512-O88gCZ95sScwD00mn/AtalyCoykhhlokxH/wi1huFK+rmiP5LAYVs/i2ruk7xST6SuXN4NI5y4Xf5vepb2jf6A==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -3428,8 +3439,8 @@ packages: cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@16.0.0': - resolution: {integrity: sha512-xzgl7c7BVk4+7PDWldU+On2nlwnGgFqJ1siWp3/8S0KBBLCjonB6zwJYPtl4MUY7YZJrzzumdUpUoquu5zk8vg==} + '@next/swc-linux-arm64-musl@16.0.3': + resolution: {integrity: sha512-CEErFt78S/zYXzFIiv18iQCbRbLgBluS8z1TNDQoyPi8/Jr5qhR3e8XHAIxVxPBjDbEMITprqELVc5KTfFj0gg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -3446,8 +3457,8 @@ packages: cpu: [x64] os: [linux] - '@next/swc-linux-x64-gnu@16.0.0': - resolution: {integrity: sha512-sdyOg4cbiCw7YUr0F/7ya42oiVBXLD21EYkSwN+PhE4csJH4MSXUsYyslliiiBwkM+KsuQH/y9wuxVz6s7Nstg==} + '@next/swc-linux-x64-gnu@16.0.3': + resolution: {integrity: sha512-Tc3i+nwt6mQ+Dwzcri/WNDj56iWdycGVh5YwwklleClzPzz7UpfaMw1ci7bLl6GRYMXhWDBfe707EXNjKtiswQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -3464,8 +3475,8 @@ packages: cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@16.0.0': - resolution: {integrity: sha512-IAXv3OBYqVaNOgyd3kxR4L3msuhmSy1bcchPHxDOjypG33i2yDWvGBwFD94OuuTjjTt/7cuIKtAmoOOml6kfbg==} + '@next/swc-linux-x64-musl@16.0.3': + resolution: {integrity: sha512-zTh03Z/5PBBPdTurgEtr6nY0vI9KR9Ifp/jZCcHlODzwVOEKcKRBtQIGrkc7izFgOMuXDEJBmirwpGqdM/ZixA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -3482,8 +3493,8 @@ packages: cpu: [arm64] os: [win32] - '@next/swc-win32-arm64-msvc@16.0.0': - resolution: {integrity: sha512-bmo3ncIJKUS9PWK1JD9pEVv0yuvp1KPuOsyJTHXTv8KDrEmgV/K+U0C75rl9rhIaODcS7JEb6/7eJhdwXI0XmA==} + '@next/swc-win32-arm64-msvc@16.0.3': + resolution: {integrity: sha512-Jc1EHxtZovcJcg5zU43X3tuqzl/sS+CmLgjRP28ZT4vk869Ncm2NoF8qSTaL99gh6uOzgM99Shct06pSO6kA6g==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -3512,8 +3523,8 @@ packages: cpu: [x64] os: [win32] - '@next/swc-win32-x64-msvc@16.0.0': - resolution: {integrity: sha512-O1cJbT+lZp+cTjYyZGiDwsOjO3UHHzSqobkPNipdlnnuPb1swfcuY6r3p8dsKU4hAIEO4cO67ZCfVVH/M1ETXA==} + '@next/swc-win32-x64-msvc@16.0.3': + resolution: {integrity: sha512-N7EJ6zbxgIYpI/sWNzpVKRMbfEGgsWuOIvzkML7wxAAZhPk1Msxuo/JDu1PKjWGrAoOLaZcIX5s+/pF5LIbBBg==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -4360,68 +4371,68 @@ packages: '@sinonjs/fake-timers@10.0.2': resolution: {integrity: sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==} - '@swc/core-darwin-arm64@1.13.5': - resolution: {integrity: sha512-lKNv7SujeXvKn16gvQqUQI5DdyY8v7xcoO3k06/FJbHJS90zEwZdQiMNRiqpYw/orU543tPaWgz7cIYWhbopiQ==} + '@swc/core-darwin-arm64@1.15.3': + resolution: {integrity: sha512-AXfeQn0CvcQ4cndlIshETx6jrAM45oeUrK8YeEY6oUZU/qzz0Id0CyvlEywxkWVC81Ajpd8TQQ1fW5yx6zQWkQ==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.13.5': - resolution: {integrity: sha512-ILd38Fg/w23vHb0yVjlWvQBoE37ZJTdlLHa8LRCFDdX4WKfnVBiblsCU9ar4QTMNdeTBEX9iUF4IrbNWhaF1Ng==} + '@swc/core-darwin-x64@1.15.3': + resolution: {integrity: sha512-p68OeCz1ui+MZYG4wmfJGvcsAcFYb6Sl25H9TxWl+GkBgmNimIiRdnypK9nBGlqMZAcxngNPtnG3kEMNnvoJ2A==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.13.5': - resolution: {integrity: sha512-Q6eS3Pt8GLkXxqz9TAw+AUk9HpVJt8Uzm54MvPsqp2yuGmY0/sNaPPNVqctCX9fu/Nu8eaWUen0si6iEiCsazQ==} + '@swc/core-linux-arm-gnueabihf@1.15.3': + resolution: {integrity: sha512-Nuj5iF4JteFgwrai97mUX+xUOl+rQRHqTvnvHMATL/l9xE6/TJfPBpd3hk/PVpClMXG3Uvk1MxUFOEzM1JrMYg==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.13.5': - resolution: {integrity: sha512-aNDfeN+9af+y+M2MYfxCzCy/VDq7Z5YIbMqRI739o8Ganz6ST+27kjQFd8Y/57JN/hcnUEa9xqdS3XY7WaVtSw==} + '@swc/core-linux-arm64-gnu@1.15.3': + resolution: {integrity: sha512-2Nc/s8jE6mW2EjXWxO/lyQuLKShcmTrym2LRf5Ayp3ICEMX6HwFqB1EzDhwoMa2DcUgmnZIalesq2lG3krrUNw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.13.5': - resolution: {integrity: sha512-9+ZxFN5GJag4CnYnq6apKTnnezpfJhCumyz0504/JbHLo+Ue+ZtJnf3RhyA9W9TINtLE0bC4hKpWi8ZKoETyOQ==} + '@swc/core-linux-arm64-musl@1.15.3': + resolution: {integrity: sha512-j4SJniZ/qaZ5g8op+p1G9K1z22s/EYGg1UXIb3+Cg4nsxEpF5uSIGEE4mHUfA70L0BR9wKT2QF/zv3vkhfpX4g==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.13.5': - resolution: {integrity: sha512-WD530qvHrki8Ywt/PloKUjaRKgstQqNGvmZl54g06kA+hqtSE2FTG9gngXr3UJxYu/cNAjJYiBifm7+w4nbHbA==} + '@swc/core-linux-x64-gnu@1.15.3': + resolution: {integrity: sha512-aKttAZnz8YB1VJwPQZtyU8Uk0BfMP63iDMkvjhJzRZVgySmqt/apWSdnoIcZlUoGheBrcqbMC17GGUmur7OT5A==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.13.5': - resolution: {integrity: sha512-Luj8y4OFYx4DHNQTWjdIuKTq2f5k6uSXICqx+FSabnXptaOBAbJHNbHT/06JZh6NRUouaf0mYXN0mcsqvkhd7Q==} + '@swc/core-linux-x64-musl@1.15.3': + resolution: {integrity: sha512-oe8FctPu1gnUsdtGJRO2rvOUIkkIIaHqsO9xxN0bTR7dFTlPTGi2Fhk1tnvXeyAvCPxLIcwD8phzKg6wLv9yug==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.13.5': - resolution: {integrity: sha512-cZ6UpumhF9SDJvv4DA2fo9WIzlNFuKSkZpZmPG1c+4PFSEMy5DFOjBSllCvnqihCabzXzpn6ykCwBmHpy31vQw==} + '@swc/core-win32-arm64-msvc@1.15.3': + resolution: {integrity: sha512-L9AjzP2ZQ/Xh58e0lTRMLvEDrcJpR7GwZqAtIeNLcTK7JVE+QineSyHp0kLkO1rttCHyCy0U74kDTj0dRz6raA==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.13.5': - resolution: {integrity: sha512-C5Yi/xIikrFUzZcyGj9L3RpKljFvKiDMtyDzPKzlsDrKIw2EYY+bF88gB6oGY5RGmv4DAX8dbnpRAqgFD0FMEw==} + '@swc/core-win32-ia32-msvc@1.15.3': + resolution: {integrity: sha512-B8UtogMzErUPDWUoKONSVBdsgKYd58rRyv2sHJWKOIMCHfZ22FVXICR4O/VwIYtlnZ7ahERcjayBHDlBZpR0aw==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.13.5': - resolution: {integrity: sha512-YrKdMVxbYmlfybCSbRtrilc6UA8GF5aPmGKBdPvjrarvsmf4i7ZHGCEnLtfOMd3Lwbs2WUZq3WdMbozYeLU93Q==} + '@swc/core-win32-x64-msvc@1.15.3': + resolution: {integrity: sha512-SpZKMR9QBTecHeqpzJdYEfgw30Oo8b/Xl6rjSzBt1g0ZsXyy60KLXrp6IagQyfTYqNYE/caDvwtF2FPn7pomog==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.13.5': - resolution: {integrity: sha512-WezcBo8a0Dg2rnR82zhwoR6aRNxeTGfK5QCD6TQ+kg3xx/zNT02s/0o+81h/3zhvFSB24NtqEr8FTw88O5W/JQ==} + '@swc/core@1.15.3': + resolution: {integrity: sha512-Qd8eBPkUFL4eAONgGjycZXj1jFCBW8Fd+xF0PzdTlBCWQIV1xnUT7B93wUANtW3KGjl3TRcOyxwSx/u/jyKw/Q==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '>=0.5.17' @@ -6301,6 +6312,10 @@ packages: engines: {node: '>=0.10'} hasBin: true + detect-libc@2.0.2: + resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} + engines: {node: '>=8'} + detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} @@ -9168,8 +9183,8 @@ packages: sass: optional: true - next@16.0.0: - resolution: {integrity: sha512-nYohiNdxGu4OmBzggxy9rczmjIGI+TpR5vbKTsE1HqYwNm1B+YSiugSrFguX6omMOKnDHAmBPY4+8TNJk0Idyg==} + next@16.0.3: + resolution: {integrity: sha512-Ka0/iNBblPFcIubTA1Jjh6gvwqfjrGq1Y2MTI5lbjeLIAfmC+p5bQmojpRZqgHHVu5cG4+qdIiwXiBSm/8lZ3w==} engines: {node: '>=20.9.0'} hasBin: true peerDependencies: @@ -10823,8 +10838,8 @@ packages: resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} engines: {node: '>=8'} - sharp@0.34.4: - resolution: {integrity: sha512-FUH39xp3SBPnxWvd5iib1X8XY7J0K0X7d93sie9CJg2PO8/7gmg89Nve6OjItK53/MlAushNNxteBYfM6DEuoA==} + sharp@0.34.5: + resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} shebang-command@1.2.0: @@ -13618,9 +13633,9 @@ snapshots: tslib: 2.5.0 optional: true - '@emnapi/runtime@1.6.0': + '@emnapi/runtime@1.7.1': dependencies: - tslib: 2.8.1 + tslib: 2.5.0 optional: true '@emnapi/wasi-threads@1.0.3': @@ -13984,90 +13999,98 @@ snapshots: '@img/colour@1.0.0': optional: true - '@img/sharp-darwin-arm64@0.34.4': + '@img/sharp-darwin-arm64@0.34.5': optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.2.3 + '@img/sharp-libvips-darwin-arm64': 1.2.4 optional: true - '@img/sharp-darwin-x64@0.34.4': + '@img/sharp-darwin-x64@0.34.5': optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.2.3 + '@img/sharp-libvips-darwin-x64': 1.2.4 optional: true - '@img/sharp-libvips-darwin-arm64@1.2.3': + '@img/sharp-libvips-darwin-arm64@1.2.4': optional: true - '@img/sharp-libvips-darwin-x64@1.2.3': + '@img/sharp-libvips-darwin-x64@1.2.4': optional: true - '@img/sharp-libvips-linux-arm64@1.2.3': + '@img/sharp-libvips-linux-arm64@1.2.4': optional: true - '@img/sharp-libvips-linux-arm@1.2.3': + '@img/sharp-libvips-linux-arm@1.2.4': optional: true - '@img/sharp-libvips-linux-ppc64@1.2.3': + '@img/sharp-libvips-linux-ppc64@1.2.4': optional: true - '@img/sharp-libvips-linux-s390x@1.2.3': + '@img/sharp-libvips-linux-riscv64@1.2.4': optional: true - '@img/sharp-libvips-linux-x64@1.2.3': + '@img/sharp-libvips-linux-s390x@1.2.4': optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.2.3': + '@img/sharp-libvips-linux-x64@1.2.4': optional: true - '@img/sharp-libvips-linuxmusl-x64@1.2.3': + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': optional: true - '@img/sharp-linux-arm64@0.34.4': + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + optional: true + + '@img/sharp-linux-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.2.4 + optional: true + + '@img/sharp-linux-arm@0.34.5': optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.2.3 + '@img/sharp-libvips-linux-arm': 1.2.4 optional: true - '@img/sharp-linux-arm@0.34.4': + '@img/sharp-linux-ppc64@0.34.5': optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.2.3 + '@img/sharp-libvips-linux-ppc64': 1.2.4 optional: true - '@img/sharp-linux-ppc64@0.34.4': + '@img/sharp-linux-riscv64@0.34.5': optionalDependencies: - '@img/sharp-libvips-linux-ppc64': 1.2.3 + '@img/sharp-libvips-linux-riscv64': 1.2.4 optional: true - '@img/sharp-linux-s390x@0.34.4': + '@img/sharp-linux-s390x@0.34.5': optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.2.3 + '@img/sharp-libvips-linux-s390x': 1.2.4 optional: true - '@img/sharp-linux-x64@0.34.4': + '@img/sharp-linux-x64@0.34.5': optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.2.3 + '@img/sharp-libvips-linux-x64': 1.2.4 optional: true - '@img/sharp-linuxmusl-arm64@0.34.4': + '@img/sharp-linuxmusl-arm64@0.34.5': optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.2.3 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 optional: true - '@img/sharp-linuxmusl-x64@0.34.4': + '@img/sharp-linuxmusl-x64@0.34.5': optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.2.3 + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 optional: true - '@img/sharp-wasm32@0.34.4': + '@img/sharp-wasm32@0.34.5': dependencies: - '@emnapi/runtime': 1.6.0 + '@emnapi/runtime': 1.7.1 optional: true - '@img/sharp-win32-arm64@0.34.4': + '@img/sharp-win32-arm64@0.34.5': optional: true - '@img/sharp-win32-ia32@0.34.4': + '@img/sharp-win32-ia32@0.34.5': optional: true - '@img/sharp-win32-x64@0.34.4': + '@img/sharp-win32-x64@0.34.5': optional: true '@import-maps/resolve@1.0.1': {} @@ -14100,7 +14123,7 @@ snapshots: jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3))': + '@jest/core@29.7.0(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -14114,7 +14137,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)) + jest-config: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -14414,7 +14437,7 @@ snapshots: '@mapbox/node-pre-gyp@1.0.10(supports-color@9.2.3)': dependencies: - detect-libc: 2.1.2 + detect-libc: 2.0.2 https-proxy-agent: 5.0.1(supports-color@9.2.3) make-dir: 3.1.0 node-fetch: 2.6.7 @@ -14528,7 +14551,7 @@ snapshots: '@netlify/binary-info@1.0.0': {} - '@netlify/build@27.18.5(@swc/core@1.13.5)': + '@netlify/build@27.18.5(@swc/core@1.15.3)': dependencies: '@bugsnag/js': 7.18.0 '@netlify/cache-utils': 4.1.4(supports-color@9.2.3) @@ -14580,7 +14603,7 @@ snapshots: strip-ansi: 7.0.1 supports-color: 9.2.3 tmp-promise: 3.0.3 - ts-node: 10.9.1(@swc/core@1.13.5)(@types/node@16.11.10)(typescript@4.9.4) + ts-node: 10.9.1(@swc/core@1.15.3)(@types/node@16.11.10)(typescript@4.9.4) typescript: 4.9.4 update-notifier: 5.1.0 uuid: 8.3.2 @@ -14862,7 +14885,7 @@ snapshots: '@next/env@13.5.4': {} - '@next/env@16.0.0': {} + '@next/env@16.0.3': {} '@next/swc-android-arm-eabi@12.3.4': optional: true @@ -14876,7 +14899,7 @@ snapshots: '@next/swc-darwin-arm64@13.5.4': optional: true - '@next/swc-darwin-arm64@16.0.0': + '@next/swc-darwin-arm64@16.0.3': optional: true '@next/swc-darwin-x64@12.3.4': @@ -14885,7 +14908,7 @@ snapshots: '@next/swc-darwin-x64@13.5.4': optional: true - '@next/swc-darwin-x64@16.0.0': + '@next/swc-darwin-x64@16.0.3': optional: true '@next/swc-freebsd-x64@12.3.4': @@ -14900,7 +14923,7 @@ snapshots: '@next/swc-linux-arm64-gnu@13.5.4': optional: true - '@next/swc-linux-arm64-gnu@16.0.0': + '@next/swc-linux-arm64-gnu@16.0.3': optional: true '@next/swc-linux-arm64-musl@12.3.4': @@ -14909,7 +14932,7 @@ snapshots: '@next/swc-linux-arm64-musl@13.5.4': optional: true - '@next/swc-linux-arm64-musl@16.0.0': + '@next/swc-linux-arm64-musl@16.0.3': optional: true '@next/swc-linux-x64-gnu@12.3.4': @@ -14918,7 +14941,7 @@ snapshots: '@next/swc-linux-x64-gnu@13.5.4': optional: true - '@next/swc-linux-x64-gnu@16.0.0': + '@next/swc-linux-x64-gnu@16.0.3': optional: true '@next/swc-linux-x64-musl@12.3.4': @@ -14927,7 +14950,7 @@ snapshots: '@next/swc-linux-x64-musl@13.5.4': optional: true - '@next/swc-linux-x64-musl@16.0.0': + '@next/swc-linux-x64-musl@16.0.3': optional: true '@next/swc-win32-arm64-msvc@12.3.4': @@ -14936,7 +14959,7 @@ snapshots: '@next/swc-win32-arm64-msvc@13.5.4': optional: true - '@next/swc-win32-arm64-msvc@16.0.0': + '@next/swc-win32-arm64-msvc@16.0.3': optional: true '@next/swc-win32-ia32-msvc@12.3.4': @@ -14951,7 +14974,7 @@ snapshots: '@next/swc-win32-x64-msvc@13.5.4': optional: true - '@next/swc-win32-x64-msvc@16.0.0': + '@next/swc-win32-x64-msvc@16.0.3': optional: true '@nodelib/fs.scandir@2.1.5': @@ -15805,7 +15828,7 @@ snapshots: make-synchronized: 0.2.9 prettier: 3.4.2 - '@remix-run/dev@2.8.0(@remix-run/serve@2.8.0(typescript@5.8.3))(@types/node@22.15.3)(terser@5.26.0)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3))(typescript@5.8.3)(vite@7.0.3(@types/node@22.15.3)(terser@5.26.0)(tsx@4.17.0))': + '@remix-run/dev@2.8.0(@remix-run/serve@2.8.0(typescript@5.8.3))(@types/node@22.15.3)(terser@5.26.0)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3))(typescript@5.8.3)(vite@7.0.3(@types/node@22.15.3)(terser@5.26.0)(tsx@4.17.0))': dependencies: '@babel/core': 7.23.9 '@babel/generator': 7.23.6 @@ -15848,7 +15871,7 @@ snapshots: pidtree: 0.6.0 postcss: 8.5.6 postcss-discard-duplicates: 5.1.0(postcss@8.5.6) - postcss-load-config: 4.0.2(postcss@8.5.6)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)) + postcss-load-config: 4.0.2(postcss@8.5.6)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)) postcss-modules: 6.0.0(postcss@8.5.6) prettier: 2.8.8 pretty-ms: 7.0.1 @@ -16180,51 +16203,51 @@ snapshots: dependencies: '@sinonjs/commons': 2.0.0 - '@swc/core-darwin-arm64@1.13.5': + '@swc/core-darwin-arm64@1.15.3': optional: true - '@swc/core-darwin-x64@1.13.5': + '@swc/core-darwin-x64@1.15.3': optional: true - '@swc/core-linux-arm-gnueabihf@1.13.5': + '@swc/core-linux-arm-gnueabihf@1.15.3': optional: true - '@swc/core-linux-arm64-gnu@1.13.5': + '@swc/core-linux-arm64-gnu@1.15.3': optional: true - '@swc/core-linux-arm64-musl@1.13.5': + '@swc/core-linux-arm64-musl@1.15.3': optional: true - '@swc/core-linux-x64-gnu@1.13.5': + '@swc/core-linux-x64-gnu@1.15.3': optional: true - '@swc/core-linux-x64-musl@1.13.5': + '@swc/core-linux-x64-musl@1.15.3': optional: true - '@swc/core-win32-arm64-msvc@1.13.5': + '@swc/core-win32-arm64-msvc@1.15.3': optional: true - '@swc/core-win32-ia32-msvc@1.13.5': + '@swc/core-win32-ia32-msvc@1.15.3': optional: true - '@swc/core-win32-x64-msvc@1.13.5': + '@swc/core-win32-x64-msvc@1.15.3': optional: true - '@swc/core@1.13.5': + '@swc/core@1.15.3': dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.25 optionalDependencies: - '@swc/core-darwin-arm64': 1.13.5 - '@swc/core-darwin-x64': 1.13.5 - '@swc/core-linux-arm-gnueabihf': 1.13.5 - '@swc/core-linux-arm64-gnu': 1.13.5 - '@swc/core-linux-arm64-musl': 1.13.5 - '@swc/core-linux-x64-gnu': 1.13.5 - '@swc/core-linux-x64-musl': 1.13.5 - '@swc/core-win32-arm64-msvc': 1.13.5 - '@swc/core-win32-ia32-msvc': 1.13.5 - '@swc/core-win32-x64-msvc': 1.13.5 + '@swc/core-darwin-arm64': 1.15.3 + '@swc/core-darwin-x64': 1.15.3 + '@swc/core-linux-arm-gnueabihf': 1.15.3 + '@swc/core-linux-arm64-gnu': 1.15.3 + '@swc/core-linux-arm64-musl': 1.15.3 + '@swc/core-linux-x64-gnu': 1.15.3 + '@swc/core-linux-x64-musl': 1.15.3 + '@swc/core-win32-arm64-msvc': 1.15.3 + '@swc/core-win32-ia32-msvc': 1.15.3 + '@swc/core-win32-x64-msvc': 1.15.3 '@swc/counter@0.1.3': {} @@ -16271,7 +16294,7 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 - '@testing-library/jest-dom@6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)))(vitest@3.2.4(@types/node@22.15.3)(jsdom@20.0.3)(terser@5.26.0)(tsx@4.17.0))': + '@testing-library/jest-dom@6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)))(vitest@3.2.4(@types/node@22.15.3)(jsdom@20.0.3)(terser@5.26.0)(tsx@4.17.0))': dependencies: '@adobe/css-tools': 4.3.3 '@babel/runtime': 7.23.9 @@ -16284,7 +16307,7 @@ snapshots: optionalDependencies: '@jest/globals': 29.7.0 '@types/jest': 29.5.12 - jest: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)) + jest: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)) vitest: 3.2.4(@types/node@22.15.3)(jsdom@20.0.3)(terser@5.26.0)(tsx@4.17.0) '@tootallnate/once@2.0.0': {} @@ -16487,11 +16510,11 @@ snapshots: '@types/mime@1.3.2': {} - '@types/mini-css-extract-plugin@1.4.3(@swc/core@1.13.5)(esbuild@0.25.0)': + '@types/mini-css-extract-plugin@1.4.3(@swc/core@1.15.3)(esbuild@0.25.0)': dependencies: '@types/node': 22.15.3 tapable: 2.2.1 - webpack: 5.90.0(@swc/core@1.13.5)(esbuild@0.25.0) + webpack: 5.90.0(@swc/core@1.15.3)(esbuild@0.25.0) transitivePeerDependencies: - '@swc/core' - esbuild @@ -16619,11 +16642,11 @@ snapshots: '@types/unist@2.0.6': {} - '@types/webpack-bundle-analyzer@4.4.1(@swc/core@1.13.5)(webpack-cli@5.1.4)': + '@types/webpack-bundle-analyzer@4.4.1(@swc/core@1.15.3)(webpack-cli@5.1.4)': dependencies: '@types/node': 22.15.3 tapable: 2.2.1 - webpack: 5.90.0(@swc/core@1.13.5)(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) transitivePeerDependencies: - '@swc/core' - esbuild @@ -16902,17 +16925,17 @@ snapshots: '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.90.0)': dependencies: - webpack: 5.90.0(@swc/core@1.13.5)(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-bundle-analyzer@4.5.0)(webpack-dev-server@5.0.4)(webpack@5.90.0) '@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.90.0)': dependencies: - webpack: 5.90.0(@swc/core@1.13.5)(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-bundle-analyzer@4.5.0)(webpack-dev-server@5.0.4)(webpack@5.90.0) '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack-dev-server@5.0.4)(webpack@5.90.0)': dependencies: - webpack: 5.90.0(@swc/core@1.13.5)(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-bundle-analyzer@4.5.0)(webpack-dev-server@5.0.4)(webpack@5.90.0) optionalDependencies: webpack-dev-server: 5.0.4(webpack-cli@5.1.4)(webpack@5.90.0) @@ -17228,19 +17251,19 @@ snapshots: transitivePeerDependencies: - supports-color - babel-loader@9.1.3(@babel/core@7.23.9)(webpack@5.90.0(@swc/core@1.13.5)(esbuild@0.25.0)): + babel-loader@9.1.3(@babel/core@7.23.9)(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.25.0)): dependencies: '@babel/core': 7.23.9 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.90.0(@swc/core@1.13.5)(esbuild@0.25.0) + webpack: 5.90.0(@swc/core@1.15.3)(esbuild@0.25.0) babel-loader@9.1.3(@babel/core@7.23.9)(webpack@5.90.0): dependencies: '@babel/core': 7.23.9 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.90.0(@swc/core@1.13.5)(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) babel-plugin-apply-mdx-type-prop@1.6.22(@babel/core@7.12.9): dependencies: @@ -18007,7 +18030,7 @@ snapshots: normalize-path: 3.0.0 schema-utils: 4.2.0 serialize-javascript: 6.0.2 - webpack: 5.90.0(@swc/core@1.13.5)(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) core-js-compat@3.36.0: dependencies: @@ -18058,13 +18081,13 @@ snapshots: crc-32: 1.2.2 readable-stream: 3.6.0 - create-jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)): + create-jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.10 - jest-config: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)) + jest-config: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -18103,7 +18126,7 @@ snapshots: dependencies: postcss: 8.5.6 - css-loader@7.1.2(webpack@5.90.0(@swc/core@1.13.5)(esbuild@0.25.0)): + css-loader@7.1.2(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.25.0)): dependencies: icss-utils: 5.1.0(postcss@8.5.6) postcss: 8.5.6 @@ -18114,7 +18137,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.6.0 optionalDependencies: - webpack: 5.90.0(@swc/core@1.13.5)(esbuild@0.25.0) + webpack: 5.90.0(@swc/core@1.15.3)(esbuild@0.25.0) css-loader@7.1.2(webpack@5.90.0): dependencies: @@ -18127,7 +18150,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.6.0 optionalDependencies: - webpack: 5.90.0(@swc/core@1.13.5)(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) css-select@4.1.3: dependencies: @@ -18414,7 +18437,10 @@ snapshots: detect-libc@1.0.3: {} - detect-libc@2.1.2: {} + detect-libc@2.0.2: {} + + detect-libc@2.1.2: + optional: true detect-newline@3.1.0: {} @@ -19817,14 +19843,14 @@ snapshots: html-void-elements@1.0.5: {} - html-webpack-plugin@5.5.0(webpack@5.90.0(@swc/core@1.13.5)(esbuild@0.25.0)): + html-webpack-plugin@5.5.0(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.25.0)): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.90.0(@swc/core@1.13.5)(esbuild@0.25.0) + webpack: 5.90.0(@swc/core@1.15.3)(esbuild@0.25.0) html-webpack-plugin@5.5.0(webpack@5.90.0): dependencies: @@ -19833,7 +19859,7 @@ snapshots: lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.90.0(@swc/core@1.13.5)(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) htmlnano@2.0.3(cssnano@5.1.15(postcss@8.5.6))(postcss@8.5.6)(relateurl@0.2.7)(srcset@4.0.0)(svgo@2.8.0)(terser@5.26.0): dependencies: @@ -20412,16 +20438,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)): + jest-cli@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)) + '@jest/core': 29.7.0(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)) + create-jest: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)) exit: 0.1.2 import-local: 3.0.3 - jest-config: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)) + jest-config: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -20431,7 +20457,7 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)): + jest-config@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)): dependencies: '@babel/core': 7.23.9 '@jest/test-sequencer': 29.7.0 @@ -20457,7 +20483,7 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 22.15.3 - ts-node: 10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3) + ts-node: 10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -20726,12 +20752,12 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)): + jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)) + '@jest/core': 29.7.0(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)) '@jest/types': 29.6.3 import-local: 3.0.3 - jest-cli: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)) + jest-cli: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -21162,7 +21188,7 @@ snapshots: lower-case@2.0.2: dependencies: - tslib: 2.8.1 + tslib: 2.5.0 lowercase-keys@1.0.0: {} @@ -21760,15 +21786,15 @@ snapshots: min-indent@1.0.1: {} - mini-css-extract-plugin@2.7.7(webpack@5.90.0(@swc/core@1.13.5)(esbuild@0.25.0)): + mini-css-extract-plugin@2.7.7(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.25.0)): dependencies: schema-utils: 4.2.0 - webpack: 5.90.0(@swc/core@1.13.5)(esbuild@0.25.0) + webpack: 5.90.0(@swc/core@1.15.3)(esbuild@0.25.0) mini-css-extract-plugin@2.7.7(webpack@5.90.0): dependencies: schema-utils: 4.2.0 - webpack: 5.90.0(@swc/core@1.13.5)(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) minimalistic-assert@1.0.1: {} @@ -21928,9 +21954,9 @@ snapshots: nested-error-stacks@2.1.1: {} - netlify-cli@11.8.3(@swc/core@1.13.5)(@types/express@4.17.21): + netlify-cli@11.8.3(@swc/core@1.15.3)(@types/express@4.17.21): dependencies: - '@netlify/build': 27.18.5(@swc/core@1.13.5) + '@netlify/build': 27.18.5(@swc/core@1.15.3) '@netlify/config': 18.2.3 '@netlify/edge-bundler': 2.2.0 '@netlify/framework-info': 9.2.0 @@ -22164,9 +22190,9 @@ snapshots: - '@babel/core' - babel-plugin-macros - next@16.0.0(@babel/core@7.23.9)(@playwright/test@1.43.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + next@16.0.3(@babel/core@7.23.9)(@playwright/test@1.43.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: - '@next/env': 16.0.0 + '@next/env': 16.0.3 '@swc/helpers': 0.5.15 caniuse-lite: 1.0.30001587 postcss: 8.4.31 @@ -22174,16 +22200,16 @@ snapshots: react-dom: 19.2.0(react@19.2.0) styled-jsx: 5.1.6(@babel/core@7.23.9)(react@19.2.0) optionalDependencies: - '@next/swc-darwin-arm64': 16.0.0 - '@next/swc-darwin-x64': 16.0.0 - '@next/swc-linux-arm64-gnu': 16.0.0 - '@next/swc-linux-arm64-musl': 16.0.0 - '@next/swc-linux-x64-gnu': 16.0.0 - '@next/swc-linux-x64-musl': 16.0.0 - '@next/swc-win32-arm64-msvc': 16.0.0 - '@next/swc-win32-x64-msvc': 16.0.0 + '@next/swc-darwin-arm64': 16.0.3 + '@next/swc-darwin-x64': 16.0.3 + '@next/swc-linux-arm64-gnu': 16.0.3 + '@next/swc-linux-arm64-musl': 16.0.3 + '@next/swc-linux-x64-gnu': 16.0.3 + '@next/swc-linux-x64-musl': 16.0.3 + '@next/swc-win32-arm64-msvc': 16.0.3 + '@next/swc-win32-x64-msvc': 16.0.3 '@playwright/test': 1.43.1 - sharp: 0.34.4 + sharp: 0.34.5 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -22195,7 +22221,7 @@ snapshots: no-case@3.0.4: dependencies: lower-case: 2.0.2 - tslib: 2.8.1 + tslib: 2.5.0 node-addon-api@4.3.0: {} @@ -22228,7 +22254,7 @@ snapshots: node-gyp-build-optional-packages@5.1.1: dependencies: - detect-libc: 2.1.2 + detect-libc: 2.0.2 node-gyp-build@4.5.0: {} @@ -22365,7 +22391,7 @@ snapshots: dependencies: loader-utils: 2.0.2 schema-utils: 3.3.0 - webpack: 5.90.0(@swc/core@1.13.5)(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) nullthrows@1.1.1: {} @@ -22865,29 +22891,29 @@ snapshots: camelcase-css: 2.0.1 postcss: 8.5.6 - postcss-load-config@3.1.0(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@16.11.10)(typescript@4.9.4)): + postcss-load-config@3.1.0(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@16.11.10)(typescript@4.9.4)): dependencies: import-cwd: 3.0.0 lilconfig: 2.1.0 yaml: 1.10.2 optionalDependencies: - ts-node: 10.9.1(@swc/core@1.13.5)(@types/node@16.11.10)(typescript@4.9.4) + ts-node: 10.9.1(@swc/core@1.15.3)(@types/node@16.11.10)(typescript@4.9.4) - postcss-load-config@3.1.0(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)): + postcss-load-config@3.1.0(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)): dependencies: import-cwd: 3.0.0 lilconfig: 2.1.0 yaml: 1.10.2 optionalDependencies: - ts-node: 10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3) + ts-node: 10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3) - postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)): + postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)): dependencies: lilconfig: 3.1.0 yaml: 2.3.4 optionalDependencies: postcss: 8.5.6 - ts-node: 10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3) + ts-node: 10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3) postcss-merge-longhand@5.1.7(postcss@8.5.6): dependencies: @@ -23958,34 +23984,36 @@ snapshots: dependencies: kind-of: 6.0.3 - sharp@0.34.4: + sharp@0.34.5: dependencies: '@img/colour': 1.0.0 detect-libc: 2.1.2 semver: 7.7.3 optionalDependencies: - '@img/sharp-darwin-arm64': 0.34.4 - '@img/sharp-darwin-x64': 0.34.4 - '@img/sharp-libvips-darwin-arm64': 1.2.3 - '@img/sharp-libvips-darwin-x64': 1.2.3 - '@img/sharp-libvips-linux-arm': 1.2.3 - '@img/sharp-libvips-linux-arm64': 1.2.3 - '@img/sharp-libvips-linux-ppc64': 1.2.3 - '@img/sharp-libvips-linux-s390x': 1.2.3 - '@img/sharp-libvips-linux-x64': 1.2.3 - '@img/sharp-libvips-linuxmusl-arm64': 1.2.3 - '@img/sharp-libvips-linuxmusl-x64': 1.2.3 - '@img/sharp-linux-arm': 0.34.4 - '@img/sharp-linux-arm64': 0.34.4 - '@img/sharp-linux-ppc64': 0.34.4 - '@img/sharp-linux-s390x': 0.34.4 - '@img/sharp-linux-x64': 0.34.4 - '@img/sharp-linuxmusl-arm64': 0.34.4 - '@img/sharp-linuxmusl-x64': 0.34.4 - '@img/sharp-wasm32': 0.34.4 - '@img/sharp-win32-arm64': 0.34.4 - '@img/sharp-win32-ia32': 0.34.4 - '@img/sharp-win32-x64': 0.34.4 + '@img/sharp-darwin-arm64': 0.34.5 + '@img/sharp-darwin-x64': 0.34.5 + '@img/sharp-libvips-darwin-arm64': 1.2.4 + '@img/sharp-libvips-darwin-x64': 1.2.4 + '@img/sharp-libvips-linux-arm': 1.2.4 + '@img/sharp-libvips-linux-arm64': 1.2.4 + '@img/sharp-libvips-linux-ppc64': 1.2.4 + '@img/sharp-libvips-linux-riscv64': 1.2.4 + '@img/sharp-libvips-linux-s390x': 1.2.4 + '@img/sharp-libvips-linux-x64': 1.2.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + '@img/sharp-linux-arm': 0.34.5 + '@img/sharp-linux-arm64': 0.34.5 + '@img/sharp-linux-ppc64': 0.34.5 + '@img/sharp-linux-riscv64': 0.34.5 + '@img/sharp-linux-s390x': 0.34.5 + '@img/sharp-linux-x64': 0.34.5 + '@img/sharp-linuxmusl-arm64': 0.34.5 + '@img/sharp-linuxmusl-x64': 0.34.5 + '@img/sharp-wasm32': 0.34.5 + '@img/sharp-win32-arm64': 0.34.5 + '@img/sharp-win32-ia32': 0.34.5 + '@img/sharp-win32-x64': 0.34.5 optional: true shebang-command@1.2.0: @@ -24334,11 +24362,11 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 - style-loader@2.0.0(webpack@5.90.0(@swc/core@1.13.5)(esbuild@0.25.0)): + style-loader@2.0.0(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.25.0)): dependencies: loader-utils: 2.0.2 schema-utils: 3.3.0 - webpack: 5.90.0(@swc/core@1.13.5)(esbuild@0.25.0) + webpack: 5.90.0(@swc/core@1.15.3)(esbuild@0.25.0) style-to-object@0.3.0: dependencies: @@ -24435,7 +24463,7 @@ snapshots: transitivePeerDependencies: - supports-color - tailwindcss@2.2.19(autoprefixer@10.4.17(postcss@8.5.6))(postcss@8.5.6)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@16.11.10)(typescript@4.9.4)): + tailwindcss@2.2.19(autoprefixer@10.4.17(postcss@8.5.6))(postcss@8.5.6)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@16.11.10)(typescript@4.9.4)): dependencies: arg: 5.0.2 autoprefixer: 10.4.17(postcss@8.5.6) @@ -24461,7 +24489,7 @@ snapshots: object-hash: 2.2.0 postcss: 8.5.6 postcss-js: 3.0.3 - postcss-load-config: 3.1.0(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@16.11.10)(typescript@4.9.4)) + postcss-load-config: 3.1.0(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@16.11.10)(typescript@4.9.4)) postcss-nested: 5.0.6(postcss@8.5.6) postcss-selector-parser: 6.0.11 postcss-value-parser: 4.2.0 @@ -24474,7 +24502,7 @@ snapshots: transitivePeerDependencies: - ts-node - tailwindcss@2.2.19(autoprefixer@10.4.17(postcss@8.5.6))(postcss@8.5.6)(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)): + tailwindcss@2.2.19(autoprefixer@10.4.17(postcss@8.5.6))(postcss@8.5.6)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)): dependencies: arg: 5.0.2 autoprefixer: 10.4.17(postcss@8.5.6) @@ -24500,7 +24528,7 @@ snapshots: object-hash: 2.2.0 postcss: 8.5.6 postcss-js: 3.0.3 - postcss-load-config: 3.1.0(ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3)) + postcss-load-config: 3.1.0(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)) postcss-nested: 5.0.6(postcss@8.5.6) postcss-selector-parser: 6.0.11 postcss-value-parser: 4.2.0 @@ -24566,39 +24594,39 @@ snapshots: ansi-escapes: 4.3.2 supports-hyperlinks: 2.2.0 - terser-webpack-plugin@5.3.10(@swc/core@1.13.5)(esbuild@0.25.0)(webpack@5.90.0(@swc/core@1.13.5)(esbuild@0.25.0)): + terser-webpack-plugin@5.3.10(@swc/core@1.15.3)(esbuild@0.25.0)(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.25.0)): dependencies: '@jridgewell/trace-mapping': 0.3.22 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.26.0 - webpack: 5.90.0(@swc/core@1.13.5)(esbuild@0.25.0) + webpack: 5.90.0(@swc/core@1.15.3)(esbuild@0.25.0) optionalDependencies: - '@swc/core': 1.13.5 + '@swc/core': 1.15.3 esbuild: 0.25.0 - terser-webpack-plugin@5.3.10(@swc/core@1.13.5)(webpack@5.90.0(@swc/core@1.13.5)): + terser-webpack-plugin@5.3.10(@swc/core@1.15.3)(webpack@5.90.0(@swc/core@1.15.3)): dependencies: '@jridgewell/trace-mapping': 0.3.22 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.26.0 - webpack: 5.90.0(@swc/core@1.13.5) + webpack: 5.90.0(@swc/core@1.15.3) optionalDependencies: - '@swc/core': 1.13.5 + '@swc/core': 1.15.3 - terser-webpack-plugin@5.3.10(@swc/core@1.13.5)(webpack@5.90.0): + terser-webpack-plugin@5.3.10(@swc/core@1.15.3)(webpack@5.90.0): dependencies: '@jridgewell/trace-mapping': 0.3.22 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.26.0 - webpack: 5.90.0(@swc/core@1.13.5)(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) optionalDependencies: - '@swc/core': 1.13.5 + '@swc/core': 1.15.3 terser@5.26.0: dependencies: @@ -24763,7 +24791,7 @@ snapshots: trough@2.2.0: {} - ts-node@10.9.1(@swc/core@1.13.5)(@types/node@16.11.10)(typescript@4.9.4): + ts-node@10.9.1(@swc/core@1.15.3)(@types/node@16.11.10)(typescript@4.9.4): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.8 @@ -24781,9 +24809,9 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: - '@swc/core': 1.13.5 + '@swc/core': 1.15.3 - ts-node@10.9.1(@swc/core@1.13.5)(@types/node@22.15.3)(typescript@5.8.3): + ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.8 @@ -24801,7 +24829,7 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: - '@swc/core': 1.13.5 + '@swc/core': 1.15.3 optional: true tsconfck@3.1.4(typescript@5.8.3): @@ -25446,13 +25474,13 @@ snapshots: import-local: 3.0.3 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.90.0(@swc/core@1.13.5)(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) webpack-merge: 5.8.0 optionalDependencies: webpack-bundle-analyzer: 4.5.0 webpack-dev-server: 5.0.4(webpack-cli@5.1.4)(webpack@5.90.0) - webpack-dev-middleware@7.3.0(webpack@5.90.0(@swc/core@1.13.5)(esbuild@0.25.0)): + webpack-dev-middleware@7.3.0(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.25.0)): dependencies: colorette: 2.0.16 memfs: 4.11.1 @@ -25461,7 +25489,7 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.2.0 optionalDependencies: - webpack: 5.90.0(@swc/core@1.13.5)(esbuild@0.25.0) + webpack: 5.90.0(@swc/core@1.15.3)(esbuild@0.25.0) webpack-dev-middleware@7.3.0(webpack@5.90.0): dependencies: @@ -25472,7 +25500,7 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.2.0 optionalDependencies: - webpack: 5.90.0(@swc/core@1.13.5)(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) webpack-dev-server@5.0.4(webpack-cli@5.1.4)(webpack@5.90.0): dependencies: @@ -25507,7 +25535,7 @@ snapshots: webpack-dev-middleware: 7.3.0(webpack@5.90.0) ws: 8.16.0 optionalDependencies: - webpack: 5.90.0(@swc/core@1.13.5)(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-bundle-analyzer@4.5.0)(webpack-dev-server@5.0.4)(webpack@5.90.0) transitivePeerDependencies: - bufferutil @@ -25515,7 +25543,7 @@ snapshots: - supports-color - utf-8-validate - webpack-dev-server@5.0.4(webpack@5.90.0(@swc/core@1.13.5)(esbuild@0.25.0)): + webpack-dev-server@5.0.4(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.25.0)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -25545,10 +25573,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.3.0(webpack@5.90.0(@swc/core@1.13.5)(esbuild@0.25.0)) + webpack-dev-middleware: 7.3.0(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.25.0)) ws: 8.16.0 optionalDependencies: - webpack: 5.90.0(@swc/core@1.13.5)(esbuild@0.25.0) + webpack: 5.90.0(@swc/core@1.15.3)(esbuild@0.25.0) transitivePeerDependencies: - bufferutil - debug @@ -25570,7 +25598,7 @@ snapshots: webpack-sources@3.2.3: {} - webpack@5.90.0(@swc/core@1.13.5): + webpack@5.90.0(@swc/core@1.15.3): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -25593,7 +25621,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.13.5)(webpack@5.90.0(@swc/core@1.13.5)) + terser-webpack-plugin: 5.3.10(@swc/core@1.15.3)(webpack@5.90.0(@swc/core@1.15.3)) watchpack: 2.4.0 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -25601,7 +25629,7 @@ snapshots: - esbuild - uglify-js - webpack@5.90.0(@swc/core@1.13.5)(esbuild@0.25.0): + webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.25.0): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -25624,7 +25652,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.13.5)(esbuild@0.25.0)(webpack@5.90.0(@swc/core@1.13.5)(esbuild@0.25.0)) + terser-webpack-plugin: 5.3.10(@swc/core@1.15.3)(esbuild@0.25.0)(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.25.0)) watchpack: 2.4.0 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -25632,7 +25660,7 @@ snapshots: - esbuild - uglify-js - webpack@5.90.0(@swc/core@1.13.5)(webpack-cli@5.1.4): + webpack@5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -25655,7 +25683,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.13.5)(webpack@5.90.0) + terser-webpack-plugin: 5.3.10(@swc/core@1.15.3)(webpack@5.90.0) watchpack: 2.4.0 webpack-sources: 3.2.3 optionalDependencies: From 65b2416ef22091839500793ac30a16ad6b342a16 Mon Sep 17 00:00:00 2001 From: Robbie Date: Fri, 21 Nov 2025 16:49:03 -0700 Subject: [PATCH 28/52] fix missed font files --- .../turbopack-plugin/src/next-font/inject.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/turbopack-plugin/src/next-font/inject.ts b/packages/turbopack-plugin/src/next-font/inject.ts index 4f2b61aeb..cc85b210e 100644 --- a/packages/turbopack-plugin/src/next-font/inject.ts +++ b/packages/turbopack-plugin/src/next-font/inject.ts @@ -1,6 +1,6 @@ -import type { TurboLoaderContext, TurboLoaderOptions } from '../index'; import path from 'node:path'; import { promisify } from 'node:util'; +import type { TurboLoaderContext, TurboLoaderOptions } from '../index'; /** * we need to ensure that any next/font/google or next/font/local imports @@ -20,18 +20,18 @@ export async function injectFontImports( Array.from(watchFiles).map(async (file) => { if (file.includes('node_modules')) return; if (file === loaderContext.resourcePath) return; - if (!/\.(js|ts)x?$/.test(file)) return; + if (!/\.(m|c)?(js|ts)x?$/.test(file)) return; const content = String(await readFile(file).catch(() => null)); - if ( - content.includes('from "next/font/google"') || - content.includes('from "next/font/local"') - ) { - const relativeImport = path.relative( - path.dirname(file), - loaderContext.resourcePath, + if (/from\s+['"]next\/font\/(google|local)['"]/.test(content)) { + let relativeImport = path.relative( + path.dirname(loaderContext.resourcePath), + file, ); + if (!relativeImport.startsWith('.')) + relativeImport = `./${relativeImport}`; + importsToInject.push(relativeImport); } }), From 338c4b20157aeeb8d2f14f971d8d22dfc68f5101 Mon Sep 17 00:00:00 2001 From: Robbie Date: Sat, 22 Nov 2025 16:58:31 -0700 Subject: [PATCH 29/52] create stress test --- packages/turbopack-plugin/src/index.test.ts | 153 ++++++++++++++++++++ packages/turbopack-plugin/src/index.ts | 100 +++++++------ 2 files changed, 202 insertions(+), 51 deletions(-) create mode 100644 packages/turbopack-plugin/src/index.test.ts diff --git a/packages/turbopack-plugin/src/index.test.ts b/packages/turbopack-plugin/src/index.test.ts new file mode 100644 index 000000000..53fc36623 --- /dev/null +++ b/packages/turbopack-plugin/src/index.test.ts @@ -0,0 +1,153 @@ +import * as fs from 'fs'; +import * as path from 'path'; +import turbopackVanillaExtractLoader, { + type TurboLoaderContext, + type TurboLoaderOptions, +} from './index'; + +const testDir = path.join(process.cwd(), 'fixtures/next-16-app-pages-router'); +const iterations = 1000; +const timeout = iterations * 250; + +describe('turbopack-plugin stress test', () => { + it( + 'should handle rapid entry updates correctly', + async () => { + // Create a minimal mock context + const mockContext: TurboLoaderContext = { + rootContext: testDir, + resourcePath: path.join(testDir, 'style.css.ts'), + getOptions: () => ({ + identifiers: 'short', + outputCss: true, + nextEnv: {}, + }), + getResolve: () => async (context: string, request: string) => { + // Simplified resolver that just returns the request if it's relative, + // or null if we can't handle it. For this test, we don't need much. + if (request.startsWith('.')) { + return path.resolve(context, request); + } + return request; + }, + fs: { + readFile: ( + path: string, + callback: (err: Error | null, content?: string) => void, + ) => { + fs.readFile(path, 'utf-8', (err, data) => { + if (err) callback(err); + else callback(null, data); + }); + }, + } as any, + }; + + for (let i = 0; i < iterations; i++) { + const uniqueId = crypto.randomUUID(); + const fileContent = ` + import { style } from '@vanilla-extract/css'; + + export const myStyle = style({ + content: "${uniqueId}" + }); + `; + + fs.writeFileSync(mockContext.resourcePath, fileContent); + + const result = await turbopackVanillaExtractLoader.call(mockContext); + + // The result should contain the base64 encoded CSS + // which we can check for our unique ID + expect(result).toContain('data:text/css;base64,'); + + // Extract base64 part + const match = result.match(/import 'data:text\/css;base64,([^']+)';/); + expect(match).toBeTruthy(); + + if (match) { + const decodedCss = Buffer.from(match[1], 'base64').toString('utf-8'); + expect(decodedCss).toContain(`content: "${uniqueId}"`); + } + } + + // delete the file + fs.rmSync(mockContext.resourcePath); + }, + timeout, + ); + + it( + 'should handle rapid dependency updates correctly', + async () => { + // Create a minimal mock context + const mockContext: TurboLoaderContext = { + rootContext: testDir, + resourcePath: path.join(testDir, 'style.css.ts'), + getOptions: () => ({ + identifiers: 'short', + outputCss: true, + nextEnv: {}, + }), + getResolve: () => async (context: string, request: string) => { + // Simplified resolver that just returns the request if it's relative, + // or null if we can't handle it. For this test, we don't need much. + if (request.startsWith('.')) { + return path.resolve(context, request); + } + return request; + }, + fs: { + readFile: ( + path: string, + callback: (err: Error | null, content?: string) => void, + ) => { + fs.readFile(path, 'utf-8', (err, data) => { + if (err) callback(err); + else callback(null, data); + }); + }, + } as any, + }; + + for (let i = 0; i < iterations; i++) { + const uniqueId = crypto.randomUUID(); + const fileDependency = ` + export const randomId = "${uniqueId}"; + `; + const fileContent = ` + import { style } from '@vanilla-extract/css'; + import { randomId } from './dependency.ts'; + + export const myStyle = style({ + content: randomId + }); + `; + + fs.writeFileSync(path.join(testDir, 'dependency.ts'), fileDependency); + if (i === 0) + fs.writeFileSync(path.join(testDir, 'style.css.ts'), fileContent); + + const result = await turbopackVanillaExtractLoader.call(mockContext); + + // The result should contain the base64 encoded CSS + // which we can check for our unique ID + expect(result).toContain('data:text/css;base64,'); + + // Extract base64 part + const match = result.match(/import 'data:text\/css;base64,([^']+)';/); + expect(match).toBeTruthy(); + + if (match) { + const decodedCss = Buffer.from(match[1], 'base64').toString('utf-8'); + expect(decodedCss).toContain(`content: "${uniqueId}"`); + } + } + + // delete the files + fs.rmSync(path.join(testDir, 'dependency.ts')); + fs.rmSync(mockContext.resourcePath); + }, + timeout, + ); +}); diff --git a/packages/turbopack-plugin/src/index.ts b/packages/turbopack-plugin/src/index.ts index 4bed6169a..d0545ed87 100644 --- a/packages/turbopack-plugin/src/index.ts +++ b/packages/turbopack-plugin/src/index.ts @@ -32,8 +32,6 @@ export type TurboLoaderOptions = { nextEnv: Record | null; }; -let globalCompiler: VeCompiler | undefined; - const getOrMakeCompiler = async ({ identifiers, nextEnv, @@ -43,62 +41,60 @@ const getOrMakeCompiler = async ({ nextEnv: Record | null; loaderContext: TurboLoaderContext; }): Promise => { - if (!globalCompiler) { - const defineEnv: Record = {}; - for (const [key, value] of Object.entries(nextEnv ?? {})) { - defineEnv[`process.env.${key}`] = JSON.stringify(value); - } + const defineEnv: Record = {}; + for (const [key, value] of Object.entries(nextEnv ?? {})) { + defineEnv[`process.env.${key}`] = JSON.stringify(value); + } - globalCompiler = createCompiler({ - root: loaderContext.rootContext, - identifiers, - cssImportSpecifier: (_filePath, css) => { - const base64 = Buffer.from(css, 'utf8').toString('base64'); - return `data:text/css;base64,${base64}`; - }, - viteConfig: { - define: defineEnv, - plugins: [ - createNextFontVePlugin(), - { - // route vite file reads through turbopack's fs to handle dependency tracking automatically - name: 'vanilla-extract-turbo-fs', - enforce: 'pre', - async load(id: string) { - return new Promise((resolve, reject) => { - loaderContext.fs.readFile(id, (error, data) => { - if (error) { - reject(error); - } else if (typeof data === 'string') { - resolve({ code: data }); - } else resolve(null); - }); + const compiler = createCompiler({ + root: loaderContext.rootContext, + identifiers, + cssImportSpecifier: (_filePath, css) => { + const base64 = Buffer.from(css, 'utf8').toString('base64'); + return `data:text/css;base64,${base64}`; + }, + viteConfig: { + define: defineEnv, + plugins: [ + createNextFontVePlugin(), + { + // route vite file reads through turbopack's fs to handle dependency tracking automatically + name: 'vanilla-extract-turbo-fs', + enforce: 'pre', + async load(id: string) { + return new Promise((resolve, reject) => { + loaderContext.fs.readFile(id, (error, data) => { + if (error) { + reject(error); + } else if (typeof data === 'string') { + resolve({ code: data }); + } else resolve(null); }); - }, + }); }, - { - // avoid module resolution errors by letting turbopack resolve our modules for us - name: 'vanilla-extract-turbo-resolve', - // do NOT enforce pre as it breaks builds on some projects (not sure why) - async resolveId(source: string, importer: string | undefined) { - if (source.startsWith('/')) return null; // turbopack doesn't support server relative imports - if (!importer) return null; + }, + { + // avoid module resolution errors by letting turbopack resolve our modules for us + name: 'vanilla-extract-turbo-resolve', + // do NOT enforce pre as it breaks builds on some projects (not sure why) + async resolveId(source: string, importer: string | undefined) { + if (source.startsWith('/')) return null; // turbopack doesn't support server relative imports + if (!importer) return null; - // react is vendored by next, so we need to use the upstream version to avoid errors - if (source === 'react' || source === 'react-dom') { - return null; - } + // react is vendored by next, so we need to use the upstream version to avoid errors + if (source === 'react' || source === 'react-dom') { + return null; + } - const resolver = loaderContext.getResolve({}); - return resolver(path.dirname(importer), source); - }, + const resolver = loaderContext.getResolve({}); + return resolver(path.dirname(importer), source); }, - ], - }, - }); - } + }, + ], + }, + }); - return globalCompiler; + return compiler; }; export default async function turbopackVanillaExtractLoader( @@ -120,5 +116,7 @@ export default async function turbopackVanillaExtractLoader( { outputCss }, ); + await compiler.close(); + return await injectFontImports(source, watchFiles, this); } From 2f40ad9d94317ce73d62de0723fe5fd4fd56cae6 Mon Sep 17 00:00:00 2001 From: Robbie Date: Sat, 22 Nov 2025 19:54:03 -0700 Subject: [PATCH 30/52] improve turbopack performance --- packages/compiler/src/compiler.ts | 16 +++++ packages/turbopack-plugin/src/index.test.ts | 77 ++++++++------------- packages/turbopack-plugin/src/index.ts | 30 ++++++-- 3 files changed, 69 insertions(+), 54 deletions(-) diff --git a/packages/compiler/src/compiler.ts b/packages/compiler/src/compiler.ts index 56f5d9d62..31dad4a9c 100644 --- a/packages/compiler/src/compiler.ts +++ b/packages/compiler/src/compiler.ts @@ -238,6 +238,7 @@ export interface Compiler { outputCss?: boolean; }, ): Promise<{ source: string; watchFiles: Set }>; + invalidateAllModules(): Promise; getCssForFile(virtualCssFilePath: string): { filePath: string; css: string }; close(): Promise; getAllCss(): string; @@ -484,6 +485,21 @@ export const createCompiler = ({ return result; }, + async invalidateAllModules() { + const { server, runner } = await vitePromise; + + for (const [key] of runner.moduleCache.entries()) { + if (!key.includes('node_modules')) { + runner.moduleCache.delete(key); + } + } + + for (const [id, moduleNode] of server.moduleGraph.idToModuleMap) { + if (!id.includes('node_modules')) { + server.moduleGraph.invalidateModule(moduleNode); + } + } + }, getCssForFile(filePath: string) { filePath = isAbsolute(filePath) ? filePath : join(root, filePath); const moduleId = normalizePath(filePath); diff --git a/packages/turbopack-plugin/src/index.test.ts b/packages/turbopack-plugin/src/index.test.ts index 53fc36623..ace17a19f 100644 --- a/packages/turbopack-plugin/src/index.test.ts +++ b/packages/turbopack-plugin/src/index.test.ts @@ -3,17 +3,25 @@ import * as path from 'path'; import turbopackVanillaExtractLoader, { type TurboLoaderContext, type TurboLoaderOptions, + cleanupSharedCompiler, } from './index'; const testDir = path.join(process.cwd(), 'fixtures/next-16-app-pages-router'); -const iterations = 1000; + +// for CI testing, 10 iterations is fine +// for local testing, issues can be *very* rare since this is a race condition +// for most of my testing I used 1000 iterations +const iterations = 10; const timeout = iterations * 250; describe('turbopack-plugin stress test', () => { + afterEach(() => { + cleanupSharedCompiler(); + }); + it( 'should handle rapid entry updates correctly', async () => { - // Create a minimal mock context const mockContext: TurboLoaderContext = { rootContext: testDir, resourcePath: path.join(testDir, 'style.css.ts'), @@ -31,37 +39,25 @@ describe('turbopack-plugin stress test', () => { return request; }, fs: { - readFile: ( - path: string, - callback: (err: Error | null, content?: string) => void, - ) => { - fs.readFile(path, 'utf-8', (err, data) => { - if (err) callback(err); - else callback(null, data); - }); - }, - } as any, + readFile: fs.readFile, + }, }; for (let i = 0; i < iterations; i++) { const uniqueId = crypto.randomUUID(); const fileContent = ` - import { style } from '@vanilla-extract/css'; - - export const myStyle = style({ - content: "${uniqueId}" - }); - `; + import { style } from '@vanilla-extract/css'; + + export const myStyle = style({ + content: "${uniqueId}" + }); + `; fs.writeFileSync(mockContext.resourcePath, fileContent); const result = await turbopackVanillaExtractLoader.call(mockContext); - // The result should contain the base64 encoded CSS - // which we can check for our unique ID expect(result).toContain('data:text/css;base64,'); - - // Extract base64 part const match = result.match(/import 'data:text\/css;base64,([^']+)';/); expect(match).toBeTruthy(); @@ -71,7 +67,6 @@ describe('turbopack-plugin stress test', () => { } } - // delete the file fs.rmSync(mockContext.resourcePath); }, timeout, @@ -80,7 +75,6 @@ describe('turbopack-plugin stress test', () => { it( 'should handle rapid dependency updates correctly', async () => { - // Create a minimal mock context const mockContext: TurboLoaderContext = { rootContext: testDir, resourcePath: path.join(testDir, 'style.css.ts'), @@ -98,31 +92,23 @@ describe('turbopack-plugin stress test', () => { return request; }, fs: { - readFile: ( - path: string, - callback: (err: Error | null, content?: string) => void, - ) => { - fs.readFile(path, 'utf-8', (err, data) => { - if (err) callback(err); - else callback(null, data); - }); - }, - } as any, + readFile: fs.readFile, + }, }; for (let i = 0; i < iterations; i++) { const uniqueId = crypto.randomUUID(); const fileDependency = ` - export const randomId = "${uniqueId}"; - `; + export const randomId = "${uniqueId}"; + `; const fileContent = ` - import { style } from '@vanilla-extract/css'; - import { randomId } from './dependency.ts'; - - export const myStyle = style({ - content: randomId - }); - `; + import { style } from '@vanilla-extract/css'; + import { randomId } from './dependency.ts'; + + export const myStyle = style({ + content: randomId + }); + `; fs.writeFileSync(path.join(testDir, 'dependency.ts'), fileDependency); if (i === 0) @@ -130,11 +116,7 @@ describe('turbopack-plugin stress test', () => { const result = await turbopackVanillaExtractLoader.call(mockContext); - // The result should contain the base64 encoded CSS - // which we can check for our unique ID expect(result).toContain('data:text/css;base64,'); - - // Extract base64 part const match = result.match(/import 'data:text\/css;base64,([^']+)';/); expect(match).toBeTruthy(); @@ -144,7 +126,6 @@ describe('turbopack-plugin stress test', () => { } } - // delete the files fs.rmSync(path.join(testDir, 'dependency.ts')); fs.rmSync(mockContext.resourcePath); }, diff --git a/packages/turbopack-plugin/src/index.ts b/packages/turbopack-plugin/src/index.ts index d0545ed87..bd01c82dc 100644 --- a/packages/turbopack-plugin/src/index.ts +++ b/packages/turbopack-plugin/src/index.ts @@ -22,8 +22,6 @@ export type TurboLoaderContext = { rootContext: string; resourcePath: string; - - mode?: never; // turbopack doesn't support this, use process.env.NODE_ENV instead }; export type TurboLoaderOptions = { @@ -32,6 +30,18 @@ export type TurboLoaderOptions = { nextEnv: Record | null; }; +let sharedCompiler: VeCompiler | null = null; + +/** + * reset the global state, used in tests to cleanup the compiler + */ +export const cleanupSharedCompiler = () => { + if (sharedCompiler) { + sharedCompiler.close(); + sharedCompiler = null; + } +}; + const getOrMakeCompiler = async ({ identifiers, nextEnv, @@ -41,14 +51,17 @@ const getOrMakeCompiler = async ({ nextEnv: Record | null; loaderContext: TurboLoaderContext; }): Promise => { + if (sharedCompiler) return sharedCompiler; + const defineEnv: Record = {}; for (const [key, value] of Object.entries(nextEnv ?? {})) { defineEnv[`process.env.${key}`] = JSON.stringify(value); } - const compiler = createCompiler({ + sharedCompiler = createCompiler({ root: loaderContext.rootContext, identifiers, + enableFileWatcher: false, cssImportSpecifier: (_filePath, css) => { const base64 = Buffer.from(css, 'utf8').toString('base64'); return `data:text/css;base64,${base64}`; @@ -63,6 +76,8 @@ const getOrMakeCompiler = async ({ enforce: 'pre', async load(id: string) { return new Promise((resolve, reject) => { + // we can reuse this fs instance across all loader calls + // turbopack will associate dependencies to the file currently being loaded loaderContext.fs.readFile(id, (error, data) => { if (error) { reject(error); @@ -94,7 +109,7 @@ const getOrMakeCompiler = async ({ }, }); - return compiler; + return sharedCompiler; }; export default async function turbopackVanillaExtractLoader( @@ -111,12 +126,15 @@ export default async function turbopackVanillaExtractLoader( nextEnv: options.nextEnv, loaderContext: this, }); + + // if turbopack invokes the loader quickly, vite can't invalidate the module fast enough + // so we disable the internal file watcher and manually invalidate the module instead + await compiler.invalidateAllModules(); + const { source, watchFiles } = await compiler.processVanillaFile( this.resourcePath, { outputCss }, ); - await compiler.close(); - return await injectFontImports(source, watchFiles, this); } From c075bf3b47b1782198028301ed349c7303f4da55 Mon Sep 17 00:00:00 2001 From: Robbie Date: Mon, 24 Nov 2025 15:06:56 -0700 Subject: [PATCH 31/52] add changesets for `compiler` --- .changeset/heavy-boxes-protect.md | 5 +++++ .changeset/tough-mails-jog.md | 5 +++++ 2 files changed, 10 insertions(+) create mode 100644 .changeset/heavy-boxes-protect.md create mode 100644 .changeset/tough-mails-jog.md diff --git a/.changeset/heavy-boxes-protect.md b/.changeset/heavy-boxes-protect.md new file mode 100644 index 000000000..401e43366 --- /dev/null +++ b/.changeset/heavy-boxes-protect.md @@ -0,0 +1,5 @@ +--- +'@vanilla-extract/compiler': minor +--- + +add `invalidateAllModules` to manually clear module cache diff --git a/.changeset/tough-mails-jog.md b/.changeset/tough-mails-jog.md new file mode 100644 index 000000000..efdf6a373 --- /dev/null +++ b/.changeset/tough-mails-jog.md @@ -0,0 +1,5 @@ +--- +'@vanilla-extract/compiler': minor +--- + +the `cssImportSpecifier` option receives the css content in addition to the module id From bfbe7350db0c5b2c81fe6193a9a1add4681d55c4 Mon Sep 17 00:00:00 2001 From: Robbie Date: Fri, 28 Nov 2025 15:30:17 -0700 Subject: [PATCH 32/52] set node version --- package.json | 15 ++++++-- pnpm-lock.yaml | 97 +++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 108 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 57dba17d2..fa0f0f228 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "test:unit": "pnpm test:jest && pnpm test:vitest", "test:jest": "cross-env NODE_OPTIONS=--experimental-vm-modules jest", "test:vitest": "vitest --watch=false", - "test:playwright": "NODE_OPTIONS=--no-experimental-fetch pnpm test:build-next && playwright test", + "test:playwright": "pnpm test:build-next && playwright test", "test:build-next": "node scripts/copy-next-plugin.ts && pnpm --filter=@fixtures/next-* clean-build", "format": "prettier --write .", "lint": "pnpm run '/^lint:.*/'", @@ -28,7 +28,7 @@ "prepare-release": "pnpm copy-readme-to-packages && pnpm build", "release": "pnpm prepare-release && changeset publish" }, - "dependencies": { + "devDependencies": { "@babel/core": "^7.23.9", "@babel/preset-env": "^7.23.9", "@babel/preset-react": "^7.23.3", @@ -62,5 +62,14 @@ "manypkg": { "workspaceProtocol": "require" }, - "packageManager": "pnpm@10.10.0" + "packageManager": "pnpm@10.24.0", + "devEngines": { + "runtime": [ + { + "name": "node", + "version": "^24", + "onFail": "download" + } + ] + } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f4e84286d..890357872 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,7 +7,7 @@ settings: importers: .: - dependencies: + devDependencies: '@babel/core': specifier: ^7.23.9 version: 7.23.9 @@ -59,6 +59,9 @@ importers: jest-environment-jsdom: specifier: ^29.7.0 version: 29.7.0 + node: + specifier: runtime:^24 + version: runtime:24.11.1 prettier: specifier: ^2.8.8 version: 2.8.8 @@ -9321,6 +9324,96 @@ packages: resolution: {integrity: sha512-E9EhoJkpIIZyYplB298W8ZfhcojQrnKnUPcaOgJqVqICUZwPZkuj10nTzEscwdziOOj545v4tGPvNBG3ieUbSw==} engines: {node: '>=10.17.0'} + node@runtime:24.11.1: + resolution: + type: variations + variants: + - resolution: + archive: tarball + bin: bin/node + integrity: sha256-mLqRmgOQ2MQi1LsxBexbd3I89UFDtMHkudd2kPoHUgY= + type: binary + url: https://nodejs.org/download/release/v24.11.1/node-v24.11.1-aix-ppc64.tar.gz + targets: + - cpu: ppc64 + os: aix + - resolution: + archive: tarball + bin: bin/node + integrity: sha256-sFqjpm7+aAAj+TC9WvP9u9VCeU2lZEyirXEdaMvU3DU= + type: binary + url: https://nodejs.org/download/release/v24.11.1/node-v24.11.1-darwin-arm64.tar.gz + targets: + - cpu: arm64 + os: darwin + - resolution: + archive: tarball + bin: bin/node + integrity: sha256-CWCBttb83T9boPXx1EpH6DA3rS546tomZxwlL+ZN0RE= + type: binary + url: https://nodejs.org/download/release/v24.11.1/node-v24.11.1-darwin-x64.tar.gz + targets: + - cpu: x64 + os: darwin + - resolution: + archive: tarball + bin: bin/node + integrity: sha256-Dck+xceYsNNH8GjbbSBdA96ppxdl5qU5IraCuRJl1x8= + type: binary + url: https://nodejs.org/download/release/v24.11.1/node-v24.11.1-linux-arm64.tar.gz + targets: + - cpu: arm64 + os: linux + - resolution: + archive: tarball + bin: bin/node + integrity: sha256-zUFAfzNS3i8GbqJsXF0OqbY2I3TWthg4Wp8una0iBhY= + type: binary + url: https://nodejs.org/download/release/v24.11.1/node-v24.11.1-linux-ppc64le.tar.gz + targets: + - cpu: ppc64le + os: linux + - resolution: + archive: tarball + bin: bin/node + integrity: sha256-XUyLyl+PJZP5CB3uOYNHYOhaFvphyVDz6G7IWZbwBVA= + type: binary + url: https://nodejs.org/download/release/v24.11.1/node-v24.11.1-linux-s390x.tar.gz + targets: + - cpu: s390x + os: linux + - resolution: + archive: tarball + bin: bin/node + integrity: sha256-WKX/XMjyIA5Fi+oi4ynVwZlKobER1JnKRuwkEdWCOco= + type: binary + url: https://nodejs.org/download/release/v24.11.1/node-v24.11.1-linux-x64.tar.gz + targets: + - cpu: x64 + os: linux + - resolution: + archive: zip + bin: node.exe + integrity: sha256-zp7k5Ufr3/NVvrSOMJsWbCTfa+ApHJ6vEDzhXz3p5bQ= + prefix: node-v24.11.1-win-arm64 + type: binary + url: https://nodejs.org/download/release/v24.11.1/node-v24.11.1-win-arm64.zip + targets: + - cpu: arm64 + os: win32 + - resolution: + archive: zip + bin: node.exe + integrity: sha256-U1WubXxJ7dz959NKw0hoIGAKgxv4HcO9ylyNtqm7DnY= + prefix: node-v24.11.1-win-x64 + type: binary + url: https://nodejs.org/download/release/v24.11.1/node-v24.11.1-win-x64.zip + targets: + - cpu: x64 + os: win32 + version: 24.11.1 + hasBin: true + noop2@2.0.0: resolution: {integrity: sha512-2bu7Pfpf6uNqashWV8P7yYeutQ3XkLY9MBSYI5sOAFZxuWcW/uJfLbKj5m6SvMDT9U1Y0C+7UFG+7VSiIdXjtA==} @@ -22380,6 +22473,8 @@ snapshots: path-exists: 4.0.0 semver: 7.7.3 + node@runtime:24.11.1: {} + noop2@2.0.0: {} nopt@5.0.0: From a8978e738012aa061c5b14552ad55550eb6b773c Mon Sep 17 00:00:00 2001 From: Robbie Date: Fri, 28 Nov 2025 15:45:12 -0700 Subject: [PATCH 33/52] create duplication test --- .../next-16-app-pages-router/package.json | 2 +- .../src/app/duplication-test/a-plain.css.ts | 5 +++ .../src/app/duplication-test/a.css.ts | 9 +++++ .../src/app/duplication-test/b-plain.css.ts | 5 +++ .../src/app/duplication-test/b.css.ts | 9 +++++ .../app/duplication-test/extra/c-plain.css.ts | 5 +++ .../src/app/duplication-test/extra/c.css.ts | 9 +++++ .../src/app/duplication-test/page.tsx | 18 ++++++++++ .../next-16-app-pages-router/src/app/page.tsx | 2 ++ tests/e2e/css-deduplication.playwright.ts | 33 +++++++++++++++++++ 10 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 fixtures/next-16-app-pages-router/src/app/duplication-test/a-plain.css.ts create mode 100644 fixtures/next-16-app-pages-router/src/app/duplication-test/a.css.ts create mode 100644 fixtures/next-16-app-pages-router/src/app/duplication-test/b-plain.css.ts create mode 100644 fixtures/next-16-app-pages-router/src/app/duplication-test/b.css.ts create mode 100644 fixtures/next-16-app-pages-router/src/app/duplication-test/extra/c-plain.css.ts create mode 100644 fixtures/next-16-app-pages-router/src/app/duplication-test/extra/c.css.ts create mode 100644 fixtures/next-16-app-pages-router/src/app/duplication-test/page.tsx create mode 100644 tests/e2e/css-deduplication.playwright.ts diff --git a/fixtures/next-16-app-pages-router/package.json b/fixtures/next-16-app-pages-router/package.json index 4512ae230..96c60550c 100644 --- a/fixtures/next-16-app-pages-router/package.json +++ b/fixtures/next-16-app-pages-router/package.json @@ -7,7 +7,7 @@ "dev": "next dev", "build": "next build", "start": "next start", - "clean-build": "pnpm clean && pnpm build --turbo && pnpm build --webpack", + "clean-build": "pnpm clean && pnpm build --webpack && pnpm build --turbo", "clean": "pnpm clean:dev && pnpm clean:prod", "clean:dev": "rm -rf .next", "clean:prod": "rm -rf dist" diff --git a/fixtures/next-16-app-pages-router/src/app/duplication-test/a-plain.css.ts b/fixtures/next-16-app-pages-router/src/app/duplication-test/a-plain.css.ts new file mode 100644 index 000000000..b835f2f2c --- /dev/null +++ b/fixtures/next-16-app-pages-router/src/app/duplication-test/a-plain.css.ts @@ -0,0 +1,5 @@ +import { globalStyle } from '@vanilla-extract/css'; + +globalStyle('body', { + backgroundColor: '#0cdbcd', +}); diff --git a/fixtures/next-16-app-pages-router/src/app/duplication-test/a.css.ts b/fixtures/next-16-app-pages-router/src/app/duplication-test/a.css.ts new file mode 100644 index 000000000..721b2632a --- /dev/null +++ b/fixtures/next-16-app-pages-router/src/app/duplication-test/a.css.ts @@ -0,0 +1,9 @@ +import { globalStyle, style } from '@vanilla-extract/css'; + +globalStyle('body', { + backgroundColor: '#0cdbcd', +}); + +export const a = style({ + border: '1px solid black', +}); diff --git a/fixtures/next-16-app-pages-router/src/app/duplication-test/b-plain.css.ts b/fixtures/next-16-app-pages-router/src/app/duplication-test/b-plain.css.ts new file mode 100644 index 000000000..b835f2f2c --- /dev/null +++ b/fixtures/next-16-app-pages-router/src/app/duplication-test/b-plain.css.ts @@ -0,0 +1,5 @@ +import { globalStyle } from '@vanilla-extract/css'; + +globalStyle('body', { + backgroundColor: '#0cdbcd', +}); diff --git a/fixtures/next-16-app-pages-router/src/app/duplication-test/b.css.ts b/fixtures/next-16-app-pages-router/src/app/duplication-test/b.css.ts new file mode 100644 index 000000000..b25a94197 --- /dev/null +++ b/fixtures/next-16-app-pages-router/src/app/duplication-test/b.css.ts @@ -0,0 +1,9 @@ +import { globalStyle, style } from '@vanilla-extract/css'; + +globalStyle('body', { + backgroundColor: '#0cdbcd', +}); + +export const b = style({ + border: '1px solid red', +}); diff --git a/fixtures/next-16-app-pages-router/src/app/duplication-test/extra/c-plain.css.ts b/fixtures/next-16-app-pages-router/src/app/duplication-test/extra/c-plain.css.ts new file mode 100644 index 000000000..b835f2f2c --- /dev/null +++ b/fixtures/next-16-app-pages-router/src/app/duplication-test/extra/c-plain.css.ts @@ -0,0 +1,5 @@ +import { globalStyle } from '@vanilla-extract/css'; + +globalStyle('body', { + backgroundColor: '#0cdbcd', +}); diff --git a/fixtures/next-16-app-pages-router/src/app/duplication-test/extra/c.css.ts b/fixtures/next-16-app-pages-router/src/app/duplication-test/extra/c.css.ts new file mode 100644 index 000000000..388ec5cc0 --- /dev/null +++ b/fixtures/next-16-app-pages-router/src/app/duplication-test/extra/c.css.ts @@ -0,0 +1,9 @@ +import { globalStyle, style } from '@vanilla-extract/css'; + +globalStyle('body', { + backgroundColor: '#0cdbcd', +}); + +export const c = style({ + border: '1px solid black', +}); diff --git a/fixtures/next-16-app-pages-router/src/app/duplication-test/page.tsx b/fixtures/next-16-app-pages-router/src/app/duplication-test/page.tsx new file mode 100644 index 000000000..7ebf1396a --- /dev/null +++ b/fixtures/next-16-app-pages-router/src/app/duplication-test/page.tsx @@ -0,0 +1,18 @@ +import './a-plain.css'; +import { a } from './a.css'; +import './b-plain.css'; +import { b } from './b.css'; +import './extra/c-plain.css'; +import { c } from './extra/c.css'; + +export default function DuplicationTestPage() { + return ( +
+
+
+
duplication test
+
+
+
+ ); +} diff --git a/fixtures/next-16-app-pages-router/src/app/page.tsx b/fixtures/next-16-app-pages-router/src/app/page.tsx index 420ca8137..404237596 100644 --- a/fixtures/next-16-app-pages-router/src/app/page.tsx +++ b/fixtures/next-16-app-pages-router/src/app/page.tsx @@ -14,6 +14,8 @@ export default function Home() { creepster test
next font +
+ duplication test ); } diff --git a/tests/e2e/css-deduplication.playwright.ts b/tests/e2e/css-deduplication.playwright.ts new file mode 100644 index 000000000..4300fad88 --- /dev/null +++ b/tests/e2e/css-deduplication.playwright.ts @@ -0,0 +1,33 @@ +import { expect } from '@playwright/test'; +import { readFileSync } from 'fs'; +import { globSync } from 'node:fs'; +import path from 'path'; + +import test from './fixture'; + +const fixtureDir = path.resolve( + __dirname, + '../../fixtures/next-16-app-pages-router', +); + +test.describe('CSS deduplication @agnostic', () => { + test('shared globalStyle should only appear once in production build', async () => { + const distDir = path.join(fixtureDir, 'dist'); + + const cssFiles = globSync('**/*.css', { cwd: distDir }); + expect(cssFiles.length).toBeGreaterThan(0); + + let totalOccurrences = 0; + const cssPattern = /body\s*\{\s*background-color:\s*#0cdbcd;?\s*\}/g; + + for (const cssFile of cssFiles) { + const content = readFileSync(path.join(distDir, cssFile), 'utf-8'); + const matches = content.match(cssPattern); + if (matches) { + totalOccurrences += matches.length; + } + } + + expect(totalOccurrences).toBe(1); + }); +}); From 733d3964ce19123f8ef28e2272613f0e8e084592 Mon Sep 17 00:00:00 2001 From: Robbie Date: Fri, 28 Nov 2025 16:04:57 -0700 Subject: [PATCH 34/52] gitignore next-env --- .gitignore | 1 + fixtures/next-16-app-pages-router/next-env.d.ts | 7 ------- fixtures/next-app-router/next-env.d.ts | 5 ----- fixtures/next-pages-router/next-env.d.ts | 5 ----- 4 files changed, 1 insertion(+), 17 deletions(-) delete mode 100644 fixtures/next-16-app-pages-router/next-env.d.ts delete mode 100644 fixtures/next-app-router/next-env.d.ts delete mode 100644 fixtures/next-pages-router/next-env.d.ts diff --git a/.gitignore b/.gitignore index 1eb2e7f77..f37eee6d0 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ test-results .next .DS_Store .idea +next-env.d.ts \ No newline at end of file diff --git a/fixtures/next-16-app-pages-router/next-env.d.ts b/fixtures/next-16-app-pages-router/next-env.d.ts deleted file mode 100644 index 8c9df6326..000000000 --- a/fixtures/next-16-app-pages-router/next-env.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -/// -/// -/// -import './dist/types/routes.d.ts'; - -// NOTE: This file should not be edited -// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/fixtures/next-app-router/next-env.d.ts b/fixtures/next-app-router/next-env.d.ts deleted file mode 100644 index 4f11a03dc..000000000 --- a/fixtures/next-app-router/next-env.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/// -/// - -// NOTE: This file should not be edited -// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/fixtures/next-pages-router/next-env.d.ts b/fixtures/next-pages-router/next-env.d.ts deleted file mode 100644 index 4f11a03dc..000000000 --- a/fixtures/next-pages-router/next-env.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/// -/// - -// NOTE: This file should not be edited -// see https://nextjs.org/docs/basic-features/typescript for more information. From f1f28598d8d048bba50af11f6ecebd0d5efd14ba Mon Sep 17 00:00:00 2001 From: Robbie Date: Fri, 28 Nov 2025 16:11:34 -0700 Subject: [PATCH 35/52] test both webpack & turbo --- .../next-16-app-pages-router/next.config.ts | 2 +- .../next-16-app-pages-router/package.json | 8 +++-- .../next-16-app-pages-router/tsconfig.json | 10 +++--- tests/e2e/css-deduplication.playwright.ts | 34 ++++++++++++------- 4 files changed, 33 insertions(+), 21 deletions(-) diff --git a/fixtures/next-16-app-pages-router/next.config.ts b/fixtures/next-16-app-pages-router/next.config.ts index fa4a2288d..d923ed773 100644 --- a/fixtures/next-16-app-pages-router/next.config.ts +++ b/fixtures/next-16-app-pages-router/next.config.ts @@ -2,7 +2,7 @@ import { createVanillaExtractPlugin } from './next-plugin/dist/vanilla-extract-n const withVanillaExtract = createVanillaExtractPlugin(); export const config = { - distDir: process.env.NODE_ENV === 'production' ? 'dist' : '.next', + distDir: process.env.NEXT_DIST_DIR || '.next', experimental: { externalDir: true }, onDemandEntries: { maxInactiveAge: 1000 * 60 * 60 }, transpilePackages: ['@fixtures/sprinkles/src/html'], diff --git a/fixtures/next-16-app-pages-router/package.json b/fixtures/next-16-app-pages-router/package.json index 96c60550c..694ab095e 100644 --- a/fixtures/next-16-app-pages-router/package.json +++ b/fixtures/next-16-app-pages-router/package.json @@ -5,9 +5,11 @@ "description": "Next 16 fixture with app + pages routers; supports webpack and turbopack builds", "scripts": { "dev": "next dev", - "build": "next build", - "start": "next start", - "clean-build": "pnpm clean && pnpm build --webpack && pnpm build --turbo", + "build-webpack": "NEXT_DIST_DIR=dist/webpack next build --webpack", + "start-webpack": "NEXT_DIST_DIR=dist/webpack next start", + "build-turbo": "NEXT_DIST_DIR=dist/turbo next build --turbo", + "start-turbo": "NEXT_DIST_DIR=dist/turbo next start", + "clean-build": "pnpm clean && pnpm build-turbo && pnpm build-webpack", "clean": "pnpm clean:dev && pnpm clean:prod", "clean:dev": "rm -rf .next", "clean:prod": "rm -rf dist" diff --git a/fixtures/next-16-app-pages-router/tsconfig.json b/fixtures/next-16-app-pages-router/tsconfig.json index d90e7e088..0cbb35fb3 100644 --- a/fixtures/next-16-app-pages-router/tsconfig.json +++ b/fixtures/next-16-app-pages-router/tsconfig.json @@ -24,13 +24,15 @@ }, "include": [ "next-env.d.ts", - "**/*.ts", - "**/*.tsx", ".next/types/**/*.ts", ".next/dev/types/**/*.ts", "**/*.mts", - "dist/types/**/*.ts", - "dist/dev/types/**/*.ts" + "**/*.ts", + "**/*.tsx", + "dist/turbo/types/**/*.ts", + "dist/turbo/dev/types/**/*.ts", + "dist/webpack/types/**/*.ts", + "dist/webpack/dev/types/**/*.ts" ], "exclude": ["node_modules"] } diff --git a/tests/e2e/css-deduplication.playwright.ts b/tests/e2e/css-deduplication.playwright.ts index 4300fad88..addaa7058 100644 --- a/tests/e2e/css-deduplication.playwright.ts +++ b/tests/e2e/css-deduplication.playwright.ts @@ -11,23 +11,31 @@ const fixtureDir = path.resolve( ); test.describe('CSS deduplication @agnostic', () => { - test('shared globalStyle should only appear once in production build', async () => { - const distDir = path.join(fixtureDir, 'dist'); + const buildTypes = [ + { name: 'webpack', distDir: 'dist/webpack' }, + { name: 'turbopack', distDir: 'dist/turbo' }, + ]; - const cssFiles = globSync('**/*.css', { cwd: distDir }); - expect(cssFiles.length).toBeGreaterThan(0); + buildTypes.forEach(({ name, distDir: distDirName }) => { + test(`shared globalStyle should only appear once in ${name} production build`, async () => { + const distDir = path.join(fixtureDir, distDirName); - let totalOccurrences = 0; - const cssPattern = /body\s*\{\s*background-color:\s*#0cdbcd;?\s*\}/g; + const cssFiles = globSync('**/*.css', { cwd: distDir }); + expect(cssFiles.length).toBeGreaterThan(0); + console.log(name, cssFiles); - for (const cssFile of cssFiles) { - const content = readFileSync(path.join(distDir, cssFile), 'utf-8'); - const matches = content.match(cssPattern); - if (matches) { - totalOccurrences += matches.length; + let totalOccurrences = 0; + const cssPattern = /body\s*\{\s*background-color:\s*#0cdbcd;?\s*\}/g; + + for (const cssFile of cssFiles) { + const content = readFileSync(path.join(distDir, cssFile), 'utf-8'); + const matches = content.match(cssPattern); + if (matches) { + totalOccurrences += matches.length; + } } - } - expect(totalOccurrences).toBe(1); + expect(totalOccurrences).toBe(1); + }); }); }); From 94b1337c286870372d311dc018997a94abe817a7 Mon Sep 17 00:00:00 2001 From: Robbie Date: Fri, 28 Nov 2025 18:05:40 -0700 Subject: [PATCH 36/52] turbopack: improve deduplication --- .changeset/green-years-yawn.md | 5 + .changeset/slimy-poems-wonder.md | 8 + package.json | 2 +- packages/compiler/src/compiler.ts | 55 +- packages/css/package.json | 4 +- packages/css/vanilla.virtual.css | 10 + packages/next-plugin/src/index.ts | 6 + packages/turbopack-plugin/src/index.ts | 21 +- pnpm-lock.yaml | 1119 +++------------------ tests/e2e/css-deduplication.playwright.ts | 1 - 10 files changed, 227 insertions(+), 1004 deletions(-) create mode 100644 .changeset/green-years-yawn.md create mode 100644 .changeset/slimy-poems-wonder.md create mode 100644 packages/css/vanilla.virtual.css diff --git a/.changeset/green-years-yawn.md b/.changeset/green-years-yawn.md new file mode 100644 index 000000000..2844122a5 --- /dev/null +++ b/.changeset/green-years-yawn.md @@ -0,0 +1,5 @@ +--- +'@vanilla-extract/compiler': minor +--- + +add `splitCssPerRule` option, generate one CSS import per rule instead of one per file. used by turbopack. \ No newline at end of file diff --git a/.changeset/slimy-poems-wonder.md b/.changeset/slimy-poems-wonder.md new file mode 100644 index 000000000..d39bc5fef --- /dev/null +++ b/.changeset/slimy-poems-wonder.md @@ -0,0 +1,8 @@ +--- +'@vanilla-extract/compiler': patch +'@vanilla-extract/css': patch +'@vanilla-extract/turbopack-plugin': patch +'@vanilla-extract/next-plugin': patch +--- + +turbopack: improve CSS deduplication diff --git a/package.json b/package.json index fa0f0f228..1db5df4f4 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "prepare-release": "pnpm copy-readme-to-packages && pnpm build", "release": "pnpm prepare-release && changeset publish" }, - "devDependencies": { + "dependencies": { "@babel/core": "^7.23.9", "@babel/preset-env": "^7.23.9", "@babel/preset-react": "^7.23.3", diff --git a/packages/compiler/src/compiler.ts b/packages/compiler/src/compiler.ts index 31dad4a9c..1e3c49096 100644 --- a/packages/compiler/src/compiler.ts +++ b/packages/compiler/src/compiler.ts @@ -258,7 +258,17 @@ export interface CreateCompilerOptions { * @default true */ enableFileWatcher?: boolean; - cssImportSpecifier?: (filePath: string, css: string) => string; + cssImportSpecifier?: ( + filePath: string, + css: string, + ) => string | Promise; + /** + * When true, generates one CSS import per rule instead of one per file. + * This can help bundlers like Turbopack deduplicate shared CSS more effectively. + * + * @default false + */ + splitCssPerRule?: boolean; identifiers?: IdentifierOption; viteConfig?: ViteUserConfig; /** @deprecated */ @@ -270,6 +280,7 @@ export const createCompiler = ({ root, identifiers = 'debug', cssImportSpecifier = (filePath) => filePath + '.vanilla.css', + splitCssPerRule = false, viteConfig, enableFileWatcher, viteResolve, @@ -298,7 +309,7 @@ export const createCompiler = ({ } >(); - const cssCache = new NormalizedMap<{ css: string }>(root); + const cssCache = new NormalizedMap<{ css: string; cssRules: string[] }>(root); const classRegistrationsByModuleId = new NormalizedMap<{ localClassNames: Set; composedClassLists: Array; @@ -428,17 +439,20 @@ export const createCompiler = ({ } if (cssObjs) { - let css = ''; + let cssRules: string[] = []; if (cssObjs.length > 0) { - css = transformCss({ + cssRules = transformCss({ localClassNames: Array.from(localClassNames), composedClassLists: orderedComposedClassLists, cssObjs, - }).join('\n'); + }); } - cssCache.set(cssDepModuleId, { css }); + cssCache.set(cssDepModuleId, { + css: cssRules.join('\n'), + cssRules, + }); } else if (cachedClassRegistrations) { cachedClassRegistrations.localClassNames.forEach( (localClassName) => { @@ -450,14 +464,27 @@ export const createCompiler = ({ ); } - const cssContent = cssObjs - ? cssCache.get(cssDepModuleId)?.css - : cachedCss?.css; - - if (cssContent) { - cssImports.push( - `import '${cssImportSpecifier(cssDepModuleId, cssContent)}';`, - ); + const cachedEntry = cssObjs + ? cssCache.get(cssDepModuleId) + : cachedCss; + + if (cachedEntry && cachedEntry.css) { + if (splitCssPerRule && cachedEntry.cssRules.length > 0) { + const importSpecifiers = await Promise.all( + cachedEntry.cssRules.map((rule, i) => + cssImportSpecifier(cssDepModuleId + `#${i}`, rule), + ), + ); + for (const specifier of importSpecifiers) { + cssImports.push(`import '${specifier}';`); + } + } else { + const specifier = await cssImportSpecifier( + cssDepModuleId, + cachedEntry.css, + ); + cssImports.push(`import '${specifier}';`); + } } } diff --git a/packages/css/package.json b/packages/css/package.json index 17df2de8c..b1ed05a6f 100644 --- a/packages/css/package.json +++ b/packages/css/package.json @@ -12,6 +12,7 @@ }, "exports": { "./package.json": "./package.json", + "./vanilla.virtual.css?*": "./vanilla.virtual.css?*", ".": { "types": "./dist/vanilla-extract-css.cjs.d.ts", "browser": { @@ -106,7 +107,8 @@ "/transformCss", "/fileScope", "/injectStyles", - "/disableRuntimeStyles" + "/disableRuntimeStyles", + "vanilla.virtual.css" ], "repository": { "type": "git", diff --git a/packages/css/vanilla.virtual.css b/packages/css/vanilla.virtual.css new file mode 100644 index 000000000..fdb526ecf --- /dev/null +++ b/packages/css/vanilla.virtual.css @@ -0,0 +1,10 @@ +/* + +This is a noop file for extracted CSS source to point to. + +Some loaders, like Webpack and Turbopack, require a file to exist on disk for virtual source files. + +For turbopack specifically, this reference file must be resolvable from any context where css is imported +even if the next plugin itself isn't available (for example, in a monorepo). + +*/ diff --git a/packages/next-plugin/src/index.ts b/packages/next-plugin/src/index.ts index 49b51b65c..d8eade364 100644 --- a/packages/next-plugin/src/index.ts +++ b/packages/next-plugin/src/index.ts @@ -196,11 +196,17 @@ export const createVanillaExtractPlugin = ( ], } as const; + const vanillaExtractCssRule = { + as: '*.css', + loaders: ['@vanilla-extract/turbopack-plugin'], + } as const; + turbopack.rules = { ...(turbopack.rules || {}), ...Object.fromEntries( turbopackGlob.map((glob) => [glob, vanillaExtractRule]), ), + 'vanilla.virtual.css': vanillaExtractCssRule, }; } diff --git a/packages/turbopack-plugin/src/index.ts b/packages/turbopack-plugin/src/index.ts index bd01c82dc..54be141e3 100644 --- a/packages/turbopack-plugin/src/index.ts +++ b/packages/turbopack-plugin/src/index.ts @@ -2,7 +2,11 @@ import { createCompiler, type Compiler as VeCompiler, } from '@vanilla-extract/compiler'; -import type { IdentifierOption } from '@vanilla-extract/integration'; +import { + deserializeCss, + serializeCss, + type IdentifierOption, +} from '@vanilla-extract/integration'; import * as path from 'node:path'; import { createNextFontVePlugin } from './next-font/plugin'; import type fs from 'node:fs'; @@ -22,6 +26,7 @@ export type TurboLoaderContext = { rootContext: string; resourcePath: string; + resourceQuery?: string; }; export type TurboLoaderOptions = { @@ -62,9 +67,11 @@ const getOrMakeCompiler = async ({ root: loaderContext.rootContext, identifiers, enableFileWatcher: false, - cssImportSpecifier: (_filePath, css) => { - const base64 = Buffer.from(css, 'utf8').toString('base64'); - return `data:text/css;base64,${base64}`; + splitCssPerRule: true, + cssImportSpecifier: async (_filePath, css) => { + return `@vanilla-extract/css/vanilla.virtual.css?ve-css=${encodeURIComponent( + await serializeCss(css), + )}`; }, viteConfig: { define: defineEnv, @@ -115,6 +122,12 @@ const getOrMakeCompiler = async ({ export default async function turbopackVanillaExtractLoader( this: TurboLoaderContext, ) { + // Check if this is a CSS request via query param + if (this.resourceQuery?.startsWith('?ve-css=')) { + const encodedCss = this.resourceQuery.slice(8); + return await deserializeCss(decodeURIComponent(encodedCss)); + } + const options = this.getOptions() as TurboLoaderOptions; const identifiers = options.identifiers ?? diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 890357872..71836e0e6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,7 +7,7 @@ settings: importers: .: - devDependencies: + dependencies: '@babel/core': specifier: ^7.23.9 version: 7.23.9 @@ -37,7 +37,7 @@ importers: version: 2.8.2 '@testing-library/jest-dom': specifier: ^6.4.2 - version: 6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)))(vitest@4.0.13(@types/node@22.15.3)(jsdom@20.0.3)(terser@5.26.0)(tsx@4.20.6)) + version: 6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)))(vitest@4.0.13(@types/node@22.15.3)(jsdom@20.0.3)(terser@5.26.0)(tsx@4.20.6)) '@types/jest': specifier: ^29.5.12 version: 29.5.12 @@ -55,13 +55,10 @@ importers: version: 7.0.3 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)) + version: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)) jest-environment-jsdom: specifier: ^29.7.0 version: 29.7.0 - node: - specifier: runtime:^24 - version: runtime:24.11.1 prettier: specifier: ^2.8.8 version: 2.8.8 @@ -138,7 +135,7 @@ importers: devDependencies: '@remix-run/dev': specifier: ^2.17.2 - version: 2.17.2(@remix-run/react@2.17.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3))(@remix-run/serve@2.17.2(typescript@5.8.3))(@types/node@22.15.3)(terser@5.26.0)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3))(tsx@4.20.6)(typescript@5.8.3)(vite@7.0.3(@types/node@22.15.3)(terser@5.26.0)(tsx@4.20.6)) + version: 2.17.2(@remix-run/react@2.17.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3))(@remix-run/serve@2.17.2(typescript@5.8.3))(@types/node@22.15.3)(terser@5.26.0)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3))(tsx@4.20.6)(typescript@5.8.3)(vite@7.0.3(@types/node@22.15.3)(terser@5.26.0)(tsx@4.20.6)) '@types/react': specifier: ^18.2.55 version: 18.2.55 @@ -192,10 +189,10 @@ importers: version: 18.2.0(react@18.2.0) tailwindcss: specifier: ^2.1.2 - version: 2.2.19(autoprefixer@10.4.17(postcss@8.5.6))(postcss@8.5.6)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)) + version: 2.2.19(autoprefixer@10.4.17(postcss@8.5.6))(postcss@8.5.6)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)) webpack: specifier: ^5.90.0 - version: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) + version: 5.90.0(webpack-cli@5.1.4) webpack-cli: specifier: ^5.1.4 version: 5.1.4(webpack-bundle-analyzer@4.5.0)(webpack-dev-server@5.0.4)(webpack@5.90.0) @@ -234,46 +231,6 @@ importers: specifier: workspace:^ version: link:../../packages/css - fixtures/next-16-app-pages-router: - dependencies: - '@fixtures/features': - specifier: workspace:* - version: link:../features - '@fixtures/recipes': - specifier: workspace:* - version: link:../recipes - '@fixtures/sprinkles': - specifier: workspace:* - version: link:../sprinkles - '@vanilla-extract/css': - specifier: workspace:* - version: link:../../packages/css - '@vanilla-extract/recipes': - specifier: workspace:* - version: link:../../packages/recipes - '@vanilla-extract/sprinkles': - specifier: workspace:* - version: link:../../packages/sprinkles - next: - specifier: npm:next@^16.0.0 - version: 16.0.4(@babel/core@7.23.9)(@playwright/test@1.43.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: - specifier: npm:react@^19.2.0 - version: 19.2.0 - react-dom: - specifier: npm:react-dom@^19.2.0 - version: 19.2.0(react@19.2.0) - devDependencies: - '@types/react': - specifier: ^18.2.55 - version: 18.2.55 - '@vanilla-extract/next-plugin': - specifier: workspace:* - version: link:../../packages/next-plugin - '@vanilla-extract/webpack-plugin': - specifier: workspace:* - version: link:../../packages/webpack-plugin - fixtures/next-app-router: dependencies: '@fixtures/features': @@ -592,25 +549,16 @@ importers: packages/next-plugin: dependencies: - '@vanilla-extract/turbopack-plugin': - specifier: workspace:^ - version: link:../turbopack-plugin '@vanilla-extract/webpack-plugin': specifier: workspace:^ version: link:../webpack-plugin - semver: - specifier: ^7.6.3 - version: 7.7.3 devDependencies: - '@types/semver': - specifier: ^7.7.1 - version: 7.7.1 next: specifier: 12.3.4 - version: 12.3.4(@babel/core@7.23.9)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + version: 12.3.4(@babel/core@7.23.9)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) webpack: specifier: ^5.90.0 - version: 5.90.0(@swc/core@1.15.3) + version: 5.90.0(webpack-cli@5.1.4) packages/parcel-transformer: dependencies: @@ -666,25 +614,6 @@ importers: specifier: workspace:^ version: link:../css - packages/turbopack-plugin: - dependencies: - '@swc/core': - specifier: ^1.13.5 - version: 1.15.3 - '@vanilla-extract/compiler': - specifier: workspace:^ - version: link:../compiler - '@vanilla-extract/integration': - specifier: workspace:^ - version: link:../integration - devDependencies: - next: - specifier: 12.3.4 - version: 12.3.4(@babel/core@7.23.9)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - vite: - specifier: ^5.0.0 || ^6.0.0 || ^7.0.0 - version: 7.0.3(@types/node@22.15.3)(terser@5.26.0)(tsx@4.20.6) - packages/utils: {} packages/vite-plugin: @@ -720,7 +649,7 @@ importers: version: 4.1.7 webpack: specifier: ^5.90.0 - version: 5.90.0(@swc/core@1.15.3) + version: 5.90.0(webpack-cli@5.1.4) scripts: devDependencies: @@ -811,7 +740,7 @@ importers: version: 2.2.4 '@types/webpack-bundle-analyzer': specifier: ^4 - version: 4.4.1(@swc/core@1.15.3)(webpack-cli@5.1.4) + version: 4.4.1(webpack-cli@5.1.4) '@vanilla-extract/css': specifier: workspace:* version: link:../packages/css @@ -865,7 +794,7 @@ importers: version: 2.7.7(webpack@5.90.0) netlify-cli: specifier: ^11.8.3 - version: 11.8.3(@swc/core@1.15.3)(@types/express@4.17.21) + version: 11.8.3(@types/express@4.17.21) null-loader: specifier: ^4.0.1 version: 4.0.1(webpack@5.90.0) @@ -874,10 +803,10 @@ importers: version: 0.3.0 tailwindcss: specifier: ^2.1.2 - version: 2.2.19(autoprefixer@10.4.17(postcss@8.5.6))(postcss@8.5.6)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@16.11.10)(typescript@4.9.4)) + version: 2.2.19(autoprefixer@10.4.17(postcss@8.5.6))(postcss@8.5.6)(ts-node@10.9.1(@types/node@16.11.10)(typescript@4.9.4)) webpack: specifier: ^5.90.0 - version: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) + version: 5.90.0(webpack-cli@5.1.4) webpack-bundle-analyzer: specifier: ^4.4.1 version: 4.5.0 @@ -905,15 +834,12 @@ importers: '@fixtures/low-level': specifier: workspace:* version: link:../fixtures/low-level - '@fixtures/next-12-pages-router': - specifier: workspace:* - version: link:../fixtures/next-pages-router - '@fixtures/next-13-app-router': + '@fixtures/next-app-router': specifier: workspace:* version: link:../fixtures/next-app-router - '@fixtures/next-16-app-pages-router': + '@fixtures/next-pages-router': specifier: workspace:* - version: link:../fixtures/next-16-app-pages-router + version: link:../fixtures/next-pages-router '@fixtures/recipes': specifier: workspace:* version: link:../fixtures/recipes @@ -940,7 +866,7 @@ importers: version: 2.11.0 '@types/mini-css-extract-plugin': specifier: ^1.2.2 - version: 1.4.3(@swc/core@1.15.3)(esbuild@0.27.0) + version: 1.4.3(esbuild@0.27.0) '@types/webpack-dev-server': specifier: ^3.11.1 version: 3.11.6 @@ -961,10 +887,10 @@ importers: version: link:../packages/webpack-plugin babel-loader: specifier: ^9.1.3 - version: 9.1.3(@babel/core@7.23.9)(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.27.0)) + version: 9.1.3(@babel/core@7.23.9)(webpack@5.90.0(esbuild@0.27.0)) css-loader: specifier: ^7.1.2 - version: 7.1.2(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.27.0)) + version: 7.1.2(webpack@5.90.0(esbuild@0.27.0)) cssnano: specifier: ^5.1.15 version: 5.1.15(postcss@8.5.6) @@ -979,10 +905,10 @@ importers: version: 11.8.3 html-webpack-plugin: specifier: ^5.3.1 - version: 5.5.0(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.27.0)) + version: 5.5.0(webpack@5.90.0(esbuild@0.27.0)) mini-css-extract-plugin: specifier: ^2.7.7 - version: 2.7.7(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.27.0)) + version: 2.7.7(webpack@5.90.0(esbuild@0.27.0)) minimist: specifier: ^1.2.5 version: 1.2.8 @@ -1003,7 +929,7 @@ importers: version: 6.1.3 style-loader: specifier: ^2.0.0 - version: 2.0.0(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.27.0)) + version: 2.0.0(webpack@5.90.0(esbuild@0.27.0)) vite: specifier: ^5.0.0 || ^6.0.0 || ^7.0.0 version: 7.0.3(@types/node@22.15.3)(terser@5.26.0)(tsx@4.20.6) @@ -1012,10 +938,10 @@ importers: version: 11.3.0(vite@7.0.3(@types/node@22.15.3)(terser@5.26.0)(tsx@4.20.6)) webpack: specifier: ^5.90.0 - version: 5.90.0(@swc/core@1.15.3)(esbuild@0.27.0) + version: 5.90.0(esbuild@0.27.0) webpack-dev-server: specifier: ^5.0.4 - version: 5.0.4(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.27.0)) + version: 5.0.4(webpack@5.90.0(esbuild@0.27.0)) webpack-merge: specifier: ^6.0.1 version: 6.0.1 @@ -1040,7 +966,7 @@ importers: version: 10.0.0 '@testing-library/jest-dom': specifier: ^6.4.2 - version: 6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)))(vitest@4.0.13(@types/node@22.15.3)(jsdom@20.0.3)(terser@5.26.0)(tsx@4.20.6)) + version: 6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)))(vitest@4.0.13(@types/node@22.15.3)(jsdom@20.0.3)(terser@5.26.0)(tsx@4.20.6)) '@vanilla-extract-private/test-helpers': specifier: workspace:* version: link:../test-helpers @@ -1951,9 +1877,6 @@ packages: '@emnapi/runtime@1.4.4': resolution: {integrity: sha512-hHyapA4A3gPaDCNfiqyZUStTMqIkKRshqPIuDOXv1hcBnD4U3l8cP0T1HMCfGRxQ6V64TGCcoswChANyOAwbQg==} - '@emnapi/runtime@1.7.1': - resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} - '@emnapi/wasi-threads@1.0.3': resolution: {integrity: sha512-8K5IFFsQqF9wQNJptGbS6FNKgUTsSRYnTqNCG1vPP8jFdjSv18n2mQfJpkt2Oibo9iBEzcDnDxNwKTzC7svlJw==} @@ -2674,143 +2597,6 @@ packages: cpu: [x64] os: [win32] - '@img/colour@1.0.0': - resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==} - engines: {node: '>=18'} - - '@img/sharp-darwin-arm64@0.34.5': - resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [darwin] - - '@img/sharp-darwin-x64@0.34.5': - resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [darwin] - - '@img/sharp-libvips-darwin-arm64@1.2.4': - resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} - cpu: [arm64] - os: [darwin] - - '@img/sharp-libvips-darwin-x64@1.2.4': - resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} - cpu: [x64] - os: [darwin] - - '@img/sharp-libvips-linux-arm64@1.2.4': - resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} - cpu: [arm64] - os: [linux] - - '@img/sharp-libvips-linux-arm@1.2.4': - resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} - cpu: [arm] - os: [linux] - - '@img/sharp-libvips-linux-ppc64@1.2.4': - resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} - cpu: [ppc64] - os: [linux] - - '@img/sharp-libvips-linux-riscv64@1.2.4': - resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} - cpu: [riscv64] - os: [linux] - - '@img/sharp-libvips-linux-s390x@1.2.4': - resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} - cpu: [s390x] - os: [linux] - - '@img/sharp-libvips-linux-x64@1.2.4': - resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} - cpu: [x64] - os: [linux] - - '@img/sharp-libvips-linuxmusl-arm64@1.2.4': - resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} - cpu: [arm64] - os: [linux] - - '@img/sharp-libvips-linuxmusl-x64@1.2.4': - resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} - cpu: [x64] - os: [linux] - - '@img/sharp-linux-arm64@0.34.5': - resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [linux] - - '@img/sharp-linux-arm@0.34.5': - resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm] - os: [linux] - - '@img/sharp-linux-ppc64@0.34.5': - resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [ppc64] - os: [linux] - - '@img/sharp-linux-riscv64@0.34.5': - resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [riscv64] - os: [linux] - - '@img/sharp-linux-s390x@0.34.5': - resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [s390x] - os: [linux] - - '@img/sharp-linux-x64@0.34.5': - resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [linux] - - '@img/sharp-linuxmusl-arm64@0.34.5': - resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [linux] - - '@img/sharp-linuxmusl-x64@0.34.5': - resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [linux] - - '@img/sharp-wasm32@0.34.5': - resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [wasm32] - - '@img/sharp-win32-arm64@0.34.5': - resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [win32] - - '@img/sharp-win32-ia32@0.34.5': - resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [ia32] - os: [win32] - - '@img/sharp-win32-x64@0.34.5': - resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [win32] - '@import-maps/resolve@1.0.1': resolution: {integrity: sha512-tWZNBIS1CoekcwlMuyG2mr0a1Wo5lb5lEHwwWvZo+5GLgr3e9LLDTtmgtCWEwBpXMkxn9D+2W9j2FY6eZQq0tA==} @@ -3358,9 +3144,6 @@ packages: '@next/env@13.5.4': resolution: {integrity: sha512-LGegJkMvRNw90WWphGJ3RMHMVplYcOfRWf2Be3td3sUa+1AaxmsYyANsA+znrGCBjXJNi4XAQlSoEfUxs/4kIQ==} - '@next/env@16.0.4': - resolution: {integrity: sha512-FDPaVoB1kYhtOz6Le0Jn2QV7RZJ3Ngxzqri7YX4yu3Ini+l5lciR7nA9eNDpKTmDm7LWZtxSju+/CQnwRBn2pA==} - '@next/swc-android-arm-eabi@12.3.4': resolution: {integrity: sha512-cM42Cw6V4Bz/2+j/xIzO8nK/Q3Ly+VSlZJTa1vHzsocJRYz8KT6MrreXaci2++SIZCF1rVRCDgAg5PpqRibdIA==} engines: {node: '>= 10'} @@ -3385,12 +3168,6 @@ packages: cpu: [arm64] os: [darwin] - '@next/swc-darwin-arm64@16.0.4': - resolution: {integrity: sha512-TN0cfB4HT2YyEio9fLwZY33J+s+vMIgC84gQCOLZOYusW7ptgjIn8RwxQt0BUpoo9XRRVVWEHLld0uhyux1ZcA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - '@next/swc-darwin-x64@12.3.4': resolution: {integrity: sha512-PPF7tbWD4k0dJ2EcUSnOsaOJ5rhT3rlEt/3LhZUGiYNL8KvoqczFrETlUx0cUYaXe11dRA3F80Hpt727QIwByQ==} engines: {node: '>= 10'} @@ -3403,12 +3180,6 @@ packages: cpu: [x64] os: [darwin] - '@next/swc-darwin-x64@16.0.4': - resolution: {integrity: sha512-XsfI23jvimCaA7e+9f3yMCoVjrny2D11G6H8NCcgv+Ina/TQhKPXB9P4q0WjTuEoyZmcNvPdrZ+XtTh3uPfH7Q==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - '@next/swc-freebsd-x64@12.3.4': resolution: {integrity: sha512-KM9JXRXi/U2PUM928z7l4tnfQ9u8bTco/jb939pdFUHqc28V43Ohd31MmZD1QzEK4aFlMRaIBQOWQZh4D/E5lQ==} engines: {node: '>= 10'} @@ -3433,12 +3204,6 @@ packages: cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-gnu@16.0.4': - resolution: {integrity: sha512-uo8X7qHDy4YdJUhaoJDMAbL8VT5Ed3lijip2DdBHIB4tfKAvB1XBih6INH2L4qIi4jA0Qq1J0ErxcOocBmUSwg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - '@next/swc-linux-arm64-musl@12.3.4': resolution: {integrity: sha512-EETZPa1juczrKLWk5okoW2hv7D7WvonU+Cf2CgsSoxgsYbUCZ1voOpL4JZTOb6IbKMDo6ja+SbY0vzXZBUMvkQ==} engines: {node: '>= 10'} @@ -3451,12 +3216,6 @@ packages: cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@16.0.4': - resolution: {integrity: sha512-pvR/AjNIAxsIz0PCNcZYpH+WmNIKNLcL4XYEfo+ArDi7GsxKWFO5BvVBLXbhti8Coyv3DE983NsitzUsGH5yTw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - '@next/swc-linux-x64-gnu@12.3.4': resolution: {integrity: sha512-4csPbRbfZbuWOk3ATyWcvVFdD9/Rsdq5YHKvRuEni68OCLkfy4f+4I9OBpyK1SKJ00Cih16NJbHE+k+ljPPpag==} engines: {node: '>= 10'} @@ -3469,12 +3228,6 @@ packages: cpu: [x64] os: [linux] - '@next/swc-linux-x64-gnu@16.0.4': - resolution: {integrity: sha512-2hebpsd5MRRtgqmT7Jj/Wze+wG+ZEXUK2KFFL4IlZ0amEEFADo4ywsifJNeFTQGsamH3/aXkKWymDvgEi+pc2Q==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - '@next/swc-linux-x64-musl@12.3.4': resolution: {integrity: sha512-YeBmI+63Ro75SUiL/QXEVXQ19T++58aI/IINOyhpsRL1LKdyfK/35iilraZEFz9bLQrwy1LYAR5lK200A9Gjbg==} engines: {node: '>= 10'} @@ -3487,12 +3240,6 @@ packages: cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@16.0.4': - resolution: {integrity: sha512-pzRXf0LZZ8zMljH78j8SeLncg9ifIOp3ugAFka+Bq8qMzw6hPXOc7wydY7ardIELlczzzreahyTpwsim/WL3Sg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - '@next/swc-win32-arm64-msvc@12.3.4': resolution: {integrity: sha512-Sd0qFUJv8Tj0PukAYbCCDbmXcMkbIuhnTeHm9m4ZGjCf6kt7E/RMs55Pd3R5ePjOkN7dJEuxYBehawTR/aPDSQ==} engines: {node: '>= 10'} @@ -3505,12 +3252,6 @@ packages: cpu: [arm64] os: [win32] - '@next/swc-win32-arm64-msvc@16.0.4': - resolution: {integrity: sha512-7G/yJVzum52B5HOqqbQYX9bJHkN+c4YyZ2AIvEssMHQlbAWOn3iIJjD4sM6ihWsBxuljiTKJovEYlD1K8lCUHw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - '@next/swc-win32-ia32-msvc@12.3.4': resolution: {integrity: sha512-rt/vv/vg/ZGGkrkKcuJ0LyliRdbskQU+91bje+PgoYmxTZf/tYs6IfbmgudBJk6gH3QnjHWbkphDdRQrseRefQ==} engines: {node: '>= 10'} @@ -3535,12 +3276,6 @@ packages: cpu: [x64] os: [win32] - '@next/swc-win32-x64-msvc@16.0.4': - resolution: {integrity: sha512-0Vy4g8SSeVkuU89g2OFHqGKM4rxsQtihGfenjx2tRckPrge5+gtFnRWGAAwvGXr0ty3twQvcnYjEyOrLHJ4JWA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -4387,93 +4122,15 @@ packages: '@standard-schema/spec@1.0.0': resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} - '@swc/core-darwin-arm64@1.15.3': - resolution: {integrity: sha512-AXfeQn0CvcQ4cndlIshETx6jrAM45oeUrK8YeEY6oUZU/qzz0Id0CyvlEywxkWVC81Ajpd8TQQ1fW5yx6zQWkQ==} - engines: {node: '>=10'} - cpu: [arm64] - os: [darwin] - - '@swc/core-darwin-x64@1.15.3': - resolution: {integrity: sha512-p68OeCz1ui+MZYG4wmfJGvcsAcFYb6Sl25H9TxWl+GkBgmNimIiRdnypK9nBGlqMZAcxngNPtnG3kEMNnvoJ2A==} - engines: {node: '>=10'} - cpu: [x64] - os: [darwin] - - '@swc/core-linux-arm-gnueabihf@1.15.3': - resolution: {integrity: sha512-Nuj5iF4JteFgwrai97mUX+xUOl+rQRHqTvnvHMATL/l9xE6/TJfPBpd3hk/PVpClMXG3Uvk1MxUFOEzM1JrMYg==} - engines: {node: '>=10'} - cpu: [arm] - os: [linux] - - '@swc/core-linux-arm64-gnu@1.15.3': - resolution: {integrity: sha512-2Nc/s8jE6mW2EjXWxO/lyQuLKShcmTrym2LRf5Ayp3ICEMX6HwFqB1EzDhwoMa2DcUgmnZIalesq2lG3krrUNw==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - - '@swc/core-linux-arm64-musl@1.15.3': - resolution: {integrity: sha512-j4SJniZ/qaZ5g8op+p1G9K1z22s/EYGg1UXIb3+Cg4nsxEpF5uSIGEE4mHUfA70L0BR9wKT2QF/zv3vkhfpX4g==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - - '@swc/core-linux-x64-gnu@1.15.3': - resolution: {integrity: sha512-aKttAZnz8YB1VJwPQZtyU8Uk0BfMP63iDMkvjhJzRZVgySmqt/apWSdnoIcZlUoGheBrcqbMC17GGUmur7OT5A==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - - '@swc/core-linux-x64-musl@1.15.3': - resolution: {integrity: sha512-oe8FctPu1gnUsdtGJRO2rvOUIkkIIaHqsO9xxN0bTR7dFTlPTGi2Fhk1tnvXeyAvCPxLIcwD8phzKg6wLv9yug==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - - '@swc/core-win32-arm64-msvc@1.15.3': - resolution: {integrity: sha512-L9AjzP2ZQ/Xh58e0lTRMLvEDrcJpR7GwZqAtIeNLcTK7JVE+QineSyHp0kLkO1rttCHyCy0U74kDTj0dRz6raA==} - engines: {node: '>=10'} - cpu: [arm64] - os: [win32] - - '@swc/core-win32-ia32-msvc@1.15.3': - resolution: {integrity: sha512-B8UtogMzErUPDWUoKONSVBdsgKYd58rRyv2sHJWKOIMCHfZ22FVXICR4O/VwIYtlnZ7ahERcjayBHDlBZpR0aw==} - engines: {node: '>=10'} - cpu: [ia32] - os: [win32] - - '@swc/core-win32-x64-msvc@1.15.3': - resolution: {integrity: sha512-SpZKMR9QBTecHeqpzJdYEfgw30Oo8b/Xl6rjSzBt1g0ZsXyy60KLXrp6IagQyfTYqNYE/caDvwtF2FPn7pomog==} - engines: {node: '>=10'} - cpu: [x64] - os: [win32] - - '@swc/core@1.15.3': - resolution: {integrity: sha512-Qd8eBPkUFL4eAONgGjycZXj1jFCBW8Fd+xF0PzdTlBCWQIV1xnUT7B93wUANtW3KGjl3TRcOyxwSx/u/jyKw/Q==} - engines: {node: '>=10'} - peerDependencies: - '@swc/helpers': '>=0.5.17' - peerDependenciesMeta: - '@swc/helpers': - optional: true - - '@swc/counter@0.1.3': - resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - '@swc/helpers@0.4.11': resolution: {integrity: sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw==} '@swc/helpers@0.4.14': resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} - '@swc/helpers@0.5.15': - resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} - '@swc/helpers@0.5.2': resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} - '@swc/types@0.1.25': - resolution: {integrity: sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==} - '@szmarczak/http-timer@1.1.2': resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} engines: {node: '>=6'} @@ -4756,8 +4413,8 @@ packages: '@types/semver@6.2.3': resolution: {integrity: sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A==} - '@types/semver@7.7.1': - resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} + '@types/semver@7.5.5': + resolution: {integrity: sha512-+d+WYC1BxJ6yVOgUgzK8gWvp5qF8ssV5r4nsDcZWKRWcDQLQ619tvWAxJQYGgBrO1MnLJC7a5GtiYsAoQ47dJg==} '@types/send@0.17.4': resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} @@ -6332,10 +5989,6 @@ packages: resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} engines: {node: '>=8'} - detect-libc@2.1.2: - resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} - engines: {node: '>=8'} - detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} @@ -9224,27 +8877,6 @@ packages: sass: optional: true - next@16.0.4: - resolution: {integrity: sha512-vICcxKusY8qW7QFOzTvnRL1ejz2ClTqDKtm1AcUjm2mPv/lVAdgpGNsftsPRIDJOXOjRQO68i1dM8Lp8GZnqoA==} - engines: {node: '>=20.9.0'} - hasBin: true - 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 - sass: ^1.3.0 - peerDependenciesMeta: - '@opentelemetry/api': - optional: true - '@playwright/test': - optional: true - babel-plugin-react-compiler: - optional: true - sass: - optional: true - no-case@2.3.2: resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==} @@ -9324,96 +8956,6 @@ packages: resolution: {integrity: sha512-E9EhoJkpIIZyYplB298W8ZfhcojQrnKnUPcaOgJqVqICUZwPZkuj10nTzEscwdziOOj545v4tGPvNBG3ieUbSw==} engines: {node: '>=10.17.0'} - node@runtime:24.11.1: - resolution: - type: variations - variants: - - resolution: - archive: tarball - bin: bin/node - integrity: sha256-mLqRmgOQ2MQi1LsxBexbd3I89UFDtMHkudd2kPoHUgY= - type: binary - url: https://nodejs.org/download/release/v24.11.1/node-v24.11.1-aix-ppc64.tar.gz - targets: - - cpu: ppc64 - os: aix - - resolution: - archive: tarball - bin: bin/node - integrity: sha256-sFqjpm7+aAAj+TC9WvP9u9VCeU2lZEyirXEdaMvU3DU= - type: binary - url: https://nodejs.org/download/release/v24.11.1/node-v24.11.1-darwin-arm64.tar.gz - targets: - - cpu: arm64 - os: darwin - - resolution: - archive: tarball - bin: bin/node - integrity: sha256-CWCBttb83T9boPXx1EpH6DA3rS546tomZxwlL+ZN0RE= - type: binary - url: https://nodejs.org/download/release/v24.11.1/node-v24.11.1-darwin-x64.tar.gz - targets: - - cpu: x64 - os: darwin - - resolution: - archive: tarball - bin: bin/node - integrity: sha256-Dck+xceYsNNH8GjbbSBdA96ppxdl5qU5IraCuRJl1x8= - type: binary - url: https://nodejs.org/download/release/v24.11.1/node-v24.11.1-linux-arm64.tar.gz - targets: - - cpu: arm64 - os: linux - - resolution: - archive: tarball - bin: bin/node - integrity: sha256-zUFAfzNS3i8GbqJsXF0OqbY2I3TWthg4Wp8una0iBhY= - type: binary - url: https://nodejs.org/download/release/v24.11.1/node-v24.11.1-linux-ppc64le.tar.gz - targets: - - cpu: ppc64le - os: linux - - resolution: - archive: tarball - bin: bin/node - integrity: sha256-XUyLyl+PJZP5CB3uOYNHYOhaFvphyVDz6G7IWZbwBVA= - type: binary - url: https://nodejs.org/download/release/v24.11.1/node-v24.11.1-linux-s390x.tar.gz - targets: - - cpu: s390x - os: linux - - resolution: - archive: tarball - bin: bin/node - integrity: sha256-WKX/XMjyIA5Fi+oi4ynVwZlKobER1JnKRuwkEdWCOco= - type: binary - url: https://nodejs.org/download/release/v24.11.1/node-v24.11.1-linux-x64.tar.gz - targets: - - cpu: x64 - os: linux - - resolution: - archive: zip - bin: node.exe - integrity: sha256-zp7k5Ufr3/NVvrSOMJsWbCTfa+ApHJ6vEDzhXz3p5bQ= - prefix: node-v24.11.1-win-arm64 - type: binary - url: https://nodejs.org/download/release/v24.11.1/node-v24.11.1-win-arm64.zip - targets: - - cpu: arm64 - os: win32 - - resolution: - archive: zip - bin: node.exe - integrity: sha256-U1WubXxJ7dz959NKw0hoIGAKgxv4HcO9ylyNtqm7DnY= - prefix: node-v24.11.1-win-x64 - type: binary - url: https://nodejs.org/download/release/v24.11.1/node-v24.11.1-win-x64.zip - targets: - - cpu: x64 - os: win32 - version: 24.11.1 - hasBin: true - noop2@2.0.0: resolution: {integrity: sha512-2bu7Pfpf6uNqashWV8P7yYeutQ3XkLY9MBSYI5sOAFZxuWcW/uJfLbKj5m6SvMDT9U1Y0C+7UFG+7VSiIdXjtA==} @@ -10441,11 +9983,6 @@ packages: peerDependencies: react: ^18.2.0 - react-dom@19.2.0: - resolution: {integrity: sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==} - peerDependencies: - react: ^19.2.0 - react-error-overlay@6.0.9: resolution: {integrity: sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==} @@ -10500,10 +10037,6 @@ packages: resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} engines: {node: '>=0.10.0'} - react@19.2.0: - resolution: {integrity: sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==} - engines: {node: '>=0.10.0'} - read-package-json-fast@2.0.3: resolution: {integrity: sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==} engines: {node: '>=10'} @@ -10870,9 +10403,6 @@ packages: scheduler@0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} - scheduler@0.27.0: - resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} - schema-utils@3.3.0: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} @@ -10916,11 +10446,6 @@ packages: engines: {node: '>=10'} hasBin: true - semver@7.7.3: - resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} - engines: {node: '>=10'} - hasBin: true - send@0.19.0: resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} @@ -10966,10 +10491,6 @@ packages: resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} engines: {node: '>=8'} - sharp@0.34.5: - resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} @@ -11368,19 +10889,6 @@ packages: babel-plugin-macros: optional: true - styled-jsx@5.1.6: - 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 || ^19.0.0-0' - peerDependenciesMeta: - '@babel/core': - optional: true - babel-plugin-macros: - optional: true - stylehacks@5.1.1: resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} engines: {node: ^10 || ^12 || >=14.0} @@ -11715,9 +11223,6 @@ packages: tslib@2.5.0: resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} - tslib@2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - tsutils@3.21.0: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} @@ -13602,7 +13107,7 @@ snapshots: outdent: 0.5.0 prettier: 2.8.8 resolve-from: 5.0.0 - semver: 7.7.3 + semver: 7.6.0 '@changesets/assemble-release-plan@6.0.4': dependencies: @@ -13611,7 +13116,7 @@ snapshots: '@changesets/should-skip-package': 0.1.1 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 - semver: 7.7.3 + semver: 7.6.0 '@changesets/changelog-git@0.2.0': dependencies: @@ -13642,7 +13147,7 @@ snapshots: '@changesets/types': 6.0.0 '@changesets/write': 0.3.2 '@manypkg/get-packages': 1.1.3 - '@types/semver': 7.7.1 + '@types/semver': 7.5.5 ansi-colors: 4.1.3 ci-info: 3.9.0 enquirer: 2.3.6 @@ -13654,7 +13159,7 @@ snapshots: package-manager-detector: 0.2.0 picocolors: 1.1.1 resolve-from: 5.0.0 - semver: 7.7.3 + semver: 7.6.0 spawndamnit: 2.0.0 term-size: 2.2.1 @@ -13677,7 +13182,7 @@ snapshots: '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 picocolors: 1.1.1 - semver: 7.7.3 + semver: 7.6.0 '@changesets/get-github-info@0.6.0': dependencies: @@ -13787,11 +13292,6 @@ snapshots: tslib: 2.5.0 optional: true - '@emnapi/runtime@1.7.1': - dependencies: - tslib: 2.5.0 - optional: true - '@emnapi/wasi-threads@1.0.3': dependencies: tslib: 2.5.0 @@ -14156,103 +13656,6 @@ snapshots: '@esbuild/win32-x64@0.27.0': optional: true - '@img/colour@1.0.0': - optional: true - - '@img/sharp-darwin-arm64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.2.4 - optional: true - - '@img/sharp-darwin-x64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.2.4 - optional: true - - '@img/sharp-libvips-darwin-arm64@1.2.4': - optional: true - - '@img/sharp-libvips-darwin-x64@1.2.4': - optional: true - - '@img/sharp-libvips-linux-arm64@1.2.4': - optional: true - - '@img/sharp-libvips-linux-arm@1.2.4': - optional: true - - '@img/sharp-libvips-linux-ppc64@1.2.4': - optional: true - - '@img/sharp-libvips-linux-riscv64@1.2.4': - optional: true - - '@img/sharp-libvips-linux-s390x@1.2.4': - optional: true - - '@img/sharp-libvips-linux-x64@1.2.4': - optional: true - - '@img/sharp-libvips-linuxmusl-arm64@1.2.4': - optional: true - - '@img/sharp-libvips-linuxmusl-x64@1.2.4': - optional: true - - '@img/sharp-linux-arm64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.2.4 - optional: true - - '@img/sharp-linux-arm@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.2.4 - optional: true - - '@img/sharp-linux-ppc64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linux-ppc64': 1.2.4 - optional: true - - '@img/sharp-linux-riscv64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linux-riscv64': 1.2.4 - optional: true - - '@img/sharp-linux-s390x@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.2.4 - optional: true - - '@img/sharp-linux-x64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.2.4 - optional: true - - '@img/sharp-linuxmusl-arm64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 - optional: true - - '@img/sharp-linuxmusl-x64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.2.4 - optional: true - - '@img/sharp-wasm32@0.34.5': - dependencies: - '@emnapi/runtime': 1.7.1 - optional: true - - '@img/sharp-win32-arm64@0.34.5': - optional: true - - '@img/sharp-win32-ia32@0.34.5': - optional: true - - '@img/sharp-win32-x64@0.34.5': - optional: true - '@import-maps/resolve@1.0.1': {} '@isaacs/cliui@8.0.2': @@ -14283,7 +13686,7 @@ snapshots: jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3))': + '@jest/core@29.7.0(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -14297,7 +13700,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)) + jest-config: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -14604,7 +14007,7 @@ snapshots: nopt: 5.0.0 npmlog: 5.0.1 rimraf: 3.0.2 - semver: 7.7.3 + semver: 7.6.0 tar: 6.1.11 transitivePeerDependencies: - encoding @@ -14711,7 +14114,7 @@ snapshots: '@netlify/binary-info@1.0.0': {} - '@netlify/build@27.18.5(@swc/core@1.15.3)': + '@netlify/build@27.18.5': dependencies: '@bugsnag/js': 7.18.0 '@netlify/cache-utils': 4.1.4(supports-color@9.2.3) @@ -14757,13 +14160,13 @@ snapshots: resolve: 2.0.0-next.4 rfdc: 1.3.0 safe-json-stringify: 1.2.0 - semver: 7.7.3 + semver: 7.6.0 statsd-client: 0.4.7 string-width: 5.1.2 strip-ansi: 7.0.1 supports-color: 9.2.3 tmp-promise: 3.0.3 - ts-node: 10.9.1(@swc/core@1.15.3)(@types/node@16.11.10)(typescript@4.9.4) + ts-node: 10.9.1(@types/node@16.11.10)(typescript@4.9.4) typescript: 4.9.4 update-notifier: 5.1.0 uuid: 8.3.2 @@ -14829,7 +14232,7 @@ snapshots: p-retry: 5.1.1 p-wait-for: 4.1.0 path-key: 4.0.0 - semver: 7.7.3 + semver: 7.6.0 tmp-promise: 3.0.3 uuid: 9.0.0 @@ -14925,7 +14328,7 @@ snapshots: p-filter: 3.0.0 p-locate: 6.0.0 read-pkg-up: 9.1.0 - semver: 7.7.3 + semver: 7.6.0 '@netlify/functions-utils@4.2.9(supports-color@9.2.3)': dependencies: @@ -15032,7 +14435,7 @@ snapshots: read-package-json-fast: 2.0.3 require-package-name: 2.0.1 resolve: 2.0.0-next.4 - semver: 7.7.3 + semver: 7.6.0 tmp-promise: 3.0.3 toml: 3.0.0 unixify: 1.0.0 @@ -15045,8 +14448,6 @@ snapshots: '@next/env@13.5.4': {} - '@next/env@16.0.4': {} - '@next/swc-android-arm-eabi@12.3.4': optional: true @@ -15059,18 +14460,12 @@ snapshots: '@next/swc-darwin-arm64@13.5.4': optional: true - '@next/swc-darwin-arm64@16.0.4': - optional: true - '@next/swc-darwin-x64@12.3.4': optional: true '@next/swc-darwin-x64@13.5.4': optional: true - '@next/swc-darwin-x64@16.0.4': - optional: true - '@next/swc-freebsd-x64@12.3.4': optional: true @@ -15083,45 +14478,30 @@ snapshots: '@next/swc-linux-arm64-gnu@13.5.4': optional: true - '@next/swc-linux-arm64-gnu@16.0.4': - optional: true - '@next/swc-linux-arm64-musl@12.3.4': optional: true '@next/swc-linux-arm64-musl@13.5.4': optional: true - '@next/swc-linux-arm64-musl@16.0.4': - optional: true - '@next/swc-linux-x64-gnu@12.3.4': optional: true '@next/swc-linux-x64-gnu@13.5.4': optional: true - '@next/swc-linux-x64-gnu@16.0.4': - optional: true - '@next/swc-linux-x64-musl@12.3.4': optional: true '@next/swc-linux-x64-musl@13.5.4': optional: true - '@next/swc-linux-x64-musl@16.0.4': - optional: true - '@next/swc-win32-arm64-msvc@12.3.4': optional: true '@next/swc-win32-arm64-msvc@13.5.4': optional: true - '@next/swc-win32-arm64-msvc@16.0.4': - optional: true - '@next/swc-win32-ia32-msvc@12.3.4': optional: true @@ -15134,9 +14514,6 @@ snapshots: '@next/swc-win32-x64-msvc@13.5.4': optional: true - '@next/swc-win32-x64-msvc@16.0.4': - optional: true - '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -15153,7 +14530,7 @@ snapshots: '@npmcli/fs@3.1.0': dependencies: - semver: 7.7.3 + semver: 7.6.0 '@npmcli/git@4.1.0': dependencies: @@ -15163,7 +14540,7 @@ snapshots: proc-log: 3.0.0 promise-inflight: 1.0.1 promise-retry: 2.0.1 - semver: 7.7.3 + semver: 7.6.0 which: 3.0.1 transitivePeerDependencies: - bluebird @@ -15176,7 +14553,7 @@ snapshots: json-parse-even-better-errors: 3.0.1 normalize-package-data: 5.0.0 proc-log: 3.0.0 - semver: 7.7.3 + semver: 7.6.0 transitivePeerDependencies: - bluebird @@ -15374,7 +14751,7 @@ snapshots: json5: 2.2.3 msgpackr: 1.10.1 nullthrows: 1.1.1 - semver: 7.7.3 + semver: 7.6.0 '@parcel/diagnostic@2.11.0': dependencies: @@ -15466,7 +14843,7 @@ snapshots: '@parcel/rust': 2.11.0 '@parcel/utils': 2.11.0 nullthrows: 1.1.1 - semver: 7.7.3 + semver: 7.6.0 transitivePeerDependencies: - '@parcel/core' @@ -15539,7 +14916,7 @@ snapshots: '@parcel/types': 2.11.0(@parcel/core@2.11.0) '@parcel/utils': 2.11.0 '@parcel/workers': 2.11.0(@parcel/core@2.11.0) - semver: 7.7.3 + semver: 7.6.0 '@parcel/package-manager@2.8.3(@parcel/core@2.11.0)': dependencies: @@ -15967,7 +15344,7 @@ snapshots: resolve: 1.22.8 resolve-from: 5.0.0 rollup: 2.79.1 - semver: 7.7.3 + semver: 7.6.0 terser: 5.26.0 v8-compile-cache: 2.3.0 zod: 3.22.4 @@ -15988,7 +15365,7 @@ snapshots: make-synchronized: 0.2.9 prettier: 3.4.2 - '@remix-run/dev@2.17.2(@remix-run/react@2.17.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3))(@remix-run/serve@2.17.2(typescript@5.8.3))(@types/node@22.15.3)(terser@5.26.0)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3))(tsx@4.20.6)(typescript@5.8.3)(vite@7.0.3(@types/node@22.15.3)(terser@5.26.0)(tsx@4.20.6))': + '@remix-run/dev@2.17.2(@remix-run/react@2.17.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3))(@remix-run/serve@2.17.2(typescript@5.8.3))(@types/node@22.15.3)(terser@5.26.0)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3))(tsx@4.20.6)(typescript@5.8.3)(vite@7.0.3(@types/node@22.15.3)(terser@5.26.0)(tsx@4.20.6))': dependencies: '@babel/core': 7.23.9 '@babel/generator': 7.23.6 @@ -16033,7 +15410,7 @@ snapshots: pidtree: 0.6.0 postcss: 8.5.6 postcss-discard-duplicates: 5.1.0(postcss@8.5.6) - postcss-load-config: 4.0.2(postcss@8.5.6)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)) + postcss-load-config: 4.0.2(postcss@8.5.6)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)) postcss-modules: 6.0.0(postcss@8.5.6) prettier: 2.8.8 pretty-ms: 7.0.1 @@ -16373,54 +15750,6 @@ snapshots: '@standard-schema/spec@1.0.0': {} - '@swc/core-darwin-arm64@1.15.3': - optional: true - - '@swc/core-darwin-x64@1.15.3': - optional: true - - '@swc/core-linux-arm-gnueabihf@1.15.3': - optional: true - - '@swc/core-linux-arm64-gnu@1.15.3': - optional: true - - '@swc/core-linux-arm64-musl@1.15.3': - optional: true - - '@swc/core-linux-x64-gnu@1.15.3': - optional: true - - '@swc/core-linux-x64-musl@1.15.3': - optional: true - - '@swc/core-win32-arm64-msvc@1.15.3': - optional: true - - '@swc/core-win32-ia32-msvc@1.15.3': - optional: true - - '@swc/core-win32-x64-msvc@1.15.3': - optional: true - - '@swc/core@1.15.3': - dependencies: - '@swc/counter': 0.1.3 - '@swc/types': 0.1.25 - optionalDependencies: - '@swc/core-darwin-arm64': 1.15.3 - '@swc/core-darwin-x64': 1.15.3 - '@swc/core-linux-arm-gnueabihf': 1.15.3 - '@swc/core-linux-arm64-gnu': 1.15.3 - '@swc/core-linux-arm64-musl': 1.15.3 - '@swc/core-linux-x64-gnu': 1.15.3 - '@swc/core-linux-x64-musl': 1.15.3 - '@swc/core-win32-arm64-msvc': 1.15.3 - '@swc/core-win32-ia32-msvc': 1.15.3 - '@swc/core-win32-x64-msvc': 1.15.3 - - '@swc/counter@0.1.3': {} - '@swc/helpers@0.4.11': dependencies: tslib: 2.5.0 @@ -16429,18 +15758,10 @@ snapshots: dependencies: tslib: 2.5.0 - '@swc/helpers@0.5.15': - dependencies: - tslib: 2.8.1 - '@swc/helpers@0.5.2': dependencies: tslib: 2.5.0 - '@swc/types@0.1.25': - dependencies: - '@swc/counter': 0.1.3 - '@szmarczak/http-timer@1.1.2': dependencies: defer-to-connect: 1.1.3 @@ -16464,7 +15785,7 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 - '@testing-library/jest-dom@6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)))(vitest@4.0.13(@types/node@22.15.3)(jsdom@20.0.3)(terser@5.26.0)(tsx@4.20.6))': + '@testing-library/jest-dom@6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)))(vitest@4.0.13(@types/node@22.15.3)(jsdom@20.0.3)(terser@5.26.0)(tsx@4.20.6))': dependencies: '@adobe/css-tools': 4.3.3 '@babel/runtime': 7.23.9 @@ -16477,7 +15798,7 @@ snapshots: optionalDependencies: '@jest/globals': 29.7.0 '@types/jest': 29.5.12 - jest: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)) + jest: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)) vitest: 4.0.13(@types/node@22.15.3)(jsdom@20.0.3)(terser@5.26.0)(tsx@4.20.6) '@tootallnate/once@2.0.0': {} @@ -16680,11 +16001,11 @@ snapshots: '@types/mime@1.3.2': {} - '@types/mini-css-extract-plugin@1.4.3(@swc/core@1.15.3)(esbuild@0.27.0)': + '@types/mini-css-extract-plugin@1.4.3(esbuild@0.27.0)': dependencies: '@types/node': 22.15.3 tapable: 2.2.1 - webpack: 5.90.0(@swc/core@1.15.3)(esbuild@0.27.0) + webpack: 5.90.0(esbuild@0.27.0) transitivePeerDependencies: - '@swc/core' - esbuild @@ -16771,7 +16092,7 @@ snapshots: '@types/semver@6.2.3': {} - '@types/semver@7.7.1': {} + '@types/semver@7.5.5': {} '@types/send@0.17.4': dependencies: @@ -16812,11 +16133,11 @@ snapshots: '@types/unist@2.0.6': {} - '@types/webpack-bundle-analyzer@4.4.1(@swc/core@1.15.3)(webpack-cli@5.1.4)': + '@types/webpack-bundle-analyzer@4.4.1(webpack-cli@5.1.4)': dependencies: '@types/node': 22.15.3 tapable: 2.2.1 - webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) + webpack: 5.90.0(webpack-cli@5.1.4) transitivePeerDependencies: - '@swc/core' - esbuild @@ -16875,7 +16196,7 @@ snapshots: debug: 4.4.3(supports-color@9.2.3) globby: 11.1.0 is-glob: 4.0.3 - semver: 7.7.3 + semver: 7.6.0 tsutils: 3.21.0(typescript@4.9.4) optionalDependencies: typescript: 4.9.4 @@ -17092,17 +16413,17 @@ snapshots: '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.90.0)': dependencies: - webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) + webpack: 5.90.0(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-bundle-analyzer@4.5.0)(webpack-dev-server@5.0.4)(webpack@5.90.0) '@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.90.0)': dependencies: - webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) + webpack: 5.90.0(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-bundle-analyzer@4.5.0)(webpack-dev-server@5.0.4)(webpack@5.90.0) '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack-dev-server@5.0.4)(webpack@5.90.0)': dependencies: - webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) + webpack: 5.90.0(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-bundle-analyzer@4.5.0)(webpack-dev-server@5.0.4)(webpack@5.90.0) optionalDependencies: webpack-dev-server: 5.0.4(webpack-cli@5.1.4)(webpack@5.90.0) @@ -17228,7 +16549,7 @@ snapshots: global-cache-dir: 2.0.0 jest-validate: 25.5.0 path-exists: 4.0.0 - semver: 7.7.3 + semver: 7.6.0 write-file-atomic: 3.0.3 ansi-align@3.0.1: @@ -17416,19 +16737,19 @@ snapshots: transitivePeerDependencies: - supports-color - babel-loader@9.1.3(@babel/core@7.23.9)(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.27.0)): + babel-loader@9.1.3(@babel/core@7.23.9)(webpack@5.90.0(esbuild@0.27.0)): dependencies: '@babel/core': 7.23.9 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.90.0(@swc/core@1.15.3)(esbuild@0.27.0) + webpack: 5.90.0(esbuild@0.27.0) babel-loader@9.1.3(@babel/core@7.23.9)(webpack@5.90.0): dependencies: '@babel/core': 7.23.9 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) + webpack: 5.90.0(webpack-cli@5.1.4) babel-plugin-apply-mdx-type-prop@1.6.22(@babel/core@7.12.9): dependencies: @@ -17672,7 +16993,7 @@ snapshots: builtins@5.0.1: dependencies: - semver: 7.7.3 + semver: 7.6.0 bundle-name@4.1.0: dependencies: @@ -18125,7 +17446,7 @@ snapshots: js-string-escape: 1.0.1 lodash: 4.17.21 md5-hex: 3.0.1 - semver: 7.7.3 + semver: 7.6.0 well-known-symbols: 2.0.0 config-chain@1.1.13: @@ -18199,7 +17520,7 @@ snapshots: normalize-path: 3.0.0 schema-utils: 4.2.0 serialize-javascript: 6.0.2 - webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) + webpack: 5.90.0(webpack-cli@5.1.4) core-js-compat@3.36.0: dependencies: @@ -18250,13 +17571,13 @@ snapshots: crc-32: 1.2.2 readable-stream: 3.6.0 - create-jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)): + create-jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.10 - jest-config: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)) + jest-config: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -18295,7 +17616,7 @@ snapshots: dependencies: postcss: 8.5.6 - css-loader@7.1.2(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.27.0)): + css-loader@7.1.2(webpack@5.90.0(esbuild@0.27.0)): dependencies: icss-utils: 5.1.0(postcss@8.5.6) postcss: 8.5.6 @@ -18306,7 +17627,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.6.0 optionalDependencies: - webpack: 5.90.0(@swc/core@1.15.3)(esbuild@0.27.0) + webpack: 5.90.0(esbuild@0.27.0) css-loader@7.1.2(webpack@5.90.0): dependencies: @@ -18319,7 +17640,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.6.0 optionalDependencies: - webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) + webpack: 5.90.0(webpack-cli@5.1.4) css-select@4.1.3: dependencies: @@ -18606,9 +17927,6 @@ snapshots: detect-libc@2.0.2: {} - detect-libc@2.1.2: - optional: true - detect-newline@3.1.0: {} detect-node@2.1.0: {} @@ -19589,10 +18907,10 @@ snapshots: dependencies: '@types/download': 8.0.1 '@types/node-fetch': 2.6.2 - '@types/semver': 7.7.1 + '@types/semver': 7.5.5 download: 8.0.0 node-fetch: 2.6.7 - semver: 7.7.3 + semver: 7.6.0 transitivePeerDependencies: - encoding @@ -20035,14 +19353,14 @@ snapshots: html-void-elements@1.0.5: {} - html-webpack-plugin@5.5.0(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.27.0)): + html-webpack-plugin@5.5.0(webpack@5.90.0(esbuild@0.27.0)): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.90.0(@swc/core@1.15.3)(esbuild@0.27.0) + webpack: 5.90.0(esbuild@0.27.0) html-webpack-plugin@5.5.0(webpack@5.90.0): dependencies: @@ -20051,7 +19369,7 @@ snapshots: lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) + webpack: 5.90.0(webpack-cli@5.1.4) htmlnano@2.0.3(cssnano@5.1.15(postcss@8.5.6))(postcss@8.5.6)(relateurl@0.2.7)(srcset@4.0.0)(svgo@2.8.0)(terser@5.26.0): dependencies: @@ -20562,7 +19880,7 @@ snapshots: '@babel/parser': 7.23.9 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 - semver: 7.7.3 + semver: 7.6.0 transitivePeerDependencies: - supports-color @@ -20630,16 +19948,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)): + jest-cli@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)) + '@jest/core': 29.7.0(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)) + create-jest: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)) exit: 0.1.2 import-local: 3.0.3 - jest-config: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)) + jest-config: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -20649,7 +19967,7 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)): + jest-config@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)): dependencies: '@babel/core': 7.23.9 '@jest/test-sequencer': 29.7.0 @@ -20675,7 +19993,7 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 22.15.3 - ts-node: 10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3) + ts-node: 10.9.1(@types/node@22.15.3)(typescript@5.8.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -20874,7 +20192,7 @@ snapshots: jest-util: 29.7.0 natural-compare: 1.4.0 pretty-format: 29.7.0 - semver: 7.7.3 + semver: 7.6.0 transitivePeerDependencies: - supports-color @@ -20944,12 +20262,12 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)): + jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)) + '@jest/core': 29.7.0(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)) '@jest/types': 29.6.3 import-local: 3.0.3 - jest-cli: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)) + jest-cli: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -21329,7 +20647,7 @@ snapshots: jest-validate: 27.5.1 map-obj: 5.0.2 moize: 6.1.3 - semver: 7.7.3 + semver: 7.6.0 log-symbols@1.0.2: dependencies: @@ -21976,15 +21294,15 @@ snapshots: min-indent@1.0.1: {} - mini-css-extract-plugin@2.7.7(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.27.0)): + mini-css-extract-plugin@2.7.7(webpack@5.90.0(esbuild@0.27.0)): dependencies: schema-utils: 4.2.0 - webpack: 5.90.0(@swc/core@1.15.3)(esbuild@0.27.0) + webpack: 5.90.0(esbuild@0.27.0) mini-css-extract-plugin@2.7.7(webpack@5.90.0): dependencies: schema-utils: 4.2.0 - webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) + webpack: 5.90.0(webpack-cli@5.1.4) minimalistic-assert@1.0.1: {} @@ -22146,9 +21464,9 @@ snapshots: nested-error-stacks@2.1.1: {} - netlify-cli@11.8.3(@swc/core@1.15.3)(@types/express@4.17.21): + netlify-cli@11.8.3(@types/express@4.17.21): dependencies: - '@netlify/build': 27.18.5(@swc/core@1.15.3) + '@netlify/build': 27.18.5 '@netlify/config': 18.2.3 '@netlify/edge-bundler': 2.2.0 '@netlify/framework-info': 9.2.0 @@ -22238,7 +21556,7 @@ snapshots: pump: 3.0.0 raw-body: 2.5.2 read-pkg-up: 7.0.1 - semver: 7.7.3 + semver: 7.6.0 source-map-support: 0.5.21 static-server: 2.2.1 string-similarity: 4.0.4 @@ -22329,34 +21647,6 @@ snapshots: - '@babel/core' - babel-plugin-macros - next@12.3.4(@babel/core@7.23.9)(react-dom@19.2.0(react@19.2.0))(react@19.2.0): - dependencies: - '@next/env': 12.3.4 - '@swc/helpers': 0.4.11 - caniuse-lite: 1.0.30001587 - postcss: 8.4.14 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - styled-jsx: 5.0.7(@babel/core@7.23.9)(react@19.2.0) - use-sync-external-store: 1.2.0(react@19.2.0) - optionalDependencies: - '@next/swc-android-arm-eabi': 12.3.4 - '@next/swc-android-arm64': 12.3.4 - '@next/swc-darwin-arm64': 12.3.4 - '@next/swc-darwin-x64': 12.3.4 - '@next/swc-freebsd-x64': 12.3.4 - '@next/swc-linux-arm-gnueabihf': 12.3.4 - '@next/swc-linux-arm64-gnu': 12.3.4 - '@next/swc-linux-arm64-musl': 12.3.4 - '@next/swc-linux-x64-gnu': 12.3.4 - '@next/swc-linux-x64-musl': 12.3.4 - '@next/swc-win32-arm64-msvc': 12.3.4 - '@next/swc-win32-ia32-msvc': 12.3.4 - '@next/swc-win32-x64-msvc': 12.3.4 - transitivePeerDependencies: - - '@babel/core' - - babel-plugin-macros - next@13.5.4(@babel/core@7.23.9)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@next/env': 13.5.4 @@ -22382,30 +21672,6 @@ snapshots: - '@babel/core' - babel-plugin-macros - next@16.0.4(@babel/core@7.23.9)(@playwright/test@1.43.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0): - dependencies: - '@next/env': 16.0.4 - '@swc/helpers': 0.5.15 - caniuse-lite: 1.0.30001587 - postcss: 8.4.31 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - styled-jsx: 5.1.6(@babel/core@7.23.9)(react@19.2.0) - optionalDependencies: - '@next/swc-darwin-arm64': 16.0.4 - '@next/swc-darwin-x64': 16.0.4 - '@next/swc-linux-arm64-gnu': 16.0.4 - '@next/swc-linux-arm64-musl': 16.0.4 - '@next/swc-linux-x64-gnu': 16.0.4 - '@next/swc-linux-x64-musl': 16.0.4 - '@next/swc-win32-arm64-msvc': 16.0.4 - '@next/swc-win32-x64-msvc': 16.0.4 - '@playwright/test': 1.43.1 - sharp: 0.34.5 - transitivePeerDependencies: - - '@babel/core' - - babel-plugin-macros - no-case@2.3.2: dependencies: lower-case: 1.1.4 @@ -22471,9 +21737,7 @@ snapshots: jest-validate: 25.5.0 normalize-node-version: 10.0.0 path-exists: 4.0.0 - semver: 7.7.3 - - node@runtime:24.11.1: {} + semver: 7.6.0 noop2@2.0.0: {} @@ -22486,7 +21750,7 @@ snapshots: all-node-versions: 8.0.0 filter-obj: 2.0.2 jest-validate: 25.5.0 - semver: 7.7.3 + semver: 7.6.0 normalize-package-data@2.5.0: dependencies: @@ -22499,14 +21763,14 @@ snapshots: dependencies: hosted-git-info: 4.1.0 is-core-module: 2.13.1 - semver: 7.7.3 + semver: 7.6.0 validate-npm-package-license: 3.0.4 normalize-package-data@5.0.0: dependencies: hosted-git-info: 6.1.1 is-core-module: 2.13.1 - semver: 7.7.3 + semver: 7.6.0 validate-npm-package-license: 3.0.4 normalize-path@2.1.1: @@ -22535,7 +21799,7 @@ snapshots: npm-install-checks@6.3.0: dependencies: - semver: 7.7.3 + semver: 7.6.0 npm-normalize-package-bin@1.0.1: {} @@ -22545,7 +21809,7 @@ snapshots: dependencies: hosted-git-info: 6.1.1 proc-log: 3.0.0 - semver: 7.7.3 + semver: 7.6.0 validate-npm-package-name: 5.0.0 npm-packlist@2.2.2: @@ -22560,7 +21824,7 @@ snapshots: npm-install-checks: 6.3.0 npm-normalize-package-bin: 3.0.1 npm-package-arg: 10.1.0 - semver: 7.7.3 + semver: 7.6.0 npm-run-path@4.0.1: dependencies: @@ -22585,7 +21849,7 @@ snapshots: dependencies: loader-utils: 2.0.2 schema-utils: 3.3.0 - webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) + webpack: 5.90.0(webpack-cli@5.1.4) nullthrows@1.1.1: {} @@ -22825,7 +22089,7 @@ snapshots: got: 12.6.1 registry-auth-token: 5.0.2 registry-url: 6.0.1 - semver: 7.7.3 + semver: 7.6.0 package-manager-detector@0.2.0: {} @@ -23083,29 +22347,29 @@ snapshots: camelcase-css: 2.0.1 postcss: 8.5.6 - postcss-load-config@3.1.0(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@16.11.10)(typescript@4.9.4)): + postcss-load-config@3.1.0(ts-node@10.9.1(@types/node@16.11.10)(typescript@4.9.4)): dependencies: import-cwd: 3.0.0 lilconfig: 2.1.0 yaml: 1.10.2 optionalDependencies: - ts-node: 10.9.1(@swc/core@1.15.3)(@types/node@16.11.10)(typescript@4.9.4) + ts-node: 10.9.1(@types/node@16.11.10)(typescript@4.9.4) - postcss-load-config@3.1.0(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)): + postcss-load-config@3.1.0(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)): dependencies: import-cwd: 3.0.0 lilconfig: 2.1.0 yaml: 1.10.2 optionalDependencies: - ts-node: 10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3) + ts-node: 10.9.1(@types/node@22.15.3)(typescript@5.8.3) - postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)): + postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)): dependencies: lilconfig: 3.1.0 yaml: 2.3.4 optionalDependencies: postcss: 8.5.6 - ts-node: 10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3) + ts-node: 10.9.1(@types/node@22.15.3)(typescript@5.8.3) postcss-merge-longhand@5.1.7(postcss@8.5.6): dependencies: @@ -23501,11 +22765,6 @@ snapshots: react: 18.2.0 scheduler: 0.23.0 - react-dom@19.2.0(react@19.2.0): - dependencies: - react: 19.2.0 - scheduler: 0.27.0 - react-error-overlay@6.0.9: {} react-head@3.4.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0): @@ -23555,8 +22814,6 @@ snapshots: dependencies: loose-envify: 1.4.0 - react@19.2.0: {} - read-package-json-fast@2.0.3: dependencies: json-parse-even-better-errors: 2.3.1 @@ -24041,8 +23298,6 @@ snapshots: dependencies: loose-envify: 1.4.0 - scheduler@0.27.0: {} - schema-utils@3.3.0: dependencies: '@types/json-schema': 7.0.9 @@ -24089,8 +23344,6 @@ snapshots: dependencies: lru-cache: 6.0.0 - semver@7.7.3: {} - send@0.19.0: dependencies: debug: 2.6.9(supports-color@9.2.3) @@ -24176,38 +23429,6 @@ snapshots: dependencies: kind-of: 6.0.3 - sharp@0.34.5: - dependencies: - '@img/colour': 1.0.0 - detect-libc: 2.1.2 - semver: 7.7.3 - optionalDependencies: - '@img/sharp-darwin-arm64': 0.34.5 - '@img/sharp-darwin-x64': 0.34.5 - '@img/sharp-libvips-darwin-arm64': 1.2.4 - '@img/sharp-libvips-darwin-x64': 1.2.4 - '@img/sharp-libvips-linux-arm': 1.2.4 - '@img/sharp-libvips-linux-arm64': 1.2.4 - '@img/sharp-libvips-linux-ppc64': 1.2.4 - '@img/sharp-libvips-linux-riscv64': 1.2.4 - '@img/sharp-libvips-linux-s390x': 1.2.4 - '@img/sharp-libvips-linux-x64': 1.2.4 - '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 - '@img/sharp-libvips-linuxmusl-x64': 1.2.4 - '@img/sharp-linux-arm': 0.34.5 - '@img/sharp-linux-arm64': 0.34.5 - '@img/sharp-linux-ppc64': 0.34.5 - '@img/sharp-linux-riscv64': 0.34.5 - '@img/sharp-linux-s390x': 0.34.5 - '@img/sharp-linux-x64': 0.34.5 - '@img/sharp-linuxmusl-arm64': 0.34.5 - '@img/sharp-linuxmusl-x64': 0.34.5 - '@img/sharp-wasm32': 0.34.5 - '@img/sharp-win32-arm64': 0.34.5 - '@img/sharp-win32-ia32': 0.34.5 - '@img/sharp-win32-x64': 0.34.5 - optional: true - shebang-command@1.2.0: dependencies: shebang-regex: 1.0.0 @@ -24572,11 +23793,11 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 - style-loader@2.0.0(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.27.0)): + style-loader@2.0.0(webpack@5.90.0(esbuild@0.27.0)): dependencies: loader-utils: 2.0.2 schema-utils: 3.3.0 - webpack: 5.90.0(@swc/core@1.15.3)(esbuild@0.27.0) + webpack: 5.90.0(esbuild@0.27.0) style-to-object@0.3.0: dependencies: @@ -24592,12 +23813,6 @@ snapshots: optionalDependencies: '@babel/core': 7.23.9 - styled-jsx@5.0.7(@babel/core@7.23.9)(react@19.2.0): - dependencies: - react: 19.2.0 - optionalDependencies: - '@babel/core': 7.23.9 - styled-jsx@5.1.1(@babel/core@7.23.9)(react@18.2.0): dependencies: client-only: 0.0.1 @@ -24605,13 +23820,6 @@ snapshots: optionalDependencies: '@babel/core': 7.23.9 - styled-jsx@5.1.6(@babel/core@7.23.9)(react@19.2.0): - dependencies: - client-only: 0.0.1 - react: 19.2.0 - optionalDependencies: - '@babel/core': 7.23.9 - stylehacks@5.1.1(postcss@8.5.6): dependencies: browserslist: 4.23.0 @@ -24673,7 +23881,7 @@ snapshots: transitivePeerDependencies: - supports-color - tailwindcss@2.2.19(autoprefixer@10.4.17(postcss@8.5.6))(postcss@8.5.6)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@16.11.10)(typescript@4.9.4)): + tailwindcss@2.2.19(autoprefixer@10.4.17(postcss@8.5.6))(postcss@8.5.6)(ts-node@10.9.1(@types/node@16.11.10)(typescript@4.9.4)): dependencies: arg: 5.0.2 autoprefixer: 10.4.17(postcss@8.5.6) @@ -24699,7 +23907,7 @@ snapshots: object-hash: 2.2.0 postcss: 8.5.6 postcss-js: 3.0.3 - postcss-load-config: 3.1.0(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@16.11.10)(typescript@4.9.4)) + postcss-load-config: 3.1.0(ts-node@10.9.1(@types/node@16.11.10)(typescript@4.9.4)) postcss-nested: 5.0.6(postcss@8.5.6) postcss-selector-parser: 6.0.11 postcss-value-parser: 4.2.0 @@ -24712,7 +23920,7 @@ snapshots: transitivePeerDependencies: - ts-node - tailwindcss@2.2.19(autoprefixer@10.4.17(postcss@8.5.6))(postcss@8.5.6)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)): + tailwindcss@2.2.19(autoprefixer@10.4.17(postcss@8.5.6))(postcss@8.5.6)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)): dependencies: arg: 5.0.2 autoprefixer: 10.4.17(postcss@8.5.6) @@ -24738,7 +23946,7 @@ snapshots: object-hash: 2.2.0 postcss: 8.5.6 postcss-js: 3.0.3 - postcss-load-config: 3.1.0(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)) + postcss-load-config: 3.1.0(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)) postcss-nested: 5.0.6(postcss@8.5.6) postcss-selector-parser: 6.0.11 postcss-value-parser: 4.2.0 @@ -24804,39 +24012,25 @@ snapshots: ansi-escapes: 4.3.2 supports-hyperlinks: 2.2.0 - terser-webpack-plugin@5.3.10(@swc/core@1.15.3)(esbuild@0.27.0)(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.27.0)): + terser-webpack-plugin@5.3.10(esbuild@0.27.0)(webpack@5.90.0(esbuild@0.27.0)): dependencies: '@jridgewell/trace-mapping': 0.3.22 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.26.0 - webpack: 5.90.0(@swc/core@1.15.3)(esbuild@0.27.0) + webpack: 5.90.0(esbuild@0.27.0) optionalDependencies: - '@swc/core': 1.15.3 esbuild: 0.27.0 - terser-webpack-plugin@5.3.10(@swc/core@1.15.3)(webpack@5.90.0(@swc/core@1.15.3)): + terser-webpack-plugin@5.3.10(webpack@5.90.0): dependencies: '@jridgewell/trace-mapping': 0.3.22 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.26.0 - webpack: 5.90.0(@swc/core@1.15.3) - optionalDependencies: - '@swc/core': 1.15.3 - - terser-webpack-plugin@5.3.10(@swc/core@1.15.3)(webpack@5.90.0): - dependencies: - '@jridgewell/trace-mapping': 0.3.22 - jest-worker: 27.5.1 - schema-utils: 3.3.0 - serialize-javascript: 6.0.2 - terser: 5.26.0 - webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) - optionalDependencies: - '@swc/core': 1.15.3 + webpack: 5.90.0(webpack-cli@5.1.4) terser@5.26.0: dependencies: @@ -24997,7 +24191,7 @@ snapshots: trough@2.2.0: {} - ts-node@10.9.1(@swc/core@1.15.3)(@types/node@16.11.10)(typescript@4.9.4): + ts-node@10.9.1(@types/node@16.11.10)(typescript@4.9.4): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.8 @@ -25014,10 +24208,8 @@ snapshots: typescript: 4.9.4 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.15.3 - ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3): + ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.8 @@ -25034,8 +24226,6 @@ snapshots: typescript: 5.8.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.15.3 optional: true tsconfck@3.1.4(typescript@5.8.3): @@ -25052,8 +24242,6 @@ snapshots: tslib@2.5.0: {} - tslib@2.8.1: {} - tsutils@3.21.0(typescript@4.9.4): dependencies: tslib: 1.14.1 @@ -25337,7 +24525,7 @@ snapshots: is-yarn-global: 0.3.0 latest-version: 5.1.0 pupa: 2.1.1 - semver: 7.7.3 + semver: 7.6.0 semver-diff: 3.1.1 xdg-basedir: 4.0.0 @@ -25368,10 +24556,6 @@ snapshots: dependencies: react: 18.2.0 - use-sync-external-store@1.2.0(react@19.2.0): - dependencies: - react: 19.2.0 - use@3.1.1: {} util-deprecate@1.0.2: {} @@ -25685,13 +24869,13 @@ snapshots: import-local: 3.0.3 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) + webpack: 5.90.0(webpack-cli@5.1.4) webpack-merge: 5.8.0 optionalDependencies: webpack-bundle-analyzer: 4.5.0 webpack-dev-server: 5.0.4(webpack-cli@5.1.4)(webpack@5.90.0) - webpack-dev-middleware@7.3.0(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.27.0)): + webpack-dev-middleware@7.3.0(webpack@5.90.0(esbuild@0.27.0)): dependencies: colorette: 2.0.16 memfs: 4.11.1 @@ -25700,7 +24884,7 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.2.0 optionalDependencies: - webpack: 5.90.0(@swc/core@1.15.3)(esbuild@0.27.0) + webpack: 5.90.0(esbuild@0.27.0) webpack-dev-middleware@7.3.0(webpack@5.90.0): dependencies: @@ -25711,7 +24895,7 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.2.0 optionalDependencies: - webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) + webpack: 5.90.0(webpack-cli@5.1.4) webpack-dev-server@5.0.4(webpack-cli@5.1.4)(webpack@5.90.0): dependencies: @@ -25746,7 +24930,7 @@ snapshots: webpack-dev-middleware: 7.3.0(webpack@5.90.0) ws: 8.16.0 optionalDependencies: - webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) + webpack: 5.90.0(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-bundle-analyzer@4.5.0)(webpack-dev-server@5.0.4)(webpack@5.90.0) transitivePeerDependencies: - bufferutil @@ -25754,7 +24938,7 @@ snapshots: - supports-color - utf-8-validate - webpack-dev-server@5.0.4(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.27.0)): + webpack-dev-server@5.0.4(webpack@5.90.0(esbuild@0.27.0)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -25784,10 +24968,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.3.0(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.27.0)) + webpack-dev-middleware: 7.3.0(webpack@5.90.0(esbuild@0.27.0)) ws: 8.16.0 optionalDependencies: - webpack: 5.90.0(@swc/core@1.15.3)(esbuild@0.27.0) + webpack: 5.90.0(esbuild@0.27.0) transitivePeerDependencies: - bufferutil - debug @@ -25809,38 +24993,7 @@ snapshots: webpack-sources@3.2.3: {} - webpack@5.90.0(@swc/core@1.15.3): - dependencies: - '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.8 - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/wasm-edit': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 - acorn: 8.11.2 - acorn-import-assertions: 1.9.0(acorn@8.11.2) - browserslist: 4.23.0 - chrome-trace-event: 1.0.3 - enhanced-resolve: 5.15.0 - es-module-lexer: 1.7.0 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.10 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.2.0 - mime-types: 2.1.34 - neo-async: 2.6.2 - schema-utils: 3.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.15.3)(webpack@5.90.0(@swc/core@1.15.3)) - watchpack: 2.4.0 - webpack-sources: 3.2.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.27.0): + webpack@5.90.0(esbuild@0.27.0): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -25863,7 +25016,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.15.3)(esbuild@0.27.0)(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.27.0)) + terser-webpack-plugin: 5.3.10(esbuild@0.27.0)(webpack@5.90.0(esbuild@0.27.0)) watchpack: 2.4.0 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -25871,7 +25024,7 @@ snapshots: - esbuild - uglify-js - webpack@5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4): + webpack@5.90.0(webpack-cli@5.1.4): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -25894,7 +25047,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.15.3)(webpack@5.90.0) + terser-webpack-plugin: 5.3.10(webpack@5.90.0) watchpack: 2.4.0 webpack-sources: 3.2.3 optionalDependencies: diff --git a/tests/e2e/css-deduplication.playwright.ts b/tests/e2e/css-deduplication.playwright.ts index addaa7058..309902141 100644 --- a/tests/e2e/css-deduplication.playwright.ts +++ b/tests/e2e/css-deduplication.playwright.ts @@ -22,7 +22,6 @@ test.describe('CSS deduplication @agnostic', () => { const cssFiles = globSync('**/*.css', { cwd: distDir }); expect(cssFiles.length).toBeGreaterThan(0); - console.log(name, cssFiles); let totalOccurrences = 0; const cssPattern = /body\s*\{\s*background-color:\s*#0cdbcd;?\s*\}/g; From 5a3b02b5ec236ef6ce80d17ca00dffb98d8e1bb6 Mon Sep 17 00:00:00 2001 From: Robbie Date: Fri, 28 Nov 2025 18:10:23 -0700 Subject: [PATCH 37/52] test fixes --- package.json | 16 +- packages/turbopack-plugin/src/index.test.ts | 15 +- pnpm-lock.yaml | 1966 +++++++++++++------ 3 files changed, 1347 insertions(+), 650 deletions(-) diff --git a/package.json b/package.json index 1db5df4f4..b6313baf5 100644 --- a/package.json +++ b/package.json @@ -28,14 +28,14 @@ "prepare-release": "pnpm copy-readme-to-packages && pnpm build", "release": "pnpm prepare-release && changeset publish" }, - "dependencies": { + "devDependencies": { "@babel/core": "^7.23.9", "@babel/preset-env": "^7.23.9", "@babel/preset-react": "^7.23.3", "@babel/preset-typescript": "^7.23.3", "@changesets/changelog-github": "^0.5.0", "@changesets/cli": "^2.27.8", - "@manypkg/cli": "^0.21.4", + "@manypkg/cli": "^0.25.1", "@playwright/test": "^1.43.1", "@preconstruct/cli": "^2.8.2", "@testing-library/jest-dom": "^6.4.2", @@ -64,12 +64,10 @@ }, "packageManager": "pnpm@10.24.0", "devEngines": { - "runtime": [ - { - "name": "node", - "version": "^24", - "onFail": "download" - } - ] + "runtime": { + "name": "node", + "version": "^24", + "onFail": "download" + } } } diff --git a/packages/turbopack-plugin/src/index.test.ts b/packages/turbopack-plugin/src/index.test.ts index ace17a19f..ebec3c6a7 100644 --- a/packages/turbopack-plugin/src/index.test.ts +++ b/packages/turbopack-plugin/src/index.test.ts @@ -1,5 +1,6 @@ import * as fs from 'fs'; import * as path from 'path'; +import { deserializeCss } from '@vanilla-extract/integration'; import turbopackVanillaExtractLoader, { type TurboLoaderContext, type TurboLoaderOptions, @@ -57,12 +58,13 @@ describe('turbopack-plugin stress test', () => { const result = await turbopackVanillaExtractLoader.call(mockContext); - expect(result).toContain('data:text/css;base64,'); - const match = result.match(/import 'data:text\/css;base64,([^']+)';/); + expect(result).toContain('@vanilla-extract/css/vanilla.virtual.css?ve-css='); + const match = result.match(/import '@vanilla-extract\/css\/vanilla\.virtual\.css\?ve-css=([^']+)';/); expect(match).toBeTruthy(); if (match) { - const decodedCss = Buffer.from(match[1], 'base64').toString('utf-8'); + const encodedCss = decodeURIComponent(match[1]); + const decodedCss = await deserializeCss(encodedCss); expect(decodedCss).toContain(`content: "${uniqueId}"`); } } @@ -116,12 +118,13 @@ describe('turbopack-plugin stress test', () => { const result = await turbopackVanillaExtractLoader.call(mockContext); - expect(result).toContain('data:text/css;base64,'); - const match = result.match(/import 'data:text\/css;base64,([^']+)';/); + expect(result).toContain('@vanilla-extract/css/vanilla.virtual.css?ve-css='); + const match = result.match(/import '@vanilla-extract\/css\/vanilla\.virtual\.css\?ve-css=([^']+)';/); expect(match).toBeTruthy(); if (match) { - const decodedCss = Buffer.from(match[1], 'base64').toString('utf-8'); + const encodedCss = decodeURIComponent(match[1]); + const decodedCss = await deserializeCss(encodedCss); expect(decodedCss).toContain(`content: "${uniqueId}"`); } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 71836e0e6..396d656ee 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,7 +7,7 @@ settings: importers: .: - dependencies: + devDependencies: '@babel/core': specifier: ^7.23.9 version: 7.23.9 @@ -22,22 +22,22 @@ importers: version: 7.23.3(@babel/core@7.23.9) '@changesets/changelog-github': specifier: ^0.5.0 - version: 0.5.0 + version: 0.5.2 '@changesets/cli': specifier: ^2.27.8 - version: 2.27.8 + version: 2.29.8(@types/node@22.15.3) '@manypkg/cli': - specifier: ^0.21.4 - version: 0.21.4 + specifier: ^0.25.1 + version: 0.25.1 '@playwright/test': specifier: ^1.43.1 version: 1.43.1 '@preconstruct/cli': specifier: ^2.8.2 - version: 2.8.2 + version: 2.8.12 '@testing-library/jest-dom': specifier: ^6.4.2 - version: 6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)))(vitest@4.0.13(@types/node@22.15.3)(jsdom@20.0.3)(terser@5.26.0)(tsx@4.20.6)) + version: 6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)))(vitest@4.0.13(@types/node@22.15.3)(jsdom@20.0.3)(terser@5.26.0)(tsx@4.20.6)) '@types/jest': specifier: ^29.5.12 version: 29.5.12 @@ -55,10 +55,13 @@ importers: version: 7.0.3 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)) + version: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)) jest-environment-jsdom: specifier: ^29.7.0 version: 29.7.0 + node: + specifier: runtime:^24 + version: runtime:24.11.1 prettier: specifier: ^2.8.8 version: 2.8.8 @@ -135,7 +138,7 @@ importers: devDependencies: '@remix-run/dev': specifier: ^2.17.2 - version: 2.17.2(@remix-run/react@2.17.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3))(@remix-run/serve@2.17.2(typescript@5.8.3))(@types/node@22.15.3)(terser@5.26.0)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3))(tsx@4.20.6)(typescript@5.8.3)(vite@7.0.3(@types/node@22.15.3)(terser@5.26.0)(tsx@4.20.6)) + version: 2.17.2(@remix-run/react@2.17.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3))(@remix-run/serve@2.17.2(typescript@5.8.3))(@types/node@22.15.3)(terser@5.26.0)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3))(tsx@4.20.6)(typescript@5.8.3)(vite@7.0.3(@types/node@22.15.3)(terser@5.26.0)(tsx@4.20.6)) '@types/react': specifier: ^18.2.55 version: 18.2.55 @@ -189,10 +192,10 @@ importers: version: 18.2.0(react@18.2.0) tailwindcss: specifier: ^2.1.2 - version: 2.2.19(autoprefixer@10.4.17(postcss@8.5.6))(postcss@8.5.6)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)) + version: 2.2.19(autoprefixer@10.4.17(postcss@8.5.6))(postcss@8.5.6)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)) webpack: specifier: ^5.90.0 - version: 5.90.0(webpack-cli@5.1.4) + version: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) webpack-cli: specifier: ^5.1.4 version: 5.1.4(webpack-bundle-analyzer@4.5.0)(webpack-dev-server@5.0.4)(webpack@5.90.0) @@ -231,6 +234,46 @@ importers: specifier: workspace:^ version: link:../../packages/css + fixtures/next-16-app-pages-router: + dependencies: + '@fixtures/features': + specifier: workspace:* + version: link:../features + '@fixtures/recipes': + specifier: workspace:* + version: link:../recipes + '@fixtures/sprinkles': + specifier: workspace:* + version: link:../sprinkles + '@vanilla-extract/css': + specifier: workspace:* + version: link:../../packages/css + '@vanilla-extract/recipes': + specifier: workspace:* + version: link:../../packages/recipes + '@vanilla-extract/sprinkles': + specifier: workspace:* + version: link:../../packages/sprinkles + next: + specifier: npm:next@^16.0.0 + version: 16.0.5(@babel/core@7.23.9)(@playwright/test@1.43.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: + specifier: npm:react@^19.2.0 + version: 19.2.0 + react-dom: + specifier: npm:react-dom@^19.2.0 + version: 19.2.0(react@19.2.0) + devDependencies: + '@types/react': + specifier: ^18.2.55 + version: 18.2.55 + '@vanilla-extract/next-plugin': + specifier: workspace:* + version: link:../../packages/next-plugin + '@vanilla-extract/webpack-plugin': + specifier: workspace:* + version: link:../../packages/webpack-plugin + fixtures/next-app-router: dependencies: '@fixtures/features': @@ -549,16 +592,25 @@ importers: packages/next-plugin: dependencies: + '@vanilla-extract/turbopack-plugin': + specifier: workspace:^ + version: link:../turbopack-plugin '@vanilla-extract/webpack-plugin': specifier: workspace:^ version: link:../webpack-plugin + semver: + specifier: ^7.6.3 + version: 7.7.3 devDependencies: + '@types/semver': + specifier: ^7.7.1 + version: 7.7.1 next: specifier: 12.3.4 - version: 12.3.4(@babel/core@7.23.9)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 12.3.4(@babel/core@7.23.9)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) webpack: specifier: ^5.90.0 - version: 5.90.0(webpack-cli@5.1.4) + version: 5.90.0(@swc/core@1.15.3) packages/parcel-transformer: dependencies: @@ -614,6 +666,25 @@ importers: specifier: workspace:^ version: link:../css + packages/turbopack-plugin: + dependencies: + '@swc/core': + specifier: ^1.13.5 + version: 1.15.3 + '@vanilla-extract/compiler': + specifier: workspace:^ + version: link:../compiler + '@vanilla-extract/integration': + specifier: workspace:^ + version: link:../integration + devDependencies: + next: + specifier: 12.3.4 + version: 12.3.4(@babel/core@7.23.9)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + vite: + specifier: ^5.0.0 || ^6.0.0 || ^7.0.0 + version: 7.0.3(@types/node@22.15.3)(terser@5.26.0)(tsx@4.20.6) + packages/utils: {} packages/vite-plugin: @@ -649,7 +720,7 @@ importers: version: 4.1.7 webpack: specifier: ^5.90.0 - version: 5.90.0(webpack-cli@5.1.4) + version: 5.90.0(@swc/core@1.15.3) scripts: devDependencies: @@ -740,7 +811,7 @@ importers: version: 2.2.4 '@types/webpack-bundle-analyzer': specifier: ^4 - version: 4.4.1(webpack-cli@5.1.4) + version: 4.4.1(@swc/core@1.15.3)(webpack-cli@5.1.4) '@vanilla-extract/css': specifier: workspace:* version: link:../packages/css @@ -794,7 +865,7 @@ importers: version: 2.7.7(webpack@5.90.0) netlify-cli: specifier: ^11.8.3 - version: 11.8.3(@types/express@4.17.21) + version: 11.8.3(@swc/core@1.15.3)(@types/express@4.17.21) null-loader: specifier: ^4.0.1 version: 4.0.1(webpack@5.90.0) @@ -803,10 +874,10 @@ importers: version: 0.3.0 tailwindcss: specifier: ^2.1.2 - version: 2.2.19(autoprefixer@10.4.17(postcss@8.5.6))(postcss@8.5.6)(ts-node@10.9.1(@types/node@16.11.10)(typescript@4.9.4)) + version: 2.2.19(autoprefixer@10.4.17(postcss@8.5.6))(postcss@8.5.6)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@16.11.10)(typescript@4.9.4)) webpack: specifier: ^5.90.0 - version: 5.90.0(webpack-cli@5.1.4) + version: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) webpack-bundle-analyzer: specifier: ^4.4.1 version: 4.5.0 @@ -834,12 +905,15 @@ importers: '@fixtures/low-level': specifier: workspace:* version: link:../fixtures/low-level - '@fixtures/next-app-router': + '@fixtures/next-12-pages-router': + specifier: workspace:* + version: link:../fixtures/next-pages-router + '@fixtures/next-13-app-router': specifier: workspace:* version: link:../fixtures/next-app-router - '@fixtures/next-pages-router': + '@fixtures/next-16-app-pages-router': specifier: workspace:* - version: link:../fixtures/next-pages-router + version: link:../fixtures/next-16-app-pages-router '@fixtures/recipes': specifier: workspace:* version: link:../fixtures/recipes @@ -866,7 +940,7 @@ importers: version: 2.11.0 '@types/mini-css-extract-plugin': specifier: ^1.2.2 - version: 1.4.3(esbuild@0.27.0) + version: 1.4.3(@swc/core@1.15.3)(esbuild@0.27.0) '@types/webpack-dev-server': specifier: ^3.11.1 version: 3.11.6 @@ -887,10 +961,10 @@ importers: version: link:../packages/webpack-plugin babel-loader: specifier: ^9.1.3 - version: 9.1.3(@babel/core@7.23.9)(webpack@5.90.0(esbuild@0.27.0)) + version: 9.1.3(@babel/core@7.23.9)(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.27.0)) css-loader: specifier: ^7.1.2 - version: 7.1.2(webpack@5.90.0(esbuild@0.27.0)) + version: 7.1.2(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.27.0)) cssnano: specifier: ^5.1.15 version: 5.1.15(postcss@8.5.6) @@ -905,10 +979,10 @@ importers: version: 11.8.3 html-webpack-plugin: specifier: ^5.3.1 - version: 5.5.0(webpack@5.90.0(esbuild@0.27.0)) + version: 5.5.0(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.27.0)) mini-css-extract-plugin: specifier: ^2.7.7 - version: 2.7.7(webpack@5.90.0(esbuild@0.27.0)) + version: 2.7.7(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.27.0)) minimist: specifier: ^1.2.5 version: 1.2.8 @@ -929,7 +1003,7 @@ importers: version: 6.1.3 style-loader: specifier: ^2.0.0 - version: 2.0.0(webpack@5.90.0(esbuild@0.27.0)) + version: 2.0.0(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.27.0)) vite: specifier: ^5.0.0 || ^6.0.0 || ^7.0.0 version: 7.0.3(@types/node@22.15.3)(terser@5.26.0)(tsx@4.20.6) @@ -938,10 +1012,10 @@ importers: version: 11.3.0(vite@7.0.3(@types/node@22.15.3)(terser@5.26.0)(tsx@4.20.6)) webpack: specifier: ^5.90.0 - version: 5.90.0(esbuild@0.27.0) + version: 5.90.0(@swc/core@1.15.3)(esbuild@0.27.0) webpack-dev-server: specifier: ^5.0.4 - version: 5.0.4(webpack@5.90.0(esbuild@0.27.0)) + version: 5.0.4(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.27.0)) webpack-merge: specifier: ^6.0.1 version: 6.0.1 @@ -966,7 +1040,7 @@ importers: version: 10.0.0 '@testing-library/jest-dom': specifier: ^6.4.2 - version: 6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)))(vitest@4.0.13(@types/node@22.15.3)(jsdom@20.0.3)(terser@5.26.0)(tsx@4.20.6)) + version: 6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)))(vitest@4.0.13(@types/node@22.15.3)(jsdom@20.0.3)(terser@5.26.0)(tsx@4.20.6)) '@vanilla-extract-private/test-helpers': specifier: workspace:* version: link:../test-helpers @@ -1778,66 +1852,66 @@ packages: peerDependencies: '@vanilla-extract/css': ^1.2.1 - '@changesets/apply-release-plan@7.0.5': - resolution: {integrity: sha512-1cWCk+ZshEkSVEZrm2fSj1Gz8sYvxgUL4Q78+1ZZqeqfuevPTPk033/yUZ3df8BKMohkqqHfzj0HOOrG0KtXTw==} + '@changesets/apply-release-plan@7.0.14': + resolution: {integrity: sha512-ddBvf9PHdy2YY0OUiEl3TV78mH9sckndJR14QAt87KLEbIov81XO0q0QAmvooBxXlqRRP8I9B7XOzZwQG7JkWA==} - '@changesets/assemble-release-plan@6.0.4': - resolution: {integrity: sha512-nqICnvmrwWj4w2x0fOhVj2QEGdlUuwVAwESrUo5HLzWMI1rE5SWfsr9ln+rDqWB6RQ2ZyaMZHUcU7/IRaUJS+Q==} + '@changesets/assemble-release-plan@6.0.9': + resolution: {integrity: sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==} - '@changesets/changelog-git@0.2.0': - resolution: {integrity: sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==} + '@changesets/changelog-git@0.2.1': + resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} - '@changesets/changelog-github@0.5.0': - resolution: {integrity: sha512-zoeq2LJJVcPJcIotHRJEEA2qCqX0AQIeFE+L21L8sRLPVqDhSXY8ZWAt2sohtBpFZkBwu+LUwMSKRr2lMy3LJA==} + '@changesets/changelog-github@0.5.2': + resolution: {integrity: sha512-HeGeDl8HaIGj9fQHo/tv5XKQ2SNEi9+9yl1Bss1jttPqeiASRXhfi0A2wv8yFKCp07kR1gpOI5ge6+CWNm1jPw==} - '@changesets/cli@2.27.8': - resolution: {integrity: sha512-gZNyh+LdSsI82wBSHLQ3QN5J30P4uHKJ4fXgoGwQxfXwYFTJzDdvIJasZn8rYQtmKhyQuiBj4SSnLuKlxKWq4w==} + '@changesets/cli@2.29.8': + resolution: {integrity: sha512-1weuGZpP63YWUYjay/E84qqwcnt5yJMM0tep10Up7Q5cS/DGe2IZ0Uj3HNMxGhCINZuR7aO9WBMdKnPit5ZDPA==} hasBin: true - '@changesets/config@3.0.3': - resolution: {integrity: sha512-vqgQZMyIcuIpw9nqFIpTSNyc/wgm/Lu1zKN5vECy74u95Qx/Wa9g27HdgO4NkVAaq+BGA8wUc/qvbvVNs93n6A==} + '@changesets/config@3.1.2': + resolution: {integrity: sha512-CYiRhA4bWKemdYi/uwImjPxqWNpqGPNbEBdX1BdONALFIDK7MCUj6FPkzD+z9gJcvDFUQJn9aDVf4UG7OT6Kog==} '@changesets/errors@0.2.0': resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} - '@changesets/get-dependents-graph@2.1.2': - resolution: {integrity: sha512-sgcHRkiBY9i4zWYBwlVyAjEM9sAzs4wYVwJUdnbDLnVG3QwAaia1Mk5P8M7kraTOZN+vBET7n8KyB0YXCbFRLQ==} + '@changesets/get-dependents-graph@2.1.3': + resolution: {integrity: sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==} - '@changesets/get-github-info@0.6.0': - resolution: {integrity: sha512-v/TSnFVXI8vzX9/w3DU2Ol+UlTZcu3m0kXTjTT4KlAdwSvwutcByYwyYn9hwerPWfPkT2JfpoX0KgvCEi8Q/SA==} + '@changesets/get-github-info@0.7.0': + resolution: {integrity: sha512-+i67Bmhfj9V4KfDeS1+Tz3iF32btKZB2AAx+cYMqDSRFP7r3/ZdGbjCo+c6qkyViN9ygDuBjzageuPGJtKGe5A==} - '@changesets/get-release-plan@4.0.4': - resolution: {integrity: sha512-SicG/S67JmPTrdcc9Vpu0wSQt7IiuN0dc8iR5VScnnTVPfIaLvKmEGRvIaF0kcn8u5ZqLbormZNTO77bCEvyWw==} + '@changesets/get-release-plan@4.0.14': + resolution: {integrity: sha512-yjZMHpUHgl4Xl5gRlolVuxDkm4HgSJqT93Ri1Uz8kGrQb+5iJ8dkXJ20M2j/Y4iV5QzS2c5SeTxVSKX+2eMI0g==} '@changesets/get-version-range-type@0.4.0': resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} - '@changesets/git@3.0.1': - resolution: {integrity: sha512-pdgHcYBLCPcLd82aRcuO0kxCDbw/yISlOtkmwmE8Odo1L6hSiZrBOsRl84eYG7DRCab/iHnOkWqExqc4wxk2LQ==} + '@changesets/git@3.0.4': + resolution: {integrity: sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==} '@changesets/logger@0.1.1': resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} - '@changesets/parse@0.4.0': - resolution: {integrity: sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==} + '@changesets/parse@0.4.2': + resolution: {integrity: sha512-Uo5MC5mfg4OM0jU3up66fmSn6/NE9INK+8/Vn/7sMVcdWg46zfbvvUSjD9EMonVqPi9fbrJH9SXHn48Tr1f2yA==} - '@changesets/pre@2.0.1': - resolution: {integrity: sha512-vvBJ/If4jKM4tPz9JdY2kGOgWmCowUYOi5Ycv8dyLnEE8FgpYYUo1mgJZxcdtGGP3aG8rAQulGLyyXGSLkIMTQ==} + '@changesets/pre@2.0.2': + resolution: {integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==} - '@changesets/read@0.6.1': - resolution: {integrity: sha512-jYMbyXQk3nwP25nRzQQGa1nKLY0KfoOV7VLgwucI0bUO8t8ZLCr6LZmgjXsiKuRDc+5A6doKPr9w2d+FEJ55zQ==} + '@changesets/read@0.6.6': + resolution: {integrity: sha512-P5QaN9hJSQQKJShzzpBT13FzOSPyHbqdoIBUd2DJdgvnECCyO6LmAOWSV+O8se2TaZJVwSXjL+v9yhb+a9JeJg==} - '@changesets/should-skip-package@0.1.1': - resolution: {integrity: sha512-H9LjLbF6mMHLtJIc/eHR9Na+MifJ3VxtgP/Y+XLn4BF7tDTEN1HNYtH6QMcjP1uxp9sjaFYmW8xqloaCi/ckTg==} + '@changesets/should-skip-package@0.1.2': + resolution: {integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==} - '@changesets/types@4.0.1': - resolution: {integrity: sha512-zVfv752D8K2tjyFmxU/vnntQ+dPu+9NupOSguA/2Zuym4tVxRh0ylArgKZ1bOAi2eXfGlZMxJU/kj7uCSI15RQ==} + '@changesets/types@4.1.0': + resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} - '@changesets/types@6.0.0': - resolution: {integrity: sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==} + '@changesets/types@6.1.0': + resolution: {integrity: sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==} - '@changesets/write@0.3.2': - resolution: {integrity: sha512-kDxDrPNpUgsjDbWBvUo27PzKX4gqeKOlhibaOXDJA6kuBisGqNHv/HwGJrAu8U/dSf8ZEFIeHIPtvSlZI1kULw==} + '@changesets/write@0.4.0': + resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} @@ -1877,6 +1951,9 @@ packages: '@emnapi/runtime@1.4.4': resolution: {integrity: sha512-hHyapA4A3gPaDCNfiqyZUStTMqIkKRshqPIuDOXv1hcBnD4U3l8cP0T1HMCfGRxQ6V64TGCcoswChANyOAwbQg==} + '@emnapi/runtime@1.7.1': + resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} + '@emnapi/wasi-threads@1.0.3': resolution: {integrity: sha512-8K5IFFsQqF9wQNJptGbS6FNKgUTsSRYnTqNCG1vPP8jFdjSv18n2mQfJpkt2Oibo9iBEzcDnDxNwKTzC7svlJw==} @@ -2597,9 +2674,155 @@ packages: cpu: [x64] os: [win32] + '@img/colour@1.0.0': + resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==} + engines: {node: '>=18'} + + '@img/sharp-darwin-arm64@0.34.5': + resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.34.5': + resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.2.4': + resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.2.4': + resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.2.4': + resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linux-arm@1.2.4': + resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} + cpu: [arm] + os: [linux] + + '@img/sharp-libvips-linux-ppc64@1.2.4': + resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} + cpu: [ppc64] + os: [linux] + + '@img/sharp-libvips-linux-riscv64@1.2.4': + resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} + cpu: [riscv64] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.2.4': + resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} + cpu: [s390x] + os: [linux] + + '@img/sharp-libvips-linux-x64@1.2.4': + resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} + cpu: [x64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} + cpu: [x64] + os: [linux] + + '@img/sharp-linux-arm64@0.34.5': + resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linux-arm@0.34.5': + resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + + '@img/sharp-linux-ppc64@0.34.5': + resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ppc64] + os: [linux] + + '@img/sharp-linux-riscv64@0.34.5': + resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [riscv64] + os: [linux] + + '@img/sharp-linux-s390x@0.34.5': + resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + + '@img/sharp-linux-x64@0.34.5': + resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-linuxmusl-arm64@0.34.5': + resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linuxmusl-x64@0.34.5': + resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-wasm32@0.34.5': + resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-arm64@0.34.5': + resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [win32] + + '@img/sharp-win32-ia32@0.34.5': + resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.34.5': + resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + '@import-maps/resolve@1.0.1': resolution: {integrity: sha512-tWZNBIS1CoekcwlMuyG2mr0a1Wo5lb5lEHwwWvZo+5GLgr3e9LLDTtmgtCWEwBpXMkxn9D+2W9j2FY6eZQq0tA==} + '@inquirer/external-editor@1.0.3': + resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -2804,28 +3027,28 @@ packages: cpu: [x64] os: [win32] - '@manypkg/cli@0.21.4': - resolution: {integrity: sha512-EACxxb+c/t6G0l1FrlyewZeBnyR5V1cLkXjnBfsay5TN1UgbilFpG6POglzn+lVJet9NqnEKe3RLHABzkIDZ0Q==} - engines: {node: '>=14.18.0'} + '@manypkg/cli@0.25.1': + resolution: {integrity: sha512-lag906FyiNxzZjsRErkUD5/to174I2JzPk5bZubuJp6loMKKJn73zrtqeU7nHlVkHBg3tgXDTJj22HxUDxLRXw==} + engines: {node: '>=20.0.0'} hasBin: true '@manypkg/find-root@1.1.0': resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} - '@manypkg/find-root@2.2.1': - resolution: {integrity: sha512-34NlypD5mmTY65cFAK7QPgY5Tzt0qXR4ZRXdg97xAlkiLuwXUPBEXy5Hsqzd+7S2acsLxUz6Cs50rlDZQr4xUA==} - engines: {node: '>=14.18.0'} + '@manypkg/find-root@3.1.0': + resolution: {integrity: sha512-BcSqCyKhBVZ5YkSzOiheMCV41kqAFptW6xGqYSTjkVTl9XQpr+pqHhwgGCOHQtjDCv7Is6EFyA14Sm5GVbVABA==} + engines: {node: '>=20.0.0'} '@manypkg/get-packages@1.1.3': resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} - '@manypkg/get-packages@2.2.1': - resolution: {integrity: sha512-TrJd86paBkKEx6InhObcUhuoJNcATlbO6+s1dQdLd4+Y1SLDKJUAMhU46kTZ1SOFbegTuhDbIF3j+Jy564BERA==} - engines: {node: '>=14.18.0'} + '@manypkg/get-packages@3.1.0': + resolution: {integrity: sha512-0TbBVyvPrP7xGYBI/cP8UP+yl/z+HtbTttAD7FMAJgn/kXOTwh5/60TsqP9ZYY710forNfyV0N8P/IE/ujGZJg==} + engines: {node: '>=20.0.0'} - '@manypkg/tools@1.1.0': - resolution: {integrity: sha512-SkAyKAByB9l93Slyg8AUHGuM2kjvWioUTCckT/03J09jYnfEzMO/wSXmEhnKGYs6qx9De8TH4yJCl0Y9lRgnyQ==} - engines: {node: '>=14.18.0'} + '@manypkg/tools@2.1.0': + resolution: {integrity: sha512-0FOIepYR4ugPYaHwK7hDeHDkfPOBVvayt9QpvRbi2LT/h2b0GaE/gM9Gag7fsnyYyNaTZ2IGyOuVg07IYepvYQ==} + engines: {node: '>=20.0.0'} '@mapbox/node-pre-gyp@1.0.10': resolution: {integrity: sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==} @@ -3144,6 +3367,9 @@ packages: '@next/env@13.5.4': resolution: {integrity: sha512-LGegJkMvRNw90WWphGJ3RMHMVplYcOfRWf2Be3td3sUa+1AaxmsYyANsA+znrGCBjXJNi4XAQlSoEfUxs/4kIQ==} + '@next/env@16.0.5': + resolution: {integrity: sha512-jRLOw822AE6aaIm9oh0NrauZEM0Vtx5xhYPgqx89txUmv/UmcRwpcXmGeQOvYNT/1bakUwA+nG5CA74upYVVDw==} + '@next/swc-android-arm-eabi@12.3.4': resolution: {integrity: sha512-cM42Cw6V4Bz/2+j/xIzO8nK/Q3Ly+VSlZJTa1vHzsocJRYz8KT6MrreXaci2++SIZCF1rVRCDgAg5PpqRibdIA==} engines: {node: '>= 10'} @@ -3168,6 +3394,12 @@ packages: cpu: [arm64] os: [darwin] + '@next/swc-darwin-arm64@16.0.5': + resolution: {integrity: sha512-65Mfo1rD+mVbJuBTlXbNelNOJ5ef+5pskifpFHsUt3cnOWjDNKctHBwwSz9tJlPp7qADZtiN/sdcG7mnc0El8Q==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + '@next/swc-darwin-x64@12.3.4': resolution: {integrity: sha512-PPF7tbWD4k0dJ2EcUSnOsaOJ5rhT3rlEt/3LhZUGiYNL8KvoqczFrETlUx0cUYaXe11dRA3F80Hpt727QIwByQ==} engines: {node: '>= 10'} @@ -3180,6 +3412,12 @@ packages: cpu: [x64] os: [darwin] + '@next/swc-darwin-x64@16.0.5': + resolution: {integrity: sha512-2fDzXD/JpEjY500VUF0uuGq3YZcpC6XxmGabePPLyHCKbw/YXRugv3MRHH7MxE2hVHtryXeSYYnxcESb/3OUIQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + '@next/swc-freebsd-x64@12.3.4': resolution: {integrity: sha512-KM9JXRXi/U2PUM928z7l4tnfQ9u8bTco/jb939pdFUHqc28V43Ohd31MmZD1QzEK4aFlMRaIBQOWQZh4D/E5lQ==} engines: {node: '>= 10'} @@ -3204,6 +3442,12 @@ packages: cpu: [arm64] os: [linux] + '@next/swc-linux-arm64-gnu@16.0.5': + resolution: {integrity: sha512-meSLB52fw4tgDpPnyuhwA280EWLwwIntrxLYjzKU3e3730ur2WJAmmqoZ1LPIZ2l3eDfh9SBHnJGTczbgPeNeA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + '@next/swc-linux-arm64-musl@12.3.4': resolution: {integrity: sha512-EETZPa1juczrKLWk5okoW2hv7D7WvonU+Cf2CgsSoxgsYbUCZ1voOpL4JZTOb6IbKMDo6ja+SbY0vzXZBUMvkQ==} engines: {node: '>= 10'} @@ -3216,6 +3460,12 @@ packages: cpu: [arm64] os: [linux] + '@next/swc-linux-arm64-musl@16.0.5': + resolution: {integrity: sha512-aAJtQkvUzz5t0xVAmK931SIhWnSQAaEoTyG/sKPCYq2u835K/E4a14A+WRPd4dkhxIHNudE8dI+FpHekgdrA4g==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + '@next/swc-linux-x64-gnu@12.3.4': resolution: {integrity: sha512-4csPbRbfZbuWOk3ATyWcvVFdD9/Rsdq5YHKvRuEni68OCLkfy4f+4I9OBpyK1SKJ00Cih16NJbHE+k+ljPPpag==} engines: {node: '>= 10'} @@ -3228,6 +3478,12 @@ packages: cpu: [x64] os: [linux] + '@next/swc-linux-x64-gnu@16.0.5': + resolution: {integrity: sha512-bYwbjBwooMWRhy6vRxenaYdguTM2hlxFt1QBnUF235zTnU2DhGpETm5WU93UvtAy0uhC5Kgqsl8RyNXlprFJ6Q==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + '@next/swc-linux-x64-musl@12.3.4': resolution: {integrity: sha512-YeBmI+63Ro75SUiL/QXEVXQ19T++58aI/IINOyhpsRL1LKdyfK/35iilraZEFz9bLQrwy1LYAR5lK200A9Gjbg==} engines: {node: '>= 10'} @@ -3240,6 +3496,12 @@ packages: cpu: [x64] os: [linux] + '@next/swc-linux-x64-musl@16.0.5': + resolution: {integrity: sha512-iGv2K/4gW3mkzh+VcZTf2gEGX5o9xdb5oPqHjgZvHdVzCw0iSAJ7n9vKzl3SIEIIHZmqRsgNasgoLd0cxaD+tg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + '@next/swc-win32-arm64-msvc@12.3.4': resolution: {integrity: sha512-Sd0qFUJv8Tj0PukAYbCCDbmXcMkbIuhnTeHm9m4ZGjCf6kt7E/RMs55Pd3R5ePjOkN7dJEuxYBehawTR/aPDSQ==} engines: {node: '>= 10'} @@ -3252,6 +3514,12 @@ packages: cpu: [arm64] os: [win32] + '@next/swc-win32-arm64-msvc@16.0.5': + resolution: {integrity: sha512-6xf52Hp4SH9+4jbYmfUleqkuxvdB9JJRwwFlVG38UDuEGPqpIA+0KiJEU9lxvb0RGNo2i2ZUhc5LHajij9H9+A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + '@next/swc-win32-ia32-msvc@12.3.4': resolution: {integrity: sha512-rt/vv/vg/ZGGkrkKcuJ0LyliRdbskQU+91bje+PgoYmxTZf/tYs6IfbmgudBJk6gH3QnjHWbkphDdRQrseRefQ==} engines: {node: '>= 10'} @@ -3276,6 +3544,12 @@ packages: cpu: [x64] os: [win32] + '@next/swc-win32-x64-msvc@16.0.5': + resolution: {integrity: sha512-06kTaOh+Qy/kguN+MMK+/VtKmRkQJrPlGQMvCUbABk1UxI5SKTgJhbmMj9Hf0qWwrS6g9JM6/Zk+etqeMyvHAw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -3730,15 +4004,15 @@ packages: resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} engines: {node: '>=12.22.0'} - '@pnpm/npm-conf@2.2.2': - resolution: {integrity: sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==} + '@pnpm/npm-conf@2.3.1': + resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==} engines: {node: '>=12'} '@polka/url@1.0.0-next.24': resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} - '@preconstruct/cli@2.8.2': - resolution: {integrity: sha512-/nra7Arq622kVCfvQi4nhrZN+0m1OVq0PAuUcMLKNUR8O/JHOmesultWpeTGB17HzYEx8qYWO11QaTF7oz1yAQ==} + '@preconstruct/cli@2.8.12': + resolution: {integrity: sha512-SMsMICUWROmu/vb4cmrk7EJUiWhgNjB3U3tM654K9bu9yECXqrPN473vliO7KPV3CSLhmtl3S4nfcMirEJmyZg==} hasBin: true '@preconstruct/hook@0.4.0': @@ -3906,8 +4180,8 @@ packages: '@rolldown/pluginutils@1.0.0-beta.27': resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==} - '@rollup/plugin-alias@3.1.8': - resolution: {integrity: sha512-tf7HeSs/06wO2LPqKNY3Ckbvy0JRe7Jyn98bXnt/gfrxbe+AJucoNJlsEVi9sdgbQtXemjbakCpO/76JVgnHpA==} + '@rollup/plugin-alias@3.1.9': + resolution: {integrity: sha512-QI5fsEvm9bDzt32k39wpOwZhVzRcL5ydcffUHMyLVaVaLeC70I8TJZ17F1z1eMoLu4E/UOcH9BWVkKpIKdrfiw==} engines: {node: '>=8.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0 @@ -4089,10 +4363,6 @@ packages: resolution: {integrity: sha512-VkE3KLBmJwcCaVARtQpfuKcKv8gcBmUubrfHGF84dXuuW6jgsRYxPtzcIhPyK9WAPpRt2/xY6zkD9MnRaJzSyw==} engines: {node: '>=10'} - '@sindresorhus/is@5.6.0': - resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} - engines: {node: '>=14.16'} - '@sindresorhus/merge-streams@2.3.0': resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} engines: {node: '>=18'} @@ -4122,15 +4392,93 @@ packages: '@standard-schema/spec@1.0.0': resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} + '@swc/core-darwin-arm64@1.15.3': + resolution: {integrity: sha512-AXfeQn0CvcQ4cndlIshETx6jrAM45oeUrK8YeEY6oUZU/qzz0Id0CyvlEywxkWVC81Ajpd8TQQ1fW5yx6zQWkQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.15.3': + resolution: {integrity: sha512-p68OeCz1ui+MZYG4wmfJGvcsAcFYb6Sl25H9TxWl+GkBgmNimIiRdnypK9nBGlqMZAcxngNPtnG3kEMNnvoJ2A==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.15.3': + resolution: {integrity: sha512-Nuj5iF4JteFgwrai97mUX+xUOl+rQRHqTvnvHMATL/l9xE6/TJfPBpd3hk/PVpClMXG3Uvk1MxUFOEzM1JrMYg==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.15.3': + resolution: {integrity: sha512-2Nc/s8jE6mW2EjXWxO/lyQuLKShcmTrym2LRf5Ayp3ICEMX6HwFqB1EzDhwoMa2DcUgmnZIalesq2lG3krrUNw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-arm64-musl@1.15.3': + resolution: {integrity: sha512-j4SJniZ/qaZ5g8op+p1G9K1z22s/EYGg1UXIb3+Cg4nsxEpF5uSIGEE4mHUfA70L0BR9wKT2QF/zv3vkhfpX4g==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-x64-gnu@1.15.3': + resolution: {integrity: sha512-aKttAZnz8YB1VJwPQZtyU8Uk0BfMP63iDMkvjhJzRZVgySmqt/apWSdnoIcZlUoGheBrcqbMC17GGUmur7OT5A==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-linux-x64-musl@1.15.3': + resolution: {integrity: sha512-oe8FctPu1gnUsdtGJRO2rvOUIkkIIaHqsO9xxN0bTR7dFTlPTGi2Fhk1tnvXeyAvCPxLIcwD8phzKg6wLv9yug==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-win32-arm64-msvc@1.15.3': + resolution: {integrity: sha512-L9AjzP2ZQ/Xh58e0lTRMLvEDrcJpR7GwZqAtIeNLcTK7JVE+QineSyHp0kLkO1rttCHyCy0U74kDTj0dRz6raA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.15.3': + resolution: {integrity: sha512-B8UtogMzErUPDWUoKONSVBdsgKYd58rRyv2sHJWKOIMCHfZ22FVXICR4O/VwIYtlnZ7ahERcjayBHDlBZpR0aw==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.15.3': + resolution: {integrity: sha512-SpZKMR9QBTecHeqpzJdYEfgw30Oo8b/Xl6rjSzBt1g0ZsXyy60KLXrp6IagQyfTYqNYE/caDvwtF2FPn7pomog==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.15.3': + resolution: {integrity: sha512-Qd8eBPkUFL4eAONgGjycZXj1jFCBW8Fd+xF0PzdTlBCWQIV1xnUT7B93wUANtW3KGjl3TRcOyxwSx/u/jyKw/Q==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '>=0.5.17' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + '@swc/helpers@0.4.11': resolution: {integrity: sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw==} '@swc/helpers@0.4.14': resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} + '@swc/helpers@0.5.15': + resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + '@swc/helpers@0.5.2': resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} + '@swc/types@0.1.25': + resolution: {integrity: sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==} + '@szmarczak/http-timer@1.1.2': resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} engines: {node: '>=6'} @@ -4139,10 +4487,6 @@ packages: resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} engines: {node: '>=10'} - '@szmarczak/http-timer@5.0.1': - resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} - engines: {node: '>=14.16'} - '@testing-library/dom@10.0.0': resolution: {integrity: sha512-PmJPnogldqoVFf+EwbHvbBJ98MmqASV8kLrBYgsDNxQcFMeIS7JFL48sfyXvuMtgmWO/wMhh25odr+8VhDmn4g==} engines: {node: '>=18'} @@ -4350,8 +4694,8 @@ packages: '@types/node-forge@1.3.11': resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} - '@types/node@12.20.37': - resolution: {integrity: sha512-i1KGxqcvJaLQali+WuypQnXwcplhtNtjs66eNsZpp2P2FL/trJJxx/VWsM0YCL2iMoIJrbXje48lvIQAQ4p2ZA==} + '@types/node@12.20.55': + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} '@types/node@16.11.10': resolution: {integrity: sha512-3aRnHa1KlOEEhJ6+CvyHKK5vE9BcLGjtUpwvqYLRvYNQKMfabu3BwfJaA/SLW8dxe28LsNDjtHwePTuzn3gmOA==} @@ -4410,11 +4754,8 @@ packages: '@types/scheduler@0.16.2': resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} - '@types/semver@6.2.3': - resolution: {integrity: sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A==} - - '@types/semver@7.5.5': - resolution: {integrity: sha512-+d+WYC1BxJ6yVOgUgzK8gWvp5qF8ssV5r4nsDcZWKRWcDQLQ619tvWAxJQYGgBrO1MnLJC7a5GtiYsAoQ47dJg==} + '@types/semver@7.7.1': + resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} '@types/send@0.17.4': resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} @@ -4443,8 +4784,8 @@ packages: '@types/tapable@1.0.8': resolution: {integrity: sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ==} - '@types/tough-cookie@4.0.2': - resolution: {integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==} + '@types/tough-cookie@4.0.5': + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} '@types/uglify-js@3.13.1': resolution: {integrity: sha512-O3MmRAk6ZuAKa9CHgg0Pr0+lUOqoMLpc9AS4R8ano2auvsg7IE8syF3Xh/NPr26TWklxYcqoEEFdzLLs1fV9PQ==} @@ -4899,10 +5240,6 @@ packages: resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} engines: {node: '>=0.10.0'} - arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - arrify@2.0.1: resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} engines: {node: '>=8'} @@ -5103,6 +5440,10 @@ packages: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + browserify-zlib@0.1.4: resolution: {integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==} @@ -5139,9 +5480,6 @@ packages: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} - builtins@1.0.3: - resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==} - builtins@5.0.1: resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} @@ -5185,14 +5523,6 @@ packages: resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} engines: {node: '>=10.6.0'} - cacheable-lookup@7.0.0: - resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} - engines: {node: '>=14.16'} - - cacheable-request@10.2.14: - resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==} - engines: {node: '>=14.16'} - cacheable-request@2.1.4: resolution: {integrity: sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ==} @@ -5239,10 +5569,6 @@ packages: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} - camelcase-keys@6.2.2: - resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} - engines: {node: '>=8'} - camelcase@5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} @@ -5322,6 +5648,9 @@ packages: chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + chardet@2.1.1: + resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} + chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} @@ -5667,13 +5996,14 @@ packages: engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} hasBin: true - cross-spawn@5.1.0: - resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} - cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + crypto-random-string@2.0.0: resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} engines: {node: '>=8'} @@ -5784,8 +6114,8 @@ packages: dataloader@1.4.0: resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} - dataloader@2.0.0: - resolution: {integrity: sha512-YzhyDAwA4TaQIhM5go+vCLmU0UikghC/t9DTQYZR2M/UvZ1MdOhPezSDZcjj9uqQJOMqjLcpWtyW2iNINdlatQ==} + dataloader@2.2.3: + resolution: {integrity: sha512-y2krtASINtPFS1rSDjacrFgn1dcUuoREVabwlOGOe4SdxenREqwjwjElAdwvbGM7kgZz9a3KVicWR7vcz8rnzA==} date-fns@1.30.1: resolution: {integrity: sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==} @@ -5822,14 +6152,6 @@ packages: decache@4.6.1: resolution: {integrity: sha512-ohApBM8u9ygepJCjgBrEZSSxPjc0T/PJkD+uNyxXPkqudyUpdXpwJYp0VISm2WrPVzASU6DZyIi6BWdyw7uJ2Q==} - decamelize-keys@1.1.0: - resolution: {integrity: sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==} - engines: {node: '>=0.10.0'} - - decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} @@ -5980,6 +6302,10 @@ packages: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} + detect-indent@7.0.2: + resolution: {integrity: sha512-y+8xyqdGLL+6sh0tVeHcfP/QDd8gUgbasolJJpY7NgeQGSZ739bDtSiaiDgtoicy+mtYB81dKLxO9xRhCyIB3A==} + engines: {node: '>=12.20'} + detect-libc@1.0.3: resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} engines: {node: '>=0.10'} @@ -5989,6 +6315,10 @@ packages: resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} engines: {node: '>=8'} + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} @@ -6196,8 +6526,8 @@ packages: resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} engines: {node: '>=10.13.0'} - enquirer@2.3.6: - resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} + enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} engines: {node: '>=8.6'} entities@2.2.0: @@ -6601,6 +6931,10 @@ packages: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + filter-obj@2.0.2: resolution: {integrity: sha512-lO3ttPjHZRfjMcxWKb1j1eDhTFsu4meeR3lnMcnBFhk6RuLhvEiuALu2TlfL310ph4lCYYwgF/ElIjdP739tdg==} engines: {node: '>=8'} @@ -6662,10 +6996,6 @@ packages: resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} engines: {node: '>=14'} - form-data-encoder@2.1.4: - resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} - engines: {node: '>= 14.17'} - form-data@3.0.1: resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} engines: {node: '>= 6'} @@ -6921,10 +7251,6 @@ packages: resolution: {integrity: sha512-7gtQ5KiPh1RtGS9/Jbv1ofDpBFuq42gyfEib+ejaRBJuj/3tQFeR5+gw57e4ipaU8c/rCjvX6fkQz2lyDlGAOg==} engines: {node: '>=10.19.0'} - got@12.6.1: - resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==} - engines: {node: '>=14.16'} - got@8.3.2: resolution: {integrity: sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==} engines: {node: '>=4'} @@ -6955,10 +7281,6 @@ packages: handle-thing@2.0.1: resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} - hard-rejection@2.1.0: - resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} - engines: {node: '>=6'} - has-ansi@0.1.0: resolution: {integrity: sha512-1YsTg1fk2/6JToQhtZkArMkurq8UoWU1Qe0aR3VUHjgij4nOylSWLWAtBXoZ4/dXOmugfLGm1c+QhuD0JyedFA==} engines: {node: '>=0.10.0'} @@ -7209,16 +7531,13 @@ packages: resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} engines: {node: '>=10.19.0'} - http2-wrapper@2.2.1: - resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} - engines: {node: '>=10.19.0'} - https-proxy-agent@5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} - human-id@1.0.2: - resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} + human-id@4.1.3: + resolution: {integrity: sha512-tsYlhAYpjCKa//8rXZ9DqKEawhPoSytweBC2eNvcaDK+57RZLHGqNs3PZTQO6yekLFSuvA6AlnAfrw1uBvtb+Q==} + hasBin: true human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} @@ -7240,6 +7559,10 @@ packages: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} + iconv-lite@0.7.0: + resolution: {integrity: sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==} + engines: {node: '>=0.10.0'} + icss-utils@5.1.0: resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} engines: {node: ^10 || ^12 || >= 14} @@ -7909,6 +8232,10 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} + hasBin: true + jsdom@20.0.3: resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} engines: {node: '>=14'} @@ -8039,6 +8366,10 @@ packages: kuler@2.0.0: resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} + ky@1.14.0: + resolution: {integrity: sha512-Rczb6FMM6JT0lvrOlP5WUOCB7s9XKxzwgErzhKlKde1bEV90FXplV1o87fpt4PU/asJFiqjYJxAJyzJhcrxOsQ==} + engines: {node: '>=18'} + lambda-local@2.0.3: resolution: {integrity: sha512-Vs55gujwdjhPL2VpXEXAWWwxiOYdnVPDsMgwOr9BqC0O1EoSXs1S8TKBmD/ySEnPVRiQfFlABcQgcykF1mkE8Q==} engines: {node: '>=6'} @@ -8298,19 +8629,12 @@ packages: resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} engines: {node: '>=8'} - lowercase-keys@3.0.0: - resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - lowlight@1.20.0: resolution: {integrity: sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==} lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@4.1.5: - resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} - lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -8334,8 +8658,8 @@ packages: resolution: {integrity: sha512-/M/R0gCDgM+Cv1IuBG1XGdfTFnMEG6PZeT+KGWHO/OG+imqmaD9CH5vHBTycEM3+Kc4uG2Il+tFAuUWLqQOeUA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - magic-string@0.25.7: - resolution: {integrity: sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==} + magic-string@0.25.9: + resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} @@ -8365,14 +8689,6 @@ packages: resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} engines: {node: '>=0.10.0'} - map-obj@1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} - engines: {node: '>=0.10.0'} - - map-obj@4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} - engines: {node: '>=8'} - map-obj@5.0.2: resolution: {integrity: sha512-K6K2NgKnTXimT3779/4KxSvobxOtMmx1LBZ3NwRxT/MDIR3Br/fQ4Q+WCX5QxjyUR8zg5+RV9Tbf2c5pAWTD2A==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -8485,10 +8801,6 @@ packages: memoize-one@6.0.0: resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} - meow@7.1.1: - resolution: {integrity: sha512-GWHvA5QOcS412WCo8vwKDlTelGLsCGBVevQB5Kva961rmNfun0PCbv5+xta2kUMFJyR8/oWnn7ddeKdosbAPbA==} - engines: {node: '>=10'} - merge-descriptors@1.0.3: resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} @@ -8608,6 +8920,10 @@ packages: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + mime-db@1.33.0: resolution: {integrity: sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==} engines: {node: '>= 0.6'} @@ -8658,10 +8974,6 @@ packages: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} - mimic-response@4.0.0: - resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} @@ -8686,10 +8998,6 @@ packages: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} engines: {node: '>=16 || 14 >=14.17'} - minimist-options@4.1.0: - resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} - engines: {node: '>= 6'} - minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -8877,6 +9185,27 @@ packages: sass: optional: true + next@16.0.5: + resolution: {integrity: sha512-XUPsFqSqu/NDdPfn/cju9yfIedkDI7ytDoALD9todaSMxk1Z5e3WcbUjfI9xsanFTys7xz62lnRWNFqJordzkQ==} + engines: {node: '>=20.9.0'} + hasBin: true + 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 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + babel-plugin-react-compiler: + optional: true + sass: + optional: true + no-case@2.3.2: resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==} @@ -8956,6 +9285,96 @@ packages: resolution: {integrity: sha512-E9EhoJkpIIZyYplB298W8ZfhcojQrnKnUPcaOgJqVqICUZwPZkuj10nTzEscwdziOOj545v4tGPvNBG3ieUbSw==} engines: {node: '>=10.17.0'} + node@runtime:24.11.1: + resolution: + type: variations + variants: + - resolution: + archive: tarball + bin: bin/node + integrity: sha256-mLqRmgOQ2MQi1LsxBexbd3I89UFDtMHkudd2kPoHUgY= + type: binary + url: https://nodejs.org/download/release/v24.11.1/node-v24.11.1-aix-ppc64.tar.gz + targets: + - cpu: ppc64 + os: aix + - resolution: + archive: tarball + bin: bin/node + integrity: sha256-sFqjpm7+aAAj+TC9WvP9u9VCeU2lZEyirXEdaMvU3DU= + type: binary + url: https://nodejs.org/download/release/v24.11.1/node-v24.11.1-darwin-arm64.tar.gz + targets: + - cpu: arm64 + os: darwin + - resolution: + archive: tarball + bin: bin/node + integrity: sha256-CWCBttb83T9boPXx1EpH6DA3rS546tomZxwlL+ZN0RE= + type: binary + url: https://nodejs.org/download/release/v24.11.1/node-v24.11.1-darwin-x64.tar.gz + targets: + - cpu: x64 + os: darwin + - resolution: + archive: tarball + bin: bin/node + integrity: sha256-Dck+xceYsNNH8GjbbSBdA96ppxdl5qU5IraCuRJl1x8= + type: binary + url: https://nodejs.org/download/release/v24.11.1/node-v24.11.1-linux-arm64.tar.gz + targets: + - cpu: arm64 + os: linux + - resolution: + archive: tarball + bin: bin/node + integrity: sha256-zUFAfzNS3i8GbqJsXF0OqbY2I3TWthg4Wp8una0iBhY= + type: binary + url: https://nodejs.org/download/release/v24.11.1/node-v24.11.1-linux-ppc64le.tar.gz + targets: + - cpu: ppc64le + os: linux + - resolution: + archive: tarball + bin: bin/node + integrity: sha256-XUyLyl+PJZP5CB3uOYNHYOhaFvphyVDz6G7IWZbwBVA= + type: binary + url: https://nodejs.org/download/release/v24.11.1/node-v24.11.1-linux-s390x.tar.gz + targets: + - cpu: s390x + os: linux + - resolution: + archive: tarball + bin: bin/node + integrity: sha256-WKX/XMjyIA5Fi+oi4ynVwZlKobER1JnKRuwkEdWCOco= + type: binary + url: https://nodejs.org/download/release/v24.11.1/node-v24.11.1-linux-x64.tar.gz + targets: + - cpu: x64 + os: linux + - resolution: + archive: zip + bin: node.exe + integrity: sha256-zp7k5Ufr3/NVvrSOMJsWbCTfa+ApHJ6vEDzhXz3p5bQ= + prefix: node-v24.11.1-win-arm64 + type: binary + url: https://nodejs.org/download/release/v24.11.1/node-v24.11.1-win-arm64.zip + targets: + - cpu: arm64 + os: win32 + - resolution: + archive: zip + bin: node.exe + integrity: sha256-U1WubXxJ7dz959NKw0hoIGAKgxv4HcO9ylyNtqm7DnY= + prefix: node-v24.11.1-win-x64 + type: binary + url: https://nodejs.org/download/release/v24.11.1/node-v24.11.1-win-x64.zip + targets: + - cpu: x64 + os: win32 + version: 24.11.1 + hasBin: true + noop2@2.0.0: resolution: {integrity: sha512-2bu7Pfpf6uNqashWV8P7yYeutQ3XkLY9MBSYI5sOAFZxuWcW/uJfLbKj5m6SvMDT9U1Y0C+7UFG+7VSiIdXjtA==} @@ -9003,10 +9422,6 @@ packages: resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} engines: {node: '>=10'} - normalize-url@8.0.1: - resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==} - engines: {node: '>=14.16'} - npm-bundled@1.1.2: resolution: {integrity: sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==} @@ -9185,10 +9600,6 @@ packages: resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} engines: {node: '>=8'} - p-cancelable@3.0.0: - resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} - engines: {node: '>=12.20'} - p-event@2.3.1: resolution: {integrity: sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==} engines: {node: '>=6'} @@ -9233,6 +9644,10 @@ packages: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-limit@6.2.0: + resolution: {integrity: sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==} + engines: {node: '>=18'} + p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} @@ -9297,16 +9712,16 @@ packages: resolution: {integrity: sha512-i8nE5q++9h8oaQHWltS1Tnnv4IoMDOlqN7C0KFG2OdbK0iFJIt6CROZ8wfBM+K4Pxqfnq4C4lkkpXqTEpB5DZw==} engines: {node: '>=12'} + package-json@10.0.1: + resolution: {integrity: sha512-ua1L4OgXSBdsu1FPb7F3tYH0F48a6kxvod4pLUlGY9COeJAJQNX/sNH2IiEmsxw7lqYiAwrdHMjz1FctOsyDQg==} + engines: {node: '>=18'} + package-json@6.5.0: resolution: {integrity: sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==} engines: {node: '>=8'} - package-json@8.1.1: - resolution: {integrity: sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==} - engines: {node: '>=14.16'} - - package-manager-detector@0.2.0: - resolution: {integrity: sha512-E385OSk9qDcXhcM9LNSe4sdhx8a9mAPrZ4sMLW+tmxl5ZuGtPUcdFu+MPP2jbgiWAZ6Pfe5soGFMd+0Db5Vrog==} + package-manager-detector@0.2.11: + resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==} pako@0.2.9: resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} @@ -9338,6 +9753,11 @@ packages: engines: {node: '>=0.10.0'} hasBin: true + parse-github-url@1.0.3: + resolution: {integrity: sha512-tfalY5/4SqGaV/GIGzWyHnFjlpTPTNpENR9Ea2lLldSJ8EWXMsvacWucqY3m3I4YPtas15IxTLQVQ5NSYXPrww==} + engines: {node: '>= 0.10'} + hasBin: true + parse-gitignore@1.0.1: resolution: {integrity: sha512-UGyowyjtx26n65kdAMWhm6/3uy5uSrpcuH7tt+QEVudiBoVS+eqHxD5kbi9oWVRwj7sCzXqwuM+rUGw7earl6A==} engines: {node: '>=6'} @@ -9894,9 +10314,6 @@ packages: resolution: {integrity: sha512-NoGBqJe7Ou3kfQxEvDzDyKGAyEgwIuD3YrfXinjcCmBRv0hTld0Xb71hrXvtsNPj7HSFATfemvzB8PPJtq6Yag==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - pseudomap@1.0.2: - resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} - psl@1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} @@ -9934,6 +10351,9 @@ packages: resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} + quansync@0.2.11: + resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} + query-string@5.1.1: resolution: {integrity: sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==} engines: {node: '>=0.10.0'} @@ -9944,10 +10364,6 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - quick-lru@4.0.1: - resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} - engines: {node: '>=8'} - quick-lru@5.1.1: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} @@ -9983,6 +10399,11 @@ packages: peerDependencies: react: ^18.2.0 + react-dom@19.2.0: + resolution: {integrity: sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==} + peerDependencies: + react: ^19.2.0 + react-error-overlay@6.0.9: resolution: {integrity: sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==} @@ -10037,6 +10458,10 @@ packages: resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} engines: {node: '>=0.10.0'} + react@19.2.0: + resolution: {integrity: sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==} + engines: {node: '>=0.10.0'} + read-package-json-fast@2.0.3: resolution: {integrity: sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==} engines: {node: '>=10'} @@ -10124,8 +10549,8 @@ packages: resolution: {integrity: sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==} engines: {node: '>=6.0.0'} - registry-auth-token@5.0.2: - resolution: {integrity: sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==} + registry-auth-token@5.1.0: + resolution: {integrity: sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw==} engines: {node: '>=14'} registry-url@5.1.0: @@ -10268,10 +10693,6 @@ packages: responselike@2.0.0: resolution: {integrity: sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==} - responselike@3.0.0: - resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} - engines: {node: '>=14.16'} - restore-cursor@2.0.0: resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} engines: {node: '>=4'} @@ -10345,8 +10766,8 @@ packages: rollup-pluginutils@2.8.2: resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} - rollup@2.79.1: - resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} + rollup@2.79.2: + resolution: {integrity: sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==} engines: {node: '>=10.0.0'} hasBin: true @@ -10403,6 +10824,9 @@ packages: scheduler@0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + scheduler@0.27.0: + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + schema-utils@3.3.0: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} @@ -10426,8 +10850,8 @@ packages: resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} engines: {node: '>=10'} - sembear@0.5.2: - resolution: {integrity: sha512-Ij1vCAdFgWABd7zTg50Xw1/p0JgESNxuLlneEAsmBrKishA06ulTTL/SHGmNy2Zud7+rKrHTKNI6moJsn1ppAQ==} + sembear@0.7.0: + resolution: {integrity: sha512-XyLTEich2D02FODCkfdto3mB9DetWPLuTzr4tvoofe9SvyM27h4nQSbV3+iVcYQz94AFyKtqBv5pcZbj3k2hdA==} semver-diff@3.1.1: resolution: {integrity: sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==} @@ -10446,6 +10870,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.7.3: + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} + engines: {node: '>=10'} + hasBin: true + send@0.19.0: resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} @@ -10491,18 +10920,14 @@ packages: resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} engines: {node: '>=8'} - shebang-command@1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} + sharp@0.34.5: + resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} - shebang-regex@1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} - engines: {node: '>=0.10.0'} - shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} @@ -10644,8 +11069,8 @@ packages: space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - spawndamnit@2.0.0: - resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} + spawndamnit@3.0.1: + resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==} spdx-correct@3.1.1: resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} @@ -10889,6 +11314,19 @@ packages: babel-plugin-macros: optional: true + styled-jsx@5.1.6: + 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 || ^19.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + stylehacks@5.1.1: resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} engines: {node: ^10 || ^12 || >=14.0} @@ -11061,6 +11499,10 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + tinyexec@1.0.2: + resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} + engines: {node: '>=18'} + tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} @@ -11165,10 +11607,6 @@ packages: trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - trim-newlines@3.0.1: - resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} - engines: {node: '>=8'} - trim-repeated@1.0.0: resolution: {integrity: sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==} engines: {node: '>=0.10.0'} @@ -11223,6 +11661,9 @@ packages: tslib@2.5.0: resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tsutils@3.21.0: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} @@ -11249,10 +11690,6 @@ packages: resolution: {integrity: sha512-EUV9jo4sffrwlg8s0zDhP0T2WD3pru5Xi0+HTE3zTUmBaZNhfkite9PdSJwdXLwPVW0jnAHT56pZHIOYckPEiw==} engines: {node: '>=8'} - type-fest@0.13.1: - resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} - engines: {node: '>=10'} - type-fest@0.16.0: resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} engines: {node: '>=10'} @@ -11567,8 +12004,8 @@ packages: v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - v8-compile-cache@2.3.0: - resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} + v8-compile-cache@2.4.0: + resolution: {integrity: sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==} v8-to-istanbul@9.0.1: resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==} @@ -11585,9 +12022,6 @@ packages: validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - validate-npm-package-name@3.0.0: - resolution: {integrity: sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==} - validate-npm-package-name@4.0.0: resolution: {integrity: sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -11596,6 +12030,10 @@ packages: resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + validate-npm-package-name@6.0.2: + resolution: {integrity: sha512-IUoow1YUtvoBBC06dXs8bR8B9vuA3aJfmQNKMoaPG/OFsPmoQvw8xh+6Ye25Gx9DQhoEom3Pcu9MKHerm/NpUQ==} + engines: {node: ^18.17.0 || >=20.5.0} + vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} @@ -11913,10 +12351,6 @@ packages: resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} engines: {node: '>= 0.4'} - which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -12029,9 +12463,6 @@ packages: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - yallist@2.1.2: - resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} - yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} @@ -12046,10 +12477,6 @@ packages: resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} engines: {node: '>= 14'} - yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} - yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} @@ -12081,12 +12508,16 @@ packages: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} + yocto-queue@1.2.2: + resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==} + engines: {node: '>=12.20'} + zip-stream@4.1.0: resolution: {integrity: sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==} engines: {node: '>= 10'} - zod@3.22.4: - resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} + zod@3.25.76: + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} zwitch@1.0.5: resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==} @@ -13093,13 +13524,13 @@ snapshots: '@capsizecss/core': 3.0.0 '@vanilla-extract/css': link:packages/css - '@changesets/apply-release-plan@7.0.5': + '@changesets/apply-release-plan@7.0.14': dependencies: - '@changesets/config': 3.0.3 + '@changesets/config': 3.1.2 '@changesets/get-version-range-type': 0.4.0 - '@changesets/git': 3.0.1 - '@changesets/should-skip-package': 0.1.1 - '@changesets/types': 6.0.0 + '@changesets/git': 3.0.4 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 '@manypkg/get-packages': 1.1.3 detect-indent: 6.1.0 fs-extra: 7.0.1 @@ -13107,149 +13538,149 @@ snapshots: outdent: 0.5.0 prettier: 2.8.8 resolve-from: 5.0.0 - semver: 7.6.0 + semver: 7.7.3 - '@changesets/assemble-release-plan@6.0.4': + '@changesets/assemble-release-plan@6.0.9': dependencies: '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.1.2 - '@changesets/should-skip-package': 0.1.1 - '@changesets/types': 6.0.0 + '@changesets/get-dependents-graph': 2.1.3 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 '@manypkg/get-packages': 1.1.3 - semver: 7.6.0 + semver: 7.7.3 - '@changesets/changelog-git@0.2.0': + '@changesets/changelog-git@0.2.1': dependencies: - '@changesets/types': 6.0.0 + '@changesets/types': 6.1.0 - '@changesets/changelog-github@0.5.0': + '@changesets/changelog-github@0.5.2': dependencies: - '@changesets/get-github-info': 0.6.0 - '@changesets/types': 6.0.0 + '@changesets/get-github-info': 0.7.0 + '@changesets/types': 6.1.0 dotenv: 8.6.0 transitivePeerDependencies: - encoding - '@changesets/cli@2.27.8': + '@changesets/cli@2.29.8(@types/node@22.15.3)': dependencies: - '@changesets/apply-release-plan': 7.0.5 - '@changesets/assemble-release-plan': 6.0.4 - '@changesets/changelog-git': 0.2.0 - '@changesets/config': 3.0.3 + '@changesets/apply-release-plan': 7.0.14 + '@changesets/assemble-release-plan': 6.0.9 + '@changesets/changelog-git': 0.2.1 + '@changesets/config': 3.1.2 '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.1.2 - '@changesets/get-release-plan': 4.0.4 - '@changesets/git': 3.0.1 + '@changesets/get-dependents-graph': 2.1.3 + '@changesets/get-release-plan': 4.0.14 + '@changesets/git': 3.0.4 '@changesets/logger': 0.1.1 - '@changesets/pre': 2.0.1 - '@changesets/read': 0.6.1 - '@changesets/should-skip-package': 0.1.1 - '@changesets/types': 6.0.0 - '@changesets/write': 0.3.2 + '@changesets/pre': 2.0.2 + '@changesets/read': 0.6.6 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@changesets/write': 0.4.0 + '@inquirer/external-editor': 1.0.3(@types/node@22.15.3) '@manypkg/get-packages': 1.1.3 - '@types/semver': 7.5.5 ansi-colors: 4.1.3 ci-info: 3.9.0 - enquirer: 2.3.6 - external-editor: 3.1.0 + enquirer: 2.4.1 fs-extra: 7.0.1 mri: 1.2.0 - outdent: 0.5.0 p-limit: 2.3.0 - package-manager-detector: 0.2.0 + package-manager-detector: 0.2.11 picocolors: 1.1.1 resolve-from: 5.0.0 - semver: 7.6.0 - spawndamnit: 2.0.0 + semver: 7.7.3 + spawndamnit: 3.0.1 term-size: 2.2.1 + transitivePeerDependencies: + - '@types/node' - '@changesets/config@3.0.3': + '@changesets/config@3.1.2': dependencies: '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.1.2 + '@changesets/get-dependents-graph': 2.1.3 '@changesets/logger': 0.1.1 - '@changesets/types': 6.0.0 + '@changesets/types': 6.1.0 '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 - micromatch: 4.0.5 + micromatch: 4.0.8 '@changesets/errors@0.2.0': dependencies: extendable-error: 0.1.7 - '@changesets/get-dependents-graph@2.1.2': + '@changesets/get-dependents-graph@2.1.3': dependencies: - '@changesets/types': 6.0.0 + '@changesets/types': 6.1.0 '@manypkg/get-packages': 1.1.3 picocolors: 1.1.1 - semver: 7.6.0 + semver: 7.7.3 - '@changesets/get-github-info@0.6.0': + '@changesets/get-github-info@0.7.0': dependencies: dataloader: 1.4.0 node-fetch: 2.6.7 transitivePeerDependencies: - encoding - '@changesets/get-release-plan@4.0.4': + '@changesets/get-release-plan@4.0.14': dependencies: - '@changesets/assemble-release-plan': 6.0.4 - '@changesets/config': 3.0.3 - '@changesets/pre': 2.0.1 - '@changesets/read': 0.6.1 - '@changesets/types': 6.0.0 + '@changesets/assemble-release-plan': 6.0.9 + '@changesets/config': 3.1.2 + '@changesets/pre': 2.0.2 + '@changesets/read': 0.6.6 + '@changesets/types': 6.1.0 '@manypkg/get-packages': 1.1.3 '@changesets/get-version-range-type@0.4.0': {} - '@changesets/git@3.0.1': + '@changesets/git@3.0.4': dependencies: '@changesets/errors': 0.2.0 '@manypkg/get-packages': 1.1.3 is-subdir: 1.2.0 - micromatch: 4.0.5 - spawndamnit: 2.0.0 + micromatch: 4.0.8 + spawndamnit: 3.0.1 '@changesets/logger@0.1.1': dependencies: picocolors: 1.1.1 - '@changesets/parse@0.4.0': + '@changesets/parse@0.4.2': dependencies: - '@changesets/types': 6.0.0 - js-yaml: 3.14.1 + '@changesets/types': 6.1.0 + js-yaml: 4.1.1 - '@changesets/pre@2.0.1': + '@changesets/pre@2.0.2': dependencies: '@changesets/errors': 0.2.0 - '@changesets/types': 6.0.0 + '@changesets/types': 6.1.0 '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 - '@changesets/read@0.6.1': + '@changesets/read@0.6.6': dependencies: - '@changesets/git': 3.0.1 + '@changesets/git': 3.0.4 '@changesets/logger': 0.1.1 - '@changesets/parse': 0.4.0 - '@changesets/types': 6.0.0 + '@changesets/parse': 0.4.2 + '@changesets/types': 6.1.0 fs-extra: 7.0.1 p-filter: 2.1.0 picocolors: 1.1.1 - '@changesets/should-skip-package@0.1.1': + '@changesets/should-skip-package@0.1.2': dependencies: - '@changesets/types': 6.0.0 + '@changesets/types': 6.1.0 '@manypkg/get-packages': 1.1.3 - '@changesets/types@4.0.1': {} + '@changesets/types@4.1.0': {} - '@changesets/types@6.0.0': {} + '@changesets/types@6.1.0': {} - '@changesets/write@0.3.2': + '@changesets/write@0.4.0': dependencies: - '@changesets/types': 6.0.0 + '@changesets/types': 6.1.0 fs-extra: 7.0.1 - human-id: 1.0.2 + human-id: 4.1.3 prettier: 2.8.8 '@colors/colors@1.5.0': {} @@ -13292,6 +13723,11 @@ snapshots: tslib: 2.5.0 optional: true + '@emnapi/runtime@1.7.1': + dependencies: + tslib: 2.5.0 + optional: true + '@emnapi/wasi-threads@1.0.3': dependencies: tslib: 2.5.0 @@ -13656,8 +14092,112 @@ snapshots: '@esbuild/win32-x64@0.27.0': optional: true + '@img/colour@1.0.0': + optional: true + + '@img/sharp-darwin-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.2.4 + optional: true + + '@img/sharp-darwin-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.2.4 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-arm@1.2.4': + optional: true + + '@img/sharp-libvips-linux-ppc64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-riscv64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-s390x@1.2.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.2.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + optional: true + + '@img/sharp-linux-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.2.4 + optional: true + + '@img/sharp-linux-arm@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.2.4 + optional: true + + '@img/sharp-linux-ppc64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-ppc64': 1.2.4 + optional: true + + '@img/sharp-linux-riscv64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-riscv64': 1.2.4 + optional: true + + '@img/sharp-linux-s390x@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.2.4 + optional: true + + '@img/sharp-linux-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.2.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + optional: true + + '@img/sharp-wasm32@0.34.5': + dependencies: + '@emnapi/runtime': 1.7.1 + optional: true + + '@img/sharp-win32-arm64@0.34.5': + optional: true + + '@img/sharp-win32-ia32@0.34.5': + optional: true + + '@img/sharp-win32-x64@0.34.5': + optional: true + '@import-maps/resolve@1.0.1': {} + '@inquirer/external-editor@1.0.3(@types/node@22.15.3)': + dependencies: + chardet: 2.1.1 + iconv-lite: 0.7.0 + optionalDependencies: + '@types/node': 22.15.3 + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -13686,7 +14226,7 @@ snapshots: jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3))': + '@jest/core@29.7.0(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -13700,7 +14240,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)) + jest-config: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -13948,55 +14488,50 @@ snapshots: '@lmdb/lmdb-win32-x64@2.8.5': optional: true - '@manypkg/cli@0.21.4': + '@manypkg/cli@0.25.1': dependencies: - '@manypkg/get-packages': 2.2.1 - chalk: 2.4.2 - detect-indent: 6.1.0 - find-up: 4.1.0 - fs-extra: 8.1.0 + '@manypkg/get-packages': 3.1.0 + detect-indent: 7.0.2 normalize-path: 3.0.0 - p-limit: 2.3.0 - package-json: 8.1.1 - parse-github-url: 1.0.2 - sembear: 0.5.2 - semver: 6.3.1 - spawndamnit: 2.0.0 - validate-npm-package-name: 3.0.0 + p-limit: 6.2.0 + package-json: 10.0.1 + parse-github-url: 1.0.3 + picocolors: 1.1.1 + sembear: 0.7.0 + semver: 7.7.3 + tinyexec: 1.0.2 + validate-npm-package-name: 6.0.2 '@manypkg/find-root@1.1.0': dependencies: '@babel/runtime': 7.23.9 - '@types/node': 12.20.37 + '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 - '@manypkg/find-root@2.2.1': + '@manypkg/find-root@3.1.0': dependencies: - '@manypkg/tools': 1.1.0 - find-up: 4.1.0 - fs-extra: 8.1.0 + '@manypkg/tools': 2.1.0 '@manypkg/get-packages@1.1.3': dependencies: '@babel/runtime': 7.23.9 - '@changesets/types': 4.0.1 + '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 globby: 11.1.0 read-yaml-file: 1.1.0 - '@manypkg/get-packages@2.2.1': + '@manypkg/get-packages@3.1.0': dependencies: - '@manypkg/find-root': 2.2.1 - '@manypkg/tools': 1.1.0 + '@manypkg/find-root': 3.1.0 + '@manypkg/tools': 2.1.0 - '@manypkg/tools@1.1.0': + '@manypkg/tools@2.1.0': dependencies: - fs-extra: 8.1.0 - globby: 11.1.0 jju: 1.4.0 - read-yaml-file: 1.1.0 + js-yaml: 4.1.1 + tinyglobby: 0.2.15 '@mapbox/node-pre-gyp@1.0.10(supports-color@9.2.3)': dependencies: @@ -14007,7 +14542,7 @@ snapshots: nopt: 5.0.0 npmlog: 5.0.1 rimraf: 3.0.2 - semver: 7.6.0 + semver: 7.7.3 tar: 6.1.11 transitivePeerDependencies: - encoding @@ -14114,7 +14649,7 @@ snapshots: '@netlify/binary-info@1.0.0': {} - '@netlify/build@27.18.5': + '@netlify/build@27.18.5(@swc/core@1.15.3)': dependencies: '@bugsnag/js': 7.18.0 '@netlify/cache-utils': 4.1.4(supports-color@9.2.3) @@ -14160,13 +14695,13 @@ snapshots: resolve: 2.0.0-next.4 rfdc: 1.3.0 safe-json-stringify: 1.2.0 - semver: 7.6.0 + semver: 7.7.3 statsd-client: 0.4.7 string-width: 5.1.2 strip-ansi: 7.0.1 supports-color: 9.2.3 tmp-promise: 3.0.3 - ts-node: 10.9.1(@types/node@16.11.10)(typescript@4.9.4) + ts-node: 10.9.1(@swc/core@1.15.3)(@types/node@16.11.10)(typescript@4.9.4) typescript: 4.9.4 update-notifier: 5.1.0 uuid: 8.3.2 @@ -14232,7 +14767,7 @@ snapshots: p-retry: 5.1.1 p-wait-for: 4.1.0 path-key: 4.0.0 - semver: 7.6.0 + semver: 7.7.3 tmp-promise: 3.0.3 uuid: 9.0.0 @@ -14328,7 +14863,7 @@ snapshots: p-filter: 3.0.0 p-locate: 6.0.0 read-pkg-up: 9.1.0 - semver: 7.6.0 + semver: 7.7.3 '@netlify/functions-utils@4.2.9(supports-color@9.2.3)': dependencies: @@ -14435,7 +14970,7 @@ snapshots: read-package-json-fast: 2.0.3 require-package-name: 2.0.1 resolve: 2.0.0-next.4 - semver: 7.6.0 + semver: 7.7.3 tmp-promise: 3.0.3 toml: 3.0.0 unixify: 1.0.0 @@ -14448,6 +14983,8 @@ snapshots: '@next/env@13.5.4': {} + '@next/env@16.0.5': {} + '@next/swc-android-arm-eabi@12.3.4': optional: true @@ -14460,12 +14997,18 @@ snapshots: '@next/swc-darwin-arm64@13.5.4': optional: true + '@next/swc-darwin-arm64@16.0.5': + optional: true + '@next/swc-darwin-x64@12.3.4': optional: true '@next/swc-darwin-x64@13.5.4': optional: true + '@next/swc-darwin-x64@16.0.5': + optional: true + '@next/swc-freebsd-x64@12.3.4': optional: true @@ -14478,10 +15021,16 @@ snapshots: '@next/swc-linux-arm64-gnu@13.5.4': optional: true + '@next/swc-linux-arm64-gnu@16.0.5': + optional: true + '@next/swc-linux-arm64-musl@12.3.4': optional: true - '@next/swc-linux-arm64-musl@13.5.4': + '@next/swc-linux-arm64-musl@13.5.4': + optional: true + + '@next/swc-linux-arm64-musl@16.0.5': optional: true '@next/swc-linux-x64-gnu@12.3.4': @@ -14490,18 +15039,27 @@ snapshots: '@next/swc-linux-x64-gnu@13.5.4': optional: true + '@next/swc-linux-x64-gnu@16.0.5': + optional: true + '@next/swc-linux-x64-musl@12.3.4': optional: true '@next/swc-linux-x64-musl@13.5.4': optional: true + '@next/swc-linux-x64-musl@16.0.5': + optional: true + '@next/swc-win32-arm64-msvc@12.3.4': optional: true '@next/swc-win32-arm64-msvc@13.5.4': optional: true + '@next/swc-win32-arm64-msvc@16.0.5': + optional: true + '@next/swc-win32-ia32-msvc@12.3.4': optional: true @@ -14514,6 +15072,9 @@ snapshots: '@next/swc-win32-x64-msvc@13.5.4': optional: true + '@next/swc-win32-x64-msvc@16.0.5': + optional: true + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -14530,7 +15091,7 @@ snapshots: '@npmcli/fs@3.1.0': dependencies: - semver: 7.6.0 + semver: 7.7.3 '@npmcli/git@4.1.0': dependencies: @@ -14540,7 +15101,7 @@ snapshots: proc-log: 3.0.0 promise-inflight: 1.0.1 promise-retry: 2.0.1 - semver: 7.6.0 + semver: 7.7.3 which: 3.0.1 transitivePeerDependencies: - bluebird @@ -14553,7 +15114,7 @@ snapshots: json-parse-even-better-errors: 3.0.1 normalize-package-data: 5.0.0 proc-log: 3.0.0 - semver: 7.6.0 + semver: 7.7.3 transitivePeerDependencies: - bluebird @@ -14751,7 +15312,7 @@ snapshots: json5: 2.2.3 msgpackr: 1.10.1 nullthrows: 1.1.1 - semver: 7.6.0 + semver: 7.7.3 '@parcel/diagnostic@2.11.0': dependencies: @@ -14843,7 +15404,7 @@ snapshots: '@parcel/rust': 2.11.0 '@parcel/utils': 2.11.0 nullthrows: 1.1.1 - semver: 7.6.0 + semver: 7.7.3 transitivePeerDependencies: - '@parcel/core' @@ -14916,7 +15477,7 @@ snapshots: '@parcel/types': 2.11.0(@parcel/core@2.11.0) '@parcel/utils': 2.11.0 '@parcel/workers': 2.11.0(@parcel/core@2.11.0) - semver: 7.6.0 + semver: 7.7.3 '@parcel/package-manager@2.8.3(@parcel/core@2.11.0)': dependencies: @@ -15300,7 +15861,7 @@ snapshots: dependencies: graceful-fs: 4.2.10 - '@pnpm/npm-conf@2.2.2': + '@pnpm/npm-conf@2.3.1': dependencies: '@pnpm/config.env-replace': 1.1.0 '@pnpm/network.ca-file': 1.0.2 @@ -15308,24 +15869,24 @@ snapshots: '@polka/url@1.0.0-next.24': {} - '@preconstruct/cli@2.8.2': + '@preconstruct/cli@2.8.12': dependencies: '@babel/code-frame': 7.24.7 '@babel/core': 7.23.9 '@babel/helper-module-imports': 7.22.15 '@babel/runtime': 7.23.9 '@preconstruct/hook': 0.4.0 - '@rollup/plugin-alias': 3.1.8(rollup@2.79.1) - '@rollup/plugin-commonjs': 15.1.0(rollup@2.79.1) - '@rollup/plugin-json': 4.1.0(rollup@2.79.1) - '@rollup/plugin-node-resolve': 11.2.1(rollup@2.79.1) - '@rollup/plugin-replace': 2.4.2(rollup@2.79.1) + '@rollup/plugin-alias': 3.1.9(rollup@2.79.2) + '@rollup/plugin-commonjs': 15.1.0(rollup@2.79.2) + '@rollup/plugin-json': 4.1.0(rollup@2.79.2) + '@rollup/plugin-node-resolve': 11.2.1(rollup@2.79.2) + '@rollup/plugin-replace': 2.4.2(rollup@2.79.2) builtin-modules: 3.3.0 chalk: 4.1.2 ci-info: 3.9.0 - dataloader: 2.0.0 + dataloader: 2.2.3 detect-indent: 6.1.0 - enquirer: 2.3.6 + enquirer: 2.4.1 estree-walker: 2.0.2 fast-deep-equal: 2.0.1 fast-glob: 3.3.2 @@ -15333,7 +15894,6 @@ snapshots: is-reference: 1.2.1 jest-worker: 26.6.2 magic-string: 0.30.21 - meow: 7.1.1 ms: 2.1.3 normalize-path: 3.0.0 npm-packlist: 2.2.2 @@ -15341,13 +15901,12 @@ snapshots: parse-glob: 3.0.4 parse-json: 5.2.0 quick-lru: 5.1.1 - resolve: 1.22.8 resolve-from: 5.0.0 - rollup: 2.79.1 - semver: 7.6.0 + rollup: 2.79.2 + semver: 7.7.3 terser: 5.26.0 - v8-compile-cache: 2.3.0 - zod: 3.22.4 + v8-compile-cache: 2.4.0 + zod: 3.25.76 transitivePeerDependencies: - supports-color @@ -15365,7 +15924,7 @@ snapshots: make-synchronized: 0.2.9 prettier: 3.4.2 - '@remix-run/dev@2.17.2(@remix-run/react@2.17.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3))(@remix-run/serve@2.17.2(typescript@5.8.3))(@types/node@22.15.3)(terser@5.26.0)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3))(tsx@4.20.6)(typescript@5.8.3)(vite@7.0.3(@types/node@22.15.3)(terser@5.26.0)(tsx@4.20.6))': + '@remix-run/dev@2.17.2(@remix-run/react@2.17.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3))(@remix-run/serve@2.17.2(typescript@5.8.3))(@types/node@22.15.3)(terser@5.26.0)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3))(tsx@4.20.6)(typescript@5.8.3)(vite@7.0.3(@types/node@22.15.3)(terser@5.26.0)(tsx@4.20.6))': dependencies: '@babel/core': 7.23.9 '@babel/generator': 7.23.6 @@ -15410,7 +15969,7 @@ snapshots: pidtree: 0.6.0 postcss: 8.5.6 postcss-discard-duplicates: 5.1.0(postcss@8.5.6) - postcss-load-config: 4.0.2(postcss@8.5.6)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)) + postcss-load-config: 4.0.2(postcss@8.5.6)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)) postcss-modules: 6.0.0(postcss@8.5.6) prettier: 2.8.8 pretty-ms: 7.0.1 @@ -15580,26 +16139,26 @@ snapshots: '@rolldown/pluginutils@1.0.0-beta.27': {} - '@rollup/plugin-alias@3.1.8(rollup@2.79.1)': + '@rollup/plugin-alias@3.1.9(rollup@2.79.2)': dependencies: - rollup: 2.79.1 + rollup: 2.79.2 slash: 3.0.0 - '@rollup/plugin-commonjs@15.1.0(rollup@2.79.1)': + '@rollup/plugin-commonjs@15.1.0(rollup@2.79.2)': dependencies: - '@rollup/pluginutils': 3.1.0(rollup@2.79.1) + '@rollup/pluginutils': 3.1.0(rollup@2.79.2) commondir: 1.0.1 estree-walker: 2.0.2 glob: 7.2.0 is-reference: 1.2.1 - magic-string: 0.25.7 + magic-string: 0.25.9 resolve: 1.22.8 - rollup: 2.79.1 + rollup: 2.79.2 - '@rollup/plugin-json@4.1.0(rollup@2.79.1)': + '@rollup/plugin-json@4.1.0(rollup@2.79.2)': dependencies: - '@rollup/pluginutils': 3.1.0(rollup@2.79.1) - rollup: 2.79.1 + '@rollup/pluginutils': 3.1.0(rollup@2.79.2) + rollup: 2.79.2 '@rollup/plugin-json@6.1.0(rollup@4.44.2)': dependencies: @@ -15607,28 +16166,28 @@ snapshots: optionalDependencies: rollup: 4.44.2 - '@rollup/plugin-node-resolve@11.2.1(rollup@2.79.1)': + '@rollup/plugin-node-resolve@11.2.1(rollup@2.79.2)': dependencies: - '@rollup/pluginutils': 3.1.0(rollup@2.79.1) + '@rollup/pluginutils': 3.1.0(rollup@2.79.2) '@types/resolve': 1.17.1 builtin-modules: 3.3.0 deepmerge: 4.2.2 is-module: 1.0.0 resolve: 1.22.8 - rollup: 2.79.1 + rollup: 2.79.2 - '@rollup/plugin-replace@2.4.2(rollup@2.79.1)': + '@rollup/plugin-replace@2.4.2(rollup@2.79.2)': dependencies: - '@rollup/pluginutils': 3.1.0(rollup@2.79.1) - magic-string: 0.25.7 - rollup: 2.79.1 + '@rollup/pluginutils': 3.1.0(rollup@2.79.2) + magic-string: 0.25.9 + rollup: 2.79.2 - '@rollup/pluginutils@3.1.0(rollup@2.79.1)': + '@rollup/pluginutils@3.1.0(rollup@2.79.2)': dependencies: '@types/estree': 0.0.39 estree-walker: 1.0.1 picomatch: 2.3.1 - rollup: 2.79.1 + rollup: 2.79.2 '@rollup/pluginutils@5.1.4(rollup@4.44.2)': dependencies: @@ -15716,8 +16275,6 @@ snapshots: '@sindresorhus/is@4.2.0': {} - '@sindresorhus/is@5.6.0': {} - '@sindresorhus/merge-streams@2.3.0': {} '@sindresorhus/slugify@1.1.2': @@ -15750,6 +16307,54 @@ snapshots: '@standard-schema/spec@1.0.0': {} + '@swc/core-darwin-arm64@1.15.3': + optional: true + + '@swc/core-darwin-x64@1.15.3': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.15.3': + optional: true + + '@swc/core-linux-arm64-gnu@1.15.3': + optional: true + + '@swc/core-linux-arm64-musl@1.15.3': + optional: true + + '@swc/core-linux-x64-gnu@1.15.3': + optional: true + + '@swc/core-linux-x64-musl@1.15.3': + optional: true + + '@swc/core-win32-arm64-msvc@1.15.3': + optional: true + + '@swc/core-win32-ia32-msvc@1.15.3': + optional: true + + '@swc/core-win32-x64-msvc@1.15.3': + optional: true + + '@swc/core@1.15.3': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.25 + optionalDependencies: + '@swc/core-darwin-arm64': 1.15.3 + '@swc/core-darwin-x64': 1.15.3 + '@swc/core-linux-arm-gnueabihf': 1.15.3 + '@swc/core-linux-arm64-gnu': 1.15.3 + '@swc/core-linux-arm64-musl': 1.15.3 + '@swc/core-linux-x64-gnu': 1.15.3 + '@swc/core-linux-x64-musl': 1.15.3 + '@swc/core-win32-arm64-msvc': 1.15.3 + '@swc/core-win32-ia32-msvc': 1.15.3 + '@swc/core-win32-x64-msvc': 1.15.3 + + '@swc/counter@0.1.3': {} + '@swc/helpers@0.4.11': dependencies: tslib: 2.5.0 @@ -15758,10 +16363,18 @@ snapshots: dependencies: tslib: 2.5.0 + '@swc/helpers@0.5.15': + dependencies: + tslib: 2.8.1 + '@swc/helpers@0.5.2': dependencies: tslib: 2.5.0 + '@swc/types@0.1.25': + dependencies: + '@swc/counter': 0.1.3 + '@szmarczak/http-timer@1.1.2': dependencies: defer-to-connect: 1.1.3 @@ -15770,10 +16383,6 @@ snapshots: dependencies: defer-to-connect: 2.0.1 - '@szmarczak/http-timer@5.0.1': - dependencies: - defer-to-connect: 2.0.1 - '@testing-library/dom@10.0.0': dependencies: '@babel/code-frame': 7.24.7 @@ -15785,7 +16394,7 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 - '@testing-library/jest-dom@6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)))(vitest@4.0.13(@types/node@22.15.3)(jsdom@20.0.3)(terser@5.26.0)(tsx@4.20.6))': + '@testing-library/jest-dom@6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)))(vitest@4.0.13(@types/node@22.15.3)(jsdom@20.0.3)(terser@5.26.0)(tsx@4.20.6))': dependencies: '@adobe/css-tools': 4.3.3 '@babel/runtime': 7.23.9 @@ -15798,7 +16407,7 @@ snapshots: optionalDependencies: '@jest/globals': 29.7.0 '@types/jest': 29.5.12 - jest: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)) + jest: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)) vitest: 4.0.13(@types/node@22.15.3)(jsdom@20.0.3)(terser@5.26.0)(tsx@4.20.6) '@tootallnate/once@2.0.0': {} @@ -15978,7 +16587,7 @@ snapshots: '@types/jsdom@20.0.1': dependencies: '@types/node': 22.15.3 - '@types/tough-cookie': 4.0.2 + '@types/tough-cookie': 4.0.5 parse5: 7.1.2 '@types/json-schema@7.0.9': {} @@ -16001,11 +16610,11 @@ snapshots: '@types/mime@1.3.2': {} - '@types/mini-css-extract-plugin@1.4.3(esbuild@0.27.0)': + '@types/mini-css-extract-plugin@1.4.3(@swc/core@1.15.3)(esbuild@0.27.0)': dependencies: '@types/node': 22.15.3 tapable: 2.2.1 - webpack: 5.90.0(esbuild@0.27.0) + webpack: 5.90.0(@swc/core@1.15.3)(esbuild@0.27.0) transitivePeerDependencies: - '@swc/core' - esbuild @@ -16027,7 +16636,7 @@ snapshots: dependencies: '@types/node': 22.15.3 - '@types/node@12.20.37': {} + '@types/node@12.20.55': {} '@types/node@16.11.10': {} @@ -16090,9 +16699,7 @@ snapshots: '@types/scheduler@0.16.2': {} - '@types/semver@6.2.3': {} - - '@types/semver@7.5.5': {} + '@types/semver@7.7.1': {} '@types/send@0.17.4': dependencies: @@ -16125,7 +16732,7 @@ snapshots: '@types/tapable@1.0.8': {} - '@types/tough-cookie@4.0.2': {} + '@types/tough-cookie@4.0.5': {} '@types/uglify-js@3.13.1': dependencies: @@ -16133,11 +16740,11 @@ snapshots: '@types/unist@2.0.6': {} - '@types/webpack-bundle-analyzer@4.4.1(webpack-cli@5.1.4)': + '@types/webpack-bundle-analyzer@4.4.1(@swc/core@1.15.3)(webpack-cli@5.1.4)': dependencies: '@types/node': 22.15.3 tapable: 2.2.1 - webpack: 5.90.0(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) transitivePeerDependencies: - '@swc/core' - esbuild @@ -16196,7 +16803,7 @@ snapshots: debug: 4.4.3(supports-color@9.2.3) globby: 11.1.0 is-glob: 4.0.3 - semver: 7.6.0 + semver: 7.7.3 tsutils: 3.21.0(typescript@4.9.4) optionalDependencies: typescript: 4.9.4 @@ -16413,17 +17020,17 @@ snapshots: '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.90.0)': dependencies: - webpack: 5.90.0(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-bundle-analyzer@4.5.0)(webpack-dev-server@5.0.4)(webpack@5.90.0) '@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.90.0)': dependencies: - webpack: 5.90.0(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-bundle-analyzer@4.5.0)(webpack-dev-server@5.0.4)(webpack@5.90.0) '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack-dev-server@5.0.4)(webpack@5.90.0)': dependencies: - webpack: 5.90.0(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-bundle-analyzer@4.5.0)(webpack-dev-server@5.0.4)(webpack@5.90.0) optionalDependencies: webpack-dev-server: 5.0.4(webpack-cli@5.1.4)(webpack@5.90.0) @@ -16549,7 +17156,7 @@ snapshots: global-cache-dir: 2.0.0 jest-validate: 25.5.0 path-exists: 4.0.0 - semver: 7.6.0 + semver: 7.7.3 write-file-atomic: 3.0.3 ansi-align@3.0.1: @@ -16684,8 +17291,6 @@ snapshots: array-unique@0.3.2: {} - arrify@1.0.1: {} - arrify@2.0.1: {} ascii-table@0.0.9: {} @@ -16737,19 +17342,19 @@ snapshots: transitivePeerDependencies: - supports-color - babel-loader@9.1.3(@babel/core@7.23.9)(webpack@5.90.0(esbuild@0.27.0)): + babel-loader@9.1.3(@babel/core@7.23.9)(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.27.0)): dependencies: '@babel/core': 7.23.9 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.90.0(esbuild@0.27.0) + webpack: 5.90.0(@swc/core@1.15.3)(esbuild@0.27.0) babel-loader@9.1.3(@babel/core@7.23.9)(webpack@5.90.0): dependencies: '@babel/core': 7.23.9 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.90.0(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) babel-plugin-apply-mdx-type-prop@1.6.22(@babel/core@7.12.9): dependencies: @@ -16952,6 +17557,10 @@ snapshots: dependencies: fill-range: 7.0.1 + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + browserify-zlib@0.1.4: dependencies: pako: 0.2.9 @@ -16989,11 +17598,9 @@ snapshots: builtin-modules@3.3.0: {} - builtins@1.0.3: {} - builtins@5.0.1: dependencies: - semver: 7.6.0 + semver: 7.7.3 bundle-name@4.1.0: dependencies: @@ -17045,18 +17652,6 @@ snapshots: cacheable-lookup@5.0.4: {} - cacheable-lookup@7.0.0: {} - - cacheable-request@10.2.14: - dependencies: - '@types/http-cache-semantics': 4.0.4 - get-stream: 6.0.1 - http-cache-semantics: 4.1.1 - keyv: 4.5.4 - mimic-response: 4.0.0 - normalize-url: 8.0.1 - responselike: 3.0.0 - cacheable-request@2.1.4: dependencies: clone-response: 1.0.2 @@ -17123,12 +17718,6 @@ snapshots: camelcase-css@2.0.1: {} - camelcase-keys@6.2.2: - dependencies: - camelcase: 5.3.1 - map-obj: 4.3.0 - quick-lru: 4.0.1 - camelcase@5.3.1: {} camelcase@6.2.1: {} @@ -17221,6 +17810,8 @@ snapshots: chardet@0.7.0: {} + chardet@2.1.1: {} + chokidar@3.6.0: dependencies: anymatch: 3.1.2 @@ -17446,7 +18037,7 @@ snapshots: js-string-escape: 1.0.1 lodash: 4.17.21 md5-hex: 3.0.1 - semver: 7.6.0 + semver: 7.7.3 well-known-symbols: 2.0.0 config-chain@1.1.13: @@ -17520,7 +18111,7 @@ snapshots: normalize-path: 3.0.0 schema-utils: 4.2.0 serialize-javascript: 6.0.2 - webpack: 5.90.0(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) core-js-compat@3.36.0: dependencies: @@ -17571,13 +18162,13 @@ snapshots: crc-32: 1.2.2 readable-stream: 3.6.0 - create-jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)): + create-jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.10 - jest-config: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)) + jest-config: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -17596,13 +18187,13 @@ snapshots: dependencies: cross-spawn: 7.0.3 - cross-spawn@5.1.0: + cross-spawn@7.0.3: dependencies: - lru-cache: 4.1.5 - shebang-command: 1.2.0 - which: 1.3.1 + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 - cross-spawn@7.0.3: + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 @@ -17616,7 +18207,7 @@ snapshots: dependencies: postcss: 8.5.6 - css-loader@7.1.2(webpack@5.90.0(esbuild@0.27.0)): + css-loader@7.1.2(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.27.0)): dependencies: icss-utils: 5.1.0(postcss@8.5.6) postcss: 8.5.6 @@ -17627,7 +18218,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.6.0 optionalDependencies: - webpack: 5.90.0(esbuild@0.27.0) + webpack: 5.90.0(@swc/core@1.15.3)(esbuild@0.27.0) css-loader@7.1.2(webpack@5.90.0): dependencies: @@ -17640,7 +18231,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.6.0 optionalDependencies: - webpack: 5.90.0(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) css-select@4.1.3: dependencies: @@ -17745,7 +18336,7 @@ snapshots: dataloader@1.4.0: {} - dataloader@2.0.0: {} + dataloader@2.2.3: {} date-fns@1.30.1: {} @@ -17773,13 +18364,6 @@ snapshots: dependencies: callsite: 1.0.0 - decamelize-keys@1.1.0: - dependencies: - decamelize: 1.2.0 - map-obj: 1.0.1 - - decamelize@1.2.0: {} - decimal.js@10.4.3: {} decode-named-character-reference@1.0.2: @@ -17923,10 +18507,15 @@ snapshots: detect-indent@6.1.0: {} + detect-indent@7.0.2: {} + detect-libc@1.0.3: {} detect-libc@2.0.2: {} + detect-libc@2.1.2: + optional: true + detect-newline@3.1.0: {} detect-node@2.1.0: {} @@ -18137,9 +18726,10 @@ snapshots: graceful-fs: 4.2.10 tapable: 2.2.1 - enquirer@2.3.6: + enquirer@2.4.1: dependencies: ansi-colors: 4.1.3 + strip-ansi: 6.0.1 entities@2.2.0: {} @@ -18681,6 +19271,10 @@ snapshots: dependencies: to-regex-range: 5.0.1 + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + filter-obj@2.0.2: {} filter-obj@3.0.0: {} @@ -18745,8 +19339,6 @@ snapshots: cross-spawn: 7.0.3 signal-exit: 4.1.0 - form-data-encoder@2.1.4: {} - form-data@3.0.1: dependencies: asynckit: 0.4.0 @@ -18907,10 +19499,10 @@ snapshots: dependencies: '@types/download': 8.0.1 '@types/node-fetch': 2.6.2 - '@types/semver': 7.5.5 + '@types/semver': 7.7.1 download: 8.0.0 node-fetch: 2.6.7 - semver: 7.6.0 + semver: 7.7.3 transitivePeerDependencies: - encoding @@ -19069,20 +19661,6 @@ snapshots: p-cancelable: 2.1.1 responselike: 2.0.0 - got@12.6.1: - dependencies: - '@sindresorhus/is': 5.6.0 - '@szmarczak/http-timer': 5.0.1 - cacheable-lookup: 7.0.0 - cacheable-request: 10.2.14 - decompress-response: 6.0.0 - form-data-encoder: 2.1.4 - get-stream: 6.0.1 - http2-wrapper: 2.2.1 - lowercase-keys: 3.0.0 - p-cancelable: 3.0.0 - responselike: 3.0.0 - got@8.3.2: dependencies: '@sindresorhus/is': 0.7.0 @@ -19147,8 +19725,6 @@ snapshots: handle-thing@2.0.1: {} - hard-rejection@2.1.0: {} - has-ansi@0.1.0: dependencies: ansi-regex: 0.2.1 @@ -19353,14 +19929,14 @@ snapshots: html-void-elements@1.0.5: {} - html-webpack-plugin@5.5.0(webpack@5.90.0(esbuild@0.27.0)): + html-webpack-plugin@5.5.0(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.27.0)): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.90.0(esbuild@0.27.0) + webpack: 5.90.0(@swc/core@1.15.3)(esbuild@0.27.0) html-webpack-plugin@5.5.0(webpack@5.90.0): dependencies: @@ -19369,7 +19945,7 @@ snapshots: lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.90.0(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) htmlnano@2.0.3(cssnano@5.1.15(postcss@8.5.6))(postcss@8.5.6)(relateurl@0.2.7)(srcset@4.0.0)(svgo@2.8.0)(terser@5.26.0): dependencies: @@ -19472,11 +20048,6 @@ snapshots: quick-lru: 5.1.1 resolve-alpn: 1.2.1 - http2-wrapper@2.2.1: - dependencies: - quick-lru: 5.1.1 - resolve-alpn: 1.2.1 - https-proxy-agent@5.0.1(supports-color@9.2.3): dependencies: agent-base: 6.0.2(supports-color@9.2.3) @@ -19484,7 +20055,7 @@ snapshots: transitivePeerDependencies: - supports-color - human-id@1.0.2: {} + human-id@4.1.3: {} human-signals@2.1.0: {} @@ -19500,6 +20071,10 @@ snapshots: dependencies: safer-buffer: 2.1.2 + iconv-lite@0.7.0: + dependencies: + safer-buffer: 2.1.2 + icss-utils@5.1.0(postcss@8.5.6): dependencies: postcss: 8.5.6 @@ -19880,7 +20455,7 @@ snapshots: '@babel/parser': 7.23.9 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 - semver: 7.6.0 + semver: 7.7.3 transitivePeerDependencies: - supports-color @@ -19948,16 +20523,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)): + jest-cli@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)) + '@jest/core': 29.7.0(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)) + create-jest: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)) exit: 0.1.2 import-local: 3.0.3 - jest-config: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)) + jest-config: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -19967,7 +20542,7 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)): + jest-config@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)): dependencies: '@babel/core': 7.23.9 '@jest/test-sequencer': 29.7.0 @@ -19993,7 +20568,7 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 22.15.3 - ts-node: 10.9.1(@types/node@22.15.3)(typescript@5.8.3) + ts-node: 10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -20192,7 +20767,7 @@ snapshots: jest-util: 29.7.0 natural-compare: 1.4.0 pretty-format: 29.7.0 - semver: 7.6.0 + semver: 7.7.3 transitivePeerDependencies: - supports-color @@ -20262,12 +20837,12 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)): + jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)) + '@jest/core': 29.7.0(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)) '@jest/types': 29.6.3 import-local: 3.0.3 - jest-cli: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)) + jest-cli: 29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -20289,6 +20864,10 @@ snapshots: dependencies: argparse: 2.0.1 + js-yaml@4.1.1: + dependencies: + argparse: 2.0.1 + jsdom@20.0.3: dependencies: abab: 2.0.6 @@ -20429,6 +21008,8 @@ snapshots: kuler@2.0.0: {} + ky@1.14.0: {} + lambda-local@2.0.3: dependencies: commander: 9.4.0 @@ -20647,7 +21228,7 @@ snapshots: jest-validate: 27.5.1 map-obj: 5.0.2 moize: 6.1.3 - semver: 7.6.0 + semver: 7.7.3 log-symbols@1.0.2: dependencies: @@ -20702,8 +21283,6 @@ snapshots: lowercase-keys@2.0.0: {} - lowercase-keys@3.0.0: {} - lowlight@1.20.0: dependencies: fault: 1.0.4 @@ -20711,11 +21290,6 @@ snapshots: lru-cache@10.4.3: {} - lru-cache@4.1.5: - dependencies: - pseudomap: 1.0.2 - yallist: 2.1.2 - lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -20732,7 +21306,7 @@ snapshots: macos-release@3.1.0: {} - magic-string@0.25.7: + magic-string@0.25.9: dependencies: sourcemap-codec: 1.4.8 @@ -20763,10 +21337,6 @@ snapshots: map-cache@0.2.2: {} - map-obj@1.0.1: {} - - map-obj@4.3.0: {} - map-obj@5.0.2: {} map-visit@1.0.0: @@ -20996,20 +21566,6 @@ snapshots: memoize-one@6.0.0: {} - meow@7.1.1: - dependencies: - '@types/minimist': 1.2.2 - camelcase-keys: 6.2.2 - decamelize-keys: 1.1.0 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 2.5.0 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.13.1 - yargs-parser: 18.1.3 - merge-descriptors@1.0.3: {} merge-options@3.0.4: @@ -21262,6 +21818,11 @@ snapshots: braces: 3.0.2 picomatch: 2.3.1 + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + mime-db@1.33.0: {} mime-db@1.51.0: {} @@ -21290,19 +21851,17 @@ snapshots: mimic-response@3.1.0: {} - mimic-response@4.0.0: {} - min-indent@1.0.1: {} - mini-css-extract-plugin@2.7.7(webpack@5.90.0(esbuild@0.27.0)): + mini-css-extract-plugin@2.7.7(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.27.0)): dependencies: schema-utils: 4.2.0 - webpack: 5.90.0(esbuild@0.27.0) + webpack: 5.90.0(@swc/core@1.15.3)(esbuild@0.27.0) mini-css-extract-plugin@2.7.7(webpack@5.90.0): dependencies: schema-utils: 4.2.0 - webpack: 5.90.0(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) minimalistic-assert@1.0.1: {} @@ -21318,12 +21877,6 @@ snapshots: dependencies: brace-expansion: 2.0.1 - minimist-options@4.1.0: - dependencies: - arrify: 1.0.1 - is-plain-obj: 1.1.0 - kind-of: 6.0.3 - minimist@1.2.8: {} minipass-collect@1.0.2: @@ -21464,9 +22017,9 @@ snapshots: nested-error-stacks@2.1.1: {} - netlify-cli@11.8.3(@types/express@4.17.21): + netlify-cli@11.8.3(@swc/core@1.15.3)(@types/express@4.17.21): dependencies: - '@netlify/build': 27.18.5 + '@netlify/build': 27.18.5(@swc/core@1.15.3) '@netlify/config': 18.2.3 '@netlify/edge-bundler': 2.2.0 '@netlify/framework-info': 9.2.0 @@ -21556,7 +22109,7 @@ snapshots: pump: 3.0.0 raw-body: 2.5.2 read-pkg-up: 7.0.1 - semver: 7.6.0 + semver: 7.7.3 source-map-support: 0.5.21 static-server: 2.2.1 string-similarity: 4.0.4 @@ -21647,6 +22200,34 @@ snapshots: - '@babel/core' - babel-plugin-macros + next@12.3.4(@babel/core@7.23.9)(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + dependencies: + '@next/env': 12.3.4 + '@swc/helpers': 0.4.11 + caniuse-lite: 1.0.30001587 + postcss: 8.4.14 + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + styled-jsx: 5.0.7(@babel/core@7.23.9)(react@19.2.0) + use-sync-external-store: 1.2.0(react@19.2.0) + optionalDependencies: + '@next/swc-android-arm-eabi': 12.3.4 + '@next/swc-android-arm64': 12.3.4 + '@next/swc-darwin-arm64': 12.3.4 + '@next/swc-darwin-x64': 12.3.4 + '@next/swc-freebsd-x64': 12.3.4 + '@next/swc-linux-arm-gnueabihf': 12.3.4 + '@next/swc-linux-arm64-gnu': 12.3.4 + '@next/swc-linux-arm64-musl': 12.3.4 + '@next/swc-linux-x64-gnu': 12.3.4 + '@next/swc-linux-x64-musl': 12.3.4 + '@next/swc-win32-arm64-msvc': 12.3.4 + '@next/swc-win32-ia32-msvc': 12.3.4 + '@next/swc-win32-x64-msvc': 12.3.4 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + next@13.5.4(@babel/core@7.23.9)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@next/env': 13.5.4 @@ -21672,6 +22253,30 @@ snapshots: - '@babel/core' - babel-plugin-macros + next@16.0.5(@babel/core@7.23.9)(@playwright/test@1.43.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + dependencies: + '@next/env': 16.0.5 + '@swc/helpers': 0.5.15 + caniuse-lite: 1.0.30001587 + postcss: 8.4.31 + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + styled-jsx: 5.1.6(@babel/core@7.23.9)(react@19.2.0) + optionalDependencies: + '@next/swc-darwin-arm64': 16.0.5 + '@next/swc-darwin-x64': 16.0.5 + '@next/swc-linux-arm64-gnu': 16.0.5 + '@next/swc-linux-arm64-musl': 16.0.5 + '@next/swc-linux-x64-gnu': 16.0.5 + '@next/swc-linux-x64-musl': 16.0.5 + '@next/swc-win32-arm64-msvc': 16.0.5 + '@next/swc-win32-x64-msvc': 16.0.5 + '@playwright/test': 1.43.1 + sharp: 0.34.5 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + no-case@2.3.2: dependencies: lower-case: 1.1.4 @@ -21737,7 +22342,9 @@ snapshots: jest-validate: 25.5.0 normalize-node-version: 10.0.0 path-exists: 4.0.0 - semver: 7.6.0 + semver: 7.7.3 + + node@runtime:24.11.1: {} noop2@2.0.0: {} @@ -21750,7 +22357,7 @@ snapshots: all-node-versions: 8.0.0 filter-obj: 2.0.2 jest-validate: 25.5.0 - semver: 7.6.0 + semver: 7.7.3 normalize-package-data@2.5.0: dependencies: @@ -21763,14 +22370,14 @@ snapshots: dependencies: hosted-git-info: 4.1.0 is-core-module: 2.13.1 - semver: 7.6.0 + semver: 7.7.3 validate-npm-package-license: 3.0.4 normalize-package-data@5.0.0: dependencies: hosted-git-info: 6.1.1 is-core-module: 2.13.1 - semver: 7.6.0 + semver: 7.7.3 validate-npm-package-license: 3.0.4 normalize-path@2.1.1: @@ -21791,15 +22398,13 @@ snapshots: normalize-url@6.1.0: {} - normalize-url@8.0.1: {} - npm-bundled@1.1.2: dependencies: npm-normalize-package-bin: 1.0.1 npm-install-checks@6.3.0: dependencies: - semver: 7.6.0 + semver: 7.7.3 npm-normalize-package-bin@1.0.1: {} @@ -21809,7 +22414,7 @@ snapshots: dependencies: hosted-git-info: 6.1.1 proc-log: 3.0.0 - semver: 7.6.0 + semver: 7.7.3 validate-npm-package-name: 5.0.0 npm-packlist@2.2.2: @@ -21824,7 +22429,7 @@ snapshots: npm-install-checks: 6.3.0 npm-normalize-package-bin: 3.0.1 npm-package-arg: 10.1.0 - semver: 7.6.0 + semver: 7.7.3 npm-run-path@4.0.1: dependencies: @@ -21849,7 +22454,7 @@ snapshots: dependencies: loader-utils: 2.0.2 schema-utils: 3.3.0 - webpack: 5.90.0(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) nullthrows@1.1.1: {} @@ -21976,8 +22581,6 @@ snapshots: p-cancelable@2.1.1: {} - p-cancelable@3.0.0: {} - p-event@2.3.1: dependencies: p-timeout: 2.0.1 @@ -22018,6 +22621,10 @@ snapshots: dependencies: yocto-queue: 1.0.0 + p-limit@6.2.0: + dependencies: + yocto-queue: 1.2.2 + p-locate@4.1.0: dependencies: p-limit: 2.3.0 @@ -22077,6 +22684,13 @@ snapshots: dependencies: p-timeout: 5.1.0 + package-json@10.0.1: + dependencies: + ky: 1.14.0 + registry-auth-token: 5.1.0 + registry-url: 6.0.1 + semver: 7.7.3 + package-json@6.5.0: dependencies: got: 9.6.0 @@ -22084,14 +22698,9 @@ snapshots: registry-url: 5.1.0 semver: 6.3.1 - package-json@8.1.1: + package-manager-detector@0.2.11: dependencies: - got: 12.6.1 - registry-auth-token: 5.0.2 - registry-url: 6.0.1 - semver: 7.6.0 - - package-manager-detector@0.2.0: {} + quansync: 0.2.11 pako@0.2.9: {} @@ -22145,6 +22754,8 @@ snapshots: parse-github-url@1.0.2: {} + parse-github-url@1.0.3: {} + parse-gitignore@1.0.1: {} parse-glob@3.0.4: @@ -22347,29 +22958,29 @@ snapshots: camelcase-css: 2.0.1 postcss: 8.5.6 - postcss-load-config@3.1.0(ts-node@10.9.1(@types/node@16.11.10)(typescript@4.9.4)): + postcss-load-config@3.1.0(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@16.11.10)(typescript@4.9.4)): dependencies: import-cwd: 3.0.0 lilconfig: 2.1.0 yaml: 1.10.2 optionalDependencies: - ts-node: 10.9.1(@types/node@16.11.10)(typescript@4.9.4) + ts-node: 10.9.1(@swc/core@1.15.3)(@types/node@16.11.10)(typescript@4.9.4) - postcss-load-config@3.1.0(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)): + postcss-load-config@3.1.0(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)): dependencies: import-cwd: 3.0.0 lilconfig: 2.1.0 yaml: 1.10.2 optionalDependencies: - ts-node: 10.9.1(@types/node@22.15.3)(typescript@5.8.3) + ts-node: 10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3) - postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)): + postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)): dependencies: lilconfig: 3.1.0 yaml: 2.3.4 optionalDependencies: postcss: 8.5.6 - ts-node: 10.9.1(@types/node@22.15.3)(typescript@5.8.3) + ts-node: 10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3) postcss-merge-longhand@5.1.7(postcss@8.5.6): dependencies: @@ -22673,8 +23284,6 @@ snapshots: ps-list@8.1.0: {} - pseudomap@1.0.2: {} - psl@1.9.0: {} pump@1.0.3: @@ -22719,6 +23328,8 @@ snapshots: dependencies: side-channel: 1.1.0 + quansync@0.2.11: {} + query-string@5.1.1: dependencies: decode-uri-component: 0.2.0 @@ -22729,8 +23340,6 @@ snapshots: queue-microtask@1.2.3: {} - quick-lru@4.0.1: {} - quick-lru@5.1.1: {} quote-unquote@1.0.0: {} @@ -22765,6 +23374,11 @@ snapshots: react: 18.2.0 scheduler: 0.23.0 + react-dom@19.2.0(react@19.2.0): + dependencies: + react: 19.2.0 + scheduler: 0.27.0 + react-error-overlay@6.0.9: {} react-head@3.4.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0): @@ -22814,6 +23428,8 @@ snapshots: dependencies: loose-envify: 1.4.0 + react@19.2.0: {} + read-package-json-fast@2.0.3: dependencies: json-parse-even-better-errors: 2.3.1 @@ -22938,9 +23554,9 @@ snapshots: dependencies: rc: 1.2.8 - registry-auth-token@5.0.2: + registry-auth-token@5.1.0: dependencies: - '@pnpm/npm-conf': 2.2.2 + '@pnpm/npm-conf': 2.3.1 registry-url@5.1.0: dependencies: @@ -23138,10 +23754,6 @@ snapshots: dependencies: lowercase-keys: 2.0.0 - responselike@3.0.0: - dependencies: - lowercase-keys: 3.0.0 - restore-cursor@2.0.0: dependencies: onetime: 2.0.1 @@ -23228,7 +23840,7 @@ snapshots: dependencies: estree-walker: 0.6.1 - rollup@2.79.1: + rollup@2.79.2: optionalDependencies: fsevents: 2.3.3 @@ -23298,6 +23910,8 @@ snapshots: dependencies: loose-envify: 1.4.0 + scheduler@0.27.0: {} + schema-utils@3.3.0: dependencies: '@types/json-schema': 7.0.9 @@ -23327,10 +23941,9 @@ snapshots: '@types/node-forge': 1.3.11 node-forge: 1.3.1 - sembear@0.5.2: + sembear@0.7.0: dependencies: - '@types/semver': 6.2.3 - semver: 6.3.1 + semver: 7.7.3 semver-diff@3.1.1: dependencies: @@ -23344,6 +23957,8 @@ snapshots: dependencies: lru-cache: 6.0.0 + semver@7.7.3: {} + send@0.19.0: dependencies: debug: 2.6.9(supports-color@9.2.3) @@ -23429,16 +24044,42 @@ snapshots: dependencies: kind-of: 6.0.3 - shebang-command@1.2.0: + sharp@0.34.5: dependencies: - shebang-regex: 1.0.0 + '@img/colour': 1.0.0 + detect-libc: 2.1.2 + semver: 7.7.3 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.34.5 + '@img/sharp-darwin-x64': 0.34.5 + '@img/sharp-libvips-darwin-arm64': 1.2.4 + '@img/sharp-libvips-darwin-x64': 1.2.4 + '@img/sharp-libvips-linux-arm': 1.2.4 + '@img/sharp-libvips-linux-arm64': 1.2.4 + '@img/sharp-libvips-linux-ppc64': 1.2.4 + '@img/sharp-libvips-linux-riscv64': 1.2.4 + '@img/sharp-libvips-linux-s390x': 1.2.4 + '@img/sharp-libvips-linux-x64': 1.2.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + '@img/sharp-linux-arm': 0.34.5 + '@img/sharp-linux-arm64': 0.34.5 + '@img/sharp-linux-ppc64': 0.34.5 + '@img/sharp-linux-riscv64': 0.34.5 + '@img/sharp-linux-s390x': 0.34.5 + '@img/sharp-linux-x64': 0.34.5 + '@img/sharp-linuxmusl-arm64': 0.34.5 + '@img/sharp-linuxmusl-x64': 0.34.5 + '@img/sharp-wasm32': 0.34.5 + '@img/sharp-win32-arm64': 0.34.5 + '@img/sharp-win32-ia32': 0.34.5 + '@img/sharp-win32-x64': 0.34.5 + optional: true shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 - shebang-regex@1.0.0: {} - shebang-regex@3.0.0: {} shell-quote@1.8.1: {} @@ -23589,10 +24230,10 @@ snapshots: space-separated-tokens@2.0.2: {} - spawndamnit@2.0.0: + spawndamnit@3.0.1: dependencies: - cross-spawn: 5.1.0 - signal-exit: 3.0.7 + cross-spawn: 7.0.6 + signal-exit: 4.1.0 spdx-correct@3.1.1: dependencies: @@ -23793,11 +24434,11 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 - style-loader@2.0.0(webpack@5.90.0(esbuild@0.27.0)): + style-loader@2.0.0(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.27.0)): dependencies: loader-utils: 2.0.2 schema-utils: 3.3.0 - webpack: 5.90.0(esbuild@0.27.0) + webpack: 5.90.0(@swc/core@1.15.3)(esbuild@0.27.0) style-to-object@0.3.0: dependencies: @@ -23813,6 +24454,12 @@ snapshots: optionalDependencies: '@babel/core': 7.23.9 + styled-jsx@5.0.7(@babel/core@7.23.9)(react@19.2.0): + dependencies: + react: 19.2.0 + optionalDependencies: + '@babel/core': 7.23.9 + styled-jsx@5.1.1(@babel/core@7.23.9)(react@18.2.0): dependencies: client-only: 0.0.1 @@ -23820,6 +24467,13 @@ snapshots: optionalDependencies: '@babel/core': 7.23.9 + styled-jsx@5.1.6(@babel/core@7.23.9)(react@19.2.0): + dependencies: + client-only: 0.0.1 + react: 19.2.0 + optionalDependencies: + '@babel/core': 7.23.9 + stylehacks@5.1.1(postcss@8.5.6): dependencies: browserslist: 4.23.0 @@ -23881,7 +24535,7 @@ snapshots: transitivePeerDependencies: - supports-color - tailwindcss@2.2.19(autoprefixer@10.4.17(postcss@8.5.6))(postcss@8.5.6)(ts-node@10.9.1(@types/node@16.11.10)(typescript@4.9.4)): + tailwindcss@2.2.19(autoprefixer@10.4.17(postcss@8.5.6))(postcss@8.5.6)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@16.11.10)(typescript@4.9.4)): dependencies: arg: 5.0.2 autoprefixer: 10.4.17(postcss@8.5.6) @@ -23907,7 +24561,7 @@ snapshots: object-hash: 2.2.0 postcss: 8.5.6 postcss-js: 3.0.3 - postcss-load-config: 3.1.0(ts-node@10.9.1(@types/node@16.11.10)(typescript@4.9.4)) + postcss-load-config: 3.1.0(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@16.11.10)(typescript@4.9.4)) postcss-nested: 5.0.6(postcss@8.5.6) postcss-selector-parser: 6.0.11 postcss-value-parser: 4.2.0 @@ -23920,7 +24574,7 @@ snapshots: transitivePeerDependencies: - ts-node - tailwindcss@2.2.19(autoprefixer@10.4.17(postcss@8.5.6))(postcss@8.5.6)(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)): + tailwindcss@2.2.19(autoprefixer@10.4.17(postcss@8.5.6))(postcss@8.5.6)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)): dependencies: arg: 5.0.2 autoprefixer: 10.4.17(postcss@8.5.6) @@ -23946,7 +24600,7 @@ snapshots: object-hash: 2.2.0 postcss: 8.5.6 postcss-js: 3.0.3 - postcss-load-config: 3.1.0(ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3)) + postcss-load-config: 3.1.0(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)) postcss-nested: 5.0.6(postcss@8.5.6) postcss-selector-parser: 6.0.11 postcss-value-parser: 4.2.0 @@ -24012,25 +24666,39 @@ snapshots: ansi-escapes: 4.3.2 supports-hyperlinks: 2.2.0 - terser-webpack-plugin@5.3.10(esbuild@0.27.0)(webpack@5.90.0(esbuild@0.27.0)): + terser-webpack-plugin@5.3.10(@swc/core@1.15.3)(esbuild@0.27.0)(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.27.0)): dependencies: '@jridgewell/trace-mapping': 0.3.22 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.26.0 - webpack: 5.90.0(esbuild@0.27.0) + webpack: 5.90.0(@swc/core@1.15.3)(esbuild@0.27.0) optionalDependencies: + '@swc/core': 1.15.3 esbuild: 0.27.0 - terser-webpack-plugin@5.3.10(webpack@5.90.0): + terser-webpack-plugin@5.3.10(@swc/core@1.15.3)(webpack@5.90.0(@swc/core@1.15.3)): + dependencies: + '@jridgewell/trace-mapping': 0.3.22 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.2 + terser: 5.26.0 + webpack: 5.90.0(@swc/core@1.15.3) + optionalDependencies: + '@swc/core': 1.15.3 + + terser-webpack-plugin@5.3.10(@swc/core@1.15.3)(webpack@5.90.0): dependencies: '@jridgewell/trace-mapping': 0.3.22 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.26.0 - webpack: 5.90.0(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) + optionalDependencies: + '@swc/core': 1.15.3 terser@5.26.0: dependencies: @@ -24086,6 +24754,8 @@ snapshots: tinyexec@0.3.2: {} + tinyexec@1.0.2: {} + tinyglobby@0.2.15: dependencies: fdir: 6.5.0(picomatch@4.0.3) @@ -24175,8 +24845,6 @@ snapshots: trim-lines@3.0.1: {} - trim-newlines@3.0.1: {} - trim-repeated@1.0.0: dependencies: escape-string-regexp: 1.0.5 @@ -24191,7 +24859,7 @@ snapshots: trough@2.2.0: {} - ts-node@10.9.1(@types/node@16.11.10)(typescript@4.9.4): + ts-node@10.9.1(@swc/core@1.15.3)(@types/node@16.11.10)(typescript@4.9.4): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.8 @@ -24208,8 +24876,10 @@ snapshots: typescript: 4.9.4 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.15.3 - ts-node@10.9.1(@types/node@22.15.3)(typescript@5.8.3): + ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.8 @@ -24226,6 +24896,8 @@ snapshots: typescript: 5.8.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.15.3 optional: true tsconfck@3.1.4(typescript@5.8.3): @@ -24242,6 +24914,8 @@ snapshots: tslib@2.5.0: {} + tslib@2.8.1: {} + tsutils@3.21.0(typescript@4.9.4): dependencies: tslib: 1.14.1 @@ -24264,8 +24938,6 @@ snapshots: type-fest@0.10.0: {} - type-fest@0.13.1: {} - type-fest@0.16.0: {} type-fest@0.20.2: {} @@ -24525,7 +25197,7 @@ snapshots: is-yarn-global: 0.3.0 latest-version: 5.1.0 pupa: 2.1.1 - semver: 7.6.0 + semver: 7.7.3 semver-diff: 3.1.1 xdg-basedir: 4.0.0 @@ -24556,6 +25228,10 @@ snapshots: dependencies: react: 18.2.0 + use-sync-external-store@1.2.0(react@19.2.0): + dependencies: + react: 19.2.0 + use@3.1.1: {} util-deprecate@1.0.2: {} @@ -24587,7 +25263,7 @@ snapshots: v8-compile-cache-lib@3.0.1: {} - v8-compile-cache@2.3.0: {} + v8-compile-cache@2.4.0: {} v8-to-istanbul@9.0.1: dependencies: @@ -24604,10 +25280,6 @@ snapshots: spdx-correct: 3.1.1 spdx-expression-parse: 3.0.1 - validate-npm-package-name@3.0.0: - dependencies: - builtins: 1.0.3 - validate-npm-package-name@4.0.0: dependencies: builtins: 5.0.1 @@ -24616,6 +25288,8 @@ snapshots: dependencies: builtins: 5.0.1 + validate-npm-package-name@6.0.2: {} + vary@1.1.2: {} vfile-location@2.0.6: {} @@ -24869,13 +25543,13 @@ snapshots: import-local: 3.0.3 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.90.0(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) webpack-merge: 5.8.0 optionalDependencies: webpack-bundle-analyzer: 4.5.0 webpack-dev-server: 5.0.4(webpack-cli@5.1.4)(webpack@5.90.0) - webpack-dev-middleware@7.3.0(webpack@5.90.0(esbuild@0.27.0)): + webpack-dev-middleware@7.3.0(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.27.0)): dependencies: colorette: 2.0.16 memfs: 4.11.1 @@ -24884,7 +25558,7 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.2.0 optionalDependencies: - webpack: 5.90.0(esbuild@0.27.0) + webpack: 5.90.0(@swc/core@1.15.3)(esbuild@0.27.0) webpack-dev-middleware@7.3.0(webpack@5.90.0): dependencies: @@ -24895,7 +25569,7 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.2.0 optionalDependencies: - webpack: 5.90.0(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) webpack-dev-server@5.0.4(webpack-cli@5.1.4)(webpack@5.90.0): dependencies: @@ -24930,7 +25604,7 @@ snapshots: webpack-dev-middleware: 7.3.0(webpack@5.90.0) ws: 8.16.0 optionalDependencies: - webpack: 5.90.0(webpack-cli@5.1.4) + webpack: 5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-bundle-analyzer@4.5.0)(webpack-dev-server@5.0.4)(webpack@5.90.0) transitivePeerDependencies: - bufferutil @@ -24938,7 +25612,7 @@ snapshots: - supports-color - utf-8-validate - webpack-dev-server@5.0.4(webpack@5.90.0(esbuild@0.27.0)): + webpack-dev-server@5.0.4(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.27.0)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -24968,10 +25642,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.3.0(webpack@5.90.0(esbuild@0.27.0)) + webpack-dev-middleware: 7.3.0(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.27.0)) ws: 8.16.0 optionalDependencies: - webpack: 5.90.0(esbuild@0.27.0) + webpack: 5.90.0(@swc/core@1.15.3)(esbuild@0.27.0) transitivePeerDependencies: - bufferutil - debug @@ -24993,7 +25667,38 @@ snapshots: webpack-sources@3.2.3: {} - webpack@5.90.0(esbuild@0.27.0): + webpack@5.90.0(@swc/core@1.15.3): + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.8 + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/wasm-edit': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + acorn: 8.11.2 + acorn-import-assertions: 1.9.0(acorn@8.11.2) + browserslist: 4.23.0 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.15.0 + es-module-lexer: 1.7.0 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.10 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.2.0 + mime-types: 2.1.34 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.10(@swc/core@1.15.3)(webpack@5.90.0(@swc/core@1.15.3)) + watchpack: 2.4.0 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + + webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.27.0): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -25016,7 +25721,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(esbuild@0.27.0)(webpack@5.90.0(esbuild@0.27.0)) + terser-webpack-plugin: 5.3.10(@swc/core@1.15.3)(esbuild@0.27.0)(webpack@5.90.0(@swc/core@1.15.3)(esbuild@0.27.0)) watchpack: 2.4.0 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -25024,7 +25729,7 @@ snapshots: - esbuild - uglify-js - webpack@5.90.0(webpack-cli@5.1.4): + webpack@5.90.0(@swc/core@1.15.3)(webpack-cli@5.1.4): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -25047,7 +25752,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(webpack@5.90.0) + terser-webpack-plugin: 5.3.10(@swc/core@1.15.3)(webpack@5.90.0) watchpack: 2.4.0 webpack-sources: 3.2.3 optionalDependencies: @@ -25091,10 +25796,6 @@ snapshots: gopd: 1.2.0 has-tostringtag: 1.0.0 - which@1.3.1: - dependencies: - isexe: 2.0.0 - which@2.0.2: dependencies: isexe: 2.0.0 @@ -25193,8 +25894,6 @@ snapshots: y18n@5.0.8: {} - yallist@2.1.2: {} - yallist@3.1.1: {} yallist@4.0.0: {} @@ -25203,11 +25902,6 @@ snapshots: yaml@2.3.4: {} - yargs-parser@18.1.3: - dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 - yargs-parser@20.2.9: {} yargs-parser@21.1.1: {} @@ -25243,13 +25937,15 @@ snapshots: yocto-queue@1.0.0: {} + yocto-queue@1.2.2: {} + zip-stream@4.1.0: dependencies: archiver-utils: 2.1.0 compress-commons: 4.1.1 readable-stream: 3.6.0 - zod@3.22.4: {} + zod@3.25.76: {} zwitch@1.0.5: {} From 8774a312c524ec11df8d6cc88199e743c97f42d1 Mon Sep 17 00:00:00 2001 From: Robbie Date: Fri, 28 Nov 2025 18:34:01 -0700 Subject: [PATCH 38/52] snapshot test cleanup --- packages/compiler/src/compiler.ts | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/packages/compiler/src/compiler.ts b/packages/compiler/src/compiler.ts index 31dad4a9c..5ef6e0c92 100644 --- a/packages/compiler/src/compiler.ts +++ b/packages/compiler/src/compiler.ts @@ -450,13 +450,10 @@ export const createCompiler = ({ ); } - const cssContent = cssObjs - ? cssCache.get(cssDepModuleId)?.css - : cachedCss?.css; - - if (cssContent) { + const css = cssCache.get(cssDepModuleId)?.css ?? ''; + if (cssObjs || css) { cssImports.push( - `import '${cssImportSpecifier(cssDepModuleId, cssContent)}';`, + `import '${cssImportSpecifier(cssDepModuleId, css)}';`, ); } } From 517eb40650fca68c71efaede0c14b7a1c4ac7d9e Mon Sep 17 00:00:00 2001 From: Robbie Date: Fri, 28 Nov 2025 18:52:21 -0700 Subject: [PATCH 39/52] format --- packages/turbopack-plugin/src/index.test.ts | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/packages/turbopack-plugin/src/index.test.ts b/packages/turbopack-plugin/src/index.test.ts index ebec3c6a7..40fe4590b 100644 --- a/packages/turbopack-plugin/src/index.test.ts +++ b/packages/turbopack-plugin/src/index.test.ts @@ -58,8 +58,12 @@ describe('turbopack-plugin stress test', () => { const result = await turbopackVanillaExtractLoader.call(mockContext); - expect(result).toContain('@vanilla-extract/css/vanilla.virtual.css?ve-css='); - const match = result.match(/import '@vanilla-extract\/css\/vanilla\.virtual\.css\?ve-css=([^']+)';/); + expect(result).toContain( + '@vanilla-extract/css/vanilla.virtual.css?ve-css=', + ); + const match = result.match( + /import '@vanilla-extract\/css\/vanilla\.virtual\.css\?ve-css=([^']+)';/, + ); expect(match).toBeTruthy(); if (match) { @@ -118,8 +122,12 @@ describe('turbopack-plugin stress test', () => { const result = await turbopackVanillaExtractLoader.call(mockContext); - expect(result).toContain('@vanilla-extract/css/vanilla.virtual.css?ve-css='); - const match = result.match(/import '@vanilla-extract\/css\/vanilla\.virtual\.css\?ve-css=([^']+)';/); + expect(result).toContain( + '@vanilla-extract/css/vanilla.virtual.css?ve-css=', + ); + const match = result.match( + /import '@vanilla-extract\/css\/vanilla\.virtual\.css\?ve-css=([^']+)';/, + ); expect(match).toBeTruthy(); if (match) { From 77ad23f20b1b36bd6f3db928004717393fd2abc5 Mon Sep 17 00:00:00 2001 From: Robbie Date: Fri, 28 Nov 2025 20:55:00 -0700 Subject: [PATCH 40/52] rerequire --- packages/next-plugin/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/next-plugin/src/index.ts b/packages/next-plugin/src/index.ts index d8eade364..4b34e76c9 100644 --- a/packages/next-plugin/src/index.ts +++ b/packages/next-plugin/src/index.ts @@ -198,7 +198,7 @@ export const createVanillaExtractPlugin = ( const vanillaExtractCssRule = { as: '*.css', - loaders: ['@vanilla-extract/turbopack-plugin'], + loaders: [require.resolve('@vanilla-extract/turbopack-plugin')], } as const; turbopack.rules = { From e7e3be6b037de608ad1b2f7aef0babb70d0fc0d9 Mon Sep 17 00:00:00 2001 From: Robbie Date: Fri, 28 Nov 2025 21:40:22 -0700 Subject: [PATCH 41/52] update fixture names --- .../CHANGELOG.md | 0 .../next.config.js | 0 .../package.json | 0 .../src/pages/features/index.tsx | 0 .../src/pages/index.tsx | 0 .../src/pages/recipes/index.tsx | 0 .../src/pages/sprinkles/index.tsx | 0 .../tsconfig.json | 0 .../CHANGELOG.md | 0 .../next.config.js | 0 .../package.json | 0 .../src/app/features/page.tsx | 0 .../src/app/layout.tsx | 0 .../src/app/page.tsx | 0 .../src/app/recipes/page.tsx | 0 .../src/app/sprinkles/page.tsx | 0 .../tsconfig.json | 0 pnpm-lock.yaml | 84 +++++++++---------- test-helpers/src/startFixture/index.ts | 6 +- test-helpers/src/startFixture/next.ts | 7 +- .../fixtures-next-development.playwright.ts | 9 +- .../fixtures-next-production.playwright.ts | 8 +- 22 files changed, 65 insertions(+), 49 deletions(-) rename fixtures/{next-pages-router => next-12-pages-router}/CHANGELOG.md (100%) rename fixtures/{next-pages-router => next-12-pages-router}/next.config.js (100%) rename fixtures/{next-pages-router => next-12-pages-router}/package.json (100%) rename fixtures/{next-pages-router => next-12-pages-router}/src/pages/features/index.tsx (100%) rename fixtures/{next-pages-router => next-12-pages-router}/src/pages/index.tsx (100%) rename fixtures/{next-pages-router => next-12-pages-router}/src/pages/recipes/index.tsx (100%) rename fixtures/{next-pages-router => next-12-pages-router}/src/pages/sprinkles/index.tsx (100%) rename fixtures/{next-pages-router => next-12-pages-router}/tsconfig.json (100%) rename fixtures/{next-app-router => next-13-app-router}/CHANGELOG.md (100%) rename fixtures/{next-app-router => next-13-app-router}/next.config.js (100%) rename fixtures/{next-app-router => next-13-app-router}/package.json (100%) rename fixtures/{next-app-router => next-13-app-router}/src/app/features/page.tsx (100%) rename fixtures/{next-app-router => next-13-app-router}/src/app/layout.tsx (100%) rename fixtures/{next-app-router => next-13-app-router}/src/app/page.tsx (100%) rename fixtures/{next-app-router => next-13-app-router}/src/app/recipes/page.tsx (100%) rename fixtures/{next-app-router => next-13-app-router}/src/app/sprinkles/page.tsx (100%) rename fixtures/{next-app-router => next-13-app-router}/tsconfig.json (100%) diff --git a/fixtures/next-pages-router/CHANGELOG.md b/fixtures/next-12-pages-router/CHANGELOG.md similarity index 100% rename from fixtures/next-pages-router/CHANGELOG.md rename to fixtures/next-12-pages-router/CHANGELOG.md diff --git a/fixtures/next-pages-router/next.config.js b/fixtures/next-12-pages-router/next.config.js similarity index 100% rename from fixtures/next-pages-router/next.config.js rename to fixtures/next-12-pages-router/next.config.js diff --git a/fixtures/next-pages-router/package.json b/fixtures/next-12-pages-router/package.json similarity index 100% rename from fixtures/next-pages-router/package.json rename to fixtures/next-12-pages-router/package.json diff --git a/fixtures/next-pages-router/src/pages/features/index.tsx b/fixtures/next-12-pages-router/src/pages/features/index.tsx similarity index 100% rename from fixtures/next-pages-router/src/pages/features/index.tsx rename to fixtures/next-12-pages-router/src/pages/features/index.tsx diff --git a/fixtures/next-pages-router/src/pages/index.tsx b/fixtures/next-12-pages-router/src/pages/index.tsx similarity index 100% rename from fixtures/next-pages-router/src/pages/index.tsx rename to fixtures/next-12-pages-router/src/pages/index.tsx diff --git a/fixtures/next-pages-router/src/pages/recipes/index.tsx b/fixtures/next-12-pages-router/src/pages/recipes/index.tsx similarity index 100% rename from fixtures/next-pages-router/src/pages/recipes/index.tsx rename to fixtures/next-12-pages-router/src/pages/recipes/index.tsx diff --git a/fixtures/next-pages-router/src/pages/sprinkles/index.tsx b/fixtures/next-12-pages-router/src/pages/sprinkles/index.tsx similarity index 100% rename from fixtures/next-pages-router/src/pages/sprinkles/index.tsx rename to fixtures/next-12-pages-router/src/pages/sprinkles/index.tsx diff --git a/fixtures/next-pages-router/tsconfig.json b/fixtures/next-12-pages-router/tsconfig.json similarity index 100% rename from fixtures/next-pages-router/tsconfig.json rename to fixtures/next-12-pages-router/tsconfig.json diff --git a/fixtures/next-app-router/CHANGELOG.md b/fixtures/next-13-app-router/CHANGELOG.md similarity index 100% rename from fixtures/next-app-router/CHANGELOG.md rename to fixtures/next-13-app-router/CHANGELOG.md diff --git a/fixtures/next-app-router/next.config.js b/fixtures/next-13-app-router/next.config.js similarity index 100% rename from fixtures/next-app-router/next.config.js rename to fixtures/next-13-app-router/next.config.js diff --git a/fixtures/next-app-router/package.json b/fixtures/next-13-app-router/package.json similarity index 100% rename from fixtures/next-app-router/package.json rename to fixtures/next-13-app-router/package.json diff --git a/fixtures/next-app-router/src/app/features/page.tsx b/fixtures/next-13-app-router/src/app/features/page.tsx similarity index 100% rename from fixtures/next-app-router/src/app/features/page.tsx rename to fixtures/next-13-app-router/src/app/features/page.tsx diff --git a/fixtures/next-app-router/src/app/layout.tsx b/fixtures/next-13-app-router/src/app/layout.tsx similarity index 100% rename from fixtures/next-app-router/src/app/layout.tsx rename to fixtures/next-13-app-router/src/app/layout.tsx diff --git a/fixtures/next-app-router/src/app/page.tsx b/fixtures/next-13-app-router/src/app/page.tsx similarity index 100% rename from fixtures/next-app-router/src/app/page.tsx rename to fixtures/next-13-app-router/src/app/page.tsx diff --git a/fixtures/next-app-router/src/app/recipes/page.tsx b/fixtures/next-13-app-router/src/app/recipes/page.tsx similarity index 100% rename from fixtures/next-app-router/src/app/recipes/page.tsx rename to fixtures/next-13-app-router/src/app/recipes/page.tsx diff --git a/fixtures/next-app-router/src/app/sprinkles/page.tsx b/fixtures/next-13-app-router/src/app/sprinkles/page.tsx similarity index 100% rename from fixtures/next-app-router/src/app/sprinkles/page.tsx rename to fixtures/next-13-app-router/src/app/sprinkles/page.tsx diff --git a/fixtures/next-app-router/tsconfig.json b/fixtures/next-13-app-router/tsconfig.json similarity index 100% rename from fixtures/next-app-router/tsconfig.json rename to fixtures/next-13-app-router/tsconfig.json diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 396d656ee..aef100821 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -234,7 +234,7 @@ importers: specifier: workspace:^ version: link:../../packages/css - fixtures/next-16-app-pages-router: + fixtures/next-12-pages-router: dependencies: '@fixtures/features': specifier: workspace:* @@ -255,14 +255,14 @@ importers: specifier: workspace:* version: link:../../packages/sprinkles next: - specifier: npm:next@^16.0.0 - version: 16.0.5(@babel/core@7.23.9)(@playwright/test@1.43.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: 12.3.4 + version: 12.3.4(@babel/core@7.23.9)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: - specifier: npm:react@^19.2.0 - version: 19.2.0 + specifier: ^18.2.0 + version: 18.2.0 react-dom: - specifier: npm:react-dom@^19.2.0 - version: 19.2.0(react@19.2.0) + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) devDependencies: '@types/react': specifier: ^18.2.55 @@ -274,7 +274,7 @@ importers: specifier: workspace:* version: link:../../packages/webpack-plugin - fixtures/next-app-router: + fixtures/next-13-app-router: dependencies: '@fixtures/features': specifier: workspace:* @@ -314,7 +314,7 @@ importers: specifier: workspace:* version: link:../../packages/webpack-plugin - fixtures/next-pages-router: + fixtures/next-16-app-pages-router: dependencies: '@fixtures/features': specifier: workspace:* @@ -335,14 +335,14 @@ importers: specifier: workspace:* version: link:../../packages/sprinkles next: - specifier: 12.3.4 - version: 12.3.4(@babel/core@7.23.9)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: npm:next@^16.0.0 + version: 16.0.5(@babel/core@7.23.9)(@playwright/test@1.43.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) react: - specifier: ^18.2.0 - version: 18.2.0 + specifier: npm:react@^19.2.0 + version: 19.2.0 react-dom: - specifier: ^18.2.0 - version: 18.2.0(react@18.2.0) + specifier: npm:react-dom@^19.2.0 + version: 19.2.0(react@19.2.0) devDependencies: '@types/react': specifier: ^18.2.55 @@ -907,10 +907,10 @@ importers: version: link:../fixtures/low-level '@fixtures/next-12-pages-router': specifier: workspace:* - version: link:../fixtures/next-pages-router + version: link:../fixtures/next-12-pages-router '@fixtures/next-13-app-router': specifier: workspace:* - version: link:../fixtures/next-app-router + version: link:../fixtures/next-13-app-router '@fixtures/next-16-app-pages-router': specifier: workspace:* version: link:../fixtures/next-16-app-pages-router @@ -13725,7 +13725,7 @@ snapshots: '@emnapi/runtime@1.7.1': dependencies: - tslib: 2.5.0 + tslib: 2.8.1 optional: true '@emnapi/wasi-threads@1.0.3': @@ -14426,21 +14426,21 @@ snapshots: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.5.5 - '@jsonjoy.com/base64@1.1.2(tslib@2.5.0)': + '@jsonjoy.com/base64@1.1.2(tslib@2.8.1)': dependencies: - tslib: 2.5.0 + tslib: 2.8.1 - '@jsonjoy.com/json-pack@1.1.0(tslib@2.5.0)': + '@jsonjoy.com/json-pack@1.1.0(tslib@2.8.1)': dependencies: - '@jsonjoy.com/base64': 1.1.2(tslib@2.5.0) - '@jsonjoy.com/util': 1.3.0(tslib@2.5.0) + '@jsonjoy.com/base64': 1.1.2(tslib@2.8.1) + '@jsonjoy.com/util': 1.3.0(tslib@2.8.1) hyperdyperid: 1.2.0 - thingies: 1.21.0(tslib@2.5.0) - tslib: 2.5.0 + thingies: 1.21.0(tslib@2.8.1) + tslib: 2.8.1 - '@jsonjoy.com/util@1.3.0(tslib@2.5.0)': + '@jsonjoy.com/util@1.3.0(tslib@2.8.1)': dependencies: - tslib: 2.5.0 + tslib: 2.8.1 '@jspm/core@2.0.1': {} @@ -16357,11 +16357,11 @@ snapshots: '@swc/helpers@0.4.11': dependencies: - tslib: 2.5.0 + tslib: 2.8.1 '@swc/helpers@0.4.14': dependencies: - tslib: 2.5.0 + tslib: 2.8.1 '@swc/helpers@0.5.15': dependencies: @@ -16369,7 +16369,7 @@ snapshots: '@swc/helpers@0.5.2': dependencies: - tslib: 2.5.0 + tslib: 2.8.1 '@swc/types@0.1.25': dependencies: @@ -18636,7 +18636,7 @@ snapshots: dot-case@3.0.4: dependencies: no-case: 3.0.4 - tslib: 2.5.0 + tslib: 2.8.1 dot-prop@5.3.0: dependencies: @@ -21275,7 +21275,7 @@ snapshots: lower-case@2.0.2: dependencies: - tslib: 2.5.0 + tslib: 2.8.1 lowercase-keys@1.0.0: {} @@ -21559,10 +21559,10 @@ snapshots: memfs@4.11.1: dependencies: - '@jsonjoy.com/json-pack': 1.1.0(tslib@2.5.0) - '@jsonjoy.com/util': 1.3.0(tslib@2.5.0) - tree-dump: 1.0.2(tslib@2.5.0) - tslib: 2.5.0 + '@jsonjoy.com/json-pack': 1.1.0(tslib@2.8.1) + '@jsonjoy.com/util': 1.3.0(tslib@2.8.1) + tree-dump: 1.0.2(tslib@2.8.1) + tslib: 2.8.1 memoize-one@6.0.0: {} @@ -22284,7 +22284,7 @@ snapshots: no-case@3.0.4: dependencies: lower-case: 2.0.2 - tslib: 2.5.0 + tslib: 2.8.1 node-addon-api@4.3.0: {} @@ -22792,7 +22792,7 @@ snapshots: pascal-case@3.1.2: dependencies: no-case: 3.0.4 - tslib: 2.5.0 + tslib: 2.8.1 pascalcase@0.1.1: {} @@ -24717,9 +24717,9 @@ snapshots: textr@0.3.0: {} - thingies@1.21.0(tslib@2.5.0): + thingies@1.21.0(tslib@2.8.1): dependencies: - tslib: 2.5.0 + tslib: 2.8.1 through2-filter@3.0.0: dependencies: @@ -24835,9 +24835,9 @@ snapshots: dependencies: punycode: 2.1.1 - tree-dump@1.0.2(tslib@2.5.0): + tree-dump@1.0.2(tslib@2.8.1): dependencies: - tslib: 2.5.0 + tslib: 2.8.1 treeify@1.1.0: {} diff --git a/test-helpers/src/startFixture/index.ts b/test-helpers/src/startFixture/index.ts index 99a9a0f3e..a352b03f2 100644 --- a/test-helpers/src/startFixture/index.ts +++ b/test-helpers/src/startFixture/index.ts @@ -69,7 +69,11 @@ export async function startFixture( }); } - if (type === 'next-pages-router' || type === 'next-app-router') { + if ( + type === 'next-12-pages-router' || + type === 'next-13-app-router' || + type === 'next-16-app-pages-router' + ) { return startNextFixture({ type, port, diff --git a/test-helpers/src/startFixture/next.ts b/test-helpers/src/startFixture/next.ts index 2db02c6ba..00ea3a32a 100644 --- a/test-helpers/src/startFixture/next.ts +++ b/test-helpers/src/startFixture/next.ts @@ -20,7 +20,10 @@ const DIST_DIR = 'dist'; export const nextFixtures = ['sprinkles', 'recipes', 'features'] as const; export interface NextFixtureOptions { - type: 'next-app-router' | 'next-pages-router'; + type: + | 'next-13-app-router' + | 'next-12-pages-router' + | 'next-16-app-pages-router'; mode?: 'development' | 'production'; port: number; } @@ -92,7 +95,7 @@ export const startNextFixture = async ({ // using export mode for production build in next 13 // due to issues with the distDir config not being set // properly. - if (!dev && type === 'next-app-router') { + if (!dev && type === 'next-13-app-router') { // Use vite to server the static build. const closeServer = await serveAssets({ port, diff --git a/tests/e2e/fixtures-next-development.playwright.ts b/tests/e2e/fixtures-next-development.playwright.ts index 5362fe29d..b85d3f42e 100644 --- a/tests/e2e/fixtures-next-development.playwright.ts +++ b/tests/e2e/fixtures-next-development.playwright.ts @@ -9,12 +9,17 @@ import test from './fixture'; const testCases = [ { - type: 'next-pages-router', + type: 'next-12-pages-router', mode: 'development', clientSideRouting: true, }, { - type: 'next-app-router', + type: 'next-13-app-router', + mode: 'development', + clientSideRouting: false, + }, + { + type: 'next-16-app-pages-router', mode: 'development', clientSideRouting: false, }, diff --git a/tests/e2e/fixtures-next-production.playwright.ts b/tests/e2e/fixtures-next-production.playwright.ts index d78b5ba65..2c1c8cb31 100644 --- a/tests/e2e/fixtures-next-production.playwright.ts +++ b/tests/e2e/fixtures-next-production.playwright.ts @@ -9,11 +9,15 @@ import test from './fixture'; const testCases = [ { - type: 'next-pages-router', + type: 'next-12-pages-router', mode: 'production', }, { - type: 'next-app-router', + type: 'next-13-app-router', + mode: 'production', + }, + { + type: 'next-16-app-pages-router', mode: 'production', }, ] as const; From 19aa0bffc3b78b504df01f68b885c017cf8c3177 Mon Sep 17 00:00:00 2001 From: Robbie Date: Sat, 29 Nov 2025 16:02:44 -0700 Subject: [PATCH 42/52] revert --- tests/e2e/fixtures-next-development.playwright.ts | 9 ++------- tests/e2e/fixtures-next-production.playwright.ts | 4 ---- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/tests/e2e/fixtures-next-development.playwright.ts b/tests/e2e/fixtures-next-development.playwright.ts index b85d3f42e..5362fe29d 100644 --- a/tests/e2e/fixtures-next-development.playwright.ts +++ b/tests/e2e/fixtures-next-development.playwright.ts @@ -9,17 +9,12 @@ import test from './fixture'; const testCases = [ { - type: 'next-12-pages-router', + type: 'next-pages-router', mode: 'development', clientSideRouting: true, }, { - type: 'next-13-app-router', - mode: 'development', - clientSideRouting: false, - }, - { - type: 'next-16-app-pages-router', + type: 'next-app-router', mode: 'development', clientSideRouting: false, }, diff --git a/tests/e2e/fixtures-next-production.playwright.ts b/tests/e2e/fixtures-next-production.playwright.ts index 2c1c8cb31..fa284cd4b 100644 --- a/tests/e2e/fixtures-next-production.playwright.ts +++ b/tests/e2e/fixtures-next-production.playwright.ts @@ -16,10 +16,6 @@ const testCases = [ type: 'next-13-app-router', mode: 'production', }, - { - type: 'next-16-app-pages-router', - mode: 'production', - }, ] as const; testCases.forEach(({ type, mode }) => { From 7c0975ce1168c843f3823ddf6910b4bf3920faf6 Mon Sep 17 00:00:00 2001 From: Robbie Date: Sat, 29 Nov 2025 22:12:51 -0700 Subject: [PATCH 43/52] unify next tests --- fixtures/next-13-app-router/next.config.js | 3 - fixtures/next-13-app-router/package.json | 2 +- .../next-16-app-pages-router/next.config.ts | 4 +- .../next-16-app-pages-router/package.json | 6 +- .../src/app/next-font/page.tsx | 2 + .../src/styles/creepster-font.ts | 3 +- .../next-16-app-pages-router/tsconfig.json | 6 +- package.json | 4 +- playwright.config.ts | 10 +- pnpm-lock.yaml | 780 ++++++++++-------- .../fixtures-next-development.playwright.ts | 72 -- .../fixtures-next-production.playwright.ts | 46 -- tests/e2e/fixtures-next-unified.playwright.ts | 72 ++ .../creepster-Desktop---Chromium-darwin.png | Bin 0 -> 19762 bytes .../creepster-Mobile---Chromium-darwin.png | Bin 0 -> 17218 bytes ...ication-test-Desktop---Chromium-darwin.png | Bin 0 -> 8616 bytes ...lication-test-Mobile---Chromium-darwin.png | Bin 0 -> 5384 bytes ...n-serializer-Desktop---Chromium-darwin.png | Bin 0 -> 16673 bytes ...on-serializer-Mobile---Chromium-darwin.png | Bin 0 -> 12810 bytes .../next-font-Desktop---Chromium-darwin.png | Bin 0 -> 219974 bytes .../next-font-Mobile---Chromium-darwin.png | Bin 0 -> 93061 bytes ...font-webpack-Desktop---Chromium-darwin.png | Bin 0 -> 228405 bytes ...-font-webpack-Mobile---Chromium-darwin.png | Bin 0 -> 98213 bytes tests/package.json | 1 - tests/servers.ts | 57 ++ 25 files changed, 582 insertions(+), 486 deletions(-) delete mode 100644 tests/e2e/fixtures-next-development.playwright.ts delete mode 100644 tests/e2e/fixtures-next-production.playwright.ts create mode 100644 tests/e2e/fixtures-next-unified.playwright.ts create mode 100644 tests/e2e/snapshots/creepster-Desktop---Chromium-darwin.png create mode 100644 tests/e2e/snapshots/creepster-Mobile---Chromium-darwin.png create mode 100644 tests/e2e/snapshots/duplication-test-Desktop---Chromium-darwin.png create mode 100644 tests/e2e/snapshots/duplication-test-Mobile---Chromium-darwin.png create mode 100644 tests/e2e/snapshots/function-serializer-Desktop---Chromium-darwin.png create mode 100644 tests/e2e/snapshots/function-serializer-Mobile---Chromium-darwin.png create mode 100644 tests/e2e/snapshots/next-font-Desktop---Chromium-darwin.png create mode 100644 tests/e2e/snapshots/next-font-Mobile---Chromium-darwin.png create mode 100644 tests/e2e/snapshots/next-font-webpack-Desktop---Chromium-darwin.png create mode 100644 tests/e2e/snapshots/next-font-webpack-Mobile---Chromium-darwin.png create mode 100644 tests/servers.ts diff --git a/fixtures/next-13-app-router/next.config.js b/fixtures/next-13-app-router/next.config.js index fb626cabf..ccf7e23ca 100644 --- a/fixtures/next-13-app-router/next.config.js +++ b/fixtures/next-13-app-router/next.config.js @@ -6,9 +6,6 @@ const withVanillaExtract = createVanillaExtractPlugin(); /** @type {import('next').NextConfig} */ const config = withVanillaExtract({ - // exporting a static build for next 13 - // due to issues with distDir on next custom server - output: 'export', // we need to differentiate build and dev folders // so they don't overwrite eachother when running tests distDir: process.env.NODE_ENV === 'production' ? 'dist' : '.next', diff --git a/fixtures/next-13-app-router/package.json b/fixtures/next-13-app-router/package.json index b8f76b092..f11499185 100644 --- a/fixtures/next-13-app-router/package.json +++ b/fixtures/next-13-app-router/package.json @@ -19,7 +19,7 @@ "@vanilla-extract/css": "workspace:*", "@vanilla-extract/recipes": "workspace:*", "@vanilla-extract/sprinkles": "workspace:*", - "next": "npm:next@13.5.4", + "next": "npm:next@13.5.11", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/fixtures/next-16-app-pages-router/next.config.ts b/fixtures/next-16-app-pages-router/next.config.ts index d923ed773..0b03fdfd8 100644 --- a/fixtures/next-16-app-pages-router/next.config.ts +++ b/fixtures/next-16-app-pages-router/next.config.ts @@ -1,11 +1,13 @@ +import { NextConfig } from 'next'; import { createVanillaExtractPlugin } from './next-plugin/dist/vanilla-extract-next-plugin.cjs.js'; const withVanillaExtract = createVanillaExtractPlugin(); -export const config = { +export const config: NextConfig = { distDir: process.env.NEXT_DIST_DIR || '.next', experimental: { externalDir: true }, onDemandEntries: { maxInactiveAge: 1000 * 60 * 60 }, transpilePackages: ['@fixtures/sprinkles/src/html'], + devIndicators: false, }; export default withVanillaExtract(config); diff --git a/fixtures/next-16-app-pages-router/package.json b/fixtures/next-16-app-pages-router/package.json index 694ab095e..cc1209f68 100644 --- a/fixtures/next-16-app-pages-router/package.json +++ b/fixtures/next-16-app-pages-router/package.json @@ -4,12 +4,14 @@ "private": true, "description": "Next 16 fixture with app + pages routers; supports webpack and turbopack builds", "scripts": { - "dev": "next dev", + "dev-webpack": "NEXT_DIST_DIR=.next/webpack next dev --webpack", + "dev-turbo": "NEXT_DIST_DIR=.next/turbo next dev --turbo", "build-webpack": "NEXT_DIST_DIR=dist/webpack next build --webpack", "start-webpack": "NEXT_DIST_DIR=dist/webpack next start", "build-turbo": "NEXT_DIST_DIR=dist/turbo next build --turbo", "start-turbo": "NEXT_DIST_DIR=dist/turbo next start", - "clean-build": "pnpm clean && pnpm build-turbo && pnpm build-webpack", + "clean-build-turbo": "pnpm clean && sleep 1 && pnpm build-turbo", + "clean-build-webpack": "pnpm clean && sleep 1 && pnpm build-webpack", "clean": "pnpm clean:dev && pnpm clean:prod", "clean:dev": "rm -rf .next", "clean:prod": "rm -rf dist" diff --git a/fixtures/next-16-app-pages-router/src/app/next-font/page.tsx b/fixtures/next-16-app-pages-router/src/app/next-font/page.tsx index 009e049c1..5573693b8 100644 --- a/fixtures/next-16-app-pages-router/src/app/next-font/page.tsx +++ b/fixtures/next-16-app-pages-router/src/app/next-font/page.tsx @@ -14,6 +14,8 @@ export default function NextFontChecks() { pairs.push([`${name} style`, vePicked.fontStyle, style.fontStyle]); } + pairs.sort((a, b) => a[0].localeCompare(b[0])); + for (const [name, fromVe, direct] of pairs) { if (String(fromVe) !== String(direct)) { throw new Error( diff --git a/fixtures/next-16-app-pages-router/src/styles/creepster-font.ts b/fixtures/next-16-app-pages-router/src/styles/creepster-font.ts index dd35e173c..dc9cdc5e5 100644 --- a/fixtures/next-16-app-pages-router/src/styles/creepster-font.ts +++ b/fixtures/next-16-app-pages-router/src/styles/creepster-font.ts @@ -3,5 +3,6 @@ import { Creepster } from 'next/font/google'; export const creepster = Creepster({ weight: '400', subsets: ['latin'], - display: 'swap', + display: 'block', + preload: true, }); diff --git a/fixtures/next-16-app-pages-router/tsconfig.json b/fixtures/next-16-app-pages-router/tsconfig.json index 0cbb35fb3..70056b1fa 100644 --- a/fixtures/next-16-app-pages-router/tsconfig.json +++ b/fixtures/next-16-app-pages-router/tsconfig.json @@ -32,7 +32,11 @@ "dist/turbo/types/**/*.ts", "dist/turbo/dev/types/**/*.ts", "dist/webpack/types/**/*.ts", - "dist/webpack/dev/types/**/*.ts" + "dist/webpack/dev/types/**/*.ts", + ".next/turbo/types/**/*.ts", + ".next/turbo/dev/types/**/*.ts", + ".next/webpack/types/**/*.ts", + ".next/webpack/dev/types/**/*.ts" ], "exclude": ["node_modules"] } diff --git a/package.json b/package.json index b6313baf5..15ce169c9 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "test:jest": "cross-env NODE_OPTIONS=--experimental-vm-modules jest", "test:vitest": "vitest --watch=false", "test:playwright": "pnpm test:build-next && playwright test", - "test:build-next": "node scripts/copy-next-plugin.ts && pnpm --filter=@fixtures/next-* clean-build", + "test:build-next": "node scripts/copy-next-plugin.ts && pnpm --filter=@fixtures/next-* run '/^clean-build.*/'", "format": "prettier --write .", "lint": "pnpm run '/^lint:.*/'", "lint:manypkg": "manypkg check", @@ -36,7 +36,7 @@ "@changesets/changelog-github": "^0.5.0", "@changesets/cli": "^2.27.8", "@manypkg/cli": "^0.25.1", - "@playwright/test": "^1.43.1", + "@playwright/test": "^1.57.0", "@preconstruct/cli": "^2.8.2", "@testing-library/jest-dom": "^6.4.2", "@types/jest": "^29.5.12", diff --git a/playwright.config.ts b/playwright.config.ts index 7b00ff93d..dc5f2a90f 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -1,5 +1,6 @@ -import { PlaywrightTestConfig, defineConfig } from '@playwright/test'; +import { type PlaywrightTestConfig, defineConfig } from '@playwright/test'; import { cpus } from 'os'; +import { NEXT_SERVERS } from './tests/servers'; // Prevent Vite from attempting to clear the screen process.stdout.isTTY = false; @@ -13,8 +14,15 @@ const config: PlaywrightTestConfig = defineConfig({ maxDiffPixelRatio: 0.02, }, }, + webServer: NEXT_SERVERS.map((server) => ({ + command: server.script + ` --port ${server.port}`, + env: { NODE_ENV: server.isProduction ? 'production' : 'development' }, + url: `http://localhost:${server.port}`, + reuseExistingServer: !process.env.CI, + })), workers: process.env.CI ? cpus().length : undefined, retries: process.env.CI ? 2 : 0, + timeout: 120_000, forbidOnly: !!process.env.CI, snapshotDir: 'tests/e2e/snapshots', // put all snapshots in one directory diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index aef100821..b14088317 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,19 +22,19 @@ importers: version: 7.23.3(@babel/core@7.23.9) '@changesets/changelog-github': specifier: ^0.5.0 - version: 0.5.2 + version: 0.5.0 '@changesets/cli': specifier: ^2.27.8 - version: 2.29.8(@types/node@22.15.3) + version: 2.27.8 '@manypkg/cli': specifier: ^0.25.1 version: 0.25.1 '@playwright/test': - specifier: ^1.43.1 - version: 1.43.1 + specifier: ^1.57.0 + version: 1.57.0 '@preconstruct/cli': specifier: ^2.8.2 - version: 2.8.12 + version: 2.8.2 '@testing-library/jest-dom': specifier: ^6.4.2 version: 6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.15.3)(ts-node@10.9.1(@swc/core@1.15.3)(@types/node@22.15.3)(typescript@5.8.3)))(vitest@4.0.13(@types/node@22.15.3)(jsdom@20.0.3)(terser@5.26.0)(tsx@4.20.6)) @@ -295,8 +295,8 @@ importers: specifier: workspace:* version: link:../../packages/sprinkles next: - specifier: npm:next@13.5.4 - version: 13.5.4(@babel/core@7.23.9)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: npm:next@13.5.11 + version: 13.5.11(@babel/core@7.23.9)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: specifier: ^18.2.0 version: 18.2.0 @@ -336,7 +336,7 @@ importers: version: link:../../packages/sprinkles next: specifier: npm:next@^16.0.0 - version: 16.0.5(@babel/core@7.23.9)(@playwright/test@1.43.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + version: 16.0.5(@babel/core@7.23.9)(@playwright/test@1.57.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) react: specifier: npm:react@^19.2.0 version: 19.2.0 @@ -1032,9 +1032,6 @@ importers: tests: dependencies: - '@playwright/test': - specifier: ^1.43.1 - version: 1.43.1 '@testing-library/dom': specifier: ^10.0.0 version: 10.0.0 @@ -1852,66 +1849,66 @@ packages: peerDependencies: '@vanilla-extract/css': ^1.2.1 - '@changesets/apply-release-plan@7.0.14': - resolution: {integrity: sha512-ddBvf9PHdy2YY0OUiEl3TV78mH9sckndJR14QAt87KLEbIov81XO0q0QAmvooBxXlqRRP8I9B7XOzZwQG7JkWA==} + '@changesets/apply-release-plan@7.0.5': + resolution: {integrity: sha512-1cWCk+ZshEkSVEZrm2fSj1Gz8sYvxgUL4Q78+1ZZqeqfuevPTPk033/yUZ3df8BKMohkqqHfzj0HOOrG0KtXTw==} - '@changesets/assemble-release-plan@6.0.9': - resolution: {integrity: sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==} + '@changesets/assemble-release-plan@6.0.4': + resolution: {integrity: sha512-nqICnvmrwWj4w2x0fOhVj2QEGdlUuwVAwESrUo5HLzWMI1rE5SWfsr9ln+rDqWB6RQ2ZyaMZHUcU7/IRaUJS+Q==} - '@changesets/changelog-git@0.2.1': - resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} + '@changesets/changelog-git@0.2.0': + resolution: {integrity: sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==} - '@changesets/changelog-github@0.5.2': - resolution: {integrity: sha512-HeGeDl8HaIGj9fQHo/tv5XKQ2SNEi9+9yl1Bss1jttPqeiASRXhfi0A2wv8yFKCp07kR1gpOI5ge6+CWNm1jPw==} + '@changesets/changelog-github@0.5.0': + resolution: {integrity: sha512-zoeq2LJJVcPJcIotHRJEEA2qCqX0AQIeFE+L21L8sRLPVqDhSXY8ZWAt2sohtBpFZkBwu+LUwMSKRr2lMy3LJA==} - '@changesets/cli@2.29.8': - resolution: {integrity: sha512-1weuGZpP63YWUYjay/E84qqwcnt5yJMM0tep10Up7Q5cS/DGe2IZ0Uj3HNMxGhCINZuR7aO9WBMdKnPit5ZDPA==} + '@changesets/cli@2.27.8': + resolution: {integrity: sha512-gZNyh+LdSsI82wBSHLQ3QN5J30P4uHKJ4fXgoGwQxfXwYFTJzDdvIJasZn8rYQtmKhyQuiBj4SSnLuKlxKWq4w==} hasBin: true - '@changesets/config@3.1.2': - resolution: {integrity: sha512-CYiRhA4bWKemdYi/uwImjPxqWNpqGPNbEBdX1BdONALFIDK7MCUj6FPkzD+z9gJcvDFUQJn9aDVf4UG7OT6Kog==} + '@changesets/config@3.0.3': + resolution: {integrity: sha512-vqgQZMyIcuIpw9nqFIpTSNyc/wgm/Lu1zKN5vECy74u95Qx/Wa9g27HdgO4NkVAaq+BGA8wUc/qvbvVNs93n6A==} '@changesets/errors@0.2.0': resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} - '@changesets/get-dependents-graph@2.1.3': - resolution: {integrity: sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==} + '@changesets/get-dependents-graph@2.1.2': + resolution: {integrity: sha512-sgcHRkiBY9i4zWYBwlVyAjEM9sAzs4wYVwJUdnbDLnVG3QwAaia1Mk5P8M7kraTOZN+vBET7n8KyB0YXCbFRLQ==} - '@changesets/get-github-info@0.7.0': - resolution: {integrity: sha512-+i67Bmhfj9V4KfDeS1+Tz3iF32btKZB2AAx+cYMqDSRFP7r3/ZdGbjCo+c6qkyViN9ygDuBjzageuPGJtKGe5A==} + '@changesets/get-github-info@0.6.0': + resolution: {integrity: sha512-v/TSnFVXI8vzX9/w3DU2Ol+UlTZcu3m0kXTjTT4KlAdwSvwutcByYwyYn9hwerPWfPkT2JfpoX0KgvCEi8Q/SA==} - '@changesets/get-release-plan@4.0.14': - resolution: {integrity: sha512-yjZMHpUHgl4Xl5gRlolVuxDkm4HgSJqT93Ri1Uz8kGrQb+5iJ8dkXJ20M2j/Y4iV5QzS2c5SeTxVSKX+2eMI0g==} + '@changesets/get-release-plan@4.0.4': + resolution: {integrity: sha512-SicG/S67JmPTrdcc9Vpu0wSQt7IiuN0dc8iR5VScnnTVPfIaLvKmEGRvIaF0kcn8u5ZqLbormZNTO77bCEvyWw==} '@changesets/get-version-range-type@0.4.0': resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} - '@changesets/git@3.0.4': - resolution: {integrity: sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==} + '@changesets/git@3.0.1': + resolution: {integrity: sha512-pdgHcYBLCPcLd82aRcuO0kxCDbw/yISlOtkmwmE8Odo1L6hSiZrBOsRl84eYG7DRCab/iHnOkWqExqc4wxk2LQ==} '@changesets/logger@0.1.1': resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} - '@changesets/parse@0.4.2': - resolution: {integrity: sha512-Uo5MC5mfg4OM0jU3up66fmSn6/NE9INK+8/Vn/7sMVcdWg46zfbvvUSjD9EMonVqPi9fbrJH9SXHn48Tr1f2yA==} + '@changesets/parse@0.4.0': + resolution: {integrity: sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==} - '@changesets/pre@2.0.2': - resolution: {integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==} + '@changesets/pre@2.0.1': + resolution: {integrity: sha512-vvBJ/If4jKM4tPz9JdY2kGOgWmCowUYOi5Ycv8dyLnEE8FgpYYUo1mgJZxcdtGGP3aG8rAQulGLyyXGSLkIMTQ==} - '@changesets/read@0.6.6': - resolution: {integrity: sha512-P5QaN9hJSQQKJShzzpBT13FzOSPyHbqdoIBUd2DJdgvnECCyO6LmAOWSV+O8se2TaZJVwSXjL+v9yhb+a9JeJg==} + '@changesets/read@0.6.1': + resolution: {integrity: sha512-jYMbyXQk3nwP25nRzQQGa1nKLY0KfoOV7VLgwucI0bUO8t8ZLCr6LZmgjXsiKuRDc+5A6doKPr9w2d+FEJ55zQ==} - '@changesets/should-skip-package@0.1.2': - resolution: {integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==} + '@changesets/should-skip-package@0.1.1': + resolution: {integrity: sha512-H9LjLbF6mMHLtJIc/eHR9Na+MifJ3VxtgP/Y+XLn4BF7tDTEN1HNYtH6QMcjP1uxp9sjaFYmW8xqloaCi/ckTg==} - '@changesets/types@4.1.0': - resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} + '@changesets/types@4.0.1': + resolution: {integrity: sha512-zVfv752D8K2tjyFmxU/vnntQ+dPu+9NupOSguA/2Zuym4tVxRh0ylArgKZ1bOAi2eXfGlZMxJU/kj7uCSI15RQ==} - '@changesets/types@6.1.0': - resolution: {integrity: sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==} + '@changesets/types@6.0.0': + resolution: {integrity: sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==} - '@changesets/write@0.4.0': - resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} + '@changesets/write@0.3.2': + resolution: {integrity: sha512-kDxDrPNpUgsjDbWBvUo27PzKX4gqeKOlhibaOXDJA6kuBisGqNHv/HwGJrAu8U/dSf8ZEFIeHIPtvSlZI1kULw==} '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} @@ -2814,15 +2811,6 @@ packages: '@import-maps/resolve@1.0.1': resolution: {integrity: sha512-tWZNBIS1CoekcwlMuyG2mr0a1Wo5lb5lEHwwWvZo+5GLgr3e9LLDTtmgtCWEwBpXMkxn9D+2W9j2FY6eZQq0tA==} - '@inquirer/external-editor@1.0.3': - resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -3364,8 +3352,8 @@ packages: '@next/env@12.3.4': resolution: {integrity: sha512-H/69Lc5Q02dq3o+dxxy5O/oNxFsZpdL6WREtOOtOM1B/weonIwDXkekr1KV5DPVPr12IHFPrMrcJQ6bgPMfn7A==} - '@next/env@13.5.4': - resolution: {integrity: sha512-LGegJkMvRNw90WWphGJ3RMHMVplYcOfRWf2Be3td3sUa+1AaxmsYyANsA+znrGCBjXJNi4XAQlSoEfUxs/4kIQ==} + '@next/env@13.5.11': + resolution: {integrity: sha512-fbb2C7HChgM7CemdCY+y3N1n8pcTKdqtQLbC7/EQtPdLvlMUT9JX/dBYl8MMZAtYG4uVMyPFHXckb68q/NRwqg==} '@next/env@16.0.5': resolution: {integrity: sha512-jRLOw822AE6aaIm9oh0NrauZEM0Vtx5xhYPgqx89txUmv/UmcRwpcXmGeQOvYNT/1bakUwA+nG5CA74upYVVDw==} @@ -3388,8 +3376,8 @@ packages: cpu: [arm64] os: [darwin] - '@next/swc-darwin-arm64@13.5.4': - resolution: {integrity: sha512-Df8SHuXgF1p+aonBMcDPEsaahNo2TCwuie7VXED4FVyECvdXfRT9unapm54NssV9tF3OQFKBFOdlje4T43VO0w==} + '@next/swc-darwin-arm64@13.5.9': + resolution: {integrity: sha512-pVyd8/1y1l5atQRvOaLOvfbmRwefxLhqQOzYo/M7FQ5eaRwA1+wuCn7t39VwEgDd7Aw1+AIWwd+MURXUeXhwDw==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -3406,8 +3394,8 @@ packages: cpu: [x64] os: [darwin] - '@next/swc-darwin-x64@13.5.4': - resolution: {integrity: sha512-siPuUwO45PnNRMeZnSa8n/Lye5ZX93IJom9wQRB5DEOdFrw0JjOMu1GINB8jAEdwa7Vdyn1oJ2xGNaQpdQQ9Pw==} + '@next/swc-darwin-x64@13.5.9': + resolution: {integrity: sha512-DwdeJqP7v8wmoyTWPbPVodTwCybBZa02xjSJ6YQFIFZFZ7dFgrieKW4Eo0GoIcOJq5+JxkQyejmI+8zwDp3pwA==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -3436,8 +3424,8 @@ packages: cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-gnu@13.5.4': - resolution: {integrity: sha512-l/k/fvRP/zmB2jkFMfefmFkyZbDkYW0mRM/LB+tH5u9pB98WsHXC0WvDHlGCYp3CH/jlkJPL7gN8nkTQVrQ/2w==} + '@next/swc-linux-arm64-gnu@13.5.9': + resolution: {integrity: sha512-wdQsKsIsGSNdFojvjW3Ozrh8Q00+GqL3wTaMjDkQxVtRbAqfFBtrLPO0IuWChVUP2UeuQcHpVeUvu0YgOP00+g==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -3454,8 +3442,8 @@ packages: cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@13.5.4': - resolution: {integrity: sha512-YYGb7SlLkI+XqfQa8VPErljb7k9nUnhhRrVaOdfJNCaQnHBcvbT7cx/UjDQLdleJcfyg1Hkn5YSSIeVfjgmkTg==} + '@next/swc-linux-arm64-musl@13.5.9': + resolution: {integrity: sha512-6VpS+bodQqzOeCwGxoimlRoosiWlSc0C224I7SQWJZoyJuT1ChNCo+45QQH+/GtbR/s7nhaUqmiHdzZC9TXnXA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -3472,8 +3460,8 @@ packages: cpu: [x64] os: [linux] - '@next/swc-linux-x64-gnu@13.5.4': - resolution: {integrity: sha512-uE61vyUSClnCH18YHjA8tE1prr/PBFlBFhxBZis4XBRJoR+txAky5d7gGNUIbQ8sZZ7LVkSVgm/5Fc7mwXmRAg==} + '@next/swc-linux-x64-gnu@13.5.9': + resolution: {integrity: sha512-XxG3yj61WDd28NA8gFASIR+2viQaYZEFQagEodhI/R49gXWnYhiflTeeEmCn7Vgnxa/OfK81h1gvhUZ66lozpw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -3490,8 +3478,8 @@ packages: cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@13.5.4': - resolution: {integrity: sha512-qVEKFYML/GvJSy9CfYqAdUexA6M5AklYcQCW+8JECmkQHGoPxCf04iMh7CPR7wkHyWWK+XLt4Ja7hhsPJtSnhg==} + '@next/swc-linux-x64-musl@13.5.9': + resolution: {integrity: sha512-/dnscWqfO3+U8asd+Fc6dwL2l9AZDl7eKtPNKW8mKLh4Y4wOpjJiamhe8Dx+D+Oq0GYVjuW0WwjIxYWVozt2bA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -3508,8 +3496,8 @@ packages: cpu: [arm64] os: [win32] - '@next/swc-win32-arm64-msvc@13.5.4': - resolution: {integrity: sha512-mDSQfqxAlfpeZOLPxLymZkX0hYF3juN57W6vFHTvwKlnHfmh12Pt7hPIRLYIShk8uYRsKPtMTth/EzpwRI+u8w==} + '@next/swc-win32-arm64-msvc@13.5.9': + resolution: {integrity: sha512-T/iPnyurOK5a4HRUcxAlss8uzoEf5h9tkd+W2dSWAfzxv8WLKlUgbfk+DH43JY3Gc2xK5URLuXrxDZ2mGfk/jw==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -3526,8 +3514,8 @@ packages: cpu: [ia32] os: [win32] - '@next/swc-win32-ia32-msvc@13.5.4': - resolution: {integrity: sha512-aoqAT2XIekIWoriwzOmGFAvTtVY5O7JjV21giozBTP5c6uZhpvTWRbmHXbmsjZqY4HnEZQRXWkSAppsIBweKqw==} + '@next/swc-win32-ia32-msvc@13.5.9': + resolution: {integrity: sha512-BLiPKJomaPrTAb7ykjA0LPcuuNMLDVK177Z1xe0nAem33+9FIayU4k/OWrtSn9SAJW/U60+1hoey5z+KCHdRLQ==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -3538,8 +3526,8 @@ packages: cpu: [x64] os: [win32] - '@next/swc-win32-x64-msvc@13.5.4': - resolution: {integrity: sha512-cyRvlAxwlddlqeB9xtPSfNSCRy8BOa4wtMo0IuI9P7Y0XT2qpDrpFKRyZ7kUngZis59mPVla5k8X1oOJ8RxDYg==} + '@next/swc-win32-x64-msvc@13.5.9': + resolution: {integrity: sha512-/72/dZfjXXNY/u+n8gqZDjI6rxKMpYsgBBYNZKWOQw0BpBF7WCnPflRy3ZtvQ2+IYI3ZH2bPyj7K+6a6wNk90Q==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -3990,10 +3978,9 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@playwright/test@1.43.1': - resolution: {integrity: sha512-HgtQzFgNEEo4TE22K/X7sYTYNqEMMTZmFS8kTq6m8hXj+m1D8TgwgIbumHddJa9h4yl4GkKb8/bgAl2+g7eDgA==} - engines: {node: '>=16'} - deprecated: Please update to the latest version of Playwright to test up-to-date browsers. + '@playwright/test@1.57.0': + resolution: {integrity: sha512-6TyEnHgd6SArQO8UO2OMTxshln3QMWBtPGrOCgs3wVEmQmwyuNtB10IZMfmYDE0riwNR1cu4q+pPcxMVtaG3TA==} + engines: {node: '>=18'} hasBin: true '@pnpm/config.env-replace@1.1.0': @@ -4004,15 +3991,15 @@ packages: resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} engines: {node: '>=12.22.0'} - '@pnpm/npm-conf@2.3.1': - resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==} + '@pnpm/npm-conf@2.2.2': + resolution: {integrity: sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==} engines: {node: '>=12'} '@polka/url@1.0.0-next.24': resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} - '@preconstruct/cli@2.8.12': - resolution: {integrity: sha512-SMsMICUWROmu/vb4cmrk7EJUiWhgNjB3U3tM654K9bu9yECXqrPN473vliO7KPV3CSLhmtl3S4nfcMirEJmyZg==} + '@preconstruct/cli@2.8.2': + resolution: {integrity: sha512-/nra7Arq622kVCfvQi4nhrZN+0m1OVq0PAuUcMLKNUR8O/JHOmesultWpeTGB17HzYEx8qYWO11QaTF7oz1yAQ==} hasBin: true '@preconstruct/hook@0.4.0': @@ -4180,8 +4167,8 @@ packages: '@rolldown/pluginutils@1.0.0-beta.27': resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==} - '@rollup/plugin-alias@3.1.9': - resolution: {integrity: sha512-QI5fsEvm9bDzt32k39wpOwZhVzRcL5ydcffUHMyLVaVaLeC70I8TJZ17F1z1eMoLu4E/UOcH9BWVkKpIKdrfiw==} + '@rollup/plugin-alias@3.1.8': + resolution: {integrity: sha512-tf7HeSs/06wO2LPqKNY3Ckbvy0JRe7Jyn98bXnt/gfrxbe+AJucoNJlsEVi9sdgbQtXemjbakCpO/76JVgnHpA==} engines: {node: '>=8.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0 @@ -4694,8 +4681,8 @@ packages: '@types/node-forge@1.3.11': resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} - '@types/node@12.20.55': - resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + '@types/node@12.20.37': + resolution: {integrity: sha512-i1KGxqcvJaLQali+WuypQnXwcplhtNtjs66eNsZpp2P2FL/trJJxx/VWsM0YCL2iMoIJrbXje48lvIQAQ4p2ZA==} '@types/node@16.11.10': resolution: {integrity: sha512-3aRnHa1KlOEEhJ6+CvyHKK5vE9BcLGjtUpwvqYLRvYNQKMfabu3BwfJaA/SLW8dxe28LsNDjtHwePTuzn3gmOA==} @@ -4784,8 +4771,8 @@ packages: '@types/tapable@1.0.8': resolution: {integrity: sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ==} - '@types/tough-cookie@4.0.5': - resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + '@types/tough-cookie@4.0.2': + resolution: {integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==} '@types/uglify-js@3.13.1': resolution: {integrity: sha512-O3MmRAk6ZuAKa9CHgg0Pr0+lUOqoMLpc9AS4R8ano2auvsg7IE8syF3Xh/NPr26TWklxYcqoEEFdzLLs1fV9PQ==} @@ -5240,6 +5227,10 @@ packages: resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} engines: {node: '>=0.10.0'} + arrify@1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + arrify@2.0.1: resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} engines: {node: '>=8'} @@ -5440,10 +5431,6 @@ packages: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - browserify-zlib@0.1.4: resolution: {integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==} @@ -5569,6 +5556,10 @@ packages: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} + camelcase-keys@6.2.2: + resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} + engines: {node: '>=8'} + camelcase@5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} @@ -5648,9 +5639,6 @@ packages: chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - chardet@2.1.1: - resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} - chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} @@ -5996,14 +5984,13 @@ packages: engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} hasBin: true + cross-spawn@5.1.0: + resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} + cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} - cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} - crypto-random-string@2.0.0: resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} engines: {node: '>=8'} @@ -6114,8 +6101,8 @@ packages: dataloader@1.4.0: resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} - dataloader@2.2.3: - resolution: {integrity: sha512-y2krtASINtPFS1rSDjacrFgn1dcUuoREVabwlOGOe4SdxenREqwjwjElAdwvbGM7kgZz9a3KVicWR7vcz8rnzA==} + dataloader@2.0.0: + resolution: {integrity: sha512-YzhyDAwA4TaQIhM5go+vCLmU0UikghC/t9DTQYZR2M/UvZ1MdOhPezSDZcjj9uqQJOMqjLcpWtyW2iNINdlatQ==} date-fns@1.30.1: resolution: {integrity: sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==} @@ -6152,6 +6139,14 @@ packages: decache@4.6.1: resolution: {integrity: sha512-ohApBM8u9ygepJCjgBrEZSSxPjc0T/PJkD+uNyxXPkqudyUpdXpwJYp0VISm2WrPVzASU6DZyIi6BWdyw7uJ2Q==} + decamelize-keys@1.1.0: + resolution: {integrity: sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==} + engines: {node: '>=0.10.0'} + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} @@ -6526,8 +6521,8 @@ packages: resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} engines: {node: '>=10.13.0'} - enquirer@2.4.1: - resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + enquirer@2.3.6: + resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} engines: {node: '>=8.6'} entities@2.2.0: @@ -6931,10 +6926,6 @@ packages: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - filter-obj@2.0.2: resolution: {integrity: sha512-lO3ttPjHZRfjMcxWKb1j1eDhTFsu4meeR3lnMcnBFhk6RuLhvEiuALu2TlfL310ph4lCYYwgF/ElIjdP739tdg==} engines: {node: '>=8'} @@ -7281,6 +7272,10 @@ packages: handle-thing@2.0.1: resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} + hard-rejection@2.1.0: + resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} + engines: {node: '>=6'} + has-ansi@0.1.0: resolution: {integrity: sha512-1YsTg1fk2/6JToQhtZkArMkurq8UoWU1Qe0aR3VUHjgij4nOylSWLWAtBXoZ4/dXOmugfLGm1c+QhuD0JyedFA==} engines: {node: '>=0.10.0'} @@ -7535,9 +7530,8 @@ packages: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} - human-id@4.1.3: - resolution: {integrity: sha512-tsYlhAYpjCKa//8rXZ9DqKEawhPoSytweBC2eNvcaDK+57RZLHGqNs3PZTQO6yekLFSuvA6AlnAfrw1uBvtb+Q==} - hasBin: true + human-id@1.0.2: + resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} @@ -7559,10 +7553,6 @@ packages: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} - iconv-lite@0.7.0: - resolution: {integrity: sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==} - engines: {node: '>=0.10.0'} - icss-utils@5.1.0: resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} engines: {node: ^10 || ^12 || >= 14} @@ -8232,10 +8222,6 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true - js-yaml@4.1.1: - resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} - hasBin: true - jsdom@20.0.3: resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} engines: {node: '>=14'} @@ -8635,6 +8621,9 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@4.1.5: + resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -8658,8 +8647,8 @@ packages: resolution: {integrity: sha512-/M/R0gCDgM+Cv1IuBG1XGdfTFnMEG6PZeT+KGWHO/OG+imqmaD9CH5vHBTycEM3+Kc4uG2Il+tFAuUWLqQOeUA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - magic-string@0.25.9: - resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} + magic-string@0.25.7: + resolution: {integrity: sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==} magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} @@ -8689,6 +8678,14 @@ packages: resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} engines: {node: '>=0.10.0'} + map-obj@1.0.1: + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + engines: {node: '>=0.10.0'} + + map-obj@4.3.0: + resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} + engines: {node: '>=8'} + map-obj@5.0.2: resolution: {integrity: sha512-K6K2NgKnTXimT3779/4KxSvobxOtMmx1LBZ3NwRxT/MDIR3Br/fQ4Q+WCX5QxjyUR8zg5+RV9Tbf2c5pAWTD2A==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -8801,6 +8798,10 @@ packages: memoize-one@6.0.0: resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} + meow@7.1.1: + resolution: {integrity: sha512-GWHvA5QOcS412WCo8vwKDlTelGLsCGBVevQB5Kva961rmNfun0PCbv5+xta2kUMFJyR8/oWnn7ddeKdosbAPbA==} + engines: {node: '>=10'} + merge-descriptors@1.0.3: resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} @@ -8920,10 +8921,6 @@ packages: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} - micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} - mime-db@1.33.0: resolution: {integrity: sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==} engines: {node: '>= 0.6'} @@ -8998,6 +8995,10 @@ packages: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} engines: {node: '>=16 || 14 >=14.17'} + minimist-options@4.1.0: + resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} + engines: {node: '>= 6'} + minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -9170,8 +9171,8 @@ packages: sass: optional: true - next@13.5.4: - resolution: {integrity: sha512-+93un5S779gho8y9ASQhb/bTkQF17FNQOtXLKAj3lsNgltEcF0C5PMLLncDmH+8X1EnJH1kbqAERa29nRXqhjA==} + next@13.5.11: + resolution: {integrity: sha512-WUPJ6WbAX9tdC86kGTu92qkrRdgRqVrY++nwM+shmWQwmyxt4zhZfR59moXSI4N8GDYCBY3lIAqhzjDd4rTC8Q==} engines: {node: '>=16.14.0'} hasBin: true peerDependencies: @@ -9720,8 +9721,8 @@ packages: resolution: {integrity: sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==} engines: {node: '>=8'} - package-manager-detector@0.2.11: - resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==} + package-manager-detector@0.2.0: + resolution: {integrity: sha512-E385OSk9qDcXhcM9LNSe4sdhx8a9mAPrZ4sMLW+tmxl5ZuGtPUcdFu+MPP2jbgiWAZ6Pfe5soGFMd+0Db5Vrog==} pako@0.2.9: resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} @@ -9927,14 +9928,14 @@ packages: pkg-types@1.0.3: resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} - playwright-core@1.43.1: - resolution: {integrity: sha512-EI36Mto2Vrx6VF7rm708qSnesVQKbxEWvPrfA1IPY6HgczBplDx7ENtx+K2n4kJ41sLLkuGfmb0ZLSSXlDhqPg==} - engines: {node: '>=16'} + playwright-core@1.57.0: + resolution: {integrity: sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==} + engines: {node: '>=18'} hasBin: true - playwright@1.43.1: - resolution: {integrity: sha512-V7SoH0ai2kNt1Md9E3Gwas5B9m8KR2GVvwZnAI6Pg0m3sh7UvgiYhRrhsziCmqMJNouPckiOhk8T+9bSAK0VIA==} - engines: {node: '>=16'} + playwright@1.57.0: + resolution: {integrity: sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==} + engines: {node: '>=18'} hasBin: true polished@4.1.3: @@ -10314,6 +10315,9 @@ packages: resolution: {integrity: sha512-NoGBqJe7Ou3kfQxEvDzDyKGAyEgwIuD3YrfXinjcCmBRv0hTld0Xb71hrXvtsNPj7HSFATfemvzB8PPJtq6Yag==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + pseudomap@1.0.2: + resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} + psl@1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} @@ -10351,9 +10355,6 @@ packages: resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} - quansync@0.2.11: - resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} - query-string@5.1.1: resolution: {integrity: sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==} engines: {node: '>=0.10.0'} @@ -10364,6 +10365,10 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + quick-lru@4.0.1: + resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} + engines: {node: '>=8'} + quick-lru@5.1.1: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} @@ -10549,8 +10554,8 @@ packages: resolution: {integrity: sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==} engines: {node: '>=6.0.0'} - registry-auth-token@5.1.0: - resolution: {integrity: sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw==} + registry-auth-token@5.0.2: + resolution: {integrity: sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==} engines: {node: '>=14'} registry-url@5.1.0: @@ -10766,8 +10771,8 @@ packages: rollup-pluginutils@2.8.2: resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} - rollup@2.79.2: - resolution: {integrity: sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==} + rollup@2.79.1: + resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} engines: {node: '>=10.0.0'} hasBin: true @@ -10924,10 +10929,18 @@ packages: resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} + shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} @@ -11069,8 +11082,8 @@ packages: space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - spawndamnit@3.0.1: - resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==} + spawndamnit@2.0.0: + resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} spdx-correct@3.1.1: resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} @@ -11607,6 +11620,10 @@ packages: trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + trim-newlines@3.0.1: + resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} + engines: {node: '>=8'} + trim-repeated@1.0.0: resolution: {integrity: sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==} engines: {node: '>=0.10.0'} @@ -11690,6 +11707,10 @@ packages: resolution: {integrity: sha512-EUV9jo4sffrwlg8s0zDhP0T2WD3pru5Xi0+HTE3zTUmBaZNhfkite9PdSJwdXLwPVW0jnAHT56pZHIOYckPEiw==} engines: {node: '>=8'} + type-fest@0.13.1: + resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} + engines: {node: '>=10'} + type-fest@0.16.0: resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} engines: {node: '>=10'} @@ -12004,8 +12025,8 @@ packages: v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - v8-compile-cache@2.4.0: - resolution: {integrity: sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==} + v8-compile-cache@2.3.0: + resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} v8-to-istanbul@9.0.1: resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==} @@ -12351,6 +12372,10 @@ packages: resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} engines: {node: '>= 0.4'} + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -12463,6 +12488,9 @@ packages: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} + yallist@2.1.2: + resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} + yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} @@ -12477,6 +12505,10 @@ packages: resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} engines: {node: '>= 14'} + yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} + yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} @@ -12516,8 +12548,8 @@ packages: resolution: {integrity: sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==} engines: {node: '>= 10'} - zod@3.25.76: - resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + zod@3.22.4: + resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} zwitch@1.0.5: resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==} @@ -13524,13 +13556,13 @@ snapshots: '@capsizecss/core': 3.0.0 '@vanilla-extract/css': link:packages/css - '@changesets/apply-release-plan@7.0.14': + '@changesets/apply-release-plan@7.0.5': dependencies: - '@changesets/config': 3.1.2 + '@changesets/config': 3.0.3 '@changesets/get-version-range-type': 0.4.0 - '@changesets/git': 3.0.4 - '@changesets/should-skip-package': 0.1.2 - '@changesets/types': 6.1.0 + '@changesets/git': 3.0.1 + '@changesets/should-skip-package': 0.1.1 + '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 detect-indent: 6.1.0 fs-extra: 7.0.1 @@ -13540,147 +13572,147 @@ snapshots: resolve-from: 5.0.0 semver: 7.7.3 - '@changesets/assemble-release-plan@6.0.9': + '@changesets/assemble-release-plan@6.0.4': dependencies: '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.1.3 - '@changesets/should-skip-package': 0.1.2 - '@changesets/types': 6.1.0 + '@changesets/get-dependents-graph': 2.1.2 + '@changesets/should-skip-package': 0.1.1 + '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 semver: 7.7.3 - '@changesets/changelog-git@0.2.1': + '@changesets/changelog-git@0.2.0': dependencies: - '@changesets/types': 6.1.0 + '@changesets/types': 6.0.0 - '@changesets/changelog-github@0.5.2': + '@changesets/changelog-github@0.5.0': dependencies: - '@changesets/get-github-info': 0.7.0 - '@changesets/types': 6.1.0 + '@changesets/get-github-info': 0.6.0 + '@changesets/types': 6.0.0 dotenv: 8.6.0 transitivePeerDependencies: - encoding - '@changesets/cli@2.29.8(@types/node@22.15.3)': + '@changesets/cli@2.27.8': dependencies: - '@changesets/apply-release-plan': 7.0.14 - '@changesets/assemble-release-plan': 6.0.9 - '@changesets/changelog-git': 0.2.1 - '@changesets/config': 3.1.2 + '@changesets/apply-release-plan': 7.0.5 + '@changesets/assemble-release-plan': 6.0.4 + '@changesets/changelog-git': 0.2.0 + '@changesets/config': 3.0.3 '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.1.3 - '@changesets/get-release-plan': 4.0.14 - '@changesets/git': 3.0.4 + '@changesets/get-dependents-graph': 2.1.2 + '@changesets/get-release-plan': 4.0.4 + '@changesets/git': 3.0.1 '@changesets/logger': 0.1.1 - '@changesets/pre': 2.0.2 - '@changesets/read': 0.6.6 - '@changesets/should-skip-package': 0.1.2 - '@changesets/types': 6.1.0 - '@changesets/write': 0.4.0 - '@inquirer/external-editor': 1.0.3(@types/node@22.15.3) + '@changesets/pre': 2.0.1 + '@changesets/read': 0.6.1 + '@changesets/should-skip-package': 0.1.1 + '@changesets/types': 6.0.0 + '@changesets/write': 0.3.2 '@manypkg/get-packages': 1.1.3 + '@types/semver': 7.7.1 ansi-colors: 4.1.3 ci-info: 3.9.0 - enquirer: 2.4.1 + enquirer: 2.3.6 + external-editor: 3.1.0 fs-extra: 7.0.1 mri: 1.2.0 + outdent: 0.5.0 p-limit: 2.3.0 - package-manager-detector: 0.2.11 + package-manager-detector: 0.2.0 picocolors: 1.1.1 resolve-from: 5.0.0 semver: 7.7.3 - spawndamnit: 3.0.1 + spawndamnit: 2.0.0 term-size: 2.2.1 - transitivePeerDependencies: - - '@types/node' - '@changesets/config@3.1.2': + '@changesets/config@3.0.3': dependencies: '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.1.3 + '@changesets/get-dependents-graph': 2.1.2 '@changesets/logger': 0.1.1 - '@changesets/types': 6.1.0 + '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 - micromatch: 4.0.8 + micromatch: 4.0.5 '@changesets/errors@0.2.0': dependencies: extendable-error: 0.1.7 - '@changesets/get-dependents-graph@2.1.3': + '@changesets/get-dependents-graph@2.1.2': dependencies: - '@changesets/types': 6.1.0 + '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 picocolors: 1.1.1 semver: 7.7.3 - '@changesets/get-github-info@0.7.0': + '@changesets/get-github-info@0.6.0': dependencies: dataloader: 1.4.0 node-fetch: 2.6.7 transitivePeerDependencies: - encoding - '@changesets/get-release-plan@4.0.14': + '@changesets/get-release-plan@4.0.4': dependencies: - '@changesets/assemble-release-plan': 6.0.9 - '@changesets/config': 3.1.2 - '@changesets/pre': 2.0.2 - '@changesets/read': 0.6.6 - '@changesets/types': 6.1.0 + '@changesets/assemble-release-plan': 6.0.4 + '@changesets/config': 3.0.3 + '@changesets/pre': 2.0.1 + '@changesets/read': 0.6.1 + '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 '@changesets/get-version-range-type@0.4.0': {} - '@changesets/git@3.0.4': + '@changesets/git@3.0.1': dependencies: '@changesets/errors': 0.2.0 '@manypkg/get-packages': 1.1.3 is-subdir: 1.2.0 - micromatch: 4.0.8 - spawndamnit: 3.0.1 + micromatch: 4.0.5 + spawndamnit: 2.0.0 '@changesets/logger@0.1.1': dependencies: picocolors: 1.1.1 - '@changesets/parse@0.4.2': + '@changesets/parse@0.4.0': dependencies: - '@changesets/types': 6.1.0 - js-yaml: 4.1.1 + '@changesets/types': 6.0.0 + js-yaml: 3.14.1 - '@changesets/pre@2.0.2': + '@changesets/pre@2.0.1': dependencies: '@changesets/errors': 0.2.0 - '@changesets/types': 6.1.0 + '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 - '@changesets/read@0.6.6': + '@changesets/read@0.6.1': dependencies: - '@changesets/git': 3.0.4 + '@changesets/git': 3.0.1 '@changesets/logger': 0.1.1 - '@changesets/parse': 0.4.2 - '@changesets/types': 6.1.0 + '@changesets/parse': 0.4.0 + '@changesets/types': 6.0.0 fs-extra: 7.0.1 p-filter: 2.1.0 picocolors: 1.1.1 - '@changesets/should-skip-package@0.1.2': + '@changesets/should-skip-package@0.1.1': dependencies: - '@changesets/types': 6.1.0 + '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 - '@changesets/types@4.1.0': {} + '@changesets/types@4.0.1': {} - '@changesets/types@6.1.0': {} + '@changesets/types@6.0.0': {} - '@changesets/write@0.4.0': + '@changesets/write@0.3.2': dependencies: - '@changesets/types': 6.1.0 + '@changesets/types': 6.0.0 fs-extra: 7.0.1 - human-id: 4.1.3 + human-id: 1.0.2 prettier: 2.8.8 '@colors/colors@1.5.0': {} @@ -13725,7 +13757,7 @@ snapshots: '@emnapi/runtime@1.7.1': dependencies: - tslib: 2.8.1 + tslib: 2.5.0 optional: true '@emnapi/wasi-threads@1.0.3': @@ -14191,13 +14223,6 @@ snapshots: '@import-maps/resolve@1.0.1': {} - '@inquirer/external-editor@1.0.3(@types/node@22.15.3)': - dependencies: - chardet: 2.1.1 - iconv-lite: 0.7.0 - optionalDependencies: - '@types/node': 22.15.3 - '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -14426,21 +14451,21 @@ snapshots: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.5.5 - '@jsonjoy.com/base64@1.1.2(tslib@2.8.1)': + '@jsonjoy.com/base64@1.1.2(tslib@2.5.0)': dependencies: - tslib: 2.8.1 + tslib: 2.5.0 - '@jsonjoy.com/json-pack@1.1.0(tslib@2.8.1)': + '@jsonjoy.com/json-pack@1.1.0(tslib@2.5.0)': dependencies: - '@jsonjoy.com/base64': 1.1.2(tslib@2.8.1) - '@jsonjoy.com/util': 1.3.0(tslib@2.8.1) + '@jsonjoy.com/base64': 1.1.2(tslib@2.5.0) + '@jsonjoy.com/util': 1.3.0(tslib@2.5.0) hyperdyperid: 1.2.0 - thingies: 1.21.0(tslib@2.8.1) - tslib: 2.8.1 + thingies: 1.21.0(tslib@2.5.0) + tslib: 2.5.0 - '@jsonjoy.com/util@1.3.0(tslib@2.8.1)': + '@jsonjoy.com/util@1.3.0(tslib@2.5.0)': dependencies: - tslib: 2.8.1 + tslib: 2.5.0 '@jspm/core@2.0.1': {} @@ -14505,7 +14530,7 @@ snapshots: '@manypkg/find-root@1.1.0': dependencies: '@babel/runtime': 7.23.9 - '@types/node': 12.20.55 + '@types/node': 12.20.37 find-up: 4.1.0 fs-extra: 8.1.0 @@ -14516,7 +14541,7 @@ snapshots: '@manypkg/get-packages@1.1.3': dependencies: '@babel/runtime': 7.23.9 - '@changesets/types': 4.1.0 + '@changesets/types': 4.0.1 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 globby: 11.1.0 @@ -14530,7 +14555,7 @@ snapshots: '@manypkg/tools@2.1.0': dependencies: jju: 1.4.0 - js-yaml: 4.1.1 + js-yaml: 4.1.0 tinyglobby: 0.2.15 '@mapbox/node-pre-gyp@1.0.10(supports-color@9.2.3)': @@ -14981,7 +15006,7 @@ snapshots: '@next/env@12.3.4': {} - '@next/env@13.5.4': {} + '@next/env@13.5.11': {} '@next/env@16.0.5': {} @@ -14994,7 +15019,7 @@ snapshots: '@next/swc-darwin-arm64@12.3.4': optional: true - '@next/swc-darwin-arm64@13.5.4': + '@next/swc-darwin-arm64@13.5.9': optional: true '@next/swc-darwin-arm64@16.0.5': @@ -15003,7 +15028,7 @@ snapshots: '@next/swc-darwin-x64@12.3.4': optional: true - '@next/swc-darwin-x64@13.5.4': + '@next/swc-darwin-x64@13.5.9': optional: true '@next/swc-darwin-x64@16.0.5': @@ -15018,7 +15043,7 @@ snapshots: '@next/swc-linux-arm64-gnu@12.3.4': optional: true - '@next/swc-linux-arm64-gnu@13.5.4': + '@next/swc-linux-arm64-gnu@13.5.9': optional: true '@next/swc-linux-arm64-gnu@16.0.5': @@ -15027,7 +15052,7 @@ snapshots: '@next/swc-linux-arm64-musl@12.3.4': optional: true - '@next/swc-linux-arm64-musl@13.5.4': + '@next/swc-linux-arm64-musl@13.5.9': optional: true '@next/swc-linux-arm64-musl@16.0.5': @@ -15036,7 +15061,7 @@ snapshots: '@next/swc-linux-x64-gnu@12.3.4': optional: true - '@next/swc-linux-x64-gnu@13.5.4': + '@next/swc-linux-x64-gnu@13.5.9': optional: true '@next/swc-linux-x64-gnu@16.0.5': @@ -15045,7 +15070,7 @@ snapshots: '@next/swc-linux-x64-musl@12.3.4': optional: true - '@next/swc-linux-x64-musl@13.5.4': + '@next/swc-linux-x64-musl@13.5.9': optional: true '@next/swc-linux-x64-musl@16.0.5': @@ -15054,7 +15079,7 @@ snapshots: '@next/swc-win32-arm64-msvc@12.3.4': optional: true - '@next/swc-win32-arm64-msvc@13.5.4': + '@next/swc-win32-arm64-msvc@13.5.9': optional: true '@next/swc-win32-arm64-msvc@16.0.5': @@ -15063,13 +15088,13 @@ snapshots: '@next/swc-win32-ia32-msvc@12.3.4': optional: true - '@next/swc-win32-ia32-msvc@13.5.4': + '@next/swc-win32-ia32-msvc@13.5.9': optional: true '@next/swc-win32-x64-msvc@12.3.4': optional: true - '@next/swc-win32-x64-msvc@13.5.4': + '@next/swc-win32-x64-msvc@13.5.9': optional: true '@next/swc-win32-x64-msvc@16.0.5': @@ -15851,9 +15876,9 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@playwright/test@1.43.1': + '@playwright/test@1.57.0': dependencies: - playwright: 1.43.1 + playwright: 1.57.0 '@pnpm/config.env-replace@1.1.0': {} @@ -15861,7 +15886,7 @@ snapshots: dependencies: graceful-fs: 4.2.10 - '@pnpm/npm-conf@2.3.1': + '@pnpm/npm-conf@2.2.2': dependencies: '@pnpm/config.env-replace': 1.1.0 '@pnpm/network.ca-file': 1.0.2 @@ -15869,24 +15894,24 @@ snapshots: '@polka/url@1.0.0-next.24': {} - '@preconstruct/cli@2.8.12': + '@preconstruct/cli@2.8.2': dependencies: '@babel/code-frame': 7.24.7 '@babel/core': 7.23.9 '@babel/helper-module-imports': 7.22.15 '@babel/runtime': 7.23.9 '@preconstruct/hook': 0.4.0 - '@rollup/plugin-alias': 3.1.9(rollup@2.79.2) - '@rollup/plugin-commonjs': 15.1.0(rollup@2.79.2) - '@rollup/plugin-json': 4.1.0(rollup@2.79.2) - '@rollup/plugin-node-resolve': 11.2.1(rollup@2.79.2) - '@rollup/plugin-replace': 2.4.2(rollup@2.79.2) + '@rollup/plugin-alias': 3.1.8(rollup@2.79.1) + '@rollup/plugin-commonjs': 15.1.0(rollup@2.79.1) + '@rollup/plugin-json': 4.1.0(rollup@2.79.1) + '@rollup/plugin-node-resolve': 11.2.1(rollup@2.79.1) + '@rollup/plugin-replace': 2.4.2(rollup@2.79.1) builtin-modules: 3.3.0 chalk: 4.1.2 ci-info: 3.9.0 - dataloader: 2.2.3 + dataloader: 2.0.0 detect-indent: 6.1.0 - enquirer: 2.4.1 + enquirer: 2.3.6 estree-walker: 2.0.2 fast-deep-equal: 2.0.1 fast-glob: 3.3.2 @@ -15894,6 +15919,7 @@ snapshots: is-reference: 1.2.1 jest-worker: 26.6.2 magic-string: 0.30.21 + meow: 7.1.1 ms: 2.1.3 normalize-path: 3.0.0 npm-packlist: 2.2.2 @@ -15901,12 +15927,13 @@ snapshots: parse-glob: 3.0.4 parse-json: 5.2.0 quick-lru: 5.1.1 + resolve: 1.22.8 resolve-from: 5.0.0 - rollup: 2.79.2 + rollup: 2.79.1 semver: 7.7.3 terser: 5.26.0 - v8-compile-cache: 2.4.0 - zod: 3.25.76 + v8-compile-cache: 2.3.0 + zod: 3.22.4 transitivePeerDependencies: - supports-color @@ -16139,26 +16166,26 @@ snapshots: '@rolldown/pluginutils@1.0.0-beta.27': {} - '@rollup/plugin-alias@3.1.9(rollup@2.79.2)': + '@rollup/plugin-alias@3.1.8(rollup@2.79.1)': dependencies: - rollup: 2.79.2 + rollup: 2.79.1 slash: 3.0.0 - '@rollup/plugin-commonjs@15.1.0(rollup@2.79.2)': + '@rollup/plugin-commonjs@15.1.0(rollup@2.79.1)': dependencies: - '@rollup/pluginutils': 3.1.0(rollup@2.79.2) + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) commondir: 1.0.1 estree-walker: 2.0.2 glob: 7.2.0 is-reference: 1.2.1 - magic-string: 0.25.9 + magic-string: 0.25.7 resolve: 1.22.8 - rollup: 2.79.2 + rollup: 2.79.1 - '@rollup/plugin-json@4.1.0(rollup@2.79.2)': + '@rollup/plugin-json@4.1.0(rollup@2.79.1)': dependencies: - '@rollup/pluginutils': 3.1.0(rollup@2.79.2) - rollup: 2.79.2 + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) + rollup: 2.79.1 '@rollup/plugin-json@6.1.0(rollup@4.44.2)': dependencies: @@ -16166,28 +16193,28 @@ snapshots: optionalDependencies: rollup: 4.44.2 - '@rollup/plugin-node-resolve@11.2.1(rollup@2.79.2)': + '@rollup/plugin-node-resolve@11.2.1(rollup@2.79.1)': dependencies: - '@rollup/pluginutils': 3.1.0(rollup@2.79.2) + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) '@types/resolve': 1.17.1 builtin-modules: 3.3.0 deepmerge: 4.2.2 is-module: 1.0.0 resolve: 1.22.8 - rollup: 2.79.2 + rollup: 2.79.1 - '@rollup/plugin-replace@2.4.2(rollup@2.79.2)': + '@rollup/plugin-replace@2.4.2(rollup@2.79.1)': dependencies: - '@rollup/pluginutils': 3.1.0(rollup@2.79.2) - magic-string: 0.25.9 - rollup: 2.79.2 + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) + magic-string: 0.25.7 + rollup: 2.79.1 - '@rollup/pluginutils@3.1.0(rollup@2.79.2)': + '@rollup/pluginutils@3.1.0(rollup@2.79.1)': dependencies: '@types/estree': 0.0.39 estree-walker: 1.0.1 picomatch: 2.3.1 - rollup: 2.79.2 + rollup: 2.79.1 '@rollup/pluginutils@5.1.4(rollup@4.44.2)': dependencies: @@ -16357,11 +16384,11 @@ snapshots: '@swc/helpers@0.4.11': dependencies: - tslib: 2.8.1 + tslib: 2.5.0 '@swc/helpers@0.4.14': dependencies: - tslib: 2.8.1 + tslib: 2.5.0 '@swc/helpers@0.5.15': dependencies: @@ -16369,7 +16396,7 @@ snapshots: '@swc/helpers@0.5.2': dependencies: - tslib: 2.8.1 + tslib: 2.5.0 '@swc/types@0.1.25': dependencies: @@ -16587,7 +16614,7 @@ snapshots: '@types/jsdom@20.0.1': dependencies: '@types/node': 22.15.3 - '@types/tough-cookie': 4.0.5 + '@types/tough-cookie': 4.0.2 parse5: 7.1.2 '@types/json-schema@7.0.9': {} @@ -16636,7 +16663,7 @@ snapshots: dependencies: '@types/node': 22.15.3 - '@types/node@12.20.55': {} + '@types/node@12.20.37': {} '@types/node@16.11.10': {} @@ -16732,7 +16759,7 @@ snapshots: '@types/tapable@1.0.8': {} - '@types/tough-cookie@4.0.5': {} + '@types/tough-cookie@4.0.2': {} '@types/uglify-js@3.13.1': dependencies: @@ -17291,6 +17318,8 @@ snapshots: array-unique@0.3.2: {} + arrify@1.0.1: {} + arrify@2.0.1: {} ascii-table@0.0.9: {} @@ -17557,10 +17586,6 @@ snapshots: dependencies: fill-range: 7.0.1 - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - browserify-zlib@0.1.4: dependencies: pako: 0.2.9 @@ -17718,6 +17743,12 @@ snapshots: camelcase-css@2.0.1: {} + camelcase-keys@6.2.2: + dependencies: + camelcase: 5.3.1 + map-obj: 4.3.0 + quick-lru: 4.0.1 + camelcase@5.3.1: {} camelcase@6.2.1: {} @@ -17810,8 +17841,6 @@ snapshots: chardet@0.7.0: {} - chardet@2.1.1: {} - chokidar@3.6.0: dependencies: anymatch: 3.1.2 @@ -18187,13 +18216,13 @@ snapshots: dependencies: cross-spawn: 7.0.3 - cross-spawn@7.0.3: + cross-spawn@5.1.0: dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 + lru-cache: 4.1.5 + shebang-command: 1.2.0 + which: 1.3.1 - cross-spawn@7.0.6: + cross-spawn@7.0.3: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 @@ -18336,7 +18365,7 @@ snapshots: dataloader@1.4.0: {} - dataloader@2.2.3: {} + dataloader@2.0.0: {} date-fns@1.30.1: {} @@ -18364,6 +18393,13 @@ snapshots: dependencies: callsite: 1.0.0 + decamelize-keys@1.1.0: + dependencies: + decamelize: 1.2.0 + map-obj: 1.0.1 + + decamelize@1.2.0: {} + decimal.js@10.4.3: {} decode-named-character-reference@1.0.2: @@ -18636,7 +18672,7 @@ snapshots: dot-case@3.0.4: dependencies: no-case: 3.0.4 - tslib: 2.8.1 + tslib: 2.5.0 dot-prop@5.3.0: dependencies: @@ -18726,10 +18762,9 @@ snapshots: graceful-fs: 4.2.10 tapable: 2.2.1 - enquirer@2.4.1: + enquirer@2.3.6: dependencies: ansi-colors: 4.1.3 - strip-ansi: 6.0.1 entities@2.2.0: {} @@ -19271,10 +19306,6 @@ snapshots: dependencies: to-regex-range: 5.0.1 - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - filter-obj@2.0.2: {} filter-obj@3.0.0: {} @@ -19725,6 +19756,8 @@ snapshots: handle-thing@2.0.1: {} + hard-rejection@2.1.0: {} + has-ansi@0.1.0: dependencies: ansi-regex: 0.2.1 @@ -20055,7 +20088,7 @@ snapshots: transitivePeerDependencies: - supports-color - human-id@4.1.3: {} + human-id@1.0.2: {} human-signals@2.1.0: {} @@ -20071,10 +20104,6 @@ snapshots: dependencies: safer-buffer: 2.1.2 - iconv-lite@0.7.0: - dependencies: - safer-buffer: 2.1.2 - icss-utils@5.1.0(postcss@8.5.6): dependencies: postcss: 8.5.6 @@ -20864,10 +20893,6 @@ snapshots: dependencies: argparse: 2.0.1 - js-yaml@4.1.1: - dependencies: - argparse: 2.0.1 - jsdom@20.0.3: dependencies: abab: 2.0.6 @@ -21275,7 +21300,7 @@ snapshots: lower-case@2.0.2: dependencies: - tslib: 2.8.1 + tslib: 2.5.0 lowercase-keys@1.0.0: {} @@ -21290,6 +21315,11 @@ snapshots: lru-cache@10.4.3: {} + lru-cache@4.1.5: + dependencies: + pseudomap: 1.0.2 + yallist: 2.1.2 + lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -21306,7 +21336,7 @@ snapshots: macos-release@3.1.0: {} - magic-string@0.25.9: + magic-string@0.25.7: dependencies: sourcemap-codec: 1.4.8 @@ -21337,6 +21367,10 @@ snapshots: map-cache@0.2.2: {} + map-obj@1.0.1: {} + + map-obj@4.3.0: {} + map-obj@5.0.2: {} map-visit@1.0.0: @@ -21559,13 +21593,27 @@ snapshots: memfs@4.11.1: dependencies: - '@jsonjoy.com/json-pack': 1.1.0(tslib@2.8.1) - '@jsonjoy.com/util': 1.3.0(tslib@2.8.1) - tree-dump: 1.0.2(tslib@2.8.1) - tslib: 2.8.1 + '@jsonjoy.com/json-pack': 1.1.0(tslib@2.5.0) + '@jsonjoy.com/util': 1.3.0(tslib@2.5.0) + tree-dump: 1.0.2(tslib@2.5.0) + tslib: 2.5.0 memoize-one@6.0.0: {} + meow@7.1.1: + dependencies: + '@types/minimist': 1.2.2 + camelcase-keys: 6.2.2 + decamelize-keys: 1.1.0 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 2.5.0 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.1 + type-fest: 0.13.1 + yargs-parser: 18.1.3 + merge-descriptors@1.0.3: {} merge-options@3.0.4: @@ -21818,11 +21866,6 @@ snapshots: braces: 3.0.2 picomatch: 2.3.1 - micromatch@4.0.8: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - mime-db@1.33.0: {} mime-db@1.51.0: {} @@ -21877,6 +21920,12 @@ snapshots: dependencies: brace-expansion: 2.0.1 + minimist-options@4.1.0: + dependencies: + arrify: 1.0.1 + is-plain-obj: 1.1.0 + kind-of: 6.0.3 + minimist@1.2.8: {} minipass-collect@1.0.2: @@ -22228,9 +22277,9 @@ snapshots: - '@babel/core' - babel-plugin-macros - next@13.5.4(@babel/core@7.23.9)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + next@13.5.11(@babel/core@7.23.9)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: - '@next/env': 13.5.4 + '@next/env': 13.5.11 '@swc/helpers': 0.5.2 busboy: 1.6.0 caniuse-lite: 1.0.30001587 @@ -22240,20 +22289,20 @@ snapshots: styled-jsx: 5.1.1(@babel/core@7.23.9)(react@18.2.0) watchpack: 2.4.0 optionalDependencies: - '@next/swc-darwin-arm64': 13.5.4 - '@next/swc-darwin-x64': 13.5.4 - '@next/swc-linux-arm64-gnu': 13.5.4 - '@next/swc-linux-arm64-musl': 13.5.4 - '@next/swc-linux-x64-gnu': 13.5.4 - '@next/swc-linux-x64-musl': 13.5.4 - '@next/swc-win32-arm64-msvc': 13.5.4 - '@next/swc-win32-ia32-msvc': 13.5.4 - '@next/swc-win32-x64-msvc': 13.5.4 + '@next/swc-darwin-arm64': 13.5.9 + '@next/swc-darwin-x64': 13.5.9 + '@next/swc-linux-arm64-gnu': 13.5.9 + '@next/swc-linux-arm64-musl': 13.5.9 + '@next/swc-linux-x64-gnu': 13.5.9 + '@next/swc-linux-x64-musl': 13.5.9 + '@next/swc-win32-arm64-msvc': 13.5.9 + '@next/swc-win32-ia32-msvc': 13.5.9 + '@next/swc-win32-x64-msvc': 13.5.9 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - next@16.0.5(@babel/core@7.23.9)(@playwright/test@1.43.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + next@16.0.5(@babel/core@7.23.9)(@playwright/test@1.57.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: '@next/env': 16.0.5 '@swc/helpers': 0.5.15 @@ -22271,7 +22320,7 @@ snapshots: '@next/swc-linux-x64-musl': 16.0.5 '@next/swc-win32-arm64-msvc': 16.0.5 '@next/swc-win32-x64-msvc': 16.0.5 - '@playwright/test': 1.43.1 + '@playwright/test': 1.57.0 sharp: 0.34.5 transitivePeerDependencies: - '@babel/core' @@ -22284,7 +22333,7 @@ snapshots: no-case@3.0.4: dependencies: lower-case: 2.0.2 - tslib: 2.8.1 + tslib: 2.5.0 node-addon-api@4.3.0: {} @@ -22687,7 +22736,7 @@ snapshots: package-json@10.0.1: dependencies: ky: 1.14.0 - registry-auth-token: 5.1.0 + registry-auth-token: 5.0.2 registry-url: 6.0.1 semver: 7.7.3 @@ -22698,9 +22747,7 @@ snapshots: registry-url: 5.1.0 semver: 6.3.1 - package-manager-detector@0.2.11: - dependencies: - quansync: 0.2.11 + package-manager-detector@0.2.0: {} pako@0.2.9: {} @@ -22792,7 +22839,7 @@ snapshots: pascal-case@3.1.2: dependencies: no-case: 3.0.4 - tslib: 2.8.1 + tslib: 2.5.0 pascalcase@0.1.1: {} @@ -22895,11 +22942,11 @@ snapshots: mlly: 1.4.2 pathe: 1.1.2 - playwright-core@1.43.1: {} + playwright-core@1.57.0: {} - playwright@1.43.1: + playwright@1.57.0: dependencies: - playwright-core: 1.43.1 + playwright-core: 1.57.0 optionalDependencies: fsevents: 2.3.2 @@ -23284,6 +23331,8 @@ snapshots: ps-list@8.1.0: {} + pseudomap@1.0.2: {} + psl@1.9.0: {} pump@1.0.3: @@ -23328,8 +23377,6 @@ snapshots: dependencies: side-channel: 1.1.0 - quansync@0.2.11: {} - query-string@5.1.1: dependencies: decode-uri-component: 0.2.0 @@ -23340,6 +23387,8 @@ snapshots: queue-microtask@1.2.3: {} + quick-lru@4.0.1: {} + quick-lru@5.1.1: {} quote-unquote@1.0.0: {} @@ -23554,9 +23603,9 @@ snapshots: dependencies: rc: 1.2.8 - registry-auth-token@5.1.0: + registry-auth-token@5.0.2: dependencies: - '@pnpm/npm-conf': 2.3.1 + '@pnpm/npm-conf': 2.2.2 registry-url@5.1.0: dependencies: @@ -23840,7 +23889,7 @@ snapshots: dependencies: estree-walker: 0.6.1 - rollup@2.79.2: + rollup@2.79.1: optionalDependencies: fsevents: 2.3.3 @@ -24076,10 +24125,16 @@ snapshots: '@img/sharp-win32-x64': 0.34.5 optional: true + shebang-command@1.2.0: + dependencies: + shebang-regex: 1.0.0 + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 + shebang-regex@1.0.0: {} + shebang-regex@3.0.0: {} shell-quote@1.8.1: {} @@ -24230,10 +24285,10 @@ snapshots: space-separated-tokens@2.0.2: {} - spawndamnit@3.0.1: + spawndamnit@2.0.0: dependencies: - cross-spawn: 7.0.6 - signal-exit: 4.1.0 + cross-spawn: 5.1.0 + signal-exit: 3.0.7 spdx-correct@3.1.1: dependencies: @@ -24717,9 +24772,9 @@ snapshots: textr@0.3.0: {} - thingies@1.21.0(tslib@2.8.1): + thingies@1.21.0(tslib@2.5.0): dependencies: - tslib: 2.8.1 + tslib: 2.5.0 through2-filter@3.0.0: dependencies: @@ -24835,9 +24890,9 @@ snapshots: dependencies: punycode: 2.1.1 - tree-dump@1.0.2(tslib@2.8.1): + tree-dump@1.0.2(tslib@2.5.0): dependencies: - tslib: 2.8.1 + tslib: 2.5.0 treeify@1.1.0: {} @@ -24845,6 +24900,8 @@ snapshots: trim-lines@3.0.1: {} + trim-newlines@3.0.1: {} + trim-repeated@1.0.0: dependencies: escape-string-regexp: 1.0.5 @@ -24938,6 +24995,8 @@ snapshots: type-fest@0.10.0: {} + type-fest@0.13.1: {} + type-fest@0.16.0: {} type-fest@0.20.2: {} @@ -25263,7 +25322,7 @@ snapshots: v8-compile-cache-lib@3.0.1: {} - v8-compile-cache@2.4.0: {} + v8-compile-cache@2.3.0: {} v8-to-istanbul@9.0.1: dependencies: @@ -25796,6 +25855,10 @@ snapshots: gopd: 1.2.0 has-tostringtag: 1.0.0 + which@1.3.1: + dependencies: + isexe: 2.0.0 + which@2.0.2: dependencies: isexe: 2.0.0 @@ -25894,6 +25957,8 @@ snapshots: y18n@5.0.8: {} + yallist@2.1.2: {} + yallist@3.1.1: {} yallist@4.0.0: {} @@ -25902,6 +25967,11 @@ snapshots: yaml@2.3.4: {} + yargs-parser@18.1.3: + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + yargs-parser@20.2.9: {} yargs-parser@21.1.1: {} @@ -25945,7 +26015,7 @@ snapshots: compress-commons: 4.1.1 readable-stream: 3.6.0 - zod@3.25.76: {} + zod@3.22.4: {} zwitch@1.0.5: {} diff --git a/tests/e2e/fixtures-next-development.playwright.ts b/tests/e2e/fixtures-next-development.playwright.ts deleted file mode 100644 index 5362fe29d..000000000 --- a/tests/e2e/fixtures-next-development.playwright.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { - nextFixtures, - startFixture, - type TestServer, -} from '@vanilla-extract-private/test-helpers'; -import { expect } from '@playwright/test'; - -import test from './fixture'; - -const testCases = [ - { - type: 'next-pages-router', - mode: 'development', - clientSideRouting: true, - }, - { - type: 'next-app-router', - mode: 'development', - clientSideRouting: false, - }, -] as const; - -testCases.forEach(({ type, mode, clientSideRouting }) => { - test.describe.serial(`${type} (${mode})`, async () => { - let server: TestServer; - - test.beforeAll(async ({ port }) => { - server = await startFixture(type, { - type, - basePort: port, - mode, - }); - }); - - test(`screenshot`, async ({ page }) => { - for await (const fixture of nextFixtures) { - const fixtureUrl = `${server.url}/${fixture}`; - - await page.goto(fixtureUrl); - await page.waitForSelector(`#${fixture}`, { state: 'attached' }); - expect(await page.screenshot()).toMatchSnapshot(`${fixture}.png`); - } - }); - - if (clientSideRouting) { - test(`screenshot (csr)`, async ({ page }) => { - for await (const fixture of nextFixtures) { - await page.goto(server.url); - await page.waitForLoadState('networkidle'); - - const fixtureUrl = `${server.url}/${fixture}`; - // navigate to fixture page via link - const loc = page.locator('a', { hasText: fixture }); - await loc.click(); - // prevent triggering a css hover on the new page - await page.mouse.move(0, 0); - await page.waitForURL(fixtureUrl); - await page.waitForLoadState('networkidle'); - - await page.waitForSelector(`#${fixture}`, { - state: 'attached', - }); - expect(await page.screenshot()).toMatchSnapshot(`${fixture}.png`); - } - }); - } - - test.afterAll(async () => { - await server.close(); - }); - }); -}); diff --git a/tests/e2e/fixtures-next-production.playwright.ts b/tests/e2e/fixtures-next-production.playwright.ts deleted file mode 100644 index fa284cd4b..000000000 --- a/tests/e2e/fixtures-next-production.playwright.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { - nextFixtures, - startFixture, - type TestServer, -} from '@vanilla-extract-private/test-helpers'; -import { expect } from '@playwright/test'; - -import test from './fixture'; - -const testCases = [ - { - type: 'next-12-pages-router', - mode: 'production', - }, - { - type: 'next-13-app-router', - mode: 'production', - }, -] as const; - -testCases.forEach(({ type, mode }) => { - test.describe.serial(`${type} (${mode})`, async () => { - let server: TestServer; - - test.beforeAll(async ({ port }) => { - server = await startFixture('', { - type, - basePort: port, - mode, - }); - }); - - test(`screenshot`, async ({ page }) => { - for await (const fixture of nextFixtures) { - await page.goto(`${server.url}/${fixture}`); - // make sure the fixture is visible - await page.waitForSelector(`#${fixture}`, { state: 'attached' }); - expect(await page.screenshot()).toMatchSnapshot(`${fixture}.png`); - } - }); - - test.afterAll(async () => { - await server.close(); - }); - }); -}); diff --git a/tests/e2e/fixtures-next-unified.playwright.ts b/tests/e2e/fixtures-next-unified.playwright.ts new file mode 100644 index 000000000..aae29e2b1 --- /dev/null +++ b/tests/e2e/fixtures-next-unified.playwright.ts @@ -0,0 +1,72 @@ +import { test, expect } from '@playwright/test'; +import { NEXT_SERVERS } from '../servers'; + +NEXT_SERVERS.forEach((server) => { + test.describe(server.name, () => { + test('visual regression', async ({ page }) => { + const indexPages = server.name.includes('Next 16') + ? ['/', '/pages-router'] + : ['/']; + + const tasks: { link: string; indexUrl: string }[] = []; + + for (const indexPage of indexPages) { + const indexUrl = `http://localhost:${server.port}${indexPage}`; + await page.goto(indexUrl, { waitUntil: 'domcontentloaded' }); + + const links = await page + .locator('a[href^="/"]') + .evaluateAll((anchors: HTMLAnchorElement[]) => + anchors + .map((a) => a.getAttribute('href')) + .filter((href): href is string => typeof href === 'string'), + ); + + const uniqueLinks = Array.from(new Set(links)); + uniqueLinks.forEach((link) => { + tasks.push({ link, indexUrl }); + }); + } + + for (const { link, indexUrl } of tasks) { + const snapshotPrefix = + // font names are different between webpack and turbopack + link.includes('next-font') && server.name.includes('Webpack') + ? 'next-font-webpack' + : link.split('/').at(-1); + + // FIXME: webpack nextJS fails the creepster test! + if (server.name.includes('Webpack') && link.includes('creepster')) { + continue; + } + + // Test SSR + await test.step(`${link} - SSR`, async () => { + const targetUrl = `http://localhost:${server.port}${link}`; + await page.goto(targetUrl, { waitUntil: 'domcontentloaded' }); + + expect(await page.screenshot()).toMatchSnapshot( + `${snapshotPrefix}.png`, + ); + }); + + // Test CSR + await test.step(`${link} - CSR`, async () => { + await page.goto(indexUrl, { waitUntil: 'domcontentloaded' }); + + const linkLocator = page.locator(`a[href="${link}"]`).first(); + await linkLocator.click(); + + // Prevent triggering a css hover on the new page + await page.mouse.move(0, 0); + + await page.waitForURL(`http://localhost:${server.port}${link}`); + + expect(await page.screenshot()).toMatchSnapshot( + `${snapshotPrefix}.png`, + ); + }); + } + }); + }); +}); diff --git a/tests/e2e/snapshots/creepster-Desktop---Chromium-darwin.png b/tests/e2e/snapshots/creepster-Desktop---Chromium-darwin.png new file mode 100644 index 0000000000000000000000000000000000000000..3724e69090ff87ea9fc83642f2dc7240635ce6c7 GIT binary patch literal 19762 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 Y&&kPyu{%q6Pz&ti!@-AYK0I^j@AE?VKL7v# literal 0 HcmV?d00001 diff --git a/tests/e2e/snapshots/duplication-test-Mobile---Chromium-darwin.png b/tests/e2e/snapshots/duplication-test-Mobile---Chromium-darwin.png new file mode 100644 index 0000000000000000000000000000000000000000..ea5bc9de8e6e47f3808ce0f3eb6979542c5da07d GIT binary patch literal 5384 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 literal 0 HcmV?d00001 diff --git a/tests/e2e/snapshots/function-serializer-Desktop---Chromium-darwin.png b/tests/e2e/snapshots/function-serializer-Desktop---Chromium-darwin.png new file mode 100644 index 0000000000000000000000000000000000000000..840343192c228bda2c8538bbb06f44386decf2cd GIT binary patch literal 16673 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�N$An$snR~1Byz(Q=9s}|v^L>1d;^T#F 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
4uehi;XaaR2jp#=4?+T(?>&&=tj zdlp3szJNlYZCGSmnpbbJ$1HDY$^64s`=gz`J^#xBz!%RHoU zP?|wGg-8QO@cKxtaw@-c*|<7#(Ai+BP+qUsRKGVz23FJI5v7kNfbXNzlVFBgai}Bo z;MJ$U4F>s#oitCn=;XO-v0CDk{$SYUQ0dPv+}gh{fMLhYIpL{APn00c%^b~y1thXw zbo2}|?UoK5s%JoTf0~nXC&=X|)!#7OpPc8X9`%Jq+3XzMH=ohpICeA#JV-G|AYm`3$`|gk+ybaVDrP{8)`MJM!{G1!!k%eh^?FqifUdsQ<0A z9Vwsxykk@3a#0?tvZ0Wp;%)Xkz2=BqaIJYSzLV4WvMi@4d;l4MU2J%})Pat6fZIw+BVB17v1(4a#PL8s-;-tD zYAF4uFZ=r@WfSghE4nF_b>HkDO9Pdd#s%T4A;Z3hS7c&-7noi#DK7466tObwzTs~3 zx6c-}$y1H#$zQGU%EB-{{Er-KT8L*iOPqelw|!qE_uS zCW9VVZugA$R=ctl5WhsbW;)x%wy(r_`@Pla4&z;jP>^e`#8cE8uTNvUYoG`QUU~`h z`7kF?yKNvd+fDhzqop>E>$(!nkfZrQe8f-pL2r`NZ1!QACzzfuTmSZuk>6t-V{m=J zQa8w3v@`d&EGKWLxLL16`${=&9+Gf1q7TNzt*%@GhPTdRN-9+&f?9vSakm_q-D5n# z(^Yj;1UtWYGwQ^?5}iw@#U?)kHtZ%$fSzrfST|@>ykGb60^?vJq7pXT}yfP z|CwoDitCZTO)|QRJ6)fh-S>BBGf)ktGxMR}M(t|D)7uXVFi1w{Y59R{r+HlD75;n? z*m35JJdFIS?>k(qSgCdBZ10WezsVs@oCzihhBxa3FO1T`VgnU*Lxx- zEhwhUGjd>#WmoDC^M7Y2R~oX!ArlXP6B{U|*1VcSu{6@P=G?R6`bTrK`mPVY@zsQ- zG^o*D?#iLnyxKA$NhB!x@=!=&dZrQA!V@RrFVi z(O(R8IsvCv%Av!{RC!xbF4I>x|>KmpYCRjtC$WCsK%= zq8thR$vQtz+EE{UTvbXlJ6>V=Q0t6VZ*Itqs^AG2RDFAp8IX0B+UK3ca306Q6CkXdcy)!jh-;+&(cib2)1E%aoV{PqJuN`~&I+b=% z_T|H;P#!i#2X%6V*yl569W3&JF=aiCu&0F){KFk+|0h8C?;6|wz3qS1 z7x?e={X2dCZExwnG4yW?{ToC7K$G^riS++iB9*5c)f9g;kpJTwfqzzp{Uc5P|KG>c soM`W!Jt9#$)TmMXMTg{%Ws=yl|IgGuyvBW^_{tt@ONXm9m+wCMAFL_H#{d8T literal 0 HcmV?d00001 diff --git a/tests/e2e/snapshots/next-font-Desktop---Chromium-darwin.png b/tests/e2e/snapshots/next-font-Desktop---Chromium-darwin.png new file mode 100644 index 0000000000000000000000000000000000000000..8068416befb169e1f29d121f33bc57b0cefa792f GIT binary patch literal 219974 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

v2i+xo6-%?tz-|nAzKlh6x@B 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≀4PdFLaV(3UdB<)!>?XeV=?U2aPG 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 T@xc}>00000NkvXXu0mjfFoI71 literal 0 HcmV?d00001 diff --git a/tests/package.json b/tests/package.json index b244b4e20..4575a70c5 100644 --- a/tests/package.json +++ b/tests/package.json @@ -5,7 +5,6 @@ "author": "SEEK", "license": "MIT", "dependencies": { - "@playwright/test": "^1.43.1", "@testing-library/dom": "^10.0.0", "@testing-library/jest-dom": "^6.4.2", "@vanilla-extract-private/test-helpers": "workspace:*", diff --git a/tests/servers.ts b/tests/servers.ts new file mode 100644 index 000000000..26307383c --- /dev/null +++ b/tests/servers.ts @@ -0,0 +1,57 @@ +interface ServerDefinition { + name: string; + isProduction: boolean; + script: string; + port: number; +} + +export const NEXT_SERVERS: ServerDefinition[] = [ + { + name: 'Next 12 Dev Server', + isProduction: false, + script: 'pnpm --filter=next-12-pages-router dev', + port: 3001, + }, + { + name: 'Next 12 Build', + isProduction: true, + script: 'pnpm --filter=next-12-pages-router start', + port: 3002, + }, + { + name: 'Next 13 Dev Server', + isProduction: false, + script: 'pnpm --filter=next-13-app-router dev', + port: 3003, + }, + { + name: 'Next 13 Build', + isProduction: true, + script: 'pnpm --filter=next-13-app-router start', + port: 3004, + }, + { + name: 'Next 16 Dev Server (Webpack)', + isProduction: false, + script: 'pnpm --filter=next-16-app-pages-router dev-webpack', + port: 3005, + }, + { + name: 'Next 16 Build (Webpack)', + isProduction: true, + script: 'pnpm --filter=next-16-app-pages-router start-webpack', + port: 3006, + }, + { + name: 'Next 16 Dev Server (Turbopack)', + isProduction: false, + script: 'pnpm --filter=next-16-app-pages-router dev-turbo', + port: 3007, + }, + { + name: 'Next 16 Build (Turbopack)', + isProduction: true, + script: 'pnpm --filter=next-16-app-pages-router start-turbo', + port: 3008, + }, +]; From 7b9313c7b6964e6a3cdc53007745f88b8b62c900 Mon Sep 17 00:00:00 2001 From: Robbie Date: Sat, 29 Nov 2025 22:18:56 -0700 Subject: [PATCH 44/52] split next clean and next build --- fixtures/next-12-pages-router/package.json | 2 -- fixtures/next-13-app-router/package.json | 2 -- fixtures/next-16-app-pages-router/package.json | 3 --- package.json | 5 +++-- 4 files changed, 3 insertions(+), 9 deletions(-) diff --git a/fixtures/next-12-pages-router/package.json b/fixtures/next-12-pages-router/package.json index fe873247b..fd1eb3af8 100644 --- a/fixtures/next-12-pages-router/package.json +++ b/fixtures/next-12-pages-router/package.json @@ -7,8 +7,6 @@ "dev": "next dev", "build": "next build", "start": "next start", - "clean-build": "pnpm clean && next build", - "clean": "pnpm clean:dev && pnpm clean:prod", "clean:dev": "rm -rf .next", "clean:prod": "rm -rf dist" }, diff --git a/fixtures/next-13-app-router/package.json b/fixtures/next-13-app-router/package.json index f11499185..cb504aece 100644 --- a/fixtures/next-13-app-router/package.json +++ b/fixtures/next-13-app-router/package.json @@ -7,8 +7,6 @@ "dev": "next dev", "build": "next build", "start": "next start", - "clean-build": "pnpm clean && pnpm build", - "clean": "pnpm clean:dev && pnpm clean:prod", "clean:dev": "rm -rf .next", "clean:prod": "rm -rf dist" }, diff --git a/fixtures/next-16-app-pages-router/package.json b/fixtures/next-16-app-pages-router/package.json index cc1209f68..80eb7ac59 100644 --- a/fixtures/next-16-app-pages-router/package.json +++ b/fixtures/next-16-app-pages-router/package.json @@ -10,9 +10,6 @@ "start-webpack": "NEXT_DIST_DIR=dist/webpack next start", "build-turbo": "NEXT_DIST_DIR=dist/turbo next build --turbo", "start-turbo": "NEXT_DIST_DIR=dist/turbo next start", - "clean-build-turbo": "pnpm clean && sleep 1 && pnpm build-turbo", - "clean-build-webpack": "pnpm clean && sleep 1 && pnpm build-webpack", - "clean": "pnpm clean:dev && pnpm clean:prod", "clean:dev": "rm -rf .next", "clean:prod": "rm -rf dist" }, diff --git a/package.json b/package.json index 15ce169c9..6a446623a 100644 --- a/package.json +++ b/package.json @@ -16,8 +16,9 @@ "test:unit": "pnpm test:jest && pnpm test:vitest", "test:jest": "cross-env NODE_OPTIONS=--experimental-vm-modules jest", "test:vitest": "vitest --watch=false", - "test:playwright": "pnpm test:build-next && playwright test", - "test:build-next": "node scripts/copy-next-plugin.ts && pnpm --filter=@fixtures/next-* run '/^clean-build.*/'", + "test:playwright": "pnpm test:clean-next && pnpm test:build-next && playwright test", + "test:clean-next": "pnpm --filter=@fixtures/next-* run '/^clean.*/'", + "test:build-next": "node scripts/copy-next-plugin.ts && pnpm --filter=@fixtures/next-* run '/^build.*/'", "format": "prettier --write .", "lint": "pnpm run '/^lint:.*/'", "lint:manypkg": "manypkg check", From 5513572abeed4270b9a2cffc092550c3254d825d Mon Sep 17 00:00:00 2001 From: Robbie Date: Sat, 29 Nov 2025 22:19:10 -0700 Subject: [PATCH 45/52] restrict push workflows to master branch --- .github/workflows/deploy-site.yml | 5 ++++- .github/workflows/validate.yml | 6 +++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy-site.yml b/.github/workflows/deploy-site.yml index 802600c34..b0086fefc 100644 --- a/.github/workflows/deploy-site.yml +++ b/.github/workflows/deploy-site.yml @@ -1,6 +1,9 @@ name: Deploy site -on: push +on: + push: + branches: + - master jobs: deploy-site: diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index 44e1e6a3b..4a62336d3 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -1,6 +1,10 @@ name: Validate -on: [push, pull_request] +on: + push: + branches: + - master + pull_request: jobs: test: From 521171fa8595ba670a096e9aa02dd2074f7940c7 Mon Sep 17 00:00:00 2001 From: Robbie Date: Sat, 29 Nov 2025 23:49:38 -0700 Subject: [PATCH 46/52] parallelize next tests, annotate failures --- playwright.config.ts | 2 + tests/e2e/fixtures-next-unified.playwright.ts | 130 ++++++++++-------- tests/servers.ts | 9 ++ 3 files changed, 85 insertions(+), 56 deletions(-) diff --git a/playwright.config.ts b/playwright.config.ts index dc5f2a90f..ceb1a6cfa 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -6,6 +6,7 @@ import { NEXT_SERVERS } from './tests/servers'; process.stdout.isTTY = false; const config: PlaywrightTestConfig = defineConfig({ + fullyParallel: true, testMatch: '**/*.playwright.ts', updateSnapshots: 'none', expect: { @@ -19,6 +20,7 @@ const config: PlaywrightTestConfig = defineConfig({ env: { NODE_ENV: server.isProduction ? 'production' : 'development' }, url: `http://localhost:${server.port}`, reuseExistingServer: !process.env.CI, + name: server.name, })), workers: process.env.CI ? cpus().length : undefined, retries: process.env.CI ? 2 : 0, diff --git a/tests/e2e/fixtures-next-unified.playwright.ts b/tests/e2e/fixtures-next-unified.playwright.ts index aae29e2b1..a7b826758 100644 --- a/tests/e2e/fixtures-next-unified.playwright.ts +++ b/tests/e2e/fixtures-next-unified.playwright.ts @@ -1,72 +1,90 @@ -import { test, expect } from '@playwright/test'; +import { expect, test } from '@playwright/test'; import { NEXT_SERVERS } from '../servers'; -NEXT_SERVERS.forEach((server) => { - test.describe(server.name, () => { - test('visual regression', async ({ page }) => { - const indexPages = server.name.includes('Next 16') - ? ['/', '/pages-router'] - : ['/']; - - const tasks: { link: string; indexUrl: string }[] = []; +const limited = [ + { route: '/features', index: '/' }, + { route: '/recipes', index: '/' }, + { route: '/sprinkles', index: '/' }, +]; - for (const indexPage of indexPages) { - const indexUrl = `http://localhost:${server.port}${indexPage}`; - await page.goto(indexUrl, { waitUntil: 'domcontentloaded' }); +const full = [ + { route: '/features', index: '/' }, + { route: '/recipes', index: '/' }, + { route: '/sprinkles', index: '/' }, + { route: '/pages-router/features', index: '/pages-router' }, + { route: '/pages-router/recipes', index: '/pages-router' }, + { route: '/pages-router/sprinkles', index: '/pages-router' }, + { route: '/creepster', index: '/' }, + { route: '/duplication-test', index: '/' }, + { route: '/function-serializer', index: '/' }, + { route: '/next-font', index: '/' }, +]; - const links = await page - .locator('a[href^="/"]') - .evaluateAll((anchors: HTMLAnchorElement[]) => - anchors - .map((a) => a.getAttribute('href')) - .filter((href): href is string => typeof href === 'string'), - ); +const getTasks = (type: 'full' | 'limited') => { + if (type === 'full') return full; + return limited; +}; - const uniqueLinks = Array.from(new Set(links)); - uniqueLinks.forEach((link) => { - tasks.push({ link, indexUrl }); - }); - } +NEXT_SERVERS.map((server) => { + test.describe(server.name, () => { + const tasks = getTasks(server.suite); - for (const { link, indexUrl } of tasks) { - const snapshotPrefix = - // font names are different between webpack and turbopack - link.includes('next-font') && server.name.includes('Webpack') - ? 'next-font-webpack' - : link.split('/').at(-1); + for (const { route, index: indexUrl } of tasks) { + const snapshotPrefix = + // font names are different between webpack and turbopack + route.includes('next-font') && server.name.includes('Webpack') + ? 'next-font-webpack' + : route.split('/').at(-1); - // FIXME: webpack nextJS fails the creepster test! - if (server.name.includes('Webpack') && link.includes('creepster')) { - continue; - } + // FIXME: webpack fails the creepster test! + if (server.name.includes('Webpack') && route.includes('creepster')) { + continue; + } - // Test SSR - await test.step(`${link} - SSR`, async () => { - const targetUrl = `http://localhost:${server.port}${link}`; - await page.goto(targetUrl, { waitUntil: 'domcontentloaded' }); + // Test SSR + test(`${route} - SSR`, async ({ page }) => { + const targetUrl = `http://localhost:${server.port}${route}`; + await page.goto(targetUrl, { waitUntil: 'networkidle' }); - expect(await page.screenshot()).toMatchSnapshot( - `${snapshotPrefix}.png`, - ); - }); + expect(await page.screenshot()).toMatchSnapshot( + `${snapshotPrefix}.png`, + ); + }); - // Test CSR - await test.step(`${link} - CSR`, async () => { - await page.goto(indexUrl, { waitUntil: 'domcontentloaded' }); + // FIXME: webpack dev in next 16 fails CSR tests! + if ( + server.name.includes('Webpack') && + server.name.includes('Next 16') && + route.includes('pages-router') + ) { + continue; + } + // FIXME: turbopack build in next 16 fails CSR tests! + if ( + server.name.includes('Turbopack') && + server.name.includes('Next 16') && + route.includes('pages-router') + ) { + continue; + } - const linkLocator = page.locator(`a[href="${link}"]`).first(); - await linkLocator.click(); + // Test CSR + test(`${route} - CSR`, async ({ page }) => { + await page.goto(`http://localhost:${server.port}${indexUrl}`); - // Prevent triggering a css hover on the new page - await page.mouse.move(0, 0); + const linkLocator = page.locator(`a[href="${route}"]`).first(); + await linkLocator.click(); - await page.waitForURL(`http://localhost:${server.port}${link}`); + // Prevent triggering a css hover on the new page + await page.mouse.move(0, 0); - expect(await page.screenshot()).toMatchSnapshot( - `${snapshotPrefix}.png`, - ); - }); - } - }); + await page.waitForURL(`http://localhost:${server.port}${route}`); + await page.waitForLoadState('networkidle'); + + expect(await page.screenshot()).toMatchSnapshot( + `${snapshotPrefix}.png`, + ); + }); + } }); }); diff --git a/tests/servers.ts b/tests/servers.ts index 26307383c..848fff979 100644 --- a/tests/servers.ts +++ b/tests/servers.ts @@ -3,6 +3,7 @@ interface ServerDefinition { isProduction: boolean; script: string; port: number; + suite: 'full' | 'limited' } export const NEXT_SERVERS: ServerDefinition[] = [ @@ -11,47 +12,55 @@ export const NEXT_SERVERS: ServerDefinition[] = [ isProduction: false, script: 'pnpm --filter=next-12-pages-router dev', port: 3001, + suite: 'limited' }, { name: 'Next 12 Build', isProduction: true, script: 'pnpm --filter=next-12-pages-router start', port: 3002, + suite: 'limited' }, { name: 'Next 13 Dev Server', isProduction: false, script: 'pnpm --filter=next-13-app-router dev', port: 3003, + suite: 'limited' }, { name: 'Next 13 Build', isProduction: true, script: 'pnpm --filter=next-13-app-router start', port: 3004, + suite: 'limited' }, { name: 'Next 16 Dev Server (Webpack)', isProduction: false, script: 'pnpm --filter=next-16-app-pages-router dev-webpack', port: 3005, + suite: 'full' }, { name: 'Next 16 Build (Webpack)', isProduction: true, script: 'pnpm --filter=next-16-app-pages-router start-webpack', port: 3006, + suite: 'full' }, { name: 'Next 16 Dev Server (Turbopack)', isProduction: false, script: 'pnpm --filter=next-16-app-pages-router dev-turbo', port: 3007, + suite: 'full' }, { name: 'Next 16 Build (Turbopack)', isProduction: true, script: 'pnpm --filter=next-16-app-pages-router start-turbo', port: 3008, + suite: 'full' }, ]; From dce5049a5325076a1c62451eda008c12a8ceaa07 Mon Sep 17 00:00:00 2001 From: Robbie Date: Sat, 29 Nov 2025 23:51:50 -0700 Subject: [PATCH 47/52] format --- tests/e2e/fixtures-next-unified.playwright.ts | 2 +- tests/servers.ts | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/tests/e2e/fixtures-next-unified.playwright.ts b/tests/e2e/fixtures-next-unified.playwright.ts index a7b826758..b9582a742 100644 --- a/tests/e2e/fixtures-next-unified.playwright.ts +++ b/tests/e2e/fixtures-next-unified.playwright.ts @@ -80,7 +80,7 @@ NEXT_SERVERS.map((server) => { await page.waitForURL(`http://localhost:${server.port}${route}`); await page.waitForLoadState('networkidle'); - + expect(await page.screenshot()).toMatchSnapshot( `${snapshotPrefix}.png`, ); diff --git a/tests/servers.ts b/tests/servers.ts index 848fff979..8c56d01be 100644 --- a/tests/servers.ts +++ b/tests/servers.ts @@ -3,7 +3,7 @@ interface ServerDefinition { isProduction: boolean; script: string; port: number; - suite: 'full' | 'limited' + suite: 'full' | 'limited'; } export const NEXT_SERVERS: ServerDefinition[] = [ @@ -12,55 +12,55 @@ export const NEXT_SERVERS: ServerDefinition[] = [ isProduction: false, script: 'pnpm --filter=next-12-pages-router dev', port: 3001, - suite: 'limited' + suite: 'limited', }, { name: 'Next 12 Build', isProduction: true, script: 'pnpm --filter=next-12-pages-router start', port: 3002, - suite: 'limited' + suite: 'limited', }, { name: 'Next 13 Dev Server', isProduction: false, script: 'pnpm --filter=next-13-app-router dev', port: 3003, - suite: 'limited' + suite: 'limited', }, { name: 'Next 13 Build', isProduction: true, script: 'pnpm --filter=next-13-app-router start', port: 3004, - suite: 'limited' + suite: 'limited', }, { name: 'Next 16 Dev Server (Webpack)', isProduction: false, script: 'pnpm --filter=next-16-app-pages-router dev-webpack', port: 3005, - suite: 'full' + suite: 'full', }, { name: 'Next 16 Build (Webpack)', isProduction: true, script: 'pnpm --filter=next-16-app-pages-router start-webpack', port: 3006, - suite: 'full' + suite: 'full', }, { name: 'Next 16 Dev Server (Turbopack)', isProduction: false, script: 'pnpm --filter=next-16-app-pages-router dev-turbo', port: 3007, - suite: 'full' + suite: 'full', }, { name: 'Next 16 Build (Turbopack)', isProduction: true, script: 'pnpm --filter=next-16-app-pages-router start-turbo', port: 3008, - suite: 'full' + suite: 'full', }, ]; From 824a20bd2a4860f89f398d9105beaa7edd501b57 Mon Sep 17 00:00:00 2001 From: Robbie Date: Wed, 10 Dec 2025 11:40:20 -0700 Subject: [PATCH 48/52] support image imports --- .../src/app/next-image/image.css.ts | 9 +++ .../src/app/next-image/logo.png | Bin 0 -> 55841 bytes .../src/app/next-image/page.tsx | 5 ++ .../next-16-app-pages-router/src/app/page.tsx | 2 + packages/turbopack-plugin/src/index.ts | 65 ++++++++++++++++++ tests/e2e/fixtures-next-unified.playwright.ts | 1 + .../next-image-Desktop---Chromium-darwin.png | Bin 0 -> 49357 bytes .../next-image-Mobile---Chromium-darwin.png | Bin 0 -> 40936 bytes 8 files changed, 82 insertions(+) create mode 100644 fixtures/next-16-app-pages-router/src/app/next-image/image.css.ts create mode 100644 fixtures/next-16-app-pages-router/src/app/next-image/logo.png create mode 100644 fixtures/next-16-app-pages-router/src/app/next-image/page.tsx create mode 100644 tests/e2e/snapshots/next-image-Desktop---Chromium-darwin.png create mode 100644 tests/e2e/snapshots/next-image-Mobile---Chromium-darwin.png diff --git a/fixtures/next-16-app-pages-router/src/app/next-image/image.css.ts b/fixtures/next-16-app-pages-router/src/app/next-image/image.css.ts new file mode 100644 index 000000000..f12f83712 --- /dev/null +++ b/fixtures/next-16-app-pages-router/src/app/next-image/image.css.ts @@ -0,0 +1,9 @@ +import logo from './logo.png'; +import { style } from '@vanilla-extract/css'; + +export const imageStyle = style({ + backgroundImage: `url(${logo.src})`, + width: `${logo.width}px`, + height: `${logo.height}px`, + border: '1px solid red', +}); diff --git a/fixtures/next-16-app-pages-router/src/app/next-image/logo.png b/fixtures/next-16-app-pages-router/src/app/next-image/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..40506eac8e295399b3cf3ded5abf392a182d42a2 GIT binary patch literal 55841 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 Image Page

etaf#wL=m8w_)KBb0{Xb=? z-7aL9M02b9A2XQi=oleW1m_fziY@dLzvnR6j2H*Yi&$e)0`BmvH^kgQ6HAY4ApoyP zd1$5|VAdgItINqyM|b23Z>`?K?6G(VjNe|V&%zkC<;G|wx{R1j>$5d83}qRUmTN|U z5fpUUHKugr-K5Q@sjbPT&KSVMq8yr-oct18rwk1dgYt0QCwD;JIMxZ7e_>Jme_+ua zPu_m#&4Y}?>-S6p-|T&3ME2BUBq*uRuNBU~i~qFC9lcGjoPp}oO76-B#e9VvX8Z8* z1fo{xT!*%8X|f@~@q4mS0s$vvGYUh|A(f{!)7t3qnh76314DQ40lc<&*MpV}g?Qg93VFMnt!W3m zGj{{ZxG(E!r@cUji@3HZa*#{c!`dW93=!se|0j(4>(1ka`d7>^_V2Spw8+O*ShA?ODI+@s_Mgd~ngVVYmK25LG)&e>7%=CjF61m=v<7qS3#o1gKPYM20`~6AIUqjo7f|wq{yuxo<6q*!?N}=C2Mpe2os+KR@$f z2mjlX%SC&5KWY4Qi|V`KHK~i{ebPUWqUpE=$~+h0k(YFZS#ZstW}1>-1STH;bPr*w zd--m$TC@OXxuxvoo3&Llf1#Orwgpt}&<-6@6rl-n!s`pvpp-HB?%kQe>Y&#UBM!cp zek1XD^%OlQJDX|ArX2-*-T2ProFX51$S-pN^-N5?;PgC&7(?E9eZ zp}|3-%5Rm}>)%9uHVyv13lpKP#5;wN4DIf_=?*<)t4)dqxh}V0A>{7^ zbpY?g?92anC%k_BUi-f0%!+cK_C{7gM<4u!pmR~pD1*^$HJBU6032m7UenTEB zUbK}1$-*XFBgbse6iadc48*BGc1XplTm=pd#a9LPnoP1`&=jjcmqD<}aZ$U{XniKC zp8Wc$45Zl+!fvoZ@ch@-%#_r)zARpFId@I^mNVJvYk1v&c+NA>f4mK}3CWQn1ZD=; z5TcGIP84|e0yl}GQ|{kUy!#-p0n8^R-aG=Sc$F$`-aT_V{zgUO4jx`kS&JdoFmm}H ziIhRiOHwJ>zNF)&x?i6$62xZ;J_Kfb*vl56Wj&7Im; z+ANt^Xk(ja^XU_>PJq;?aLdiXN&^BfLPugIh(!%5YRTN=S)?gLr$rj$swogY$sF~6 zVy0>xF)J&Hg_vV|4A08ao-rdYXpx0U8@=!;XCx2j{)DV8v&rT$gyy{SXauzlhBEA% zH2G+;QGSp!Q| z7;-%9^EN|FLZAxRfV&<|T>X&Dul0~f&107|jnBmsG|eDEn9(r7+y8NH$>?i9sY_w+ zG7K-nAD*`8i{Vx743q)0i+I!s(UAwWC`PgLiv%tHogt;9xO|CXhso(c&Wh;fWo}lQ zc$4I!K%Pb76c@Sfz5X!Jjh|jWFzLD|*H|s^dy%~QNt-vkT?UEk zKLvgL^HCFcKK~b9Kl6-;I;u#C;#5u=xOwN!opHD@bu4<&Svu;6qAz{eD1fujr7=cxf_LqXZCTgr*C)_D>X=@H5@fq(4XjLs zK-EyTTi$oO$S8ncC<|%|!#Hdo67{RX1KOf zP50VPTuV^vv$tJ8Od!S56W1)&*NN$*q@X-1T}61gGjxk^@PyvKIt`Bd+w}Cu)|{{@ z-jg;s6IXmEU*jcJ;_&Wo{`1usNH6sd(n+)(q9uDk3%Zj65X43duw032C-f!0Gn05B z+At#Z$m-1gB!nEk(U*5JE}OR;ahz^q2NO*ps({mih6DN7!Gq%$ zXr~*8Mfxvd%(|(I8)1zLk_B52Tm|p}Pnop^6vTA;_0@&y^!zmW%w=Fo@?K*|xEJ^i zXh7bh@6C%+a7D`o@^TpePWIl!>-8~Af~zCOKH4y#_sM4Gn?f%UAo@a`hn z(F~sj;BLd?m2SQ0AaO=T%hcz*6xDVCK=}IC25ws-qMvDrtP7cT&Hf(Y`4~&G_@xOe z_E=@$C8F#vwpcq{kug2+#>5UyK-`KOYiuo`BRb_>o3ZW5J)?}Xnwn(SOUpw+13Qa* zWSoR~g0cgzqbia9|8mvM9ak>|CUBb`t0N07n)z|8KafS(n4{9>i7MqC)#s7SH*n#~ z-papuh}*H?m8TW$jt#6=EFI3pc4lj@CBsMd3Oa6gbu+y8R1P1|{D(T-|;2F#(>U0~3h8~>@xA!^oSIU58XC?Oe!_n>d`o3qd1?%F ztNsf{<6U1p=WDkCm0+$v+H?16q9m#$T04kd~m1yFHn5#B@d+OW^antUD;hys99 zbYOSa3g1a7@n6JyA{Tnlqs`p=xmQK4#vthKT>^r)EMay8V*oN3OR}9G#&RL?dIqHw z>Vl@HX;@BvJ^OwY#8Nyqd&hIxzklN;GP8xK>|G=&viHhL zMIo~^r4SO4y;nxrR4NtH5DD2UQ9>bGWvk3|KhMhb8Ta@5``v$D*Q4V7KF`SRWsBwnxKK<|(}na5M13E+(eTaT zGg^w z%=@9p2785NSNLN5J)085d%+frPF)u&=FIH+cu8tJFy4MY2BUwn zwscc-(uvI8Iy-Y+d#wfZapOHNK1keGsh%KhIRQwNclTSeMRE(f#0Sk7c5@SC&_dK| zUBAA3*4LCVl9ouI+uRa}0o#fuT;f6w_d1-=OB}=Zf-!iNjmElAypfoh;Z7P5lD(Ml zE*9{o@_Pm%uvI167iP!2|L_Povjzw@nWMPcN3WS>sv~-+FVcX1PKt`JK<^sq1>Nbx z+3zYhiKrjZ0!*!AnJ1&j9oCEbym`z zITsTfyPr{M@j8pMPzcGh)=Ic2Yz}2sw&DKtXJL2t>mggMz{4_aP+>Wd{knFtc!6b4 z9-O2T^ZW+K*<$1}o2UMMiU078{6n+b4Pn?_z#vps*Z!d@ba0 z0XLdTmv-D6UwPmvkgE-x>V9GjzwY^1j$z$5)khAs$u}!vNzWRQr+^8^&X0V$d1SZD zSnta;jXpMscUgT-Lyzacu z$sCMu&4#7__6OB0?s07A{u(N|FhT8q;#nr_>w{AWF4}JnYHTca{s>h~kHv)bxn3M4 zH2%T#1*|78y9IbY{<0C;^jC%C<5e=e@ptqBXEBO~3_Is!bL51Td=B|(e<*U4=SlqS zkXIjG zH7%M(C>1lC>;eo7I8{crCNy|vue9??IdlU!Ig)g)0SJ(a;-){C;=+4E^R~}ul-|n# z*iTbDckvicHCv=k_U2{!G4aZ4fuE1Q@UZuOxC>R5QMh>UDwB!;C~0B9UP%zB(`yIJ zFg)fJ_m^zlwy-f_{icCq>lfJ!fv3vBtG+ZO#FTzvtbvB?a!67YCuUf75nYMLn+lvf@3d@g%W z;XO#bEMgWg$=q*KH<#(<=DyptrRQCvB?58Fvs(+ng4x>DJAk#i#qdf{ORp*E5U$g#0v__2g|yf`mF_ zydg|sq*Jr|iXsSAYf9VRpTK?Tk38~P#R95-?Q%_i*>p*;kfiT0{06&6)^i_;+Vz#b z8i?ulWwE8~xY}XD6M$em4<_S{%XyY@FWjaxr@cqcGN^TAnSQ*T;M(V*4(Ff3cUm2S zOPV3E3%dU#@Z#gy#xxrXfP;U74Q}34epcE}TuXkP(6gDiM&Fqkzeo6ZuOY||q4Yo7y*;Rx z9*;1$>AE3g#N&SB{oP1w9fk*P*pc@!TkuMM=FU!ZJxS|Bo@Jgj_gLV2?W<+?^0H;J z_lqub-rX-rLgBcnwRZ_h`1%-^An;ontbLGp%Kt^b^};VLNy(=b0r!ZvHBYu^XHh$d zJBSISBRP=$j}jnX>$B3QhUvJd?r)Xz_RmvxJ1{ozYAXL9RNxyL_i0P0x%R_T7BGpQ zVYe*%SLsH&g;2UBA)tC12sHa6#`w=;>vUc#rLFyn)^A$$+%_z!LNaINn#-7AP6t1I z_+q25F<-!NLHyOqs3SN-+r9?K0eCAp*Qa7<4WY!(<>hm>Q>sDA0U1nMSHcNebA6>- zFaYi>0eDN^o&gbI5>SoCH7O<@x*T8xn}f;dY|E=AUzR{K>+E5?kJ?}Zl<~vY4<#Ey|=<$lzlqg zdn|gwvvq2ZP4M%rO?{1i<|j06T24}FPA~N$cz}4X4M&T9A@KVIDW4$_htUISWb#)& zDZ8XUN4KM^``NXUFCpe@(6Ovs@CcZOwG@7-X0_(yY4I^_(*GlFTZFiyDNQjgB2zL* zK2Apc0;S=Y^Cjdcjh~u(6N39FT4wQRPb>}PJ8YIIX(;aUWpZyUKSN{)Ge5k1jP-E& zcNJgY*7re_{0V>9_FDWIT~Vp|{+2%q^0zKKxc|NdJb&cpt=>>+fjT~Arza_Y% zYnVVWEW%i&j$raOe;^*Xz2NKGMy7)Ei94BY_+P|FAqIX(PB#g~<{xoA>c&6*Ktq4JN8;~^HVa_nP@kG>xX8%@Qkh*FT{3BDEVL+Vr6q0^|k!snX8m4T2 zzM+M-+7{Hf(@3rXdH$7in}^Q4Gg$wC^#MZ{3pKT4J>!Rr>(Fw{B&OrFTV+K&83Bn% zymcC?XK_yUcee#eE5DZ3RcD<*=lM&DlX9#Vnl8TYdN%-0C4rXwQ<#OP{r>k_poxjiZdP8lOoCb*ERA&LdDCm`_HRv3UK09X( zH1|bS6h@niyGCOe9EC65qGvgoD<;Zs_@+!^!;H6aP%ND0ft;YZuY`s*O!~x-3;4>h&*t-5y0N+G$Q+)dT{wX_WtFi$H#C9#bq0WRruJH?NHY@Ds^st zQOT&O?-eqb=h6j04vY3!K^wkpKvqfcHcT0qK-E=eCZY1ua)&Z}Y|v$_BYGYWi-@|y zY3qDb0V!E@#FzqnM03pOpOeG!O7#g8oeB-3NfQhQpKTr0TWe2VtU5NOh2%~ zzX89uOXpK4EHFSc!YSvS?}QV+Ot41z1x?}EqC;~)1MX0V4B^2D^1Z_yXf@V}RwDIPw40cD@O>nHW2lGT ziHikWcKwBIE~M}k$xTsD!NQq)u|qB2lNi5HIXNdcNf6L6~9-a zs`|-_-j*be-Os*difU{p4lo`NyhD=$H%1GzRys3GdD++62^)0Nfj&Nx+WL?t@VrJuqN#0 zlwsF5N!n=vXN9i4+CU|dt*Y=p7PUtDtk0soXgI^GX(P;hsXd%O|&X z>1X6y4jw76quj)pMHk87{o2gX!Evs?V*8_Y>FtIUSPsQS4H5L>V61`pkIR!U=7g}D zaGK*(DQDq>oohdByUodr-K|o;fOMK6C>R@MK#65;lw=Z9xxUU?qCh`M>P#22w%&w! z>rspkz}6Vn4+TrdPw_E|KgH={t|A~Q-@_U_jC3TD$o0uMS77#6cR_i;?-{YlwR8)q zL?{SdzOOUx>q)OIBam#f?j_lHB+b-Q)kpE4Y`N%mqt|PxNjOSPb2GR_ul~2}y0Khd z^rszUvMGG&=N{tz%i&#?Jza+0uO=UK37K@lB@N7!PMEt<8#n2afdhE8Lj6KS^z`od z3CUC;vjV;yo`~7wq`mK7_~;j-(TK6Re#@(z0%!|kn$g%~Jp4Gv@|0NjAO@bmpLK*W zI5N2_`q`(rxVS5Fp`pvRCpfa*t_`aXJqrsDqmE;;B|x8rwM{CQNdDZ8>jzv|^u;aPtVEEz|83QVb?f z3(+FhVmvu*#`AFhZQAD)3w$x!Td4NoN#wIy`4qAV+ zQ5lAg*T)HmXO+F^vpFQY-(ODS1n--a_}tY-U<;*_@*ezBZ+yhAPN!@iOwJcL6`iI< z;d~g=u7xk+f!OG%-VGjiGpWSowj*Kiwp>smb}{c&0;g}r*oWklleu*2wLcIDk;i<| z32B3_^T@pTWbjiX?4&Gj_4@K1==rd}*f*c2?wSDAJ>ZK5V3BdU z`(5ekXW5RoPY?TfA%OW@{>ZMogaq7D?E80N-y4s^&5J8jfX*^Rqu?cft;QRIr(8fC zLM-MdUb)g<=ymcNu+FF(o{!mnmp#zjHNfe11I*;!4U!zUOZ0?_bW>zqaL|Wdtp`sk zY*{joo4xDFnPSi@5CdmLt4&%IohQ4u@5d%A2_QPcvGSmSmLKcVNb`C z#m@mP17U-;{hSH!6PeK=$d|l`xERydLyR;sgJRnS$97>V5;REV!@fS;-^gh>*PGx% zt5(SQ4M5D3xodP=Vyqlx_E(=8XZKciuzq`i^je!Q;x3BN9Ce9k}H14V5$LJAov_g<(`R#2yL11@2i z4IxCF#0vXrWR7TS8Ap`Hu$zbNx~z{*1rjiCw4jXUm|hc-jScypVeAUBBiVB*Y8j#N z{@(c;cUVPN+WAfGx%rm*n(q%Jjt%0X$FCCE<$UMtO4UzW*6htJ1S-L!%!g%x>rJWa3gx71sy(*Yt>~LbrE`f|6Km`0u)Do(jKtV=Ke5stHq~zJc#^B ztspze1_LX;eW+?fg3`>_w;{}fh+kIZk&bJe=dqG!xYoe>AzH6;nC6(O50t>Ncnla1 zu07m)8mln34K6ch>~*EmmOIRB?LP5QCbOdVLaAY(Q9!Em>&MjKJ5=4VE|OyCvu!VK z{+MP|!G)lD`P6GVu26(0n?+YFA?(zAyb|KR=TNY`2qs+6bB#22gLx zt@!hVU_pZWY`GiJUrogS{KEBv^+A^0{Y{(Fa}ZePJ0^DI$r#3>(9WEQ6jkGzn5Is2T8+OF~<+pi0KulojH zU6r<5Kzrv(_xVimYPnKy`#{S5h%TIcfe>6P6WuUEPs2ky1zP3$(_2FTg)(hjler}k;^m& zlw7mu`v-X&p(q5jR#X3H${}_}z$in6V&eZ6Y=-m&B|HX@lzW&pFqT@5rTt7>paLNg zaX=kbFxHYo?`44~HE8tk0nt zkWb^@@CN^dglkW1NdcUdsS%E#K*p8(NL=GLV7c_+?CN8hzPh`Sn|a~Ok;>Asr?o(f z{2q?(Z6x37*@7+yyyPWRn`Iivp1{eNB>~?dRZ0>=`WxPc9-CV9(Z!pb>w=!f?cEND2yYMgmMGcDdr5HgViH&HL#znhZ96d}l>}o0FFL{!GM9&(%># zq9D);x~?jkxb8QH#heBQMxjN5$Ce7Jz*(f|wSoD|kBoH;luGS&_m?8CRaNloA3sObgEX zQayQ%)=x8hlfPL45E*FX+wUEs`&?lCYCRvPr5TzUjIZK8J0b`-4|vr`g~c4q>dSUn zHB-Q4#n7;$MZn(Uh<0Mj(bpg$6;K`pXajR~lPNM_1?4@~BJ!U@jn`cF#oY8ZtWDT= z8Yn$xJ3S;HcFY6v0Co4_Q7X}wt<})+$~S%Pd;)cL@F51OsP%CNkXeKL@sJW{ZAhLd zjqLwSHe5lbE@2x5Xj}=Sjz=;H)hF)ggx4dE%oxK6;LL zveZWzR#lquaZB_0%w`Ef$D!*)0_AMQc`)8$II2N&wNzV(xW6enhC_rL`Ro_;wROHb zQxDaV9RMF%3Rs_gH)_;d^pDZ5(#*N}sc)~P6{r;UJmFZCgfDYd5~SPQcdjd)*MN_k zCD3tjsSh59#Lu*gDGBjkhYlJBR9~m6`ZJr1#~LW)dxxy#D;8dorw&*#+llq-BN$Z$U>C)S*cwoVIj+i?CtUr|<9 z*_5Cwx2Yr?t9}-rX23G4_90VOKZtdvo^-F?S^ebP+bMwdeR2B95`B9E!bP_$GT0JZ zrk8kwOpW2<(TtyGC!!7iZ4|kUfl93vZ33EHMj5Y7F=J@k?x9q#9n5IK^}=#V8QPz2 zrla=`Zu@46;20Q6E+R9jH!bU2xt9T*JPLOSxJ34^WV(B=Xl4wN_!8@(FoJ8oL2-Bj z=9fanWNQ~e0y0yxM>lqV(-a^nS+)a_{grVHGk&#)ZOaGO zf4ZHm=;k^1y5^25#jhAhvJ16-?tOCR#{TrTBL&5tWYP+UZ{3;1^R2{RCp_b|8VK z+Jo;gMAN|2PC|i>%NvX1A~rGKbOxmSq4w`g0#K|T@XiH?B_9Klj>(sG!?0wYt5CZhy)3sMH`>VmPU;M1An ze^5iZp0L;Y=@SSuj!?rwLVMg;L$5C4j;n5g^4<`S31L#Z(dJcBe#kGvkH`LUOT9cm zj8KUjiHmtUg}d!1e0neE`$KVOVDG|aU8*!H`yiKqxm}*~=Z@=RKCn5h z_BPtNIUsFFD8W?u1)QvBs`bk%d_1j0puaP$!hl*iVi?(rfPJ8C-Ubvk4)e_r{zTbf zsrKa^uoD3>rDR4Q1evsze&%(F8dzt!CdZ=PY?Hj^U9x*`KKppbqF8!H`v;MeWpDG# z-{jUeEdz8i>uEW)Z1#+rP_LY6&8B?5c;LKpxujCrgn-1DpjF*5)D|rR91vmS{<(ka z&?uS0j&A#Ps4PrnrLW?}(nN9dxZD2I(FT&Fn^Ma#>8i}uzQ*9iTNuSI85=^q$4c^0 z$Q1@n6QDtR^s#VqIVg=72t3grRs?LgM9c&_ z2(`IDVtiUwE&9>}`5BN~B)au!WPNp zIQ{zZ;_3K5T@aTurHbcmC z2IU0C4I&8_&+0`6&zJF9|G#(Sa)Ocas>&OSMAa=euU-*xzl0pCj|*CcV8q=b>s;$6 zi8_wXkfqmJYXMDF<035+q|?#Dl@0Ek9O>B{nH4CEhDYfer|6O#`}!@>$6q7Y*{tUT3^_BA10P$@-5{T958 z%jM)-;U;PudZ^T}Dp=C!kybWEF#Te#_+#oPVGZv`EVSTpLOoS1%sFsxWB)l+EJ7#l zol%c5s8Rizz?Kg!vdiR>tni@+oYC`GxoZh94u{N?$dLyAz^?>&2cyPb zM5o0Zw`9!b3Ss^H7;Po!og0VBnr(r$W5RRvrONcTN6fVsw%;N^J>oks(f-94{S^_6 zwj>=j6Ar^jKTk>^ot_22&!K2Mw08~FNqmbas@5sTh|~v6U{HXJ;H_44`4ZY_gVK?nV>+w2afi6f$x8pIHY>CKu2E0`?i(7J&S?j5d~IQPJm^}Fc)M4l@kxEcxO&a-B!K=bzD9a?pdr^OHWtPg?%CS?pgXh<$>zSoEk z%#CS9ETssVbgS_+6kw+SZ&WBbf!9UdyxXVU{Mza-+olh#N)UM+!?>VC=Jis?<%q|H zT^VthMBC^lh+GIAjGrVVBoeY?WkNh3!*I)BLER<%`GPmL^Ehh6vR^zoM1S1~B9_c# zhGM$emxq{#uKJMF-NasrdV|lCU9xBJ_|Y+EJq?ejxWg+QM$3Ht*>0S8-XYxb`LXZe zitRT*M}+=}!OgXhID>X9#Re&|?`)~mU1`}Q%AN#(Rch4u)`~|Qr5E%LLZ=WD;IfNA zvk1gJi03dMFa8Jx9XZqW0lJ zV|_{J7$@8d%R93gwdwj`4Y}fa9|Ht#5qQ~xZ8d1z%(oXCzKjc-_LFndb{*T67?>SW zQ3tN7`TkA`#uU{H6sNZz*;N!+!_Ui_TYHxVw`kWY@>A;4)8b zq-4czDPYqbjMw|3U6%XMp|OgYMr9HCq4R6E-G*X3Xt#b25(IRmJ;DON3@`J$XTQW~ zMU%c~pnT@04+Et;-M?N>zDlw_e2~vot@d_x&nZPfQxjXtQEK%D9?#M+kLc1L32)UBA9qhfGZizp=Kdvs*4y_^VW1gHUzxP`Gp?(r`m z;>+vNE!c}Q@)~fovJwWCbmgn<506H+@C@YmVn~hBXFd=5ug>2ho0%l_0BVuUMv^5= zS~k2z6o@J@jtY}H`4)JTCgxHBX&bJ?*`F{@V`#Xbwpk|~U?OuZNXU<~4yrO)64AXV zMp^Bn6W-Y98uSW(O?OS?g&eNL6vgOhsQU!(sEiQ!Za)*rb@q4iz=Ei5L%_|<+||(& zYNNJ4LyrifD4J#460EZ34r^lvO3Fz6HR|3l=`sn@wL!|&Wah>!4h2R7Qqm!z!^+)t z4Q>w=J14k=Wv=DeT=yGYz@6-pXEg_$g6vBYwG?F+on}q?ts;-mKsyOiC68JyK&I?R z)0;j-x6}&rORC>RtrZ>6lv$Oss|Qi5d`r|4h@V+8Zb>iJK2E4}FqkX9fWj0^nyv_# zGztzdY1wl$Ld0$TuUS;2;a{_;Rt?7NF(IYrB~Kcr!J}_VL~kGhRQvuMm;VyKeadOMsr5h`a-%hw+*Ar zE@*L_`~u`Srxy~5JhJW}6I=D3(|qsoIM9;ge4Esxsm@h!jCv2N9d&>NRodq1iIy*3&273VF?ocol*<0&+J^VGa%@-j zybdyGciJW6Kki#WVqXhFkPRJVtl;VJt^d?gR?Lj*8=gNTU(2V1r3-cz3a_uE$E2a| z?QG}VGPA$ulccyu{3uUv-x;{qo*F1DRIcEP)1U2kSEOgZx?N?MyQAg&C?^E`Y!=>9 zY@2Pw3VsuHO6xy$7ajMT5RXXG>oj;T1EBxMQP;G@aj_RokAvz0c3xeB`+FSFp;1>R zRZAHLw{ky*POjq6Jz=cksnb^h<8r;2`et}zxstnZKYyUoO}0QK{uCdD>+?OACZo56 zi4Cr`G=x5HETLxE^8ihj_S?Osu|I!oI?4X-%!nwapg2Bz8`kTIQGUlceWEB1_4e`a z7!{iB?^cgu-*fecOcctL(Y|Vr)_2V(9JHj@(HF9-4S;0G-o9tQ!#$eo>FOt{z4T{J zh+c@PkID83Be&fN>P?co6%%qpda!&7jqFBI%Vx1ZP2NOU$<=pIv$y;-b_BRO#CPvLu#@&i>|AP){q(pp4 zbsOBc`J&#IH(I5NntdDmwl-ibD*#e$IVD^9blp;@az>1T7GL33solgLcjwecr)iO& zgSa7%%fPG)-lgNtWnp4~`cfTSrF?DMOzxf83$&TD-S-aM^1BwdL?K?U<7E?GUyXlZ zlO~6o@Ki6>Cm2{fb$DZgdoDwwGe{~|%XXKA-m&$K0Yvv?({DBQZzR^&XrWr`*muD4>e&@zKj+<@t*NPFPp8j zPX6Dj(m-=OE@2L#YkZA%;e$`KYWBy=6ZM$Kjm*&!&uz9W5R*I&sIy@DH^o>=MdId= z`HW~AQTTp-t#f^-;AH+U%8^^V`{s%CT5`%0QCkM0W2;ume!_S$_S!{2E9y!)wZ5@? z$dNxSy?fKY5t0D~tAr%$Y?yt_Csz1=^tP15tvCRLA3Q3pBkqnC!1>l+K62}i1`PhA z7aH_#%=D+_m$F1$jQ&GKKFk_-iq85o^&1@<)cnB=4S07ea9%<+HQBRymyk!KzJx;X z*e>j61hEQaai+}A$cbDG}(7>iLTAu`8QjO`CF4Nc=Ey{-N5UM^RhkDA=p+Q(yk zaj8kw`Li6gvoKGx_nTz9q#W8UazUQze0y|RZYno&GQSHf;Gfhg$JKZSVHCV)p|ZoQ zrFDGsHD3z5l+wLCOzLsqTfl-EmY7hrk79-#lZ&x;)oiuOCw%9Y-IdjqqFF*?Qc=a2 zwJ(^D)JPuquqtXhxS-vZ`FZ_#zTKaK&rjh;*~N4vgWMy>`AD?JlS#f7@#CROwr*QqF(sC| z{bpegvZZtbV67{O*#60T5VB1G7Uk`dr zH5)KIABa)mh)b2v4^*1N1F*P2tM*>8g)XT0>MP!zHF?E)^(TGT6-40@cD{3ghh69O z!27zRR3QwpOu;;LPn6Xl2&r8u^`D#~)!^Qn_DU@|%EZ?_d0`mHLxsCWU*c|&PKEU6 zCw8`48Fn{2(K`~$b{+-qta2A~oR;%mNxo3SpZ5nLnVDn+YrDnd4{Mto^lz*!?G3QD z@w5bMyLix7SZH)>!YUTvmk}bY6Aw3+ZI36LWDagwaDe$w{>Bz(mgJXA)An)H5dAt9 z{@7lAMrS($4@H+#ecwIk$y6Rxe10h8rwh|xc*b4TNO@iy zD*yjvb1xmancjpp9jZ7(kTREd>-`0TR9HkP{#;K0lUA}yhI-;wS(1?caQa`geP2fa zv4G%_%m~BSgVwp~BAc<-r?R!P0q6QFDHlw-IVzF5MX2|eY=c*6<*g%UnEb%bhC_CM z#%kY`6Y3P2pTPWikeWuyYuB!wA$AVTbk5;kATEV%z(0PlX+!3NRU)GULg@4Phj16o zF$Ab0sBAwip*dL!ok9%?0RY5-KHX7;*hWP#fAC5GK9zQ)#oeq6!|^S>q^N>b+AQwr z%;pLxZ>%1J)vJ3w6}Lw6AxK??3M60|luloUCjfZ~c+_HOw9qHR6q)&Rd=g6yz|>{~ z&fG$jep^5=V+Q-&vQgR`u0c$Ox27eHH@X``_rqvwO-3VQ#ubJN@yIz*lmJg1^sShx>;-v;bJe%q-@5<$}dMQPg}rmNhPF zMl{r)F5Ox0H6RO2AdQFIphOs+<`m4hr9ZbeS?6FBT^V}JEQRJEYf+*wM~(cZTq5qMHuIqTU%>ECQ?Ch`ngcn>MwY(uu~*5V&~VSJcF5Xa=7^ zWJ4jh_b^hZq*|l9A>944!=Gm_ph;bfXIk(7;yS<*X8;$^cdVH*D6Kzu;#!~|)hIc@rA`R7CGg+WBxrnt) z30*SoGkir^g_L^lYBg+bQE6S>If&O4j6w4c;Dd(LlO?mXluv%8$XpN*9&ADLFR#4|vyIi#YHkcy-DoCMN$4G18!z|;yQbOAE+~q62Vq!z<8_lin9$4H+ zJN=EV6tV}v*C1$r;wHtpKxk8hNfdf>nW(=mx;55E~D4eCaQ?cmn_e=UU3B~W&u>4N%SIMK`wROl7y^L>T+}!}H(|jiMe-dj7VtC? zcg%3@a-BJQ?U%8!~VQYCd3izWwtrv`@m` z70ZxNFf%+D!w*Nlpqzm>CDH~d*mpRCzWhNTHYra-&r|!)k$8z7RV^~u&W1o{aa8frzHzy=gm$|~2^n14)n>jCKm|O}V7@_UV7{$KU`j;R8t+oB;eOxWISafy)VS%o$ z4%hk-wa;rcHOtO9YhxUV$y5+2y9OEquE1dNJW2 zg3SweWlsT2={v(?NGZ;GYE-hF#~mq!^#) zV90@&u<#_q0(VoqJA9QGV@c0$`Spv-w=8T!XCNhdj6Ic{-b*wL7DszWHjMC z&uWj|%5HBTdaAryei)^??hz*-Zgl8l>trAZrsX$lR0eI)q|0Lv4=U+x4^L+IiwN^` z)B0y{#j0#J+Am4|k6mWsUtF}0{_tnTer2d?_IYJ?ww%zvx38?8*eQ#@wM>%+FN3Fu zyD!6_#WQAM}dp>z*L|yeigKq!IcUQ*!kb=Aws4Els_H!GRHq^GxH%2LIPqh_`^}py-Iw3u8-toHaPO(s!;Dd`-Y8j`M~+RPT+U;bDx&X z7~Bqr1#->eCfUycpjTp8Qd4J zU1g&Nd<3@RFXnpChBF;$@xyJ&zh;1oJrbDnEU7&mS+0>o}PbyQ1-iQA5 zOg`0Ke|?vbw|tDQPmgA*CNw`%O5mwjU~STl5B>uAQ|+P3)JIkf7T7Jh&dl`LIqr!x zhXyR21-5mg6*T;g^IfKsldzn{n%7PUiAqTyre>n^W_-F6HGStcOyuuyLXw1!Bcm9B zgo2DC?|-%ApmF41pDix3c}Op%ztZ?Ng?=1i@e?MM+Q|-}cmbl5n?ig)wGJMxfM_vj zBviaKJxAEuZVE4bbd#1&=FJvp$!`$1f(wvkbf;hOX<{ToLKy|t1fp4f@l)l_D(ick zl4;PuE0A%tm-oZy*AK(ju6(cDI7dz^A0Q~vzs+-gYKDo9swv<{6uY>Ek{2Z1|5RA&rzFeW>nE$3H#%#$cXUtd4R zI+!MZDL{jtkuT@I2>)S5$Cui*Z*bQI^Udzj4!a_L5fNbD?poxjMR;7SKjEFOXP6CQ zkYU@R$R{QpzPPK6+fS`tD^5_*_F-yP9_0J#K+h;p;fY|FY*hB!m#%;Ig`tW}9>aXd3;Xg=q{%;=pSN|;`ouHYG&BbuU z{*Ss@ccwBTWOD@1^fGxdFdAsP{*kj~#QZ;!;{KjAmtp>aPTr~kt&+S3f*Im*!WQ?` zV_wj9$8>VpudfA=Mx5$XSlU)HfBriy{=NeIR2`9I|Kk5Bv2-~sx6)#^Zv8K(aJ=Dwd!~UgT4`3oCi(EQ|`8ApoP$y_qPwfQH0=&`A z9`R(1pV0H7r-O!|;3*qA@qq{HEhPK54K*{vC;S*1!(1ZUp7z{G^JcMnoT>WPsLJH! z!vjhWY55Ir>9Mo!s&%sPb#G*-7MO7XGyHoRJ)13Svx)`at%&o!wmNHVF1~}4{#W%X zZH2FwI0|O0^z>Jb9w*mG`Zn3Ch;$C9(Y9byBf9)8BlrJ{t=+iYoNY3cP`*CCb^y8s zQ#dD$yr8bHG&RVne~qu~_8;-9)w(#EcSw@Gj156Xa}nDKQQZvu*kbJV&6MIIDo|a}GC^rV0IMhH$vvc^ zpq{Zm<^D3U7okv!rTnP(@-+GCymlVst0~L^ubq115(NK(7ei-w{*F*{|4$>-1f)00 z`RR6iQ>dTf|3BhbK&jKeO@G6D#5M8P^v7ABrl|NonErn2W4V(4OCK9H6wH0;^iObM zvUVcE3sr>R6x?XcONb>@H?;)fbwu`|$n_?E|7s6f0vaKlyB0rqb^vv=CF6erj~N6S z_W`Hkz}RsH2QBiX2-*3i%?j@qAye19+v3G{Wx2o-t2!&Db^;FpuP)vGD#wmfl};5^I2igv0&#zFGTJY&pbCezQ>Bhg*D5v(4(SiU z{~VtZOSmdCYt$t3?Yc=>-WuV|BJ%G8tfgbhCC@0C1gwfNiqg6Sp66}E=*#D0v|lR@ z=0^P+(&1@-YMJvCj@~YtH`EzH$5M-lwUa?5NHi{N8O&MlCf(OSS77;@?-SHd$l?7c zeXvE2kZ8TJE|{JK>R`&q?UkOwYV2>UE(yP%AoA}{Gu$NS+^k*qo2ML~v2aV;6%a0>zEnlj>ScLi2{$%Fw+~UO`UU=%xv$0adF{UoXl+vZh6#rsPvxB@ ztQ(vDi54f!O0}UcyDlq|?UX|va9`^JeuGqVT0gUqH}fG3ywz|{bdp}H{MrJ~1Wau}sHGPDL1NF8G9Acs1OQ#G#Lw3+(@3*7k zePepGR%rvzLJ-q#VhIZK)=0f*UTwC_E_O=qpID5U>qoaWbt*`2j}*zp&eQghLak#8wHbHS0gsZ1p~!JE9f-Jw=sLuMk(H zYf=R>TGVipYMRDq-WtFdgMG%m^Jyxp8a3tJ`YAT7#k0*)}roC>g{Y3>aLi)>8FL==HmolD7umSyI z2lPaH#`|dMnjgAX;jfZxKSU12$ZgUlfwa=7&j#ac(#SadN<@{~HdS7I_QLy@!dGOL zNm%A!ADy%nD5PK}r&*a-qYfcnka%ER+f} z?|QNC_JQ1Img78>&!88bB_MuzOZcv3lW8`seo>adsoDM8#(GQmT!!o!c3 zU)7k07hg{Zbzrxq4#=_@Jp9_@>!I`uOTKWcC5eqTyr4iZdq;cLjiBv~gxuv3HnWry zuoFaMpp>KUrdMdTwXKvbHxS2NDJO zGo1Ze6kb>pEf; zgLNxPd_Jjt@02+&yjyAM4Bh%KkE_<8~!i7ZPmZ@wjF85-3FAJjy1%OV;gP*lx4Jin7(1UWsw~`ukcW#o~54G`k6qVjnR0pV6flLq8yiZ{aDrF(PyetBhxR zmvfha6$1cw^fr)m076{3QoVj?0hlbgOa*4w2EnbW5%13hy$^mg_4hkuk|pZ{$PWs+ z3%xwXRwPHdBb`KGFzH`PRZCt@DO{rDw476$Pvd+5+De!t^~eJDhCZDZm?x zk=nKIuX;-*=TczQ#A$@Pg5SD&=|{dg`Z}kZdbN=MjF&W%6k!4Ri*dO8No61EVfLci zA~%mCJx|dFvbzML4k*-71>Hfv{J0~? zR)v#Vw=atn^Xpq=ee^GXzMa-W3X9R5RY67>zfLN6}% zEd1K%Yiqr(fT#Fk~j!wg@$oen1m1LQU>`q#rOR->d}J4$jq zJT2xVnwfcK0LyTg=KgA<7+0OAo&06?IoHYaGj4Umuwj=zG0#7jPL-dEaw0=K(DvzdzqAdH)rqH4!mXBA^UVKaX)A zEc>5IfWXLcsRx!j{>4D&2j)eRcoBmx9ABfit+EI0q&9>tkh57YbRJJ*piyiY;GPo1 z-Tig?A;!Lei$;l@n}l_J&T%b?XP*XR8kJ%bM37J_0#o=f`Y!uxX?S2`h(4UYUBYU7 znoOq@k>aPZ4lm~y-ANt?8BS5$UdJyEI!CqTo%tX=qpo{ShV*8WM%Q}oX_xTtG!hR8 zkJJgR+;e;8{H*hzhblR$Ysy~w{-x@rlwe$9O>3FbE8}Bx1dqnMR&GlLB~|RSFRV+^ z^T;b4;J#hRCgni?3$})!)^vK)Uhuh?zJim-T2kvaCD|8y2DZ7$YUWh};HbB>Q_i&C zYag_CUxCx3?zXF^n#@%BAdv;Zw&_cX%N<_Fzi;}?Q32?_+Nm}ho)(R_c{IPC4Ap`$ zZhgz^N204(KzAn!>MtNVR)Pf4ls-qIIW0C$bvsc^4(nxOI3ilW~W88+w3> z1ToKc*?CS=ua4C|bWBZTAl@z1Z$_Ds?Q4|`AE_wc2YI%thSoc|^!Yh9q$BVoM;R!4 z2{P?cIVFQg9Q-;)2Zh#}__!U+=6o5qUBNwLP+NqbNS-0#RiOx*;9o1Wwy>~diwsPq zt{?Ml$v1Wa9ggDRD?pL=(oblG;{^8v$Gy`Gd>vPn_1CfNi}+Z>3WC=!werbLt*Q!} zG9KJHVXRtfA`gn(Ie+MFPsjtnyLO1$|5kYNZnf=+zr1Q;8Ug(98+`rlMsWjPjJCJ= z5$w%nx`WwESp8<0VW(#4J~Ya9g)_)S!#yg3#y4*;jO$clvKu;&&iMbC5b@^M|0o%Hq&mW z_Me?(W-i}GjXZL`G3O@|n(7aqZzC+{wzGkePPNC$=m&z`YKx_bZl@OzMl{8QOH{R{ z`-7|F^d6=uFr4snv@Kz5=6Rw0M9Z;o}&jo1TE+AA=EPaEdSEtFKnJfSZLk3~aSN`e~Y>4IO3ZKnSB3`m9S= zaB16qYAMoei8)oWIsb{!hPg5aI@=cp4vraHBL|fN4L7+~k*(!ZMp+5}-Y7!FuKntH zBOSaVJA~~B;+WrD%>7JE8K;HF<|A}IKB>xUcm+FrJ0gGvwvws)QHMKF&J^FllcY-O z|IQ{TOV1u0!&>G0?%+)w7F+qs;yo&!(=EH4eLOYl0h& z@cKvHraipAu?(ad7v>SuBN~r;OCsJo;_foieWqlUE5*8?U+wB6ZNR(f}hGU zF3J-jIk!GeJr(9`KKk}N3T)W-v$rqZO?Kov|D*G(0@cyq`j{a_-Ty<`TSryBK7F8q zba!_nUDCDb5D`&A5TsG0rMslNyTLe0NrQAMEg_-OC?X(&^qqZ<=l8~4?_KNu=|W+0X9 z^dNvao1PPj36{b2o!9sBj8Aruaf&lMgeygC8X~^q;bQ5+r8)f7#K~B_d2a1L)ZWe+ zI!zCbLJyL3{h-PpYlSgW9?NN!y*=9ZDC54IUWy>r74P&9=skQol;;kq4ZK0>6a_s z##Gh8ACrs~2yWrFGe#UJCQg2)^=3|~#;cQhrgAuNn8Byvq_WX-&z{Lewz-p`^NO-t zv6qo6(=9VQbvE`LMog8(xf+V10YS71@;J2j4r(l02OjZNC8n_?Z(G-|g%ayMkL*4a z*sb_uydleB8cE%hkKLJ<8Y_542JM*YsNTsmOy5KKvZs))4yHDW=1d5UxdutJ99L!4 zrSi@m-IvjP+Qdxwaa>7k+Wi|Qs)TBB=)}k~oq=&vm6P_=0vsllMyX$b zN9Pa_ScE-P2eT=GC*9D~s`o)BQ?~Mm?rT?IPl+$AD0r6<8c-q#EkUT9MiL7;Khc(Z zyOkX;ClTd%lS)3WiUNygnE?OTqAlxC|JEVV74|I9SWUM5jqB z^SzRQu5x@k-|DRFA+y&c5f?N+<%*E1O=KU&Nmr+S#!RIZ${c|d7+n97gj8MW)Ikti zO28BoPGVVDX&dw5t`2O5>a+{TQu&D>I&q7a$SEMzaXVF+o{?1f2ihOHrw}QP6j71W z4@?wL6Kt7X><3X!yRg?81VB z`M}Z%xj^f5UQ-9;&`+D5E+9~g1gjGaU+X_hcK0}L0x0s-v<0wOShPC#TX`a=RP^-~ zDI$S7u%5iMluF76k1fg|G34{X#(=0eFOx%G_a%;Zu|&+M1n;0(h4Ex-f!{5?{?W_` zyC3w^P)Y`e49xt)TRks+ef=3yoHD+|MP&87A&XCz0o_Ff7M<0bo9Ck9JKeXWISaM} z8+LsEx6|5`*Xqt`eIU>eCLgVQnp=CwO-e-6u@%JIQ%o6?96|%w0X!ZOxLge|AZBmP!Sb~m!R|ptbIcTeag0(nFVwfuY zG52-r!DQ51h)sn`NEG~Xr30DOy#G3r85CWeHA-rrL%Yks4m;-~y!XIZasQ;VCT2S( z%Nx3WDB8fy9m3hVPxn$>`9O*>YaV=Tz_;{nlzPS=l&SFtGNW?`gB~!-1TCv!9Tdhp zLU1b41TTU~3ps|R1KSHzG6$4o;dz{a19`R&h5~xYu32jzwq^m`o7b@|95DD%c259Z zUC3nb@R&dscc z2h-JwQhj?O*OFc~IG0k0fHTIf0cJIi_SUCKJZ@)RO3_oV=o3_IUve7QtLTe%^Dk+J z_6+#e@>f~H^eWhqN6U@lZBPXr8+>aGW2bc;I?Ol{_|~`vLBJe|Tmx;d9!(%bw7iSy zH*Z6D}v=J$gN*mu&!Y@dFt1+xK9k_7HQhp|dM^C{r2{B}Dr-M424%p~;Tx@5_C3txlnpAX=2m(Qp(Hh}Nzz;5pZ?7C6n zVqk}+s{)1BrxmE6$TSmhmmUa9N>Lz>5REJJx8oTgGXPN4;V^2s!UU~^R)}Hh+dq=1 zl#SAX2#>APkvhXS56Nj_mwv)iv8%8tS|I6$Q4Jugfjc_Q)tIY73ZJso!AKIE*5EKF z?4j0^9I!ELpaa1g>K>cUDL3K~8#x0S*ONoLN*ms*o=o;IXrGyC$*T(^lrHek}~9NZ^qRN4OEb43MD3 zDNkCBsN1Gn3#fJAepmB#`5!_p8yFi`t$r81bm+v2JoKE}Ld5mZ`EBIy1gL zQtYgLh5a2Cs!IQk`VE>ZAFjpa7Te&m+q_j62tv1DFpaA}%9K&&=8Im1CoLh9dmdi! z@wQEvb~N}buTJPh;&5;3(XbT)1e#0FmeyVLHSY&Mq}aTLsvn!cME^YwYaII7v8n1B zdtbVli%d>*oyoHB$g878)U1X8k6^OrNqnfY9oYfzM=~2txA-T&m4Nsv=`zh==WJ4W z4^eMeKsZtQrEv=NTdZc|R0&;@TS2taT5>%bMeYrcFQ=In27k)DO6JV*lOGuf_d;1h z&OUV0J|MK1^*6VdX$$$0@o|g_{TQW}H!jm03u-C9wJ&p!x^eNR%@o5(Upsl4i?q(bu>sSeggsaZO*NwB!AG;^WPsyA`f!`J7Ln*BJ<$u2d(M6pNlP( zik5A$8@Y*-jGH6TbmU@@8>A3(Pc7grdSx47V9V=JX4_TdO zow(XAyvW$Sh#$v}fTY*SIjYzkjS;Drfj9UUy#pM;AUE#IrdQ+O*Zb#^AVk0?E1GU! z3sWr=KrsCA0Af4)04Fi%{A z=-(i?Vy@1Cx7P*K3oG^R{JG#N*tZa`nV>f>9?lq3$_6FC8Sp6UV*Ajx1IKj2>JQR~ zdYIUMI{k#P2-H|WCG^c>&XH3h_bY*1^Jn>91joM)86!jq(*hvlFpI*}j*Oy&=&I3d zvEeY8{j?ZRYh}-1VZKjhM*>QIn8@wra9$zz`><*QehP(y4x$#Ij;z-fZvM`a_H?`e za?ml8(*4^szT{J!$Di6|<>y|&u!-CllqFnt1}QsAAnSb=0+*-g3i}0IBGN(50zc%E zcgUNEW1tegvX62AKZe+lg_DE?LR^t^G;I4x4TRsxGrpfuD%cbrChjBv&=U{r3xJ^) zcmjtdx}`CzKj4`n>lAhu;I8D*V!$LikcM&<0~A0-(DHDsJ_Erkz*O(QmBEbwCjM+W zMgSE*LJuSaAqj%e+Ce9IodVkmiN?vU<{#`dwUGEL8q($qlrwCplRZXunDEc;A`OFou>k3-Xfxf>JA181OTO#B zNWiiHf0Bf}1b;$;6eCNTdj#|^V-TViOPx|S>Crs~TOea!uAF}PT@A=z8uV`Ta(<0~ z%FcQoQWC7j`0WQji4Vsgh~B;rfD6EhV2$azc*yAZ6?n99Uy!^f@$D<3YOobA1M_KV z4G$SW_Kck0;(v0W=j_cuYQ(?Y>>mCg3`25rgQ+V}2Xr;xhuc2DeA6l=CRp(afH z;m0R8(f)zB);_UJVIy+6{ujgr6m-v{A?PSTPGPjQ*dqRa!(8Vp@F)X<{wJ&$c~{%m ze}hP6UyyAdqajWLB9Tvj5EIVYftV$6bZ#Z5=p5o3ZhVHel=hp3R%{ErAx?8OYcRnA zM$HdFZRNKW6cj+RqJ9R%8vJA}9E}KHob%w~Q)sHc7k~op39xTfKfn|?Vg?W1&%Lx` z@OaUFOW7<%M&`myrC)=(t2pLY9aZn3o zAzosSwvO?6Biv4X#&WLy?;l=Jau+>Rji*DpOY7Yvw#VS?{=B)|KJm_k#l`8WAoMm9 zEBmv%@I+Vnjei9Uq)4`K0oh3!C!bb|j2veMb0&3FmS_7aKq z&F24&Sf%LrAwgbHnrt`u9`Q?sbu*^`jIIwmlt2$$$g_(ej_b=FjbJzf(g3(M#TvM0 z!>R`lpbxD2#f5{Qxhy;Y$SPb$p^d1*x1H;r6{nsgI1iRsiu`~t@74r5WE}5hqQjB- zerDxuqatnHUaS#VuM18=nSmcx#aHb4Ko_qjP_#29Vn^#ztu7hB{WZK*cb_dS*#z2; zU`%`(Wpj4{Y=~wkTl+Nt{ZrKn6sM|RP?YLGPe5V>RvYM^T%p6hMixpop3iF}oP8JW z!5pX^59)}%Qr-w(L9PmUo|F2weO+nW%$AK|KIr`Q@V8Xh(4%nEqGN)=xWV!LZ>&2U zwK&YXR7Hi0uA4BqB;kF$UhEHaXzG;;yihDWB>;6SfrLR@=bBQ1i-gRNHI~y$tPX-! zW-wQ1C;X2HJN1&}4-BQY05FvIAfImH9XN!`DqpxR z5EXTYO!(oLVLP>!dj?sJUkCmCcVKAEOVHLg^|pZbQ3@(5C+c8nBQk&rpftr?=3JEI zy#4K_Mb9@Su_E>H!C0dKkNG8}@>~)p`c^=(=4OwrIJEI_`t9VKUp-7}2Wu+tDj`=O7TO(72h2{Dp3f%}QU5BK8&AjKM zs>!N{C6KbbyCWi!dWX^hw$S+0TM z+dUe*J9k|torz!-5KsIX_pGlph;BI&ik0U~!l zEgG7A|5?9iI2qj7zoNWE)$@cnWr&d|0L~F5SMx4&q9U7H5s>GX)0z>EuI$tEb1wxr z>!es9%ruV{CCK70Bh`>zge(rUbJYj0jA}9BQUQyG{wPsrLo1@s71cEVN$LiIIB@`C zLs3t{;woWF)^X30`ju3+00THEp(R56%KB^rTJGNstEh296S6`5A;o9hH-#_s-k66b zf*gkZF^2d)Xp1LubIr?^!MPhLF7(X=3qk9wX7eWLhd0*j7Cc_~?v4z$y^`2!z;VnYm1td9D@^lZ;~eb6v+^ph2GBT>V3mB_-5zp9mZ6@s{r4E#l-PlgU}ZTd z|MwBCOh(Yvw}cG2`SfXPBtw94odL+xu&$mb589w8E${A;PdDiMc|maW#3O z6?IdgbqrQ%)?9#NdEzJNhzf)El91W&*DdhpevEtPl#tLqhd-6-Hnd&tjv10#prhL$ zk%M>}IMA)uUc7EcEJDAGC9-qZa-!?^nx^5TaR1QF*(XI&RIN{TiBpY1#e*5^aYr5yd&M2!vF&5URuykG(kAnJ@sbAO-2Mk5 z@@|1B??|IM*k*K6!fSdzbsr-=T$XhczG?F>mWJ51u5spa%X82jN=+AAU4xKlN^hjY zx}+>4L6FC^xef^u2~F2A_GNzxA3-*f;H#Lbe|%3{ej=2HtYVyYGY${|*ced+Ct9S! z^j?WWMJ05`eLimqh6(8JK$Mbq>H)m3>%BY=S$xK^{})I^VWyrR`YR&xehauE?kMO- z|IS5AYYTv$hOw?Xtp38X+f0#8X6ta5b)em05}ZFO=wzlby~TB0FD_@ta6M zZQn2CwqX@R6wU2xx7Sb+5t$PTsXr{UX?ugBZvl?L-0}i9Gw+DoUsFxY51xQYAY>6j z39FUmSZRs}*SPd_Jy0gPtW7l)hRhHowGCbF|Cw}Juz5tZ!x)Gx-8FonroZ+F{evMR zmdN#eN&;j=5Xa5@SWP-u+5ncntvizf0{WFi=e|CDjqF~x!Gzk6;tM;QWgU+wMuE(R zPV6RUW{D*;)Z|3kp$*xK%_|pSp{T_IqX2XU|x5x$|3n&l`rT7)%^vM0=8GRweHo{c>${nSwDrrtEX5u(9CT>N)WJ(S4IJ)so zy-b)df#ZqE+lI2X@W+SeB=F$=&zZJ!H6%>40fIK9vEgr|W(?ciYD+bP>lQ*TC>}o& zqa(Xp$6aUq%iplZ7^_3ygZdFm~8q5nwCKG>uyC zpA^aTBD7Pvk{V_v?qBtgWPMWEpP`AprtyHq=)BVOhi{@wEN)Ui!1zEFY`~K&(YZ=51YN~-o7`z%E>VZpd56FHb({kVFV6sk^@^A1bdG`_*>zkUkm@2V+p{@)^$s zk;xjg!#glEm^Z`Aun@rY4}_(13n5=*K-63Xk0R&;{2@B{KLCk7NG)60I>{4?u?*w) z@5DmC@p!JL_d4DmJrDcA&ps@KW!81T1wqN}15`5@18hPxoqJ2Ty8h!D-(vEkQU2!? zy>+3o#P(nLfW>I6MV_eGcb@;NRN`XRgpUn zdB8c|zXh8p{?8CNJ()Mgt^q!|!RZSwKX34D!{(aQ0wi$)Ci6Rju2 zbQ1=RaiEr9%MvU&Hj%>&{5H*ps$z&W2iM#86t;2^0 zd)?F$E%cwT?jzc-=uej6t@|QHJM>8W1CZ>OplJPljqx5hMn)7!ng7KCPJaF7++>*= z`No?FH^&hys_?5vUU&GG!U#|q1LJwOS|+eez&wo|cSgX?2irD0M&J8RL__>=F95mP z$3KAf4jgX<>?9+GL&z{R06offh1ekY`#%~Y*tGB(E>PhzmMgKa97Y(CtG26sp_1);8T( zn6s5q;1e#Y3A(!i_`>Cp@tx~&7;@mM&e;0<8ipOiC+I6@JVD5Sl_=Zp%YSRCd0Rd(Fd(ra~^`n#bfMPxfk$l_D&-9Bp zxBluDt!EnYGLBuQbC)TeH$ymb#1UW*Ek91-&Vo*K8|?Id&L_=CKzANMHUapYoJBNgUpHcAaTtF8j$jRDWd5sNV>~YrMxqu)-A8a)^5P5-9^;f0qTk z!#=3?p);W5(lv)m0k|iKur3g(UWf629;`B8#6QNJ z;RoP<=@6v1?bUTSTM+eN4LvjQ#>f?T)l{}&+ihA;%Z~uqhL>L8e@NZAdsUVJHE?3y zlLmH8C)le#aJ4JtMehpUew$bWgQ=3o1uW@uXmZ~o3D^FNjOzPZo=C0S2%+3>6im%K zKCa-V`oYsOX9%Si&I+o_O$e5i(TKTHzPY+*@Y3|+`K=O+Xyp5}gTD@=4s^`L6J;n= z1^9%vZ-6Z+&3)U0$&mnVAm*7Kjr$U!LJ&tV`0u^gC5Dji{sacTdUCDltN011a6VxF z{{SzFLfZj82DuT0`VnEiLyo+SY@s9PV2%G@a+{h`X!Wpy{!h6LC4JYIM2-LQtV8^7 z98zzSP9KH`i=a#aK~eVrNMbHh4)(p0)-$Lms;@AnE6(sq$Zvn+;g>bB`?* znXMRG77nX%k@y9ffL28fqNh0e)(z+gxWKNG_-RlXWx^PaK{>#Nrsz>$f{M!mJK6P2 zuaxP(>23&VL?b&k?~??zMQkR|utLs8cRXxI*aT-J%VPj;|CZiNFrb#fc`2&JtGln2 z(-WnlK0KTSC*=!JX5U+&eW!#=lm9*B#LjE>FRWp>JYeHN)+h&N21{(6hmUr^Y$(& zdx1rt($W@S%D({!7DDB#iDJs=a%nvss(3ujtU>Lo1UBej$@v{bVAkdV3HTNNH8TXGIrVW_hNas2_RI20m6g?iGuy?jdGHe_J z_4?t@Mg0TLwV*2H+1t+z8(+fqmu^G+&^m7iK{A5qDe8oT2!l_k=h`XGLtdvS=5?Du zC_J2g`LD&E{Wt6gKpIdM#j#2OI380$E{uSYi&uw$-tL$ejo!U}CBHfzL@O0$9`8V% zJPe$p*ZdA211A#JUef~Dg$}pwJ@ASC74sk z@cxg2Me0rgerK#$UThnB_iZ%JIfWqo`+Q@u5 zZ0)AG7TQODgA6vTFG?who=zd)9-nK+wvt5UbK-l&_D!5w6&RP>w24u9Gf(!Zb=Q87 z)~I207Q38BES+c={TY#GZc31L0i63`I`}0f%>^7Y2Nz|5Ca}^L*!M|F2<^qadk-#2 zl?iaVilY)xEzcgk6j-4i<|vkSd}%-wC)QHZ@SRt-?{D;go%FxZgU_ggIhI`Au)OQW zeb?@JX4%8lf(vI*DklfCv-9V=aM4{7C+t8W6*eP4jp#C|wZW(11{ndg&CGct8F+DP zXwBLoETiEpOi3*|;h~}ytX-<>yyRFx$*{WV&i{lCW?lZ@(1DT*?ESKYi4D2t8;{yi zVc+y^KpViJeLpZr?YiC6RQ^zEpc-#f`m@^V{CJjzVj4omEH25KSV(h`@mWhU#!0Uv zNp5kxLh>)M)}0!^p$VYYy72z{i79p_x_+1r)Cy$Kzw_dRH$T%?9i5Gc-k+Cun&-}Q zHhQ0cSN9r50%i!9$D7=2{|hYOefB@V0wxuh=#D0D%2PjDCpndsa!T=F2?k`>0}3gi z+ENX}xn*!_xM4GbRl@u7`~O4>en1Pva=WcfcVmyMQu$%96nW0LVSpIT((m`c_`ij1 z82d4&(FEXq=9$ph)|IE#F2ojt;@YRwOC*_v(60fNMDItC zule{GyP)7;}3%?o2|TyF?rCKDz%6^Aw$L^dt0D;u=l1*Cjx zN(jt}=3Rp|MKdRS)vpK=r&dv!ms&VO1WH#wSBM%D^h9E)a{YA#GNeD7xc=?zKeJBx zdlW-U3ge!N^e9B6U)%v>4RVv9OXOT80Ou$Dk!279^q{>6$BN++x^$uo z5M>|LFW!>@k}d71U4qLPwKEY&JD3Q;WYhmF+b`&=5@)2N@(8n>(DLeQIGo`YQHh0k z8v+vs5DXG?hf@neizqLXWhU+dgJUVFWpVF89I&uSO03t%41fyjS^`q}bwi2g_UtW> z)v;1$n5coo0*OAWa6$oeShGe*(-Ex631bv{m^vV`Am1Y*Ox`SDO3W=9yI*UO8KV|bXx?s`ax24~FcFevEBT(V}!Eoc=*bU24 zvLaYTA$*-J`rTo0NytJMa{O-hSo?eYHkU1;mOI&GU19ufAY2kfr(WJ!hg3MT1dp`I zkK*8Dst;Tz33?ySBy@Q_wZbqG8YR~(p|vL#8AxLMKO;DA=&n!xj}tLD+IL!FGC2Ut z5a%qqFDCqJLwt>hym^h(3ZfvG`wDj<*8)`BSeEaXkOQYLi4Ge|V3XSN-+$07MM3rb z^q&%Zob_o`{_DMG=^?(KWWgjcf-QNDvd8olF~u~^&Y#ksD4`CWoftFT+SbawL&YmU z^xJzjyTJG6_wEAzIxQnVgg&lO;N1R!>D%={+E`qH54#Q)eX(1ok$)!P{cB1T_>Lc+?mQIMc2RXdnk{f$-}x|IlshWc&a39RA<_TiqT9_J6E?Wb9Pf zPikX7BE<)^vh=CCA=g!qKhAp?t1Sd+pyxM31nz!DZuNW^k^n^h+vSW;{?0HHLr?IV zbU!)#xB>9s5qQQ{l>#rtAp5x)#z;`>&oh?cp#s+otZT)hX+YYv%5Bf<*vqLm?WB+x zm0&>lG9V%_mb9Exzx&)Rel;IB zW(7(+=j-#vuo_iNMt@Tgqa5TV}h;(<|YF%+fcdOTMe0)gh9*Qx;zC*Ax zA9Z-gk-7-qhxgzf%#D{CAc$BU0vzB26p{LeAFcsI0ZBhYb1X|Fp9opq)!Nyj-10Cey@jzBy!``j z(O@#-X>owfP_C9*3JM({;6x5#*oojD0eb~eJNWMpJijXe|0@a~7-m#zv4{F_V(67? zH+g(FK91?iuv7uomL4u>9*DxBP7atRKDl7IBBVui*RbXSIN==eFh~gJ0d+oLip+cP zq=+hpb7+<^N;rT1aL-8j5yih)zzocrAkc7n86gFGL9&t2D3!OLlN5OY@d{)IhgP}+ zlpYR=!p>3v6F?8=-g5)XJR|mRKxEyd5}ZZ}f@IG`1&vMRaP7asO<#wUgl`eviXb#3 z62S_BBVB6+!i_|POW>d-38J?j&1D6}N4k?M%?m~iHV9+VfI8IdzLgC46LPO`k?1r} zp-G07*$6R7#~fI3*rmRm4MQ-^mp^_h1dqOK)-UG7TokC#cOj1h9({5!4!HvMZ%}2X z9@_S}C8)22TPIVn(^Ie%{rw6|rm4@5u-@PKn(;NgeBhVva|Y_cH~Q_5ujbZ+>0f-B zQ-fUr=4LL#PdAcoJqN`|6-X}oOk6ea!kr3=M0KK~uZT*f_i&gASxaaXrx8wkd|+j1 zN9Bx7#%TS`WnjV^`Eco502l$@Kd@2hg9A+Ll@`R#xXz6PgR8xZZ?=_hY(hf%fcT2a zu@lKxH0Fj0=uRfT6w>y8Pn2#r7>AaY{}UP^1%S-R2L_~Y*+f^<$Tv5(o4_zPppnoZ z2sW@B5nBSDgjb{dU z2(}6!?n})OKm6b&RptpTclUz`&fetAaR%k3VijD+0Dz!BoB3?O;PIdgItL)6RHgl4 zn1^FO<>o69yZ7T7c)oigffr{;j-NgosiNZ+a>CL_;kG>pCSEhhIwXCJRI)z&^5I^_ z`Quoqrc4BZ$7__TC{$vF9b18H+L^m|PQ-VtM)LsAoqp+k=Yb?mV9wqXbgT2 z(=e+getDt1u^u+ouJM!ky*!6B}FRl{S-O5SW1;U!N& z)yOf2zKyi3^=r2H$x7MF@QhRI{)QMh`#8~S{1FrDO?k`&MuX6Hfiwh`LISKrr6a|7 zgP6VBKe5IX8uQLZ3lW{6L@vFo`u_Wn>=WwOg@jr}CHdE<$fA?(KJ}?cOD4%Kzcydt>_u=oy@tfNPL1qqwU+*UQ1i* zH!?1lv-wph7SSJ*ShoQ;R+!8pFfW;3f?o3=U(^@5Bg4ChR99evd!sc5fN?nESKU1j zlwcceKll;H*jPZI?;lApYZ;8(peNTHXt{yXg6ZqhT`hMj_!(&EW z7g3d_VyVd$?T$;M0dXD4Ex#TP#;7L|MTJ!D-oPcrec0ZUB*v@j08O#$Z6E+e{~EsN zdY(`&VK>H9%0%ye8m(N7M<8 z^I}0kiR`Ebedw+#m$tcq;Hhol45?Fwk1aN=wjQ*kI*?p1!p4)o83?bEhuyUS^PkP1 z*I5#bxnKbg8wjdYH@6T%xIIp;3$d}5n6$#VuPPq^B-!C1oae5?wq9aPOy! zU)>_}M9EVbXU@OXB;R0_Yv**RwmkK!meXiYvAit7Gn#Kgw9U%DO%J@jPXDD9tQ&R6 zqXFy<(${*O7=_=g{T+qsoJ$09H=tAEM94(Bmx~y;voMeJ#7%3p3v0G~$CN!nRmMsQ zAM;tom+I6QeE4-j+uYg3nPoc8Y*qp_?`~RMH|oPT_XoLj&*uwXcFoY*4#T*DJ>tIM zvPd|)pT7B)Pi%!Z6lN!hGlCJ7^c|^1<603Qi7-i8!q_T$I;2WdC1bfw=$;@^q|PS> z$s3)uJt!-j*6jNoZ7jL$q0&OWhYrSap_DzU-)jZ#Vz^AKN@RSuO*6yMjCw$D%E@v4 zLegj@cTM2=ovAnCrHx~*cu8ZIHbg_m0+u`ntPq&@&0Um>}RTPY-=A`2yrIv z#(7GxWN-wc4zRkV^4Z2!Tj9+Z9_^X{p!8jnMT788Y<<%A+~18YY|=12=4$Rozw~7| z?;I^x7c?%Ec{orO5yM~__{u&Nk7UvCrna+(?ggacGUt$yMXic5o8?|y#lRE1l-~JF z2z!wbO>-=(FqB&>1S`4aUBb}HE$h@EqL|G>>0yr%=6Ru|I@|SLT^m8UI=%);e#)Q; z&Osj%WM_ER|F(+j850eO`0Z#)b`A(%Y!23|uQME(124%l5Pj{p@*K(Wx{tVz__HezNh_?+)4DVM5GpnBJ4IWe042 zq4i%PlnG-`Z$Mne<=M}h37w5*t_fl!KGjCZ|wJ z6g~YQ`S_sn><1b&SlI`ku^~1ztjGMuSZyk^DF3oM$85-81f`mM=)GR>wP;{_lD+zM z@Jq$hg(n+22UDaZF)eV*n`UvSMNXz|zVDnw8yBr0d>$BwpFQ8=K;!gd` zOF0-ZQy|R~x^sYSSTsqoDhfDij&yTs1uk-dqrbmT-@XT3gPV_j9kp#%<2C|Qh3t(x zF&G>*qsA={y#Kfajq@=-jX63g-@*V&RvYi=HSb$<5{RO z$yNMV0{n^%=#-2yY`^>-RBx)&IEr>o$NLNG$$LW#0t|bKvS7I$TMo7g8Rm0s!VQ9r zE?6M6c}h|-{FVzvFMPYyW(&<1T&g|Br4Om1Dt=h=D!r4qzF)3t%5 zRyj4JYQ&3@;wVh!FG2}@gl7)XJsMfgq2_Gy#_Od4cAeNP8^i`v00-QTz>6!|XyPxz zvv1DjFnMtvNS3%Gk(7w1bLR+?j5>$uF&P$TNW$d%IkIYswU6K2h0(narqbv7vW3E1 z*sKTCiDn+(>uuvTd^kWd#j(MGt}g3(GJyMZM_gAghUUvfOqe+yx^=HJ;UR|s;?>is zkk(IoH8;lTx$n6?9q43$-u{zfV@ML^h($J``gHS1 zHx{G`R?4yLWu03c?4}R14*Rx76H$yxiZy6edhEEfteKMEuJWr6Z3%kuY8aD=b#ZHa zaQ9^R)=L&*NjJbxo@XP=h*C>#arF|cR zDSuY*Hhu($@)4xC#U~jqTsKr>*rm)cZg%YR!6a1dJrB*tJhFWCD|U5U(MnmDrD%qQ zC7OUvoN6caV56~cm{nHz_r_@_o3zjazSbz&!IJ9y7kgAe`Qq%Vib+?z4^{m*qlei` zWrlkUOWLeKr?~J=9b^~YP24A&uo>!LxJq1H|L$hb*xquw4ez~JY3d_RAKC?`-W>%~ z!Bhp$IB7Z+%^%StjHYN(j9h`J&OcS7ZwoAZ*$r9ElC7{j(?gTQk0tv|=o^#1KBQM( zBjLG2hpxl9WJqvj(4)FE_Jd@Kz|5o|RB~ZlA}Pn8@kpf zWov(h3p3*Cw(_z=epdX^Rtf5+=g#}f!qqyL2@`!U zgzl0ed_@qQP2AnKu@<@bP0XHh=5oWL~oTYO=VUu)iIuV4p(C zZAQd)2w#Z18PQ|t&`Xqtc-6>i)oRCuWs6(7LMLi4j@P1zDc5#b(>OP zo=kRGuU@ewL`XtKuPG| zJqSEz6DZssr94UkK;%YO7E#}^X5Hm$HMhZ%z;4-OEoV@ZQa8DKoHo+CzODA>^BHx2 zPYu5G%soEeh|mR!zHI977BYI>TM_{ylKf24$dH6Pnd+;=nm)`XudB^^v_I3le;kqX zw7RFrd#@{>bf?55Z_P0}f3^Pc%|y$$#Kc@wY4yeB;_LgOSX)Jb$ZRf0uS(v!0^iY~ z5h2>V{e*n9<<4`kda>U~VhL{xXOL;|b0=0>eEmB)q0(&YTNNb85ebMJU~J#Y#~Ym_ zuAaQ<Uru}cF^?6cPz*$6w| za$(u9`?AkOVXF+aHt$j|biEf>rO$^nc@0EX5^9^GT2ChPlDA@F#pbY8x#YPUGR}vv z{0WSu*+cobh4YCYHGg*h%L-K~f&9z6l2SEZJ4;!U_xyEA$AeJ<5qgDVw^AHQWeq%Y z@-Af0ow}HGT~c)S`B5s9fPTJ}b{MY0!1Ls}9IZz3&o_ordv=1QOvM8M?7VifP8&2l zr+q$OCk#1cMmQH8C7T;WLM+=l*4;gK?h zD<_bKS>EWm1~yq!n%Tt(w3T_3*{|{f<|r?}e#j}Vb+D!oea?#oW6FM{hgka9FRFxw zh==!O(nl9NFU4)R>Asc$28%}_62$c}xrI~w_AB++>%w=_n3XVykF7{s^ioaAoM;yWjN?}bh8CAf_>?hbZv=IR; zJN(_NxtaUQq{&xERhJL|-zF-0xCG3M9I+ZQ5GRZT^beB0?rJQ}*s#NRad>Mb-8Klh&{ygJTwF%@Ds#xW1RED> zNW4}L7};H=ZQ)M#tV6jLPvSwHo?Ong|IYC00~4<~uA6rn<>$WLWN7=+!mWA9kh92- z#)#3*WIViw;YBq1+XfHA<-F&E%jI&o?`=`Y)unRRDRnSCIWW1` zDCF{Z@AB7HMpprCW&h-LuN)TY)URG?JP^drd}Mdz)hecMImm~G#Ap|IdNED>B+$ff zVEkI8fASMy%R)?TLNUrn>vp8e=#u!sBt%3CZO*k2hoqV)KOi!Snx-Q@zGfmg-Gk9b zgGes`VTDLKFBvV$i`(@gB#JX(F8J9zUHL`9Ot}Q^rJE#RP$DEh_+Vi6lX2{w z>PWYtPHT=119|#H_EeD(l8iSQe{sB0$0GDied>bZ87hjU+d86#ZG|^drr-Ofid^`T z#T=G~^H|L1mqv@k;P|A;WOrm2*YRXG)93pJ|HwdJ{UvkxN$?1Zg#Olpgx}8W%*H!R z3)~W?u}=nn*^25e%`1PB5_h%l+EYy*$QyCAS*5wtP2K|95&kX0be>vyaovQ#HqG1a zH=AU#_M;61vj(oHd>3L!z`rvM`XGO9t1~@$Mq!qZK(B$``6&sLO;&%eA%#@vbKtNx zUcKMVa#+oe@zuCl4pR{LXlgkzQsxuo*|+|B)%0l8JNW!n|D*h&d$&@@ZbssE0eFU_ zbhXH}jy%g`kc(qaA4V8Qj{JBO=NngS2(%SO8H*EkDsmT}n;EH*7Ph+~-`&0}GNP7%Lau4C zxh6O?&`~Qhq~67rBRta-mhtrQf;5Z!L*jnlWc z(>9!KT)KzYxW$9-anKNsd%a6=rex)8{p)0mpBC;}s_dO6#*|w{KeWgtaFQquH{oaGzB$#s}PShml`LcCLxe(ktUl0Kka@vtaqF*G#YxDUw2=FL6+f~Y4b3s zG&$8=U60+Q#?roQ!oK%a(bO4kkZ5rSdcVN39h`l_*D`QL^4#Wm(1eYEX7}Q%C(Dg- z@AmDbwjBLITtW36NCYvEW3hc%8`MtLYuDhcfv4v3Lw>wK)l}SmLV1MJQZ`)O6NldM z<_cS!$p|lontGFr)_QJ>;m3$l5#7~=q)EjI)hFubkgOJh7Wuu~rT2yyfk3MN_rpFj zSCeO+ysQ|Gjjhhd#j0l-*w)EVu3~W$E|V3v3AXZUR+|;;mg{D3(5DT!P)8^055D8V zdk8v+d+Te(l*8fZ_MO3g8{__;yXhHkB*{TSdGA)ITN!fC?h%>JDzY}$Cb?d}8=4`G z7xybk0prnFoG528$(@cT9cnX1ui`u$`kL?FzF7VtBpSs~^@+kVtQgeXec3ju#xV)y z>XQg50H|jej!ItveLsBM+xVQydSL+ehnY2{!A2@^ys{^A-{-{j_FctNLXscl_0v|0 zBIa?^d~@6Q1JRqfvnd;V2TMrhUz_u1n6<>uCLOE}r43ukfUV8lsWO@M)n%;mN|LM4 zm;GfuYf+NYyjBByrA#oO{-k8JwlYzrL!;hW$##$@iM`||tUT@xKzF7K}xdu&Or%eP8$uGP@3ylv@gpl_t*A zrvtc z$b}s=CakR`AecvvC5lOV@aTtt-WlU7ER>*&3r;n^JM0pba$jN*od)AZ2%o6KP_Pdt zE?%c@S}B-2ecW>5%J4sCbW{vxy935)FbE^ zQ^X|h`<239lSmUu&C0c`vshGca8ibl+{~i&^W>jWurAvDWbGD~MWMpB=Y$O6c_V6y zOtVWV^&D)ad#H}#cx6LiQS7?wg|K>X^Uh=iVFoe3qB_Au1if;3CGm)l&I3L5cG!}s zDKt`NE|6OF<690sdKWtB@v6(Z>hmayf!_4i6v5`VY!MdBRkhD1$?RX$sXh$jA-|8= zi}-1-o4{gh*ExVyLX~?%^lFC85Sf6-{NZ67TBq7=(P>T!uKUKUouLY--F+g(+yHGPCO;2u!^xp_Y|{nax7Etn$QDhN{zWsTevM)*`>k)hj)8#pl7G%*rR%uinqbbt|V;YScvwy zw2-}u(vmAxggqjc2}S>fiMAcdRE^BqMa_+*-Bbo^o*xKlTMz659MzAFyb|+l;%cvu zJ0sUTR85DswuKn7NT$n*Nb=L);iLZQ&CGcBSchtd@{lhlP;yTaEp+^lb~}~)==Spj zy^jq}j5Z~Hy;FuFzA0)KZ$6cmPs1waA!c=Q?@O>`H+>jsC|s-ww=>mDCVe{0U8a2H zd5(#*i@6^&u>A{$N%2!m-xvIu@-dXy^{h*uQj9POC%Ls1cRKSe8^4cY`ZS?Ww)R#j zlj!{G-U}wFv7;Eqg|CfG!lfI+DiZU=PxoKdcUbF`GqAs12r~09CgVRkWTx_T@8cD$ z>{D#&|9v@vJ>!zB>=}Gd->&g@a==dELG@XIlk99#15265=Dk+^>dy(|w1qiq-&wm} zGvl`xy^fG^^H!L#baSnM)}y^bhyC;b!!96~U_>=COGyp?m$eg{XD)&3SfTaU(H2oy zw0UNbNTd#S+}NdkI)b2vX&SAqEYPJGy(QN^McAq0@^k{byaKMO%U3O@vtKi2v0}5I zf_`B|(`4oL|H%Ir3)nclrZ_`q9mBfe>fRT-E1OGe#-7lZz$1c#X>_4it6ijkB~YPi zmuVBKsmM82d-Qu~^V^p@j)jVkqUEqYlE=Ep9^{DN%PqS&RR$yUKlvZgBZj>fSB6ww zZlUs*v@M)dOG|t07Wx~dSG<;dl$$b9o%Fmx4JV|UEh_p2-IJl+tW(jI=;AX>?6wq5 zA-bKj**djN>E($=&l|Hl6C$5!9^ZVl~&N2+@^@B|MjHrhuh5eQ@Bf~i4&5m}=r#5t}`+jMnUTB>O zDWM(aVTK%Tp34a|qSFUE?N<}eA#^^~#Uev>Ao8j#-iGS*_t0kBv4ZHI{!)$lVe-xt z>KUd}h4K|vkq8QsduSO9g$FV={cHXzl-sW5H`*OES(GCcEED5P3LvR}8sfzi%H{G-ENX{?(U@F+v!8IY(IAuP@A1mir z7`*Hd%^@))5m5uv+J= z;#@wRPqSrgX6VHv^py`mn8+tsD=;Ggm z_v_ACqQt2Jlc;+^*jEQifWYy6h#+xML@z21l1?^2hUj84}-a8)a|9>0K9?2$q z6B!u|WUs7bRHO(I(Xc8cJ9}rA%t$4>B2=-$zc?SUqK>)N`qo-O%W6&{xItQ5Q&n0iRR$d|F1+m z-W}^G5x$u}2)^>0K(w`tKpPG%IXALjTgD?;is$N$WpMq#sYZyUdnkl0S5PUcQS~@t9>@KWK zjkcf#fSoVObo8p(&M6>dV6gZgi8DmNZxrTA3Gil(ObWUIlL#1a34Orh%i}lkT#O09 zMp!{bkeH>g&vfkQF{G1iozBiC5wUMAD8ycDW4CCT(R5@*0D6d4xV&|vvJ@1 z#O;YfBg~7+V`;ukt?Z%PCW0tOlV&kQQJ13SRXNsp=BmhkdO47K%2hptj_*liBcwDS z5Jq4ODFG4sTCe#e&g`Q6OHfeqoTgWu+^bu@gMm>&97}x9z}7b7V5!@er*2%N3_jzu z{xmOJBRc)n=G?c|1j6c@Cl_X~eX+9scH-DyRvsfY)%hT4@U^Of*o-l!kC%i3Ynja* zv<^I}=CyXXbEWcg{$szRQJ(x_4-jHod_eA?64%mz*Sxaaq zK@B$a7)yCWfM;i1YbeAu=f6>;5;|c4douA7w0YPcaQ{e+8=BOvhhwQ4bv5+YQbghVV#gns zRNenKV~1|&6LODMk$HtLq2Sb$4Puum-@$R%BJYPME%$O1B9|4;RynEv3^JR=SvuyVS=NQBh zlfBS;@fmTXDQO}c%+ycdiIsr*fV;6BpPs#b-%c7Z{MinSb+C#99to$Rco( zMKm7B2sA!=)|E?PaDu&>iPs@Q7^*fxSPAhGCEEs~xJM=~%gNX~CTS!5?Oj&$I+RPja$IF_VSi0f zv@NmHQ6YEdonzMJ(9t*dUA7*5r+O<&WY0iH#y3`XPbeCwk1%$Y8OCP|YelmqY@dF6 zU);px4*H@@SqEx=aQ}*e$r7(?a3Wr!j3@O5+++XDT6dv%MHuOG7%s&JMKi}AS>9cb zsK-w9@yoh&7-^n-B}(*j|te&&6=93qqKTLX;uQc@iLU0>r#z|pt?_(7`icxcyF7J z-LfCP3ZpZaifadCr0A;Ez3Dy)d{NqwD{%HmpZst?M)1Gp4=A9T&b8k zbqQ)iWM^EwHh}i3j5X%v?&w3eC=ZhJ{YSrem@s=$@Gpp~-f0z%5!zdl9POe6TJwH>1 zs(Q?00yPp?w;!Z@zm?=oG4o#UX6H>b;x=p_+LJezFdDoNCQppi!ChNjNfdkbi_2fn zcTxRmp+;_vse>_(Z=GQ#!2Jh)nnG{`W9pv4;c|y4xlZ^BohVvWn3YV6Z2nQ4T~-k8 z89@*bi)MkNo3p3WAV^f>4CtanyTW%reIv+d?~J23`l}jWo2DPL2R#V5ybO^88dcZK zH{Cx55i6|KUSBP@$>ukf;diUlHAO}D?)$R~9x^0P))x&@7KihgyiKIhQ6Nr*_ib7d zIK5VP_`LZ4$4P)w{`i*i9UQNViND`ITN~K!AWBpn`|vY!$hW}wY`FbAUCv|aeTqBd zL+0s}(+}h3=63$ufcVB_V>tP>Daw-`KJ%^c`Re=|$cEG57n)%6P(dx-OPh&tiV0yh zSY75TeYBV_9uh&T91XG`(}YN+Yti+a8UbiSc)y7|+)u5b{oo#XbKU)hl9zHhjv1$q zG;uEa48x4$xp=^_dRgtx@B>vapk$8n{Xqvr8^u+9v)cQ5-aH|z$L!(l4x0xj-xy74 zWfRh{vs8a!UqJ}5ZAz+s@#_`5lktW2iNay)x+O2Z^xlJy%}*6A5F@{c-Jwq12n)$* zP0Z@iGDsHloDMZ|L|9jj5q%z6mnjg)z;r^{)a6{x%hg{N<^LiDqcFmUXz3+@t(lez z`=Kl=#3!Hq-hs^Mu)cncw#Uqs9GYQ6KH@J>MrNYb&C{udx|$tn~EhyZ4}pY5WENou2~- z(-35S>A6hXdi-+U!Vu&z+8y*+Ya3XcJ#x&9Q*DpQcKwXP(x zRkl1F@rw!*i!)1Rv=8 z+|2k?=z1{fg@N0r7N#wHt`oJAmG!sQaM2#HAXRN@LaNa{OB86hqIGLqw+lSXTFn1; zL}2lGlx+|`ZO%76Q{2tC{VKpAf4eDp@`NS#HqZ}6DtLY8i88mV@Gped8@$M^*Bw^< zxor0FMjz7^iP!gJFbs!UHEZW7Mu&0~B9=SaQg+1l7{&Me%R$!=w{FfG0H}afS>ARaiEj8Ld_*QL1xsZQ z;6gefs&iU&rz7$}<8L_GeAcIpvDV&~6NOqw&n@96{9oX)5mJs6O@^7zD3^S9+2Wfx zS*C{ZKpGVD;x$Ym`?||?SD{IW*OL!y{xQsVC3=N_tLQ@*_Qcyig`%&S9p#vKuN0duKJZO<~e0#i)p- z6a1HZ_a*U{^V)Wrh)R)@wTgWD9Nv6#1TqP;>d%A7Mp7LaIWcMj^|_OgdoR2|xK7E+ zj|43Qp#p6E6jez?oqoFATIwEyw!VijQRPdRBARRv9*aW$eu1}O!k+zWFe!YHQN)7h z+h!^)iXYF}(tiBI0{pl)=LDrZ)ws#@rJUPM)Xaf;dC1|T$zoKo*PBx&^d#T-rCDys zZ1y_LwG#m;8{L9IPX+a+x9lYOQNKPI@8@|Al0hr#rSk&kwDo64sUIIKv)L`+fC;1I z)$c12N=G7FJ&nj3b%b)+ZW7;NYqP{0m)C@!7Sow88Qq~0(m|uQ%>TMGiI!v;f4B9y zj!2o-%^@n`n1dK4)CAbpM4i+Wdi}x@O8V$*Y3ulXO!eNB7k5!YX``)Q*I$$fHmaa- zAz6a5*KwW~qw9rM;Tk#lXi=*A`9iO^e6BJ)_?|eZz4%5dOB)T5^iG?*>Z%=b8CNk>5Ra$qQH-LMK)#3vIM_^1;9I zreTqT@bn}|?#f|d91yVS^YMSNZs)kS|4VGf#5ylz_#)+@+kX#ukhVqPyn)^42F68~ zBzmJ2U^V;a-M~nI0`z$Z4V3@b?~$tfJC3CJUx#-e7mhF$#zIo+WCNBp+J@|AkQM9& z%>Fi)R98ZD)T=Ovh1Qlpu?5!v3paC@ON#dbOC-VWb2LDO5C#va5o%F$CRrGi=c7q{ z+`zXT#Us6{-#U&kug%B=8AirOD@{7=GCJYo)BzLFMGt%~{BV0bfAG3NDLO%pPkA4c zIFAw&6N6j1j`GeR0E}@V-S~icuzMA~7jIq;M{5haky^Y4@Zq+D-H5(uvgV4~SVx%v zVu)iA<<^xVIfyb=YofI4I4R#rss?I<0YXyo(%~1drn~bxEN;J?5!9>j6oAg}+<&d) zkHh@FC`#dmg*JEz7O8QPcz==~^Kl-*{gSeoG|v&>XgR3tOvD5q9I~jMMefgV)5eXt ziWw;65tEXgxEdfc%L8Zq%W&P`umwIlZVw3Pma+ee&~@Fz62s8&eF;is0a{p!B4c9T zDwN6E9>|~)ckVCrI!vj({uHhnf+)I}#mM#|iDFIg63(oBnz_>)JDr|(|9@(wtzr5S zn%RA0??WhXjPU$%itd;5SdAizg)ZyI@%4$kzt<%p6$eMjJb2l^gK@kh;6|SEHTB1} z+M2Ukg;h$mTTw|e*Pds@%#9jj(c4)@ZuP*kn9Mqq%i#^>j_iWkft zw{BZw zWhy(sMg84muNs_h#4Rrtr=O{K{tmjr#hGu&NL|>vknN2+rTGVfeahaiY<)6^(!ANn ziRn^|JzIyq^T^}Nn8@i#8}*_&fYx8xP>C3TY*Vcgn;XVz6{^7-Fz{gF7q{?6iw&*G z=@RQY-_KGzsQn<+H*Lilb*EBOa%cX2x#?a$mxa$I5!RnGvv)5$Euv7J=uG!O$}Bq6 ze6_+xXm8q|fXm)&Dvnf^KV0_Hoj?z9$3q@*TTD{)OypM0Wa4cVBei>=52uNQNiL~4AvXJEg@)JL#E+VP&Jo~m1P6=*!#hv3`DBmv z?k=o>x5?OXsBC`$gIZ>z@eaty-iovE!n=E@eqh3zHVc6O9?>A$X=&RYZ75iFr*z_{ z$f!e#S8;euXz%rRg5}su1T;#}O6eM6jY0D)@tEFf9j~K;?CO>sw6j|Kcumyxdz8Wh zvGt-|V)E0=4}1u8dp;DjGYP(aeg!m&LX9%FZA zJoM6?$5K#P`z)tLTOK9}(9DA>7)|$4*Z*p|C9+)Th$};Ye3+5}LloYwe;(ff>bJ2H z0HWth)!faTaDVL@cwdgvKlc$PcbfMR0X}p6++&E5DNW-Oh-IUOMJ(_D7pJ;mKCZI; zN_jr}%GERk9q)GT57#&`0=9u|O1bqdBW^>ZcjkQ&ty)EiMx?`_Dg3b{WiSoexXD&l zE}RK1wO~$L6JWhnJ%cC+4HH_Q9Ay8PAQOuX+N)t4jjiRdH!(Bi#J1)ptN(y%YVcVV zO7Bd2W;$^syJwdwfW@~FJaUg5fQii60;~B7cbc}V@m2m3C?l5qe|`5~@p2-0v`86; z579R?Rf1!$B7p@dVG?`a^J34p?9e!xOC4`v5nCi^va(qr>`W822wjjfE)-oe&wl(1 znWXtD91DU8HWwnoHJbTO&)3k)O;dX_n;p|SsF@b41pf zufZ8$BD$U3XdHU4Z6e~`5`pJ0$Gyu&^+ zP~tV+vfZijpZS^LhyNOo*dQb#$792g*W=V9wQkPYK-FN&LfrWsHU5B(9{YT~Gwag3 zq{G9v9SOcMr-HrWXDz%NZHkQifl?at32*}ta9SsS)5a(>zdU2+9l}^2K*_JSqP?!Q zJ)3mgf{!+VRlw{9pVoqsc5Lo8y*oE_g~I%)WZ07LV+1NQaBM?Znew2wC_}Pvclo1$ z9DRm_QCtsxi*4IZtDociw8SaJKN-x9EP~R9#-59n6VQ2Dn>-5t!J^Q}n0hEP#Snc9 zj{jf0m!`O_v|m1+%?Y0m3fR#Xr4gRZr@S1nyxpddgWgz8J;7Qlo;GNiR(+;U=gz@E zxp6 zPD6)QwT_j)CC=Dk@gYko*v1xc$~wx z^Z|`tRM|ZEyq?DQeaxQdUoJ4C!Pa9iYwCr~d+!+j z*2v((zN|BPoAU3L-?)%?jGml~EP{5zY?yk9W_Qxhhu;We=r1s$W-kCYU-6MDkT- zmp_i$JMpy^Uz3w+lT{L+9U$uM?nOAbq4&!_{WDDVCZViLWOLzK*YWAI?N(c+6T8__ zapT(+H8_Yxt-L{#kMsBQEunU6KHNIZPm`KV?loC*xgLoZ-T9`ZPx{N&QF@;z+)5Xz zr)ByHhHKRn^#ShD!>skquW%S2xt4yNcDYnD1aj(~XWylbg-1sdymb+t^0k zE8#Yp4bsUi{HI^ud5KDo-W~8kQ^^U&CqT`^!zsP{7Ev4G7rfsj*Zy|o8A-W~2rGR# z5x1@wn`g>P5X`pa*8Ti87~Txr(jQ8}a;PeLpQT2VFGTXl4aW?miAj?O ze%)k0Fn+EY4l z!i}f!H1sDjAEZt=#ZZ1Y)4kSrwcJ*!^;8;hnzNY`I@-_ISUF=3Tom7=z~?gCb3yDk zN-)%P04r_?7Bn2u?Hz-eqz^MIlk)d6tTw+GBt?gzHftsv{TQVboNt0%0_qn_i(*N3 zQrj9%`QjW2SBt$(ZngbMyKJd^L#qvWRFpc8aB_X}HCJxTTeviL!KVc+``DvIk4ZJ1 z!|wW#wNb6Rp6=grbI1E8mW{aAr~gKsuJQ^d7j-815|qk692>(KoP;`AYg2KlUk#_V z9gZd+eTB~T;5|#0GXb8q9Lj#{Ud)z&7U&~y<_QcGTXnpvL*a#5)O)Ua3e>`yw>Lq@ zaoVntEM|5RTWxXoD8@}+@L!I;Js)R*8FpH@4p}_u0B1Corj9M6Z+#G1I8g}u{iY8B zWc$NktBH)=GC6RNm4~_SiasI!6AlMEua=1N);`C}?(hqy%^rvsotE(=J1lg~15c;b zXs7fAVQoPZdgilJ=htFfNS$B!R>Tfr)Bc*~*e zv-9gM31>fG|D&TeM{FISvGkNR%{ZL>u1EV|nwcwKTNY?F@PC8n9o{Y>K?;b1%{aC)ga8-x+*-x8gTRBlY@_TzxuF}?_{!h_$kSNBqTU256Ut% zZf{S&d&QK^%!iFVB1N;rC|x$JysGOT7I5Vfee`1*`u%DNvWERBDY-0b%QJ!{)qR6_ zecMzMuk&P+I6l92R0lawcKT^$^YKk{+w-RPxwT^j;d{Q2u~}#SBw%W0{Dk)HR5zjQ|@~j6GEl+ z$H=`q={{@A-&Jpgv6VBwQ8Dvlrd{=@(gMCumea1-G|L4Vi30++yRCj&GxfQfMPYLw zdR>b=CiB2X$xUasSU5`;|D5p-Uzqdt^*wf{etLQu#XP}4c5^nm?3K#2yJcrP>gzV$ zW&Xrr{P)8-8ZMrvWSQh8(m4)Wv^XvW!e9ax-C9~&;0_YVq>JPQe;Yg@N1zP)8tP0) zsUAlHLsdAzkzz#d?%#>o;%AfpGS*z&(KML9`uDEXHc9#=llUc9R&Sr7VJAwY7_CX5 z0|R#wzpb#9+S=Muy$f0g3S7=&o6E$_{S%9_YJCQooJpTDHZW{!KN--S2uFKfq+4b# z`_*_mvPA*7IeL`C$LUg04~gDRfrvvPHDhLp*KqXyL`UGBGmLf@gR{i5ya@o(xs-kS z-`?t9%5Ob_7J8#&0>(tms#`X`=AAEpUeGY|=R9u<^uNKEG$a9i!HkrqlamtwdVB45 z!a)J#6P1~Yii$765ZJ>{#2@xK*md>w^|T9`8XD9HL4X&US4UcFYwOdeYQ&1nm(d2} zyBY{PcBYNFvM!3@ajqXMG|mAkQXOrW{Nvj!u9E?L$eK=L93L>QeXVdAM-^HCnM{7e zAcV+jI`&;9fa?s$pEWd`>PJoxlgr=<2kbvU_oJ+8KtqZQ&@D*njPq+(t(}K&HuLt) z4U1wYwwSUv{G1nNZOue0X&kv1*$l}*jy&J^UTMGDqAQKO+$%fd4X!mW9>MxUbIRUE zqt%5eq0S&7)E-Z%PlS-FAQfs~sxyJ9>dm#)Rky8ec!c`{F-(Pey$C?hub*H1Bc#0- z?cZmSKXk_k^9c-?8oupu`fX;IczWd()iZR4=sBNjhN6qc_e>-aIRje6P~D|HrW1$= zLPYCVyv-X+XbTB~ZmIWqLg=SmgaQCb$Fa*bD<~sb6q8TpdTF0!CyILHZvFr~6%z~$ z95C-YhY2i|IPSeE5!aHRJzqQZqTtAJs1~K+92HgpZ_a(y=<|}+es+h#$KWtJW`Ij8 zG_5BDAJ=|+>w?1M66Wt2gFNQ4*ZH2Z{Q&M1Uk*qBt`FYwWalfr7VH{aZc<)+BEZ7- z6X&3gmKNcvG9@DYh>&N8Uo@!=so}LN<53tffK>Wj;cVZ{i2R>DO0ed{Je$a0YeI&x z6BUW^5Enw#qnlwI%X1lFUz%@SggA?>e;={Ugh(}coA4}x$QW2Up@RMF>7oU|Y6a5( zz1%5-geN0dE_`B>JFfX(!*jG-e=&Nt3k#W$mhpOne9Q0VIdMyyIlaidi~*gS-B5Do z^#$Jo4B7P6-S|7J9-e8cbde4V_*Q~vv`cB=dA_&P@tG;rU#oF7FWd|OA~$m-tmZ1; zV6T4iM3rJk-E!g>!=<>Io;bL?%5R&1EOlsTHr%nDU{EU;*)e)^&hFP7{Rx#V1{=}MWiF>`)ZXF^Qy|*}F z>2Wxq^)U^Ce@@3(6t9-YcQasV)#rjfs}~-9Lm)PYn@b5UWS501_=c`d^#C=b?P1dy z54=5h)?4yi%FsAZ4_frc8$Vn=Wl@f@GFlG#DD|lb(7wv7F)%4Iw|_EG&r^$lZROyw zC&W|Em)Kf_gkdg**u~wl!>&I#f0wnw3h`WIV?Y#LRk7O}*CR-{N&!U1$I{k|7lOEe z2{6h~`*g;+zM-bFhDxf{gBWss5J&dG820B(x&FI5uq7d8G7FO9C8VA>+(#0)_sub~ z)@|=JB5lS+Z&gKA00tB>WRm~_q6)iTO+qA+o}b9bfQM5dv5E|P(dpMto!oBx6XF$Z z0C8`=2UG+n+dzpiFFX?3T|y3s>j}vh2c=f47lwN|BD5@N2tGs0zK}glFV6j*+2AJV zL2S_n_u>qpJeXlBusl1MT7uo=adyX9y35aAq4>^DO`9=&2vAwh6=KXukA>Ci2!E~^>F#0+@+}f%; zbyrGJ(FZ6Kri40EuGOYQ7quz9^jEZ{{Bu33$cx673Os1`_*3dqN+}%N5GH$9ZN^S4UGW*Ll)5{S+?pA>^BJ6v}21G)v4?D zHH8}^21UwdO>k2eeTwSQXuFT2^GvBkR*q?L5sJUmo2XwU+Q!~rZ@98yjur6MrxB^zJJEAEtT(;ta0L9SM^u%cR4n=ekHMstT}55n6v1$fc3i8 zYN=n`9}ZkEhT)*pFD%LdO~`QQ z!&vFl%-;T1uoFyZfdrn+6f!HbQ16x&yJd%^V;lNWstcf4`bn87%|sI)Tr0EcbEtH{ zMU#akRikXXF_~dYy50+4J@sUnn)_YtiNc#@qpLZ%lXtlsE~w?&`)L^W8G5khDrHYH z_oP!?maY7p%B#(s=cLn5p45vNkY%&iInO5#W8-=YOt1vDZ+Aw;>}iF8TUyunNBM`T zM+D_8Ef1DhE6YmzO9G>O_H>SiS<;gEYtV*$ZW~d`=88Tdk;<)?#ZyFbQ}wpJIIgv~ zuBDd!>$B;+3&TF2B>QDG{YOGN8s2QHe{4g%e?P#eCiCr~)=fL^%eEf%zK}-UVLwFV zlSZ{?i@n|cp~9S2p<*c&hDgsHvAIi!T0XNkg?A9NObkaFZ*~aO)~omqd&Z7^pbH!Z zeQp}!IYew6y|{yPeAQLmy~G|wI$ERq9i`J!%p&Ir4zuQ8vekp-byWETag#SB2MoI& zp?^r@2eTq68(G2RrfsAjyU%yrqmZJy(=N#v%kChhvGFl%3uiO$=EaD+sh2eE3)=bz ze2T9dY~CDIdN4V1VF!7tz%Nr7*5xrEnpHf;W<0(c4286Q688!|Ju`$I$>&A7?T06Z z=^YpL7(JZdvB}>!boH?0EAog!iI6$M<(?bnOc?cHGWS?%e65Ao-%GUDyH+%*biLla ze!hg%oYwzUbia5>ZBVgbMd99yzi5F;uc0<0uxocM%HZ>4#=PpE{sH7dO%EXZ#`X*Z;gJ4Qy^Tuq&u zm{kuvWw)Kl`|y67k8Nk%8)}c9OS@{agTvmq4XaYFMPpFf+=D%g$_!nZuDww-v8}WC zmryF*%_qY;J#UOqO-QI{JC3W2X-h{`I>x8AlX|;$aHo_t*vDS_Mf*fxmjfw-`{JR# zgg3fcv}t*`u5?<>3qoNJ@nP$6-@y0=Yu7jD2=fOs4;K@ziI7^S38D$o2XrLQGZ<$? z=Scg42DgYF=qG!5cJP6uhm#I3QGlNaiJW^u2hV_$`qGk^i@1$di_DUw=! zjOV2rc=hU)0)fKlTAX&9skAs^GK=lNmHdvou};gOwjAIv3Z>NiTS+ylq#+a^7)`UX zN~wof!e~-hlH&(ZewX(RU11q}zJ>U9=ECx7H%cRq=T$XYGkwUXO;)9z`!c`nKu%)U za}Fsu$55Tf2zYmK^ow?}>4ti?d|%tsC!6dGD1(f7y=&su7)&X8EdgDBf;U+wONUG( zWkPU~Y-hg8(5~Z$H$1&grmep-n_pUL=)NT@^())%ic5fMBy3dsq<`(YYkB|9!QeaY zG9DLoVkb@PFTQN{aR^@(&#MC{6?^Qpl$(Ne+Ff^tzPnZa@A{=XpG2X~b8`&zPcohf zT|JP|;U9+ZF$eFC%wOcc`+(INU3Y@N@9Jxk&O!S@av^rRP(79w!yVDL&M~on_+%ft z8XHsNdC~22#@>suZ88tPd8A2eHoYqMdyWf!ACrjvz<7$G6oENlAIHXQU7RIV{0dEY zw|!DNt5k?b2Byr`)$UD})O>2^ld zxe=#{8(e?tP^%H>f&0>20t^EI0Seog$DYbMHkdOYMQp+JQYL>mO|y zM7YeWKh<+nthqdre|aH6Ft@cYe<0he@askXyI*ar7ut^R@mDF_=WSzgAtHV*aUrpV zT1kmZ>JfMEWDmc)CdIC%A$q~b#*Re_r**csJvrZ}x}HAzqpxmS{A`s)b6$t@3lgVO zou=f(Cq^_K-o>Pb-1kZJKYi~+v8#9UV8fG!Z%_E>{Qu0I*R6zB{ky-BE!Q4jo`pNKLx6h9 zp>?`urRdZBspQGoG~$;Ev6rnUY2;MTKJDNPrfm)BmcGY$I)t>?0w44JmAY?MEoVH!6lk-D;9@f5cu_b$;AHx9jk z&gi-)9}|gFZ@e$oFCj|@ zJ-j;_f@H?OQJmOm`;1gPLG{8~#q{`fg%T_KtsgHSRscCMPq}#)4BiK>Uk5TH6E>*n z&e=NG-4cOzz_P}rr!YRAo|eEy>>Yepcnxzo6v#u8f~P6+GCMuJFu7HhIR9xfxlQ$W zR|L-n_isR7I33tw{MwIPlGVx`b~8ksG9LuqaUkKE@de)zeUqDnL5FZRup}Cfw_{R6 zR$P1SB&6TmH^nep;=nn@388R9QOLF0gl=QsEgU8N3N9hIyN;%FT>I8{_J=2HI5aj& zcTx^uCm5*^(K=cT?-bq_xk@ zxgT5FdQo|zMX*(Ezgm~cj-f7qmxLeT;up^ecvnc=ltTsEGN$D|>MqpoN7bb}IAnER z$2Y?4lGVuz=J}vvj|mVOA-IV>^&ftGxuzjvfJHQ0aph7ajX0g;oK>k zIRZYDB|=UFJySah?HYrNTPf_1TuDn~>!*AhDkfq|QDFyGOs5|JH6c06BjV2jfxKV| z077XsvO~F*G*v|75vLNiGH}G*3=Rc%-;H7rQ`I34R<4avwB~D&CD2XV+(=Lb*MX5$ zFErQ$Mgs4mdwPtiI*JSmo^)=W+^^xX!~Nh@Ta~FcN0dpcH`6P_)9Y-D+eMl77d;@% za>Y7b+MbG`)R*gg7*}|6y%Iz^5nlkr4=s~aF8dTwaUh0MU-;g7XfdtFb4XM_*hp~9yH7(NivDoUgv&$ zHtia(t=iJ;QEpRGpN7d~8-AA3Og5pSUCYt850Rz{znFx-f{eXXiQ?@$hm`l?TrS|4 zJ1m`;($4(unTjvrL{uf^xbjUcv{x>4Hc)NzCu(M7cG-+5JhYWj>0FGH(L z!^bXx56)#iX=%7Vi=T?QbVe$lt^3(=k9T~cBlW;sKx>b|iF=#-oU7I+33+^i2amNJ z_gf`P7OmNy!>?R%*N~ukkfX3UsxE+YOM8M(q9Lw zO0Z*+Ot<^JaGm{-NiMUCn2leeOB)W*3tSt2E<8Qjn~~pxP4y@|exl8hvM414O@h|7 zg_ic@V%RZ)IXr8~X{IWv|#>yAsS_Vo8PlX?5mVXGA(HE46#nXomI-HYvuhg~}=~RUihzST+3-j>ssV zc52oxxApb)v~?Mh6Z-oV-x7jH487C8*kPr6gt9w=u$ERhMrs!ugPs@evj;PIo?dns zZa$VmskJtp7iZt(9jVjQwn56g{~X*d$HRF2o{HLB(7i7fl`^iqvbOeO7z5Q8=3vnc z<2M$Pm|2L-b-qpCC;O#E4Th^B%MI8%ZEcMphhAQ$lQYu4#neO7xf*1XV}soD-=GiOTxFp%Cao}N3E=HA#$Ic(y4W}?|H4N)s1kzdsp6jfpOaqAe_CC$oRk1X@-#H3ty4d`m zwemjQ1r6s!1abbf~(uEOf(&w|g) z?M#U_3Y=*3-usGCACqK${$v~JXBg-?n%{DI(B(RxdXUK_9 zJ-qb&?4xnqGc=-!iKFWs2kw@c&YojYjN5wtLl$4Lz=nDramaWxssCr@malOmt;tW% zYm3coaDUjbwQRq+oG(q}`j*85@oAC25##mQo8co%=k+Kqwx=s*UvNF0_Re+BwN6zpD22H$&gL60GitPUOdgd_rF2(Zx@2G@ z#I=+Bs#n;4j(hhvm}q_CTsoakW)v%a44v>;WjrM?ZY*qgo|NY0hrXB>`q~+G_lTXV z&WV}U`!q=f{*2!Jp@8bU;AfQwsTMCs`*PDWN7N@}Ka9}NIkgI?b!BH8+ZF0x^miBz zcG9YKGr!{hPS&yO^f?ZH;(je3iGe4?%?Skx>r7g&F*ME@&q&=I`6BsL%jA=8t@qY# zU>iFKTl~TDINOZq?I>;5T)(`zW+dZMer3-8&Djpx-_h2IzPcBJ=7H`5+qWS$LFV7tKsgp53%7pWFLvbGrze0tEa~!a zWp(vRNQh8^q5qJ^EHWfF7b}ta!$IS+D@MO zHa+chwp;kd;vdY7UudtoQ`(CW>^YgR`S0K3z7M~PV8fq4gf#~f6M=ho@hGtprz>Tu z#1YdfSKA#A@mQKT!8y2q5Vno-m94L@@B8$pxj3pD8}v660av>>d82I(&-w7FgB} zvm1_6U>sGRD@!{KoU#p;-?K*rHw1MfqyEjE-Yt|cg+QOvogf$%M%JULsp-;RnDFc- z20n-=x(j|rTpZnThn5Qz$k$}1ryu?FiIa=#Grg*i&`q#4ad7@ZWgP9rz|PLj#-^(l zmP;T3B5~sO1h`CGT|Vn8ZkWTY-bU5{VG6;XzWwX$;2zA`00mu0&%sE1VE6Y6Ncxa* zXlEAm_85H{2*h%Ab(OzA#-Fy#I^*wrCb4S$6R9m`@L&ml;MYW51IB0@QKTLI9twz* zdnp*&5%MFa)-emZYBhS}e+R@9*jz23C0wA-fU5G>?86axHs~vWAX@1VxakD7SVy7F zNu%q#pZ|CSA_15_iW%p>3@f+a!0ZS=8T}*#uQ~583+^w4r<#2tf-47_*!~Q(k{tEinL|)2 zJzIkWgfS@OKWH&7<^3SxMKX)^f#Of#0W1`5W0Y!R8JNSP;!8qEoLrrCj)s%E2E@ND(3m+Qyb0452pfK=Of0}a#)uoWX zjg1Y;6CngxWgVzh5g){uCxG>tz||6rL}(}})fDI6-rvmdvfRNS7Q>u5V@*@Qx7rqu z?C=qphw=@!I*%I%f+_%7>cW++*4dgxp3yH*hXP|J2~Kc!Y)_&JjC`XV0{Ca~Jj%+h z*_iO~>;o%r0s5q+rGdR?{0Bt-rjbxX;P+3NmH|3QJPnZ6j=(Mi)caaMBrU~WL?o4n z=tfw8Vt=vKb^byKIFg$rYIAmJn}Dw`uwxz5m*<8CeY_YCReLX;oM-`Poc{fiLR=Q6 ze?&Vl-WGcg!}_a@7>EhP!)HfhNto~oU%@c?(=m;JWD@1A>tvDH@x!Y$kX3ucz^*uX$A{g(z zbZT9P)h+)YER`=NH#e76!b0tpLu-5v=2&SNU9;Lv{9#TE7kJs@O~Gf?>WENw;muAx z?#Irr{~QA`{oOu#*CIaquFXE|JxzM*HfGe*N;UH~?27drp(*AoSbM5@6sk}g@pi>*=Q><7!i0(3H}-L*5cLtYoL zUOw^RiW;h*TrOQbpi(A~ttj0n{VwA#>ZqfmV>g#G{h3{~U$MD#(fGh8u_Kk@)+r4o zPSWh^ZZC_r(*A}W=NIUA>xw)U=q2bR3DJTsv^AX$PYB6_X~hG%@|3$tlQnZHDT$($ z4M;ncrxXQWt*(E#evZZ?kk^N9W-^{4{~D%WH@CX)LHs*qE4Ya)+81#j^xxJzxx9_# zLjWh~^wIuoTd8IJ8)8=q+>~95y(&ESrZ4bpSt2L37HGeEVS(jqlvMzLRFb5Fb?X_{VmsyB_oC(&w3Mdlj5` z4yIexi?H@@xu2oxzX5K%eme*YyOSQyeQ$Bgs|*@xK)TM(vw`K+Ve~ncpQ=#!a`SnJ(c`Oac)Ki)$teKVGrA^HNI&)uRkZ)R zO>YWSYdRfo>GS(cq?A%xDjh8-!BMaV#(-?5%G;LyBa3jAZj^rI<3?DF-04@=e*74? z6lp+5O@PM4+X0Q`J;vGo0Fp_;xmsYfp<>22-nZ6xtndsz-}ZEqM~n^euUZ~ksv(_75nuE{mYcp`e-2ra(&9J zJ>2e$TBi}~d{lq~PyqK6ZR0pzRmeooH%5DKExd@|d6+u6`tsTXt{3#5clpAoG1EWY zm7a|)oD8%;(`S)+lkZ4VFP-$Fn##Sq2DE8Zj8a2CL)tbdmFISiUxO=t=@6{mOL-^T ztSJf(WLZOzO6m{4GnB*5_t@;s?FbN6h8Als=Z)h`4x`3rqs#BR(;4mhR=}{2(k^W; zSG&0nkDCR^O@h`%$Dd?w$BU!(*j2{b4;zZ#*icpCf2e(0S@UgWdv1-oO?IYVUEO2% z9^{n^&nxWP7}J&IZtWxCVeTn1to-8 zc?{*|<$eGBhKYfJfAF1Et(QsW-d&x_Ke)z^Iz~iSV`0ETY>)4XYpNUOzP-T6xSoNH zf6t)>!-+j~sN}GMW0*z)9PkV3ARd@({Nf^A2-XpXBxzz8o%R`1oH1 z=Rb`&DS4y)fWV?K*^$=p4oNCv)5s-64E@<`di%E9hbDBsMg;)AH0-vdFU}n^%XpH!;0*C(IrHwlKyy9H`xhkHh1+Oz zI^_NQ{0Q(^0x;4P&&m-@;Cn(aeT76&=p-RS2bWB+YZFx?FDLK@v_geS$^mPUu|EMo zg{xJ@sr=Brpr7q@Fr#)>r+1lLV;X3RC@ezICA=(1l2{u&S!YhSq^AAzS3qFBzW zG1-;ySH=&B9-ukYL9e+rfvKz#vz0J>>U#ImbNtIeBe#Ksp_IY%4wC|^T5AAo*`!K%I`Sl_Y zl%{-M(QCt+9`5(!(|z1K$<#QjJ7CG_r$~s_qnU%`sd}&4N$PxUwr5&8pZYRD$+6)+ zkRjju$cydBziU4+k$K^@{$9QMzEcB5>=kED^PX%L4b0BY2D&29N8|BDzThn-jZn;G zZTczCZZ|HQjhKPR^PCq0oyzG&ty(&Vuit2t@dcVYTACA7BOkscByeeQJ5@+2^S*P& z>=&;O4& zDDs2Bcv$`QP0H4);`-pOn<}ENsVN2Dd+3%UXm;*0S-tgVi7H)6^iA%qlJ#Ag2Y>hU z9)n6Q6<-VM5zN}OCWv$?GF~XRxT$ez?23Lx4^v={FrSHzs37n2K{^z&`-G(_H)2dgQ1Z-Zd^{?B3yFKiU{ zN0Vw^m3&h|aNQxCTB}EOFVK#mK!=ttz+D`y{js#rC_7`ug?79&c9a&bCVHzqraCVEcN90-qdOSOFE0pRpLza<$Y$a``>wh z5YAV4_|m*CEiEOTQv$i`Yhj_NAXRv5>;`(JV;i0y`^DPN8~wtp?-xVO#LyFegs|p3#~HGxwikGI`KCRYCWXOnKd+&Uom0;_6(=UOQHWhtN7~w zf*BW#qkR^6XSY}l0XVT^ ze_l)_5+ZHtbwNk5DBCFKTNL5bG@Ea9fr)Z~L{FcAN)pdWVm9>Gcb*zAovCeT8a?Yta1w+bKKk&#(_-V6UTn}jbOm0=@qRVpT?0rS zoM@r#>*a^a87;zJ*48qvBm=*TGjrpw)rZixM-1ur8^EVYjeyO2*X zo#ofI;b|9}8!xiFPtE?~|ETlsx{Z)B-#T=IP*wN2!HNUt>eD^%|3~IlyypLL=WV9{ z|K52Yo`3)?A<$1VCM+~mHkRuuuhm6(LE$)$yd3FoaOl+5^vO4tk=Nn)PGII;ycav^ zDaFV*qx11x9aRMKXu&I5L1gi&5BfVCvF^qIm>?8%RrA9(c^UR+7q|c7K{M9S(9p}) z`CxV8^>s6hAlFChNeUK$@wXsXq#M1Bz#WoTchv%k3CvEo3%I(v;yNz7PAH7t8?!nS zD1&J1j{%~=;YLowX7ke%s<^Ix~O(D=Dh+$I#KYm4e?)h%2^3U)?KND0pp$SYbJO@}rI* zzmu_to-D{KKlwaz{{8DC-~HAX;NP%E>d+l#t3WPo34%7}FENR)!PqCs>7I_}2aqtS z>LYyZB=nO+8CY2Eqeg!u1*idh&z1?#vpdFTgXvVVwb9-Sk~}JdJyE!Fnd24o+Lu8L zJ(!12TImU;C0E`m$W%uP4B5LrzN=nBcWP2|;Y{cX=&C?U++iCPKZiu_X8HU?#;}ri z3>ILbnNuFWt%ErcmB16zZa`<3!PdddNc%!A+oZ6bWr&OOA(1i(m)|uiv$mcJAP%jU zP-TacsBkmK?oG?i+k%yUWv1~Jh;T_#RvhWb{9-p$YVc)by!;jHem^w%zgdi1J;77M zU4inMr(R^oP}^Xz29PGx^w+$5wPbDW-JTxtwG@x?3Dt+Vn(KMQ!`+Zpr@GCLfc&H` zph)pk33}MdcorfLIwqQi=c_l=y2i~sPuklHec*}g$_&)FcYo9}jA$j|86|iU?VJ>6{P}#(2qC1m^s_6m)wjW#FOQ>UoFyZJOTtCZ zi&o;?_7xCW)nZ-Th_K50hXoK~3LBOe!Vh=^1qHG3QBPV2Q2K=&LkWyy(}gU7;@EA* zEzIBJj^CTo1_Q>$vuNiSfpdN&I*7~lRlu@E*3N&rI)5&`$8Qg7^vfuq7rZjhV z$DOd}$(p8U3yx`+f)y4jcdG&lQqrpE6I0+N%NqgB6S!r2ht_~Z4P!J(GM6J!(@dU} ztZxS)+mEC*i^rxd{h*Xu{_31DGG>t4Yt=l?KNjF0+0`R`q?&tnj* z!P^w(Y`$&#_MSz8e0;eLU3+|xJ?YWwJ)EKYyVwi%JEzgT$R$@0Aqlf>l2xmBHjma2w z3S>;a0soLzCzdNh?Ap`w`-cK!LRliN9)6>hc`yG&ozjrilk?L(_0o06d{t>QQ>Xd_ zCPaDo-q;fzO5*=$G_e5SuZsNRoB4$WxA1`b7C7nuYSn_KMbD9DMymbU9FzW;|5F$H z_4P5sanSWMFU={uzn%1qHc<(-S+a(!Q@mkTtFg2LnafuL%g zKycvu?>cY5IA_?VD?cSaehX~qcKsY#?BA3V96@!v0lxoFZEX6?|6?2b=D)YGj`0az zafFM@qD zl%Bh~1qQSj4CEeIA)M5%Az)CqY4MiTYmF3pqX83mu?!tAKV#bDZzjXW%6qzoW7K53 zf*v4ISH+Zq#2I9U!g^R3MtI=vIyLnuXAh*v$ZnHN7yk8geE$52CF! zYIw5xf%ER{VZVlB#QUr}mV3@EUaj4J1ZAyblN4VQdNAFl)(FapG|F7_UK1(0=zrX#3;6?bT?(~~-OgI5`{a06C2^$K`9 zGt4%A_Q%64EQ03*`ueXBrvcqTN>HvuA#HyXZkO5fobs-GiWI3JX#U*s2Bug*IYhi) z#+R3V;TnHWnCh4WVnUdgjWbz-Q$xN*y>dPxsYxg)`5-wRPxJ&5p;K*(U4q)gSn}>n zKf)I^^+eK(L-I8gJoEP+4r@Hmty2)8jG!FCpA+0l#lpoU5lJ8tStN~(jX_^Zw|Vpb z)!KW9_58R0!)T{nsI>RePD6XEv?ML1DGE&uNh)pa6r!yV4WURhHK-&BAq|zvNJ!T2 z@lt)p^}W8oH8X8^VCSoDCs0`b?a3QDcsr04?7&D6QTa-@TMq(U;LA_D-Y?gV_+QMBYbA2f; zn%V8iF@D%i!I>fw6X8s=Tj0;`vYNB#WJ@ICZ;dp2cv z4y(-5zu3se7C#iYR}R3ydadWU;=FY(9=n{-`?+3Q;&zLkV9D?%Do?SQ7V(KCiR98(!_}`pRqO&=aq1fI=6;n4Emu=7Z<6cXb z(z&3RI7MrlpnbiSo6etRQM$3=`6l!kIetiCObjI3@cj*2_dd3rk3u%F@v5lYMBATp z?3)RV|8FX<=lVf|hefabh57#W7uXWJO!sQmWo@!wFE;_O6<`7l4UPPWp-ZbpdK{7g z5`WEq`m~mcYAc_8pY)4SEUZIr5wX9WFmG(uLcj7bwz?;JrIwu8dML72I*)ewbtlPFbBx~hyN(n3f9q-CA z&X#{rUvy=p{9(K``MIfpf{cs|<{){dEZA=BE?GYtb-f#N{J5Y`;wNyD26}oS?LIKk zU>bi)C&QJi5}3f3MEVJ5$@Z{-iVpK3WR||VB+X@Rw$JOxwV=ZeP|DX|Q*dX(2cvzO zId`yJM>}|l@V(4CIt+{^6*CpLe+L^?RMpjkPefau?OpmrMtpOB5x~Uy@)z!!ec;gk z-wmDbw;pwKbKAX}XZ5c2SUun^0-qSz6%4UEK+hoR34YM#IDW+RTs>5iqKJ;69g!?E z`IGl?hk)nMz;ggV<#_ARgE%RmQzh5iy<-ogh$qFBD?rb+Uf(w677;*lGF!4hQOGpc z^T*}D%H0vQRw8`xxIQ+)P;^&DRPvx8hmub|jITfl$_`va(6v+Bfe*utKUi2;G69V| z4U-LTKW+9SQ0djwhoO}(V1)PrP$1EGor$GEASozmL5lk^r^;RT6-@uJbzipE2wUh? zKH3oW4UWVyS#_go1eoZr(R4WhgV&1+NCiFn%NX;l{NM@c#}hpV7V$I|(=%=`&!XI{ z{0jztNa?(PMmK!!3&uSyD6528*-a2lA)t5BGT{n)igS5;=>0=MyhpEUefinj3Z9P| z;U_vtYw2wlY#vICjHv#4drSR$+SQNUUTqpZcp-|6gpm0A_JXB*A%qE~CAlj@nEp_n z|1TJ`jlwUy#YKbVh*C}{Byr~QOsfhID;@eyeyPV0^xfJJDSa%(HZ+cT`pvQGsQM#Q z#vDx1Y%ep{Jvy*R%*BDCsWZzgweOAnJX~FvCo8v~Ry=q>kO*xlTRYRBq}ILj+P)o( zyg1YCF*s+&i-hXv#=-ZNo0JrzdqDrz4pm60st!rt5`^)mC0q5~vv+K7<4+0Qb3CwS zif%}6elrE1`S{@K@0!6+H~J-n@qK{v=KI%y#^lU&+40}sF8zLY>wUSJSiHAJ*Xy^} zj=GD`epPDmEz21`aQTVNmTgPu%~sv?BA)udX=^lVgb!*aFA9o>F4t7T=>V@`FA1{^tf==u0=$^rg%bMu47x1NhCkwMdo$c`yHQRDi`fLB2-0XWvkJ`^cSP)1FWrZ zUznsSNu*!;^BC%)%!NsY8j29Z7QdG0u~la>y;}4066rBhTg&wBRNouimh zmGdp2fYB#ax$zUQ469QB<2&wzw6}ps-Sl1}m64uXJNX=Ek#6H=nrk1BCw!PO*R(ZG z|M+-F7fdz&15oIuo#p72oJhD0{-&mt_ai8Je72HaxXVuRYHqRE(MPq;>mWWj#nGJZ z8C;~8W)1J>Y1}bB@l|4acW^PTn~K|C*qP3XCpfwkS2}{KKM=h7NaArrwF`GKX9zxY z=O913UZ(ojuV0YYoojY23>z1YiT9A5tU7dh>Ap>m!w`sYO0iC+<9V_yU4 zN%5Umly3Y)2R4IU2^8%c=c%4G*UieG@QR88tmu4D)+gXFBD5Vt#@ESjA`$3$!1v>W z-dW>DFFum9&F(zb!a=Jm{n28IvvH6XYhKR%s?kC^s@?=ih`EE?0+f(=E!VTN8?$Jr0D#jbsiI}6wOu*&O0Q9r0`d}d`@iV0l+>~=S% zgE=WmDk2;~()NTMirKw|+{u5e-2x^xH>PLg%stY1VLDEPV8D~+58So(=F#8kZDf9H z8e<+9CU^=Q3)wHm{M|JbzFzI^Y-ZfSpZtE(i#@Fm@gEylD^(w{*`JMq#GG_vM)3S6 z*qct7*)tOU!wu21u4+7D;xZ~d3l?i)>ey-DZAas;q(5ny8^9RODYoX+vFGvOJY=U5 zlwDIar@Eb@A|od$tQ6Dj0~D%BxtYe}b=sfc2f8Y<}?gvIWA%^@f6_R#y6vBsJsS;RPrLr4w<&>$S^GudVKNn zLgwieEMQ0TzERfwZ?+vAK2q=}lbGPzr;K+z+)FC|=ZRE1)K%tT0 zC-OQ(B%3ocV>YxK$Nxo)KW|a)##{8!zC3WtKZ)_Irk#r|AsZ;3Y8FB*7E`xA?xU4P zyEf-Z?&HDN&s`3@Tf(CnwjeDRI8`|*~phl(Lav0AM;eMQy$@+Q!?NXEzFrLjz-jjsooU z?9GS4Z)a`HjO~;(PEXQhM}9!_A8<`+=X&Ix%=0>yxK9OdPf$E!xPi?#I(&Dgut`n? zN7JSGhTFbPItNwdn5yV%6Pfmd0;nCwEsflD_B>x|?VY2Goe2uvz5pjXgvHXdg48$c zVg3CDV-!=K?NZ4MX%qOyU$n%P6BBpNQ@IDNFCYuEG&GD;9gNA8HQA{<2ezR@dOYtB zXi`7dDIP|2Mb^}Q#^+uJv~Oi#WX04}4)f>fP2q|8TpHo^n5!2wx_w(76Dj<#auBM^ zd-9~l`;lIVt0sfRgbT{!&l={G#i=h5&ly{|>&oIJQ|$SUokOK)01Gq(8TVjchgRRQ zlSd{5sb+NO^Pdw5Vm-Cb>1199PtuOsGQL+)aw4g=6mM!kGdAyt>1aeo1chQupPVbd zONnFS8!>~qEaL!p)d%W^uD$MI&geZ8Yqczb(-rO@b0$J&xK!IsGR=~2D<4;OC%hBy zUt(kZ=2jsYX=#SDe^_$Q5tTO`85I2OgsQ6T(T(>mE-rp!?GN*{NN5spGlTQku!lq; z?vY6MYovCcoo=f+jH#88k+E9uIVQ{Ty6w#lb1l3LfhSdSLjb!HL9W28B}bw5E<$5# zQqCxcTNKy@$u~%oB%DwA)3eE9KOn!LynJRRT4R^+^jCHtVz?FnS6}GCj6=KG$GEUDtFhYnC7l~OD3EomQ2TivRWy5fTYiY2UeT^1 z%E%_f!;;)oMQq@u^!?*U$K0(bAT_c=1XR95)?#+A$e~0jWBWVULrsSg+ zt&PsE2Rhv{ze%p=vwr;b)zO|XcH0~nbTClLWb5U~XzgL*UccTN(u?m*8}Ns__7fbs zY&KDx8kH0KAc{STbj-tH7mwgJb=cz8M{ww+5_PXRD58iJoQ9ET!P1kzY?Sk$vAl?8 z4j^O8g7z3xTI8<@AqZU=t0+Db(mUk$3#d2E;5U%po-hc^4Y}HB%qBxe!orZrocvC^ z60_?e9KJG2UD@@oP*X+e^kT_~RRQ=E{037hVo|wm8E#BYXut>!z5dBlm_*mDd;9)< z9_SIid}FWzH+)C+Wqqj6nvGxPa;2PPC??x>_-RYs?EFSo-OrQqi>uumz-ZU#;?7Y@ zB=4h+iEUK<70Hk^={JNsb`ej&3%tI% zdTr#XcbIy>Iz0HnS}GzUQifJLPQH1bIhEGL|0Bmt#;zsyeeOhy-?VY7S_>*gpzZ zjfiyQLH7V@KrNb8-_ZUQz16RA0fWD@a|%^S(!*Rsmnj|#7QvA8vF{8*I=D0ew(S)V zBgW&+X;<&vi=bV*)_9n1=1GN9NT6Uz;?i8}psIxZA$qJ-Z{Vp+S7TyMgek4| zU1%Q1Laep@Qsw%#;r|(M0R!{{<=>c(0pNxmIf9#mb0ju8nnlu~79@p;AitxozCJlQ zIa9CuL!_L<;1Me9?Q=tDD=un87PVs_NK&$dGMh-aF=Sl=FM>cdCbdLxO{3i6uVV7{ z{^9?R5BKE1f(qzdp8*%fB;wxn9nInY2UG#bYvw2v+DAY`4wy~aOP#n!=+&a2lbqh> zk@N@`T1a~;Mh$?qSV8l0!QdnP)fKH&@=16(mJHD|)< zR?j-Atrdt>TK^?0y!;3YrxJ4EF!}q8{WbY7L=PUp!-{!Aq>!C?D9wFH?+J`a4t)P8c)#=o@bbCwc~xWataimv%&ZtA;X56lhtWP9;TL3BXRp)_p1gGO_Xf}9*E z++|3kT7q7N+$)f<>zu$)3>g+fRn1SRfC5Z`fD3Os&BDg^v_OYqUmuPPo@jc8B`$pJ zf|v`!xZRUqZ;j0-@6h2p$uA^8F<1=EQD7yP^NHkSI!elX{PSOH#GbteCRBPcHyDY3 z=owPj6%vGeI>C*^ZB=paFwOyviNOtM`vdIo8O3Poby8N6QGN&1uToP_gU}Yv;vLqK zbyT6&I5~n}O}JnrNM`xXH=5(^*vUpqPyc?fivN%`217=2NIy<|{#$tNhVk;??a%Ai zv&jW}%wno%b-DkLk=LXV0Y+aCe1!qI#a+cZs|)!ZyqnBJ@nW$2jJl@~_}1#%6w$VL zJdnLl<_g)zRp2zqe};2?_Rmv~gdw#<8%JF2uKORNe_&w6KXpdd-3T&iB8fKJ7o3M0 z^n*D0#m3pm$%U_G^tl&_z1(gL#;M+6D(?f&Aw*w2&E8Ndn(*BB>KQg-_Wd&XFp95X zVPvh93;cU9jl`QauhX^es5Nf}hfuU1JCBSTET3br2!QUvQ-E~c?O4gskF6UZ7TN_t zCMs~zgI}cE9@|I@#u99eJCDfP>2;zDO>3o+5FHg>bp7Kk z)+OmDi{Lkc3oX-X4r@t6>WWs(I!F!?0v1QwP?!&W;e&dP{ZX%VI*p}nM>j0u(EJGk zAp|DG#Qh7d7UXB8c<=sVmQb%I!b7(mlzNn|X}*clu!Q>MEIlk7E;ffB~6N+BzEY$o%u>z5^tME+NVq=3-l}j*=qXXxfuC+2SgT@UH$lM~?<@ zt|1?fVG<(S8@yf~WDOc^jju!g#qA9KeDQQaY;h(k6zx`Y zsYL->Hc*M;)JQ<4DDiDOG>&+HMJMaLA`FbE4{?|F>fdDlnr_ePsi#6wV(_9imm!tX z&#%zq#DXKuN=*$j^oup`&;L|K0crVulJukt^?7;R_u5s}H<1`|6r(H-Q{OcCGdmOf zy2(7Fz}T4hfs|cqA-a8JS;=>7l_Jds%BK+{vVSz?^_fH`@Ba=Am-)?_uM#U*08h7X zWh-ip%Vh)0)|P~b%ux8-EJUrTou-)gHgG=GT+{PF`iYXvIWd*cyOkZ%EmuE#UnY^n zrlA>h+9#9u?bjy5-VrSux^hRR5;uyT^=mg!C4}nkz#l%W(+x9pFmjW7BM^E&3&stRH(OB zRq}_LI59O#-@j+e>1VW4NyBfi6aPIq{QCMFyLR=&q@Cm30~p+KSWw_p=L-Z|88#6Ed1rD;D}O*8|-qP5vM9(eU`+%veE zrhQXYZtuPCt#X{Fg`6zZ%M^@{j+oG~%NwfneiE7?E(Wn|yCYv;1hxI1-M_^Un&cCH zbs4-P89lhv?039HESBn_APJNZfVnYp5>DdSq@<*!6%@ohnv*wn<2pkz1(5{%_A0tKD6?75R|!qn zeP-mg6x;jw18&cOqSAS;w~P25=8IKDx>m1$1z}E?FUH}`-h-7`26R#Ds}Y~61S20m zf6&aJR;hAMZa_C83Y%9qb-a3|0o7^Dx4UA>6~xPE{R}8$8x$=`Hpd6*`mIlD>jixj z7j*ezNzHk@-Jqn%;$d(%zaT#!ZK?gF{Ztz;`Hj~V_3E~1GGmw%zVj^aPRVq+fo4gO zZmw}Riel|8)|tP$9ye1lTLFICDs9p4m=ix=xnF6x%p9+Pem&dQ)0aYTp4Ttl$ z5~G^i=FjdufhyBeMi;g7Oum3c z9l??O*Gcz>%+jR0q86`p6zThW&^^sS>yH?%A-POTv`-9IP>aSR64HqEPGC76>5uT= zudMex&r*d=3t$VJhf|@lwevgB>D>yPK8YGk%6nbTrSF#qPv>uF$~}>2w_g&739h@#9rZRN=TVG!Q~RP@9G7G~7FIxoCuV zt{KU=-fko3NJh=#!>XH5bhLcmBfS-&tbnU!OW?+L#pGUOv)FNI^Ml)Moj$GHFWmc3 zgg=_qdYn(1lla^z(BJec$Gz1p8=1Q7N?YWXT;l!O<c2OWdf6$yzrT9uW*6_xJweJkD^K*u=fsZk})tgR|Z{^@iT&grm2sY8V&y9OLy-mW>h_gbZ;`CPl6y6-ntbSWI}q<3^&93I05 z_EoH_Lm)TU;U8spNf7RnV158^M{9T;GLHbQk&uv_P)fJ)%`A>tt>QOE`O?GFv+U}# zhCc0l>2@?OuxN9yLWRZSHygf84Bl}4A9a9EAu74S=wJ;*0 zL%W3xg{N~3U_=4526X2kxE~WjT~bQA_w(zQ(^jS0;EweDI*qju*h$hNoCWEE*k>?^ zdr;QVgE+U4S&f5F8(#n-=TskD^_h8bz<89n`r3zU_C8{dkG<_8x%Xwgvh3ivS@2bi zvvMmB$=7UdT{KnL{XU&so3Du(oMY}JYO53JonxHcTmN%r%~h0UL0F_b)>?5W>!xKb zG*WQ$r20JOtO?OsVVbIc8c!$<+CdlHVgmd$ait znitr@uF|cOGkHM7vP0@nuN%)ahBY7UnB>YWkv_f6Sb5jbv*k(GF+IjdQn*iLMGDWd zaY>?mDiiw5NCJ!hHwR3tC_(JqM@+*QIdRcy8spzXT4XK2&_OSPi18I!s}KzNEHO7j zO93pEgq)@_{3g*IWS|_|(@PeL!CMZ&P7BHr;fscT_+<^{R3u9=5gN&+cp&$d65+F& zAVk`-x*0Cj&L(H23zJJ*t37ue!WojgFe7zLs zReUci*NbYOOKM%`0I#!%vr40MAUkKINXhlE7ua8V;5l^E$95M9gC+e8@b1Zl?G(p< zV2H)*f>a8NPoPpDKxwU;h4Htsr3<~7D|r3fDXqdUg7m}NYS=hiOsPAAuLPM5 zD313jpNR`SCh&2*S-;PApu+S{%sm2V)jr(U5zqyrbF5z*zaXJyEapu=@r-@tx*J5W zUED?In=AZmej|27=ZNhPTOw$W-HA5Qe!hDoZ4UN_f{N7Du*qHiLj{q+%W@Q?1)i#b z@ou?vKK8AKsEvO}T2C7JbriX+rPr#<_LRASPe`+us{gQt7#ZD?D6jwiF`+Rzfgzn( zzhO=4Eni;^r@kG1TwyQGPWsHwFYlC&p`pH6?-bixqBK>AZnS8cVQ-lz3#Vwi)sWm_ zQlp?>>?|z08u>TVh6*oPcp55Y3e)jAfj&th_dl@ZMVxT_ui_@%yWhqZ5Xji~d{VJF zjE%|t76P8BTi~+Icu_=U)xgZP7M(MWDiC`T?2z#f6s!f=7iQ- z*r{q}#*T7(mnBluiOei?nx7C2pySJSzF59q)6pmlhg^As*IL43EK44H8G3v_qjk*U zYb-zD`M0`Xvs^IBGyF8$u1<@)|IPN|a`^-WEaUw1Y8=?G)3xS&`W5zfcYqNx#( z6jjM#b2|XY#6$#oK{kbbEJo?pMZ8;WA>oJ6u4;9B$IbwuLW{_*(F?epgD6o0)<=)P zRyS!P<^*Huw6Jki#(`Qkme{|5fgs7^5Nr3`2P^%8G{;J+ABiLU$i3j3vI=w=aJOS$gEl=iWSF)n>lPF^T&rSZx9QEW+^9{a+GkY^6|Og&i<R*=OiL9NDuRo!@U$;!P zU)EdqBSczoVEsRdP&Bjw$^4E_@yyFv#Qbq%D4*vYj3=xWHx8UF9(Ek*-j=8Sf{WW% zk9x|-K`nFz3&4dEDDte%;+>D@>9AJvp=(~*5?@_%ygF!zG4KOKeQ^px?b{L2Myhq^7K4yd||lfj$)Wi~+QVT_S`3g9H7~;jd7B#V*XCjUlSB0Cs^2 z8voa9A@4FrVR=z*xzU{-D+giVB6cg$a;p!y=i>f~J3N4I2(Mp${*v)6Q%s=g8$=z>-v6SY~K!*S2#W;G=teSnnKNkb1A8rq&4?F_J&0i$w zf*%KQ%f>RhX6);|ogT+*9F3HFSa5px&iPc3%$?)y%w3q&j49umAvCZy6%%6NGa_HR zkO;0Zbg~tH>{tcm{BPXWhCdN%W0|lcMAk-%)<`2Uq0LW#Fp0ToS;4Bl3>~nv>iZ2H zS|bA}^A+JG*#7XzlN+eIlq4-wbnDVJH>biW^BP6-5falN+|NY^1=2CX2?8P4e#SYH zECmFh;mhDs_9OK@elG2?QEEs#Yi#xig9c%blf?c0-Km;@uhAaOUF3Clex=-UuYc~- zr=m53E|^?iVOjoT^B>F=;Gi1{W-1mr^c z1hC>M=ods4`2mq`R}N7+nb-0|_npfH1mBz;#ryrxgs&)5#1k{9XS+1B#YIZt#j7Bv z0BvSmvRtQ?;VuiYtN>|*K6{QaRk2|+RJUzXKT-UV5z_Ig#wNSW zlg6e`CRH@~@amzI)Ii%MKA%Oe%JB8ijOd;i!10^C2564Q2<)~?xwnpmr5{=Kq*2bN zcYCIzCqo3|-Cq~a{81gkni&Cow75WlXlLpwj<1qe@<7jIrlzo^5E-rgr$)z)~+ z_>^pk#QL{_xsg74O&y&wRHPN@S5glYznQ6~lD@_j;Jj2QO41-B~N+;8%*}6A}s@__@^VsYgBH1l=eiHTivW5N& z3$|wdFZ+dCSDZxfzE=BFB6EZYhtIUfgZ|jNL>!tub$WL&zDR(gQqYN5jWnddC==gb zvE$MJ`uzTnh?ONcxy$Z$ziUlQ>O$dQ8K zO^j^$xe31h5Av|zV~OCye}2nO=eTj!aNj?vLt+>E*(J4f>%k3&6PM)Dbw8%i3E^vQ zAlg!Z{8iLya5KXYa3Ywo^cT9d_-i|c<)X-8MVbRX`Q-uEXd@&FllHibVIn=@WY78v z{#o{|_km?yzAgWoqB5vqnJx?ZJ0ojJA`Kvl*lGEngId<6Zq8cp{+gN*6%_}4d@6N* zpn4FVe#@L1}ob^t5myF^M&^euiWzDDe=#Gn4 zWY4bmlqY(!rCz}S?9gVg_1O)l6beiNTyh>sU3o+tB=#tQA1z!*EV91PjIQZh*zC0@ z#6Zx!MMouwsRP<+e`)L;nQ$suXKn8w>4c7fpFf!cL}#c1JjwvZ zPPPzKr)x+tZtRirPT%rd?4iQ|>3s|8 zv>3d?-~aZ(fpp=-1WI);>wx^Zbzi!7F1<~^B>y#GwuGgTIPlc-^d0>^tC*Di_k4Nh z_pe*aYG$F{r3rJ5P!F1e$!=b(jsJnu2R2Io18f~%-abyOuFumPeL~2Y-<(+J@zK$! zvpF_D-qJ#5~e|tV4}Go z*Y*Y$+A_Hl`+!{3pHL3|FbtLuzVSio#QqELbmJVu^J-AM8`$#JVsUkB`6^c~w|iIu zWn9hKNMs!u*?L|@<>t*oT#2T5+|jS^b`g#&cFQuI4Bssmm=t)AnwZd-dgGnDwBwRK z3AVu+kmkzAVm)O%lOT<7*+xC{3`|{co1XS|8MExcoBdIoGm(j(>`eB0#$0mbe6E)Y z#Q}wr@UGsN(Xg)M9Gn<0O1f(_or!2drDm&NkOVsf>Y2ctATnF1=*e;qRdlqv;K00e zl&SEeO~qaBk~wzAKayj)H#Ju)n@zicb~ii;oQugh)o*yafdqN7){xE(w{CE9OPG28UaG>PKru2Z z>LJr#gYh;0|79>{j*k88y;0T!5LJTF_v%zP}*4W^e57-Hz%Ak)i)NbL4lv z_61?4HM{QZ{4Sno6~3}80XuihwqdhIIJiD=1k}ePB=yeINjvwKF|9MsQ&$s9CYQ~0 z;V7`Ga`RQcTqz#{`5-|+KQK69XyzvsVa+dB_EtDAOgphxdtR*d;cdf4z%Sr@NfaU{ zTXjpi=M1G?4&tbF-&i$i!Xl(_VP^%`7YUbg*q$dvx_kroHXgxy-W{LYrC_#AB3w^jcDS zi}Bd|5oi_kkN2fwOy7E|_PwSS2eGoi&|qFQFH=w0-#y(l-i?PWuycnm3}N?sAkpwq zBn`X~_RUXnb8?+7TLmx;Un*WQwlqjL>=MOnQ7w<#a~ax-H3zn{`bu!VyRveJ?=d0v z7|?#&MYj-OuJlgRP?~JdyF{HP!aOZq;ZE1t!k&?kne7-#b>#TAd3>&$M4F!?LlaeC zOFwo6T4k}MQLn)=hxjA(0YV=Q*U~9@&*QX`YodMG+AqtqD&cHL{e&L z@PA2Fv?jG;K13a}(YIXJV|Eha^*fL}^|qlbu%D;Y`eqZ-Yh~l#zS(X6F6QYYcSyg` zKWHQ`_Gh3$4c3~mO}WE&xHk}4v48d$`01p!H^~{QXG%w|S4=UIb@bGWK50e885i7a z%yKrO@i9z@{F_tvqp(b@`nWe|V7)1OJV(*)sXcX@7r(wY3o5u!8ImSnoZs{Do+oy+oEN3gAy6vM^Qy&1 zH=k(H92NE+>rwws^E9c}&o=tFQcawsq`;L7+i0i+gOOFBDtg7;4avo)0XO zozb-{=b7slU(9tz$c%Wq+L~y-v-j0F$J7c>hkIe?LUW5?^nnQ>vXHUY&J;6JYMp0J zM#ld2G7J7~**0-|P9ng@Y(z>=u*s*+8*|AdL*Bvrom8oGRJU%)uWhpLAussklV?rh zj$=TxqaLX4?%h1e@n&-F`nhcTEpc`8D|E6?Rqp8Uhy3XrpDxiICgqeSADxbT-r+Gu zmsWLzjzdWr+qQ9SY`3p5$BpLOHxn{*o#|#%`hKb@?vTtHY=o9?ly(Xzo|~j#IqRl* zjyJa4yzp?E+T6PRQOAk>>f2WvrG0%jjBdPDNm~Q09+%e0gKBZ)RttKtpF2m%WIMQB zzP{gDKK?OPnfY{qOOUjsh)gEE(P!{OlWrDgtWDmh`Hf4|CFF9;oi9;J?dzCp@xY|j z8mr6A{<1ME;*IV{J|~NS!iLE`l5#^DSGe^JNH=FwXs4|u{~2G{Tv!uns3s%Ew&jAE z7xNW0<%e(eP?NiLpzhM z|G_KBq(2-T3(-D*=PyTi9P{|}wD{&^3J915{oOf~S)QQj`ZzR`m>5bGNvjpN%0HQ( zE~TFHkBs|l^PAJ)dy6HU8aR5S0kgz$Cn*ha{ZK5oXkvevmip@{mW0{0KJzKWj?MNM z*zoNld*yV6JV2JE9%W6kR$*Uq6__kk>xGN4d%`Z8XwSJa$oO*ymAW92{Hfnzq;11^By$)Ba8{|56CItQV zi3o~4gPb(*7?U^AwR3MdbpK3YRcUvgMhc(avB4)dhVl0 zJFDH87F@2rFXzi%)J;zz6$h>h+xTj)e0VkKW~}Z@;tqYBK1ZX__<<%^a_?ZtLG$K) zgfr_V|61RNt%b!!9^JW5F$q8(*>~{EE&Ix&l4)iENgxwx%u|wSHqqsP2ux0(e?J0RE>KAduaj z=#PkmwT?#ta2U8(6O8y@0c&sODGLCZ44bEMA2w=|EkT+7+pA9d>Bwdp9b>AlH3iky z#VkSaihrZ3=(tEz($0PcueOtB_fcOmlFu`Jj>iZwVJ{bm zrGe);02KCUVmt8UyDVj09v92xk_pW9VW?hVddWwz4@h>{m(46NuI7d8kmuRQ8zJY+ zHb}l~ZGV|W~p+LXTu^$A@@^C8I#$UE>msUHm&b4xO%P4b``^<5iR>zBpHTh2&4H94Fm{tE#kJkHxiS z&Q>hl5AaM5Cx?MF$2NJfdA8wrqZoI>_S~XTtRAQDCVW=Yzw)~|C%l*jl6`yeH77g$ z&ad@c!xrayJ3OWu*q6k|DT?AX)F+1HOdOU#mZz7W8{kN}bJqPa4rTdIx3JJ@G zO|m9at-@~;t#?A^`Ks@AljbLSR_Rq=lL`t#11QsDnDDf*yS)L5?)(JCQv!YKtmqlr zePL0&z#3VM!3x2%T4Uxip{@Xm`d8aV8hj-xmCCqdtAhGTDMp$cv<;e5ffcRARM$BYgU!(^PF7MiatGuzLp6O()|Us7)h`p_qRjy zfLCE;X8Y%kteDP{17s!yp&6*|x_`Oa9Ay?A`Kr0A@0eb57)#)>tBoe?+xbL9C`Z?( zdE}%=bQ}R2o3s5{_E(=jWPd-Ie~`z`m;I^B@o$4?_76QYTo9()(h6lqt|4%zYYFjN zDs7e4RweXmAI$fue`WsCu=CePCNZ;SOdopItt=q)E0G%Ld!>H0zln7+uh0YEuc7u1 zT9$lg7^}XBp9oJ3^sG-wX*=&aE`DI6j@hN#wm05j=mn|y`sJ}KSS^`N-8iN!uZSP^ zFwy95@LnY{O#Wym-4lVGqDKv^rx(`Eo|bY_pV$*WNL_@2m)W2-E{dRckoSyp# zbvOAT=Idt^d|~9Ol<@P+F}7{j@uX8CVhSRnF2828m3}0>bNGX0)K9|x|K;&Fwbbqw z=^*wR>#6y3#naqURne)=*IT7GDCqTkh_C(ZNXvfxHtmcI^P2OLMu#yMfUodR-4kCz zPW!y?nzje?K~q3GyvdhdaLJ#$a@I8^Uac#~<>1Kbk%v#^N;mt~3UM~LxQte?#~%ya zdTBXcWb1+Dr~p=7kqlI-5eJw=i2(V5X|o>n?%!e^l}F1u!0(v{6%-W23+j!mHa*)e zhVB*+P7BkicuMt`C>uDutm9!wizP)kK!M5e@dwICz0uL6j>vr$y!- z9XR=NXyW7JpVs-8rj_NY9UgeLwTFwFWV3{XMEI>idxtyWYGPuY<7Qy#5#2eD&#Bbl zH=eL#5-8c_O`{`5xr-A}hy2cbF*f5mPd~zKw||Ki80T&T`H!-zfxQVZuLNZC%FEXP z=M^;}Twz3POqTffg@q4)Lbbn1fhzrPq3}1pgr$i8rAwH{7lsI{ML6*+9grvLc=TuB z(_Lz+s`a2ctG9(X#9uqg0gK6{8P{{UzN|$@sekwG`xEG2DDs=@$`jh)^U*nn9wII>~B7>cZ2by9+j_~afq&;t+RJ^Kk zHK-YZ&{rU^HuSSt9<0mHQ0iWWOmHs2Z6?6}F}Fk3-uCJqv1ATv6M8m|w#mFEjhbi6 zIFm-)m^dZ#LQYAnQq=)2kz0Y!cjmN==;S!xvXz-VpQoew{Rtst;F^BZr&?1nKYCz# z^9+CUP`*P0zJ)^&oGT^7)O9(4D4jW+eE3R~PQurXLqrT2YQ~$p4O4Z;Ynt{Yc8w>( zTjkbr7N#Pbdr+PLp-_cbVPbpz!OT7N4$-17y%ZoQ84N$*vSZm2Vd0Rzvpt}tf~BtkSVOM=vI)K+bpxKKuf|w{d{G^bpY+0>*mtjvkx+14dJYVw|j28_6 zkmia-8b!(Cv4T4^GVU6&SP^QLgnTOGRs*MQG&L#zbqe(h|3}#@l*I8KCFp}FN~<6* zLuGo9Daw4J$xyGnwZ8%-wLaH9VX>|HrG#}_xn%jD|io@JD%F88tj9X59i)n zic!>1nAmj-+{P1^yC@O!zFyFjJ*%Z#5Y~i%$q4fnT|IH@OV$q@6<2pMrXLFXC@xft@r(tlxYmK6bu=QdpKgjJOK{vzyJrsS50)Z%1^kz@VM>|}Q7-Kzwd z#vn>S2QkK??}lQ>lps^G31I3y)&SAU6|nmuGLBfexVi(B@f5=RW*&$F5)Vg0yP+W^ zJNc$#s=*MR6S0Z!-=~nmD4|{OxwXY(co)+tF* zc^zbY7*No%?N$u3fe}5}I|BrEaJao)Gwhj@_vc1M6F16!?wx~lBR^iGN{mXr-@Avg;N z{zLaQQIw*7dh>oe$ie1S`A%Iangsce&zp0g)cQ*sA&3(bOHjp1GuQrF1vb&&Z=k2WW-9)tH_QgQq9s5MtVSqWX({`>a>WxRpNw_Cl3 z?TuW9qkMaQIwg5=7yRqefAZ-VywyVIc^Czw!u3DpQ;}FJqU#o|pFu zy__fEjN7V9_S(P}SWE4W|B1C&wR6p`=IJPSa^)eGw1Dw_ua2Ww=FVRL5_OSc3_cnGnHlwi{4$S2i#J$F|INn^2dB9>Ut+P+(@%GmIsMz*IkuQgKjfNZK!AH!ci+0y<@|Ow|Ijxd z^NxHuReyP6e1LAmyg*(l2oF66o@8vSPPo!+ma(0%shhJe<+tm&)i(kjNP-9lL{HVMvJ9+;Ws@Vurot)e`-RaeWZ z$*|>X^OU;?C%YHDOU{$@z(lRW7Y#?w(ER{IO%O591S{MxuB6t&jW@(w!;;+mS1?`& zUQ3Ql9heG}N~hy&u2X5Z{}uG^TUZ%@9f%|kmUbYDcMiAna``0m%IObjRkEEY;E(rp z@$Ul3HE8*3prEquguYo%E?-ibFcaOYvMF**U&1}E@L1cpGmGuc;X0kI$9(EnaYy?d z^wIWHp1b!&_P12)e1BR}9+9vm@NFixb-Sedfp`+0I>h?~+VAFh4KT>le#S|VGxx| zwmUhwyU~y8ulV;)I~U!7LET?<1RmOrZ4OPseNF!m@5`nfgpQ-I>|eVH?@9P2^M^kJ z%>x}rRFD7+?NSF;4DEm53{dij3s;hg{}-Tv6`qa2GiGuW^+xv)+tZN~;%{#5d9YaO zfUwZTPw}At@naql1F%a=90~%YdAs^%n~!;dpW{?Ok5r;cJH5)1qcH@F0KX-4Bo%qK zFw(er@A&>JbtsF7-@eK_711S*%k3g?k(#rV@z)xzEH{%a|B!jaw-Vn+)BT*Mo3DOB zb&&JgaErd9@yB6&rLwySoSSZ)P&y&*qVeCx*gSM))p$e>5v}*-8H#Ky9cRKbQ3TMo zi{1L>dMp^0QZtBMRVyH}(+jzh?%H*^nm{V%gn?B2L}E`2J@-4=ZZw}zok!`!G1yhP zkZs)gS`g%nT*Xr?| zm-YwPG&RTE{fX7j?6qJ;5M8Cs$ zMTi_AyXxBf5wsMRqWp7#UM9__aF4T%&y5ifV?2N4?8o~f6hFv^Iwq#X2NtO zPVVe_YW3-Y2&kHONQ{8fkN?2cQO6L<~W}#v;u<8Y-jP) zoevZRB0u~|sTuc}+PaJ#A?5q-e0k=zq7@Sm6CJr7b%^QM)s`{Vz%-S>eOC7{Vj#*@ zx`APD%(q(3i~Q*C3^~7hxh}1L3*e4#C4F&*ooUE{X2@*1gQ1h{?EMPTt|IiG6R`fEhNL*&qNM_JgxMO>HJwV(Ye@ zmz%wGCtdqZ8MCcHTIiJG!{Z-ghV{t11*>#Swi)6SkAQGrt3lFKyHcR!w*N}qhiLy#`nz~?jw?6sbPFZ_?1`B*IK6K zjcnO^L@k4F2(i$jtvE)L=x(yr#u16#l_mZa{o%4s10W)TNv@>Ld^~RkaxD)7Lw-Kb uKR%hps#U9g|CSw*XUBgbCt4AbRpZ<`Jo!;;gz+be&>9D z@}3_oqw!hoJ8u6}8nlAXe0K|@fVi|-fMb!S& z+Zhd&v)cvBJlDUoN>^M9!jBgk+||@qCu>y&Q528KAG|d{gysM|HC5L~zla^n> zs`>bx57XB^FWOeM|H-mF-x(d`jvdM5Dv?jV)34q8{hh#fV&HV67p#`EIhII7>YJWi zA@2w)IKEoH$Gcj!Ix987P}OjgvRE>qcMWF}kDeSy8*8g?ZD+CMnbivV>>5`F<~|F! zFZvs_xG+8#RvULSSGB1Z$@#MB&6Ml?Fzt_;x79K7t$!WC98%aYp3RfT_er{ez4fpb zT+7xYcEIyyH2b{Y%|>`t(JQj;q!VhCJD5|pY1s#{|Y5v zs-4}*Ja(PR9N~|*=Q}K^p{N8Mm$UD+tjvZIC}&h0#qxxG&9bXsoxM#ZG5ywVS{um| zH77@ECgOj4KFVH3b~&|kvfA$bt60hB{QCa5wMw&0J?or7uT`yS;{g@L`}y%2SxLLf z@bS3yBrVTMO8)+N$)R(l$%)#ZhC^pLs1L69JKkrB@&E{xfkB}x_91nQ{YR}dHlp{< z&gO?Md}Pyeo_HuU=S?35F@h>IgGIEzX%5@Juld)0z1nNMJF@CJXHXsrX}b$JT59}c zaMArrs!=tzHym>-72MdGp-PN-7R3@t7a=B@;82f5P0r5qW9PFBqV!o55+oUoet_~r zm@Fq>tPHvDMV!E~Dgv}4;fJAr;eoJ-ZYQe-{=R=J8j0Rmed#oX6C*d(2#|`#fBSJh zp;?S3;xVREyW(9eAy=5w?eeF|SO};1bK=>cUol+1uM^&2Eb;XKv4i6oMbp)HE8JyIipB`NCm+N;R zIMg%|CZ}NIbW0X0i9FqGVTwGQb|aGe+#fZ5+8*jQx!IB=-eIqXT`3?W=h%_eemHXQ z55`uXc~-OZ(daKXnT3H75}Na5)ZXEfl|U{g9Q1j+N(aiUbVB|%V&bD-RP$jlYD2_k zrWEXJ8}Z#j6_Lj}pB;|*v>w;S?UB^KU4gJ8n{+J-dZ?3AUuBAt*xOEF=6Gb6U=6Vw z7G5@|ItINdz2b=SCP%!`RmN+ifP@)@7MFcf@=y9A_@Y7#XE%FZ=J1_l9_!HNPUCgf zzjP-vGktbU{}FH>{`kB>#mCFSm{x_ytet>m{2Txc3$b(_b6@jy2lY<^cZ49n^yvPi zv-50#Sm?RO>Z??)8MeStC~u!~AIs)}aeckRn&BkpyOG3NmmkmdbA}qTEWTF@maa+^ zsxboA7J)GEV9jWsLll8B=lR>12A9 z^D2t^0@%x=SBEF_HPnA1?WzA|(gs>jdVS@Rst$up@J{e!Ii0j$I}cZHy+QqT+t)we zby$%3CX-AdosBed0#vgR&J2UbHNVytQS#jJzQdrTTJuo^zHg{A15rI>-)QVCMYPFg z(~29c46rfQIXZeGRf#igXIHv|5s7V3F*@G_ajQd72S-~PQ4(_2P8BN=FC_3jD)Fq) z3}6R`Z4602KRpr>I-}8IF`4RpPz!x)mdiYfI74e>Ar^`{=FvX>)6&BvXm~CXm)_JW zh?t; zmPMIN-*iIYB|5}6U0B>mkYjbD2?lwCEM#d>x+3Nz2)80s3Lsv$=4y8fLEO>X^aUKe zuUZ%?`O5=)Glaa|Qc=3xelCURRIfXVx;WY#%#_WW4&yu5ETZz&sxsS7+>j5K&o1fJ znkB}zdHx$gpgFD{%$Le6ZCrMaUiCa)=1axF@_99hL_|7@_XEsOG+eKVpAE^)5K;th{ib{tg0S?6uINWjgz}tpV=_pPyAW& z9-o{0;|~`^unsr|v@@a=y1X@QnwnJ+!c$|JT*zLg#OgdY=J7Q|H`M(+{=5bIUJE+2 z>rDee4VCpp5?Ij0hUAgMtl#x)y8PbbrzXbAka~fs1{}}o5q|8v`}|M{uL+7ab@`ugGOwXdIMQ58 zRy0>bq-X`|r8@X@Tzjf)8t4QD!$i>V_w4RSvMiwTguL-5-x0z|6kgX)t#}c~AKn<9 zZ6~W77)569orTA*$Gw+9z0wafq(4I40^O>pN6Mx#eZ9RUf%r09xp`6S+r)DK5@^Si z?G@n2wrh6@@1A9)N=46~z#VdQah6{QNni)P3C#$E5mfRqITvU8W=DS?ANXvhy8k1MN`bvb`W@ay(+)uR(s+Hg$XfnfL+-oW0dPuNki-xu6 zIBtoWUq$NJEfAdu+euf5z2My%r#@vFq`WIbb)ln37)+9Wi2FDehE8l;05HH?yG2bY z*ci4E7aDRJae|cw+>t(5T5H=iKC7P;=2&Qn>e-)VI1~>Fk}|8f{=#JdOmMh|J>XoT z;k*%8m$>UEh}s;iKS4$8<}b4rjE|sR-#$htZ_KnvJ)TcN_$JW8kyN19MJaZ7*eY@L z1-fZ{oIxQG^3rs`UF{j5%wsT;li54Nq7;6*`JgX_#yPzcvJH?F&3&^?Vd~d;x7UZf zQ<+?r1F|&Gw2aoLx4U`F!N#Xwx$i$rXUSYBF9g3Wc!&QRFIU~`^pBjOKNF4!v(w*)%(wvUf(h_8&Q425F8 z2Gl!e)E!izrmkLL%hbPLGG% zVYLk)zQ5rW(ErycDRuF z^;wBhc35kad4)`9ZN_4^y(5)H*2f<)`?7@H^}oOCXh>wS?0eh=)>F3Vgyd4H(7ySW zmsP!6jP`(io@Q{*x)pT!cP<(J2QkJx^(In+{qvy6lL3x!x1O5IYF{bV5@!nfF0quv&$?A$mMY&uu-CZRrL$UkGs%b}JRS4;j z-G&5Tu6g9=D^n~^=;O|3Ke`5C$ZJ=Tb_VxU+z8+cevJyl|T>KY8?g9&-5RW}6K4*2a3|7Slol$BAbNK($qCeb%# z<6RW!#wFZol?)?!5E`7#_oB<|I3YrL3DYHvXl$eq8?Fd?9{{iUDUga4Gfn#(&;?CM z)Pp_5!BHVq5yRr8ZmB{;dqR=0LqI@4M*2sl4htI$7n0BY|J^Uoe&_R>&gc6t#JW8H z)dD)fR{uWV1qkN}SUex_bZ6wH0@}T=bNOB68>p?l{63-`JA=WhhEC4{?r_4~$OSh+F$XN~BcrQ2p0ytS!5Dwt?3;+A~XWVwV$teO=^TjU}zXz;bUvLTtOx99wdL_@NlVkI zA5RC3Owgk@4E-rw=yp4Kf4b~y^MMIsZB);}D@9$L) z&`)DGiqo2$9<&+uOM8TdML1>7odOKP#X6*pNwYLya2!YGQ?CD$=j0;JT7K-SR=Xwc ztg)M3E`GlU575ptz5`XMyGJXHV0giHrgWq9-|T@h^3;)PKA2!r0Tq@w+VeeK2g>A^iB#Yrpf2_+~iuyd4t2Bqugf#=FEIJ zNlJ=1*HwE~JlenaH%;7BwTVO|tor)_m2eEwQr1fyY-4bvDHPE~_dU>IZ1p{e4pRm2 zp9iW!hzO0%N7ICS@7}mN#t$GR9$@SPx`C1YB78w|%B=yOX_S}1LhqN;Z+4~)&b@s& z?Zw0u81(M1_&}W1b?I^3ynA{wlFlB#-<{(L*m5Q}0Ch*J?X4@VXfQAbTZ8dB+7xb^ zeUZ%C<;JbxyH0xm71Q1Pru7}c32SQoV4Cax>L^>pU-(eMI09Oy)6aL)Xy$5f>T3+1 z_wYmd^l8&=df$n1uHb$pID(dQl?DnmF_cmLGGAPqYF;>RZ`_adi8t2MaEqI5$F^cC zkiR4W?m$iPy80*9+}O|TVRZ_HKko=Z8Lev`=a zL$Y<`Fr5H(vt#Ge9kb5hZVZd&6Pc~YX*t)5xDhrcZNpG?_hzql5trVpXgp>F+Ega3 zs3D4U;i5qJmMo{BaUd+Q$ZJrtEd#pG8}pmsb${j#)B&H};+q_I1bQQxc(T}|;({p6 z#>J4i`E{-@?L<-+Cu`)RMyA{P{nJGXT)TR|7vd|rFN{TWK4*%;1!BPx+yD*Ggnr4x zpDDBn=ojpbU0LkjO)qTN;ksT5jf|qY0z&-ow(?oHWhzyR*jlg`5dg7L$I4(LmGK(9322W^m@T z>Jkf3!>7b_I1D!EbRkO`MI_D}PfypKqjN~?BqU-StGg~KU%zTjiI?)@DufEG8+G6q zhsHDMRE}{=gvM#j-fSfIYN9yZ!tX(!cy3gWf>Pd3hHuQB#p9rylei;RM5n%DgKPN7 zp#**CF}d@X5n&3PFml(2MdQOEWjch0mXAMfunKpX)A?dZ2><36I~3>Cw$Yo%(l5wC zGE~aZTuq2%Q{*v})%LPB_VnHpnyHt=eY^DeaGtz+&Yq@<%54mEGD;+Iog01rQW8T^ zR>8u(p6&{b66McttZ_26KjKHW7b5}rZI(cJIRaIEBwKoQJ|rPT~f<$ovW=XTxu6-QU@uRe(o%7#UwmFZR&=W?*>G z_osK?fC)X_#caj<6@L>Sl?;wRqzNGI=2J<4?{3PO$Nu;i{@~zy72O`20JThQJ-X>* zGo=JMq8$LR5GN)(=)6t#lD!_Wzb0E+|=aaZM%9;rWGhvs^F?2QDsoKWS^sjnE z2O$=;>7O^_R;&XZ113hR*L{G##cNdl02dsI>Vc5zv#u;?BGk8 z30AJTls}x_0NkDTDZDJ ze{U6wNMHih&ACeW2v7x*lV@_xa54+de+|SEb4oaxMVK-%Z@&Rui%uG}*yn~Xjyb(ak*q(_yk&~n;iOhS|9%-k>q>3PIyw`*8DwKm7THb_+8iPjs6;c>tK z^iJ}H`>Kr*TY7#>6jE=no8I;j7OUhbucs<7QeUmOul2vDDeAgPH}aF)s9iJcpfB8T zssG?#ib~%vU(#L3qU?+^TqHUOC)&pzhtC$jjNjhWl|zR)R8Da((SoHA`&VWlYa%UHf=y@25g};7O3Zwb2A{WY}ct->XrEwxfonh%*hI ziTCw3TBVt1GD0Sn10k<^tSFF&{FKF%N=1r0S{ncmJX~sI&*kl(cD(xG_j>I`RP0$* zNMoUNRbYTa$UmwkcB4gw4PKoR{U&K?inuQTu_7fM_2iS5LbHijVxA%tH1e_W3j0W1 zL2){!q946Z5Z8t7E!$oLO*)ywr=f>HI;d(_UahKP|5Lh{DmDLa^;?=IvK3TBUO#|@ zblGU!G|h|)u|wCB#L&wvXV9H@TM~R|%q6*m{>H#UH;Uh(vKp5q+Jr|?zD<)pkY)x9 zxqne~C}s@pUe6Vx04Rxu;anVov*6PEhL7EC^@wwV>?Ei(gl5GEZ|Td2Rr|_J69)>+ zkTV?upJ=AA4UzhB(?fTE^bzPXSC7d(4Eu%=&7+n#UcHyzN0+XEn~+QM#?kZWI@ov( zps2OL5Mm4&46W(LJ;kMs0z3yaQr7%dtFGwNb(sulH#t?k9PTI*=1cG&5) zEuYL4qQ+!u3dAdep|}bC+InGkaa_6XlKZzF4raLibo5@0!Y&rz@7_m_qTiY@l4W(Nj}!Ss|K5Cm5HgK8iqJYNwG-IJNj<=y9=MXwFIxl5TQu~$HTP8Yyx5zvWd(+tIk@xuZ5!gZHZvW* z-V6A#sta@|Prz>~LlRYPaaij(Pl$rukQ*&VQgsUT&1Qc(eReJEGLX-O)PgN^Nc#zhJNG#@_<2{@R_$0yyBB!tpGq3bpA#1 zsW%Q-)(gN%Y6n`uOwK=G38eY&G*YnN&jYGP9WO{lL`=;6(Q3Y$@|ep`zupE<+Xf(% zl*=#iZMEybDF8Rww3GJ!rd2TS26VS+hNsX}rv6%To@Rh8>*{RhDv$48%npyguK+_J zy4xP6&og^przH^yRKP@(Yvb;R_U8Xgj^;XMyy4J}5(G@Vf!8p=U z#)!uarGHi8p(tvIiNwJ%93x(r2SqIAnzD{S4)S>dfD`L`)3hTNVs!}sq2RPrPsi8m zcKF-^2G*;g%Bp4V4G0%dKV6R&>t*6dkju0x-npKxcOR!$0Oq6gnctNk0Nm7Wwy>Fb z{5%~=_g~Y`;91!9vDI5ct2{o)crZ1MS)!2~Qr`qEpz?U8!D;}?r68HdnPup)0nbW? ziim9*PV@!sX!}lKH0lE80-D}!e_D#{5nC-}IGLWAc`Fg%O=oP6a)9$f;re;&MXXsc z*k{S<4LbdVnz21Kp+=YuS}r6og)V?Cn6%e5>-{Iw(u#<=yBAZ0#S1Z)3gt?NVZq3D zle)#$7^@^=<$e)BD*b$Mcyna7s4FK113iDUkrX-Z?Tu|vqrK98SpO=fl8PEag?<5N zwkrk{@;HoM*o4x0fH4C;(PlM8)g^%HM=7GI$i5ch$`_D z<3N^d$q;JG(0{dn*+vR=(+4#X4vL*oB8md)f@0M1{R>ojEd+#gw9WN2gS|gTjcaLk zRv7Ni6FGcXAwyJ%;a0z+g;QE{96D|-z$wfvz|N3;QNVtwh$tyC-FP1%`I&H-#;pK6 z`aoK%k(MK3$lAv3eysn9|DHuM<2yj0y3sco;+_XE^&4Wim;d}3r5U;rBHnAfkBQJH zh7_WkPEn%M`Vd8;RMxIm^zQ;2`9v?SO-^#{&ii17G03R)GdN_x>h1|RCyS+^7@Iuf zEj;(4NsQ7=Yx*!-u1CrHQSOYbtgFds3u)|VturrU9XP!OsEI8mUpE5JzaNGKIf;{& zpkCIINb>E%)Ljw{yw5{N+r+4mwJR|70Ccu?hnC7h$Jc6Ar- zYocdBaKs?9LLr(4#$1y`I0ldy9BsdBl_rrVxL;VSqDPh`La)cXTL~>CEGAL<#oiL0 z%5Vk5xNRHc%t(Z~>Q$gP#O%{M(0}<;_!dMAWZoq77N%ba^-jA@xhFMvcl1c?-2)M~ za3aZ@mWL{IUdkOE4F`&|q&C_-1b0x=a@Ir(k4<0qIi(zh4M7>4Cr}Z`96wS;WpRE$ zAX@;|8V8inDCO?}vGC+3_w;fUB ztAn&r7}829cK{X2(9kx?or)i@b1PYruYj~r7kwJa6kduyfZDNS&gkh4F=++hx;N4b zb4L{>3@?VR3>h7b6KUqD_815}uwFr-N9R!xQ{KY6FcZJfh#!`dWU9DRh>&JYBOL)cyf^qc1s7>f?hD$iTd<`-1=&Vbi+&51PtzHV{BXhZUo9uHh z;QY!D%6iue8wpH6&YKCzZ+HWvO?)Q2>2CdyYYiK$fcw7#Ez;(5U7$fFA~Cg=p@&B~ z2=-J8el&Juq&O}cuN(my4iLfSwR|K@b|*dqRVT6Wjqv#pb-eJM)!Al$8K#j`@E#R- zOF0@E8)2VNy|vb=uGwK67!JpI(`BEpo!pb z$%{{*twCcxJ>8#_sN@}g3NY}T?^>T0qv9(HbDEP!zlo zATrHse;9}%Tn6u$T=F`CBug8-?_^>F?S=wki1sq}_r2P3J>x73Iqn4F`)S>dsr zMH>+S5=nWuEeqz@;>PSDe2QXnEPsSp55@1YqkoekmYdkFn;LaI(>Q$-PB^VD`$2iU z_RCH7D=m>97l67)267s}#|78ZDw{|JmJY~MRlOQ#^;Jr6Wiz<@tz#70KW_w-Ahn(sp#?OfP>{u;6vQ(U zsBAlzS3{UJZFBs)J)F$>a~`%Tl4bg5zC=D=3`+yOa*l3+B(jH+-ek*2=V4q0!dNRX zRDejK?|bub0A{i83B74Po^uMFKGgE}1qP&88};uB z?)y(t)(9{F4=(a<%VR_t zjjgortg<{HAfCcpu?^s(?x}al6UuVuQ7nR+@Tm9^KeJ)q{m==<%6`ou%Uj4_zX6T> z^=v=+CYm4QWt7mOhaUHVj!P!UAV6E`QUVWiij{LXD0UATHI>?#tL3}1`|8m?y1Tuv z@n-bpDC4yE1tKa5Y!pG#W0gjoetk2gorjG&cy~b5n*y@c?pS89?=BlnghdsAwlDh= zBy#A6#>aM(?NU*Aowp-u_eY%BSYBK3Cc1h?rYyT40Fx_%H5gIe%1F<_`K4~}D-6L1 zFhoQ-FhpD*_`O9VW61Z)(PzwoxuqE`V~ao@jdh@cXDJy15tbbi0k<)yR`y}U1L-ad zZ&d@2&q|=_opB=fT3Z^S(4!Zmt{jf^o^Qf8TCkI`t>A5c{)K?x6xh^x`xOMqoF{Dn zB1=w6a;)O8dm(M5(EbTC-5?CY(YM}ob+q*1&G1U~*e;onm*^Ws*F%8_G}P|^GPv&NtPZYpdUbV!#ld#p^=lBuM!-hUJ{hpw%svz~y(T8Z0v!EP6*;FH((3){DS> zehJ(LoG0q+8pjQBFN6>HTxkQ`*3%*LIos-cC{zLO5|_IuR-NP+{EZ1W5KRB{`q)0q*ADpicI zH8fbF(B!@dQ*U%MHa3vgP04)#;3}qg8X8;63Ds9d~*w;EzS=*-*h0n_GdA_ZRm|$KBxGQ+X zjdn}LAW;ePKQC$;vB%mTO?TMn2?fbKbXTY{t-Nd?vhWeM3x1c6lj;7fGseGhhA5;%9yE}^yDE{k#h^JqqlH5V~@6KEYYXNkUNb>Qj zU6vHq_i5(>E_zQb^2JuXNRR1HT04_gAZ@EcjQ(v8 z{{n;oBRE4oo$V1&k#!mOgBfd(%4j>r4 z7WzLdVv%B1VeXw0He|fbQv$_4_JX^L9bv-@4kcjG?c$a;2OnfPkyBO<#})>$V6;|6 z6H=@IH#^#!A5Fj>mTQ&5W(LAMx?iUq_p((u&$e}#q=lhdF9A0M?6RsA1K79)51Q(Z zoE#BUF(dZNrH4WItnb#vH@Qb(pAYj{Pl>jr_;f>6)zet?wqro+wg(MwAxzyB`Mm82 zB;Z1V8R=7*kV6s~qr&E;atUpD)Sa!%XY8AA|F_f);5fBJa!FIFPbc3&p{*-7JF!hD6A^VLrm57)w zZ{Z=0U!%=$rt`K!d1GDAA9*>OAZNPCah2@J>$C}HnfN@y`Oa2jW+!DlaHZXwX908B zQybNt3mwfA{eORGA?i?`{Fej-Q`AvA@{w~lIqEL^kZoSlVQ8GMxwSL4VtsD%Z&vD3aF(BGKQPxc0H8SS_6@F)&8QSElYh1_6N+ z>1%B^OyA4#8p_7quKzbe4lSLkbOpj*tBj#eYKmfhUSW`{@g3U!yyX+elqwkQAn!6i$5$Gv}{f$MY#-u$B*C? ztk&D6-&@SBQ?$02kK)^5`-1>SHjjh0Nnr73UMF!WsCRXsb-E^k1g&2M3l7P)XXo7k zbE@b(*p|)KbgbAsKp*+#JJSP;DcGeW9E`Mq&<6-ADgj#?P$6L8Q7#S_G(u6oY1Uay zO$y(m`5jIdjRJb1_^71|;WU*5RN3u#SuR;>D4m6#vlbk5_rrNL`})i7zg3;e)6H7n zwV7N+;fZ+c%bBHVkvG(MIso#yIvXUPOs1a{IBEN;9sw{d17P8i7u?g8OSh`@;Zvz*Tz1u6e*BkR<|Qs;zT})N zCUR~oTaQ~n)k44|Q=B&pjsDA;(3b-!1vpx=_C0O?le3jiWrDXg#=jM;eTw&gcp-hm z!X6HY1Aj6&KWryPnmP5N^8i=R9MGfr=Ksg)j0Uzeb6fVh?trFM;8^#WZ{(mm@~B>UkPm^HTQlqF-iyFDIt)N8U7aI zSg@{gznB+d(D0FPz#7`>M8c6se5^AlW>C=Vmbp)_oCZT=KnS!wwsOKo5F< z)2<*2lLls5>dsfC3=U}LSN}%hhK5@L{;LH5gJh)B(DzcS0|(|S9jFo-`S2gXL19zr z6zHmZrG~4nF8AM;Td?T?0l~TlG#K5k?fp97twz^oIv3Hk$*$rCi!b3rlhfBRb z!Q^IhjdK~3Tv+hapD{oTUT7}0Oq^M{PQ^RCwd4f8Ux)KGA94%i0FE}Jlb|}sV!%c4 z>z1EJY&v>%6OndMMWP~_(EP61dFNM&iiGanExHPy(JeAri9FCFOPD!|LuQ5I-G?5+ zk{GYx4El=pml~@|{_KIUF_aVrF?S3HjImO@WNJa_w(q+PPHyR85DOj5U3^f%bonh)(@a1Ewzd<;qT0STzqU^2f!3X$o|Eo^{a`W&b3#Ba6X(yk-CE541%|N4b;h z#D7|84^_ggwH`m8Jz`Z~_qT`&R7aZGYsh8voH2jL;7-h`>43-n@%38QwG`rGR|4yA zoRZ3*RsgyIn5+oO-j2`pRk&3ptK@NGSl;&73i0nxYXA8&$B+DLypV0eRm6u>gITl3 zjK;9eX%-V+b9Aw5@|6Vl^7SxLT3*K7!4P_pdk}dSs~QucQZiYF1R_VKqhqTgJ*D#& z;!vw-Poy_T1v3^~C2UCyzq+5p@<#kSUz4mLam(Lo7p_m>fyk_`j1AX^?g+&>I3%ed zH>4c8w?ts*0sY4Y1OO10dFSXq;C5QeF8HQiPwLz;0Nh2?+z zB#aCNwL8-&xNYXMYi=n?4TMgVA#>rBOoQ4&#Uem1gHeO-EFh@MkL@NR3~Pk)H3MT$ zfOE%~ggUKM)GK5UAMn(7P`$?5>l~$7I>12~)o~V}!jVZuIyF%@Im2c~$~fyIETQBr z1o3S$BPo7O&r4Q#Q#_oEtr_0A!Y~)gmcN3`7BZ!%=xP(qP!kLSy&hE!Vl&t(Os!N3 z-$PA~eu_8cr&vTPim4a&I+{T46e-;mufa8&lysQqP)^JNbjt!-d%i!21xJ!-p!+hH zHHB=W&%pnZ=<|~*&{oi?HJS8KB_Bg4QU|HZb}l{W_e@{Pv+sA9Z_$zBS|W3k;&ZAr zMT^gXF0oG@L!GyE^tvVr1VIkzByUa+H-7M z>ZCox=Tfv==#Ts|!#En$6QUw}yALbAqw~a^rf_^HX+jeWRVO&Jy?I|^>xO=qim}zf zo`0(b04JGW;W!m3@>NfhsU%}?o%r(dgIEsnoP?hHZ+>Y$<`VoK^KKXBaZ{g~jIE}P zIFnpay9`RRv!e~i;-Y1S00LOsb^YoI4Ge#?i|hSgh{Ps9AkrvS3=B5Q_MG^*%?=6U z4Lhe(r8-mO%O^&Ii!1ztg_t~R&yF>zownV$y2Wm+@Ji8wA~_8|k;WWjGJ`Xi$kg-= z7|C$+9JysuP=_2)BEe53!+l}MoX?MI9DONjvlQEszT0?wnp?q`!aqe`APbI+%TP}! z>ac=1=k!0xoxL{^0ow?(H5@_9O)^T`hEm>qDJOAeVomz5amskJuLfC{eMdtF*0!mV zc+$U%wx&o~_Mw|-x%UU@?}1n3%EAmNYOkeTd*xb_oyB;Z#|dP^FzEQ{E_paY#Uj zAWmJW)BL3*WQ>*+-}|x8AdAB!NLLQwDL}X8sX7A*`;NroZni6K-dR>p^O+O|xyv@- zlw5C)gwJ^$F0+{cD?_bs>%mhgv*YazbIdFAESS+CC_=)4H-1YOMNq#Q5#0W7lo+D6 z5PSb4JeIejAy5nplDZ=6_+5w-Zx7Xp+4(+bhH<%|vbgO48(0F7bt^!zKqF^<-*5=X65w;HAQb?}p(@PN3253Ww62pc!wvi> zflj=PwClo+R#W0+1rKwbPf|jR%TA|Y$m|`+6Q`uq0hR~s9`m7u4G?Qf$`hn@e7>FZ z2XjE}K%sW%eB?&FKKPB=ne-tIs9*pFI!hBhy^N1tOe-`UJ*agK*#MrK(=HZ_aOlnh z$p4wKrrR^(NE-;q0f;AHF_r;3Khg1e=ZJG40qZ-ssh8B!>F2%@3Xl@J=^fX8C4LJa zN{}ywFp}Eyb{gi!tBYYUTK8u%PsFqjsR;)K|I?TT48gtAi_Jl`@qF<6yAep`J&=Ao z0O?`yR_Qnrxye^-`n&+?f^=U2QNf|d`L^60N)}jrZWd%dCfH!faJ7X;@;Gu4VW4*c zuj&Qk+h^)8gQ>t4F^O|8rbCt(3RW$Ko1Ju{2xR9w%i7o%W7B$FSASj%EBM87VZU z|LMi`l0=NPvnc=?0V!aXW%;$JQaCV!h0Y>}6xWcw1>($mD10MTR6~Kx2h@S6 z4i>TB)2$h!6B^6zrJf6cqO z!ARTV6eH3ka6iE4WW?wKFl{&8uXON{Lf+1^H|WkIF$De%v;3agzt~iik?=+yE&|*J zv9$TMKSiH*xo!#vSXB(?$p2G(n4f zNnk>Ua0K*I+`Jb6k_u6oeSPFeWfX#XVXeY61+duq+5i^*rsWpd$JuV83yDfd-WuNk z0Z@#b{!ZD*sNDLYSW!+8JR39%CL9)5rPx;!e|P+2OMH_ZSEHBH>;v!|b9C&&YykCGf}@&ii>=2$3o(5HTLXPF{IhL7%yf2hG!TQHZ$RrI>lY*ex!-@_JMf3JsdfMB*b2 zoC*GGScqwpD-{}gDE3%T+ZRlM)%RJfV=kK_Jk>WrxmafvnC(O;p9s)O3JvVVTx4rV`0#)zJ7Z@NOk0(&}0;(MM8<)x0 z!PpoJHG)-*T5Um#6S=JiOcT}yN?3Y;O!t6EAwzIbNEc{6$brp9T9)9YwjhFFY@84P zYTN&0wSfW!zy3YRl5=cq2X-GdExwL0QR-&-IG?ZOHnKezkF6irzO(#u#3tvnb|DU2vs9HK49dRK>CQ zYVg?()b)|`l(KwXvy7-kVvyKV2X;2-8Wk*`RGt;Q7gV|L$5Hjr(5OI5d?Yvi4k+Bq z1R_M~l-e7l^Ur~?rTCd&i$-FdH|DL{&mCD5b};^2Ypunku#`3l((9vcK>Xt}8~Wmp zcZ9|F2cX2M`y*({JeLrVL;Xon3bP`LVB91(0F2?uJh_GYpj9yF*-0#2KKKxz?FoL7Bk zp3d?@pDEdU>~b5EHaIqqoKe(KeiAN`&^g4y@aFp@3F*EFeH@->PMRCM=CoKTw8Ox$ zGCGIdrgikI|5NcXf}z>qLEF>~(ooGxw*kDEFFJ#*2`_s+s;T)_LenkP^@MG;;IRZq zAqs{hzl)W!*X%vi_x`H|_}!xu;JDd>^8ivaoWEok7LZ+6 zeFFw!x4|SXaPoMwA?CRwjeT>#9=?9~H~Es147n;rkj{C|HsatetImP{^9TS$EJ|gd zSV#oxPP|pwVN&f_Dswst!4&~rQ*!moF_pYn?&7M@`i_tA&JA^>1vR8F}pb z6_ks_?!9^`T!@jGLWBKERB+@{D=0?b7<9Sh-z);}H`Tb5btGU#`2LV<8b;R*L_JhJ z$ZEh9hy1tdn2`RD#6%G@0o*>SG2 zdZ4l|Wo=P!0SRsyP@!I?`@uj)Vij;MTR{Sdt@ZG=Fi^P-!D+D=&jRBJbcbh3!i_*4 zOxI)3EdBWv=y$-F-k!|Ms{#`tiVeb71Hei>n-Dl*QT-x1zX_BU@+zGwGWakrgkHl~ zfcz%1dE!UX8Pvo>qhEw5;3|WNvNpC6uPir!NBQ=^oPNIzs@)JM+h8U;7sL-_ih8={ zn?KQq4s{vJa&R!DRkIigRmFW3o+5=vh9DzqM0k&TgUa!uK;cbB5ZgporX1tx=yQ6U z8b2!9fWz zcn6?m+DG5RSo6J6E=-ePmWqgRT2$F1;F^LU`HS#m=(&T3#|BDYBdCfXr~WO1eHkQI zO2kn;`R`br!OVn#eHXr@ukp*E9}tO5wt(Gj`EmnSpkf0V>6!!*cPHs?{L>+y4V};T zo>lcM!oyisgXVHeIo`NYV3y}T1RL4tQB|nCPmmo<1XR4M55hF9kY+S4)8RJ2`gQ@} zu8leU^W8i#v5jdslT4nn!;-`2f8F$XK2*CSX{_Kzcg!pyD!$#kFQG0_{B~?m8ebCa4$agdF_cl}kjb&>f^g*Zl5T{h&2N zk)LXIo_wz%Joq^zRl!Dr#y5uJ}_@O3Euk-|Ar9(i&4;>mBy|k=w%` zlclV}@Pk`D^Qb1eKvz!Oa#BP7wfCqP3eCF#6v$+# zoGdP2Akw?Pkbwu^wb8Hi)fBAUE%2|uh+```Wk=0dXh#0{BxnHs`UamDPRSvdqj;%G zw7fQ`ug!*3fq{+(aeKqfC4EfKf0F*y|I1AIuM#;VAI`(4L&x#nZg9*fOdz;pGOMN4>{}?4;Ow!zhdkeY7k*Uz2sQhF90HFL?=sEoqmled?2?Q z&PDzMIF~)~Ub9P#})vYoLB0-&YmD(kbwiVvi+4-9^bge%V>DE@ZK=^ zu{U0kD4ONE*b+F4EkH{B!e_VUDcvXZH97xht+@h8JMbH^e;26boB>(?uq5~6Pkd>l z;K35uU{Or8hY?WaUqedyNa%y%oCg^MtODU7--`VA5&%&=z=7m!v2wiAB`~-AhJiL& zmfvk`vHg<^uu7_&9)6j*vj40q1WOlp^DJ_nX2VPoC(~Myc*q3|h5`Gcympi5P?KQn zWSw&zpjm7uEa@NNWHeBPEHd%t3FrvuZ5+m3Pz97gSIRY5&>w~QOJCaa9WxjQ$MTyh zt`)5&-x%%~34?^*zs#=8h-e1pBPqLmh7q|d7eJuUanHf{MWUUL7WZ+>U$(^WAJUxN zv3eHE-S^tZrl`OFX!)mohLXFb?DRR!4z|jd=JfjV_Ip1e#RS zuP>-}S_n?2TEOx1jM0wWW8hAY&4ABUB)%Mj5_wmE#pk}oxf-V8??0(r6L#f#zsLVC zs=hids&;Fe?(UZE1`!YtkOt}QmX;O)rMr<9LAo0h5S4Bz0clAAK}tX@{MJ0@Ip6O+ zf9ni;_Uu{rT34+cvHaM-!m8kkHk$M{u2jUfFp+cW5_DJpR2dOPhy~x>2Yo0Op?!Qz~Oy1)1t`_=*holUu@5dE|a4naPR461jS>|pM%qCl<~aU<3X zV!@J(oA;&0dPJ8y{c3h^DBiJf%Vo4aLhu^p1P(ikb{joRJ9|h44pbl2yRQ*YTct;F&<$mUF#y0H^%M{!!(T+51tNF5Rm4&> zu2Q%{-ya-_`j0ZF1)`#2>OH!Lzjy>WIZp^FqaKx#pd&s+nQun`_@BBtGUdiAmmnNw z5UV5!iB6pqLu?wq7WME1=%RwA;qyUM8e#j`X6E+(hnZ~|`!90Pp6%>li@yZ9Gmq8V zuE;P4W0mvx0en}THR{osItvW1C`Os$0fp!N14MRm`6#!;XO(Xm{#6f_HdWwFDOITS zjxFIC6JXboMS519F7wo1N7^jHj*$D3OI47|eh0vGJ zQoA^FVVi;KDOE_Qch@4-&*RUB;bdMMbeYFv=0dPJL`iAEu^A7(ONfTga&(3D=XB={VmHdg|wi*?K@!dACqMoR@96So8Z_=x#>AqZ7>>0NHMPf2_C*?>2-uX z0YP?gHpGG?ZI-{qzc3z?_-5Y~kF%DT$GOdwgzuv6Fx)9PBxn;$YA0bkN*v^PSM*8d z&2|&MoJ(I6jvYY~tkRivn#v9kr}pO*9m8=Y{3u7=QyC8X#mN=BtQjL#3as-((8ZpJ z+}ySnDy!;v!?&46%u)7+3Kw#tGI6Fn17f}{*~yNC8`{Nuc>?K4Xj~Tc?Bp-z%=L<| z@UX|3*>|DLQ0Qbr7O^3$BGGzrnHY;S zqId`bL0v=ot9u%8Wq56U)to9ELibR!H0TBqD6tQS# zOpZ9H<5g3e7OCDeuDU|bN{&q<`Zfyai+MsXDf7pN!UM#BK`V&+ALdAXt*xz?+L2L3 zy#XK_3T8D(@i$h*Nd&BWKE#<8d!K?l5d*IcAPiQ<#L;>fZcvy%XWR*|tX8t{_@1t7 zfY15r8FT3y8NvH;fjs=obe;X!p;%`9il0EB5RW9J?0#Kc&AsIPIycJ_ z$To8F?v)qjYkn_V#$Jjx_vNg2$|U>=5-#723=F2Tmfw`>8$=9$9ZZlpxuDRmMvez4 zq*IM&!7ok^d#WG04g*uBUW$va%MZZ{oyN)DPuGU7V~|w8a>Q0vO>=UYvG5Ud!dZ?D z^Od7{D$A+AbHko^89rQ^4AvTR=QINj=wFRm88!*R*ZIyAbai#(3)H<>K3Bf4tY%NB ztgMbsU%pVt+egK05d2*Cx31AV4F+Uy3jQG|EC}<7+UH|vN7KNG8ZFeP7|F|t$VX%I z)doEF$!1EGplodI8B1jA6*nFm~>oa;Z^|z9Go2?U@-ocbF`UN^fTRd%E|N7Tz zMHne5{7v*nf#86RpwKConi;yHYrBTQItuo`N(+tw}#oz55!7Rh=h*(7>ceenA19TGG}I!4MdaTlfgOy(}F` zIq)a8Jo<}6+jR^sl=bxu?v8w2N*nyy%~dUkC$BxTTbfGD(5)sn>-1kN02<@mIdE^l z7;5!iv?LP#c+WK53E=B?;y%Ph9FAK6b3w`Dts$mN(-NoD9O5dkgxb^e{z*NTNZ}}v zdhrqryY3r^k~CBSo}?4Nn*4kgO&;xpW^u)V!Jr|azFz3~JBAJ#x* z_rZVgj+YrTwth1_l=`8Djo!fsld@MMVQ_!{21l~ZkNeJHdV7|JEX*9f#A8Uvm{~TH zoZ69my;ti2#OBs2_RzDCxf)AUG9^5XM*?-flEK`Kw3=#+jOBakkJmE{sf@B!4}5fM z`BaDwa(uiLGj_I!4AxQNvM^eVl!ie^bIWZ();eu8_C+!ZH!z3+~3C4=iS8p5ONsX?krqTAe#di@_qHA+|?<+hTBqv#X4phGas7&7_Z3gi)OaAGxMN5)E~&w{sM=}L zrJ{AUN8%bVPs$(h&r&RT6>&xezvhKEIuUoN)RA{ zi(1;8u~wNW`xN{w>7_k(*~a@R)bkFOlOePsoq!N>ch8Dv(uI+BCNq4!%!bb4sA6b% z$JGH9VkOly1=TL`+x`Z5d#K8lZyOVXDzD%#SP36C@MRq!D@`3GN2o z3ERy^y$@(%eBYn*7i8z;mYFF`L1{z(Er9=#1HZn3G<&u@N-3$@C7`-`Wb|wK8yQbl z^2>}cw&;7Su^7I4Q(-?|*hwlJEDSD8Gg;J&*Dyxn9&nAd>1TDbGWn18i-i>p`>h9W z3=uz!_;{kVBkZgkXWVW``0nuyds!95k>DG7Td#!-+~H@aCAl@bM7n&o+upKIB)#_EY+s=gGz zo;aJ#WR~vz&1@TM!u>!zZBl!c3eBsexn?7Exz4aIPsaeivKq&PmFLx1Y?txR?hOOu zsMN5i8%<}{bZ2#B%n#`GvrL5tgjH1jjxf}-D@kv~6v?xyd!y94WXM_N{+M!Blh zF^Y#XpuGfWM={sjD^K-($NUsgRRqknAJEbt`?46V{P~PI*>hK+Ft}`i_Y}(n}mbsL`jPqwoh77NELqc!D**saPx@!kPDUP7ODuhZ>V|16jOcDlUwx4nWSw1>G5;Ju2WygR37@?D)cW_sU_Sx}$Ww8H4?cPSssN|PA$rZ`Cb zVmkZCis4MmE@;{D>+Qoq3`2&C+0i*2xkOzvwH<#uWZpO`r)CYV2vIcN(28jHy*r9R z%{gC#ZR>`gy9(iIaGX5@EBM8I-Onf(GEb16NV2Ej=Vnm~eWe~uN^1P+Rq9gg^s_sg znjW{(^bNKMkR7b!Ha9$poxb4-43c4?Z*sFA#1c!Toy^0`X_xykgB-J)=|bO6i;aqF zbg#RzdQhg(HI^YgKdCtAiI?1PO1l}D6OHd>_E_0ezDF2fY<{!<19Ap`YCb?>GSKk- z#n5aDsBUJEeR0A%_Y3=-h?R}FA6?+h=`x+C@T?mNh)yW=^IS z8RXBjvG$B(QL=OY`!cmQ0BLAgy3qTs9$;PW zL2(Klu5K|ReH;VNk$e~`RB)XY_JHv=hzuuf0mvhz?kW&fyTw?>6F2Fp=p+Ddc zAtEnI;s1K`6O&1Kt|JYsd5`hY@gCo3stF|-1|Mrimy}!$!`QN=%g6dZU{`=h*QH%U z-3bG*5lYPiz@|Ni$P$c7B>7tn9Ok(W=eSMx8|qy=0PCKaaA>y2pIFCQCVoc;kV!lHrf zyT8}J0Dn9J{sL&vlsnhrzHxewfJ9DE*@rJ4;QieXmJ@Bj#6S;VdyCUT$xKiZDW@wah{MU`GThf5f47j?8F7C!nDjJ@+W?1!fRyB+HyqQz3@1CS z*O{~o)}!P>z9_NzKtCd)1vCf9LtyMuEqGf_^g7vzC^DVkE$9(;N`bn~pp@a{(c$@f zrvFh`u-%^6XSN(&{zs%5BW3>W1tze*8M}Z~DlB?flUqH21cMm;OC!_E1=GlFPaL`*n zi+~cjEgtes1c*}Riel239nkscc^`&3?OVg`Bcc+z-`0UH4-9c#?J~)mlT7 z4)3JOxS48eMr_B-O?XT+*gH*1uKoI_U>L`rb>w|42UU-KE9o}l%$=PyPeu+|HDpP< zXOb#cc*E)`!wkT@*aP6riqo&tRudYJQAI(<_NImxn@^Zlyh5L(;SvO#xwVY^8$ z60p(N@{;OWX!~b=7%9Q^M>arwoCxmM9%0%6NhcDm@{XyAa!|@tXsq88o9rS9#~GUi zxI^IbCe;Fdb+~fuj@>Qd^mnV_I7I{8!&!W^6KLGScNF|7b5^jH53x1nJ?=~8$qE^b3oR_km zz*QVye6+H9>1OiER}fn-uUoZ9YBMmBh3hw<>o6m*?G&TyCt(3c8Q)VuERP*2j|^z^ zU@Y$K2kTV>)nR4jdbxmPJ-z$=GZ1l63f4)XOC6)l6(?+}5wcoGugcKnIQOl!#L?hK z&hKR|U#x`OW~_%@%3iHswYjD>LHW=CK}(Zo6SZv|?f()%M0L|D#n1dx(Mvg@GW`GK z?o(Dp)d?@KT5tzmeSY>}`=-7SN)T`=Y)*}?ANl`;|2**oTW)a@w;zbquNl>PF)*B? z+lyX;r0v_h*@MT2O+)&kC-4*kV!H!x@Z@xW@`t3`LgPP@eXha*Ag4g52E}f;ELz$E zQ4t^p#LBSVEt-AWbSE36NV2VTA!v`ET%fjedltBkt`of*K_mF9V9Q&b&ice?for zU*-7DKlymN!$3qrxq1gR9B#8k0ozGK%9|$bI;p=zV$Jp=%)LG~NXbxjJ13E0PNQ5D zM~%plmy#$=zCZD2W8(Mblmy-l;+N#sLZ?*^9z|usPy7yT7EeoU zE2aHQ>rY5d_eDv5DYfT<>G1&Atjhb~GHItD<}~{zfaIMZQG~~_NmDj& z)Ku!K6it$vq9pA1D>$zfLaBxA+yCKDVq%3XrXh9?oKx;VsKci=r+lqQZNuK*%_xre z=#zL49qmKVe73-YCuzG{5geEh zAoUQk7;#D#2fQytit<&~29ZpFTlDJ=MUEVShgX_P;YKiIGG)JuG`ev`LlWarITB0E zBA*%Y2U4@;0%F_)x1uO5iKf*Y_Frh5NydAx>=a5pLZmI^lx0Mxm3=?hohf+obDwK^ zNA|y109Y#aDG7V61hY$0L20z=zwF+~?Ur-X)v)pe+JVEN>w$2Q`Wm@BrnzHRMC6k) z$~e)U(w&=%oH)19pP@(W0Gc34^*0vXp(>K}W?w0@Q6=wfp7pq#uQ`t3FwCCJ&(O}3 zL8`$)#ZfkX=h*-nIu-CjJE_ogrmw3S%4O z3fsyAWf5v2sG0|42Z_G%YYkONdM)wiN2||*hauZ;34J>_i22ytXq_+7wHWTCb z{A}-j8l2ZMD3yjL)P$4Xg6}~g@a4x4frR zlC%zRT;HrB=X0)*Yfa8%1d$-Qdpj7DGsEQaSmvsdRGtdb6uQ+oF#^%NAb0t?^&}AV zIhg`hG7e?Lz8d$Tyn!lbz?G#mi8`~`m{1|^&RE=Gb7#RTj|HZN%=A2QBxMy0v96y^ zsm;6=ouc!__a*u<kXon#>i!{57G2qIpXnSLBN?vVZ5_H!K(!RgwA?FM(x!wx~&#sP*Wn}z-NjOkfWG(FJ=Yx$Cp`A-_3FKC0J5nokVON-IO|22IWK4^T7 z-XcD_8%{aqw_UKIDom+m@s6|}FSc;BH~=24Foc~e!ndd;O8+oUpUWp;>V@36Y`E7q zUPK$8UWS0T`b_8sgV`g|6w`G}InyIpZ>-;}Ex=?52*v-ZFs9+y+5B|B^U*iQLxrp4 z7q{geQ^hb+j*Nm;>jYcKX0;YpPM93`_hvPzAF`Vjf{JvRHX-2^xU6TI8^tCV{ZhZ< zbdE8xnL=(JG!>wA`SyKe4GO=b?$1w2Lqa^CV;F49G?MiZ1FTrVinxwY^-W+`!{e--ziUa zGn&Re&|&$^1$4e{&0%h;6$%C@hP|Q=#4d3gsryZj>Ydv+6o6)DS)G9fX9DK4wp~;|g zcqS9wd#bDVb4?xRFr~Z9!Dv@>zjC3*p7-IL5&y}7xs`I zHC4Z$?SV7eVN^(rtlJq4`BTPOfWn zfSuog6Y_8Xaou=oVt)*S+~lL3Fmu!h6;M|7BR|#OwhpAFZUl~?n`Qrb77UuFx3(< zi^^jk-jEIy{q59{2+bHCL}n0XXN(?6e_uf*kN*zKIF6ufdn-BYxNNxM+0VS-rOGh{ zBNb&6Qli72YO6HbukXh(HamwoVZrfn9PfIEw@HmroqB<4TJ`JxQ}G*%+!hZnLuc_~ zh^?#{S1{6x$&0q=44SE1bA(Eo(MiLk2$jEWXcy`0 zV3T8Y=;=dK@pZCn@x7>BGqnQxzt>pboXGBw8w1b^xe-DWF5VlE=4PiQcOE&?8qRN6 zP=Yp0pht`ey7nD}WLDz>XB+jl1RN&t2De!GZ)RFJESgVBeZ%vT9IpqiEM167%#DhJ z#96FMUj}4@Y?wZ}^2kTqZlGkUBFA{pVEG1R&3AK{mzGL_;Gd`KFN$qcj-&fhYthpp ziI-lLI~-UE433DB1m-kFPzQ7mWyGu6Ro#hcDje?vbww=U0#AdLsT$9Az}M~>9Dd|| zblq|PAW+Lof%g>T*px&CW{_L~J5-zn25CgqJQQs0=?K+z&j9+7pfo`demP4dK5Q%W zof;pnSJsUyq*UMGI|K;#sd?Y1eK0XK^^J%kc3bh?<+6i;p?`IChHhRLvABNa}gI->gx5VN1S7oM``2LJ08`ksc3X z-KIcfB`a4BS+Bk!W&$|r45YlfBTtnhEp0D*Ap%(sGJL8hZ~P&AVKl-^$)$@%Vl*B4 zhx>S?qXk+!W@HOkX(XAXC7Id)0G7Yg3pZfv=WX!MX=^7wDcqY zqrQXe=BOp9Op)-rg+jf_nXhf+cVrRQ46BZ=VP@Q?Re%ddM0s656#scc8>mU9yU`f} zR+fs`mo>ovF{S+)g)EE=MAPw0XhcStsqL!waUJxCEiRRy5rBwGD)oQrH$XPAs;X-9Dm>NNgv*HSL%QBjL|dD&`sB;#E=82Q zOFqGDdi7y8$G1ANm#<|^B&j!f z%-b7rFoNDmRJ$CLPSPyh7Q3*|N*eW0S^v4}Gb!x`vP0b8O)$IOcyeU}jO{{>u!EZH zV+&1bn_e`R%53FVX#AOOtDS9oZ<`JQKd=VNZbp~eqOb)43nDTNDw0E7#H_+sZ%|Id zsOCQP0(mWRPrE?e%NBYOJYL%y-p2#b>4Obrt=2?jyoTGLdRV0TQe>$Koa8QSU)n`a z;MwAB6z7HeNPjn#gf8z5CRkVWUhOEK%~G%JSku#4lom`MfQJ;^*b!VqNOq;FF)bFA z+C?x!`$)We@JZ9|M|_w@)43V+j4MA0l8biU)?Oz2jqxfIR~@AaJ1HdTX51+*6OJ_s zzk_J(g@c-6;JcY<+tAbZ2M(!XO;uldk_e-I_jj?5I;X^@nACA{c6o~@V*3ndz zbz$2h7}a(Qf|92r*tB$DB~^Aokq(4dO9h@+a>hC#w*QoD1I{pA$o$9~d_RMtzb6_U zuc60(3>aa4vM0h#6uTws@}TP!<9?A=&h`m?6RT7j`@Ot{NheIyJgy#OQ4^0l;6V>@sFm?*c+~~H8x#>WkckU@{4N7M1k}(|Bbq-x%S*9pAD&@%*iO0 zw#_F2g9Lkhf01r`HhD2{6Tfz)s2YIG z?`JLmJqse>m<-#9gKW2%mJe3~6BnS2=r}hQFxfVaWV}5%2oveP>_YtWqmOr%e)WHA zmULA3!ZcUK_g>#$$Y6#0H7Id)4aIOmB6rkPrj+Nh>SIE3gN&mtb;hD>xVFgro7`T# zt#8KjR?fW?Bx28;aEnLtSRiB)a)I+Z3SA+S%I2&X!$GgvfU*E%?pxALz5b|RS)V<& zVA5KWd`3DV`j!;)zlQ0yl7qY`#Q~DV4AoJ5UNNd0RXH7=iMJ-bG94GX9<^BDpnn2} z$T)zYLL0RYf4nlpIFwY8QawUuGVdl2`!ne!*>^qBGkhmiSbddKSbip}s9ZNoGZ7^v zbx%j^t7-=>_AhNS1*<~n#JMSW zXkZuDu2r@q zQNFp+MHeWB~tU$kygVa~?<;Hthqde&p(bNP)&T6UYE z!5$_E&-XA3Q3ucFcc>+1&60o1_qrQh@W&JRTax+hICQC-wXg<|O894@cElUI5hQQP z&75;o@~5wuIn}M7M|-Z3t?p?(SPqKlCK`D%D0D>f7{uG_fL~7AAELA05pgMs0(f>L z!EpuhaS211#v`9=+Le{etoI5{(r?A1hMS8!?C^-WErdo5+(5mg)p1_PqVe|c_*ht@ zdcla!FIku$#WS$uiN}!>?%NV%JteusX_RYctl55)NZOv_+7tD{lj%YEa=*EBJjv?+>XZBs@Ll#(S;@_Ot;fo7mO5RCicTW}6<22icenJk+;R3ZD<%D!S-AR|{ zLbS0^K|^o`hvjOh+zRH0U=6=lXa#UtgWcMODNUVIvTi@fc0^aR=LllPy<1^u>{F2c za?t!_xI`>KwkZ6lfG9?10CncNS8nrXl{n@}nn8YOliWB#kUMx=t|#XPu|Rf~qoV)V zqL(w^7Ep>QwzDkd){$v_s6DsoKZgL?`};;{68isop%v(OLY&06?|vnzwYNM^vfc>O z_y8`h{RL_T(|Js^Ocs4J5iG(|Txvq^2b6K@kB17k;um64--+`{e1P<(v3vgQouiD7 zkR(i@cI&2o{d@i!F4@+9pa+ME{N89T-8&rI?NUJa@0F__xxVVNGR+!cd{hsDKw<&5 znoOV`7CQi62SWlxK8YIKMTTL1`!K&AaNj_Vmb_~lj<9qvW0)x>0@19B+F=jic5&`D zGVrmkIw;c?kiqQVyeJKMbshW8xd$p`F5}yJdhKxLSnAJ3)3B|kRn@V;iRCs0_>&d!D#KRMxRmU*ks*< z@@24M*jgdBq9D)(?A~s^5W5A|D=_WU0u2SivTf%}D&z!na2LP00$w)+@HR+=u>>C< z%GDWZEkwm0OzG?a{m0mO);`wVa=XaWT{5Y7lTLkyt^V_%ik&Z_Z2(5CG-$ea~j zy2t1z(8`@VOCQ^vWoJbh{JJ>UeQUr0dpQN(oa;v8Q8!lf5*>d>i&m=KMFTuQ;JZ75 zT=2JWJA6;}W^e7rjD~8(3=@pbc7UN$a|e2kvACi&1w#m;ihs&n89>uN)4}Qd7~Bu@ zlUa)mv0FzS+P6N$#gD>&M z-c&+qpU-%>0{#@&u}@6W?n@|G8ka4``GhTRQn`y;X@o))_2vq{&wwwMm62L3`U zFCus$JM|1Tev@0Bss^NThyA%T#~%Y=4H+W)ro$<3m+yTBZ?XZvx_+!!G&AzJ$+o%P zqNxqy4iMv+Rd~gEFlkiIZ=m~D+;cs&x%JIC!?jBGjHExT)-q?f{0(bpIymuZ#rhRS zAB5$te>SQyOcDY5%HaCIa4|})@u0&6=(O@`QC1UN9R{|HA-=DWvmzE;Q9GRXmYG{n zK_{641~zlUYykaYnce||r$jl=BlaR^TxRZbr>CIR>COO}SS$_%KvSUsSA2g(@V$L> zLOmis`;?37#ucU9Xiw9?UI|^6$+fy|PYc~4%4VQ~L5|yDn3n>ra(6z5k|AVex^(#MBUj@6pt_)V zwi*D6^LMejo=DOfJK$zD%fjjW2~Y>*ZFl|rQo}?O?we`~y*Gq2@#+NYES5o|Cgn=O z)P8q%yeXjyFLL0b?5rq|);rQH^B$|FNy_~PEumW6sz{F&!%>$==y7wh#Ze7rFl6+f z0P!U6k|+sC?rOynT?A>j-*!NKm2fNx+_P4XYB8bkv6!Wv;Xc`J0_O8Ug{WszV>abY z3&MXF2gM$3L{YW|@D9qu;j|HW`| zz%q*=;@H|Hk50)%<%~$s5cW=HMl`} zsLo_-*UT!YfUTEmml^Xz$n><`OC;*WfH8rA`*i}UTr}o9Zf3I}7OEGKt6lBhZE`3S zbKQlyluDVe=}7VxZWes^X+#l`fH`zuaBU`sIY4GP@+sC2c^`83R70Xd+do71`hI@X znq2kl!?%ryG$*~5_Z+9JwWt9jm$(wYf{7#|> zpItP0A@u<6*Z%9+qo^s#4-Hk-Bi;oJ;6L8N`YiQ^Rd|t^S8Wvch~1u8K`4)ImQ?t|~u`$yP6bv3Z zFYjFv3ws93E0Qf_Gd)!l3)lG0@#+@dQ?KwdVKwRAC9kQ)PKk;Ae$TwH+ZJFb$O6Xr z<@EKXw%?$DBQ>Lv1O$aFva}XU-%Lwt<)B`PS|BbMtw$vxPMAM9xEagjWTP$_V_ejX zC;HnfFhvlHc#v`KGtQ<~_caIS!FycBEUBElbg}IR#Bki zm}sG+&dYHWq^ZZ*M-Rq#h|91U73xt5Al`q7h~cK-)>p9%q^Rag=3rKc(D%-hQ}9xy zTxaMNZV%EY#KixUngyGMa;q6z_0ervUDn>9Rt+kiYBBzSJ(h45Cn)U9M)dgy zKaU?1Cwo4+MLKnN9XqY;dZ9E`U@%)2>r=YR$QwK4CZguc!!sKDL>;i}=tt$@D6%}- zPX+=lX|qIaQ#DPD7L`v&TUZOr4Y77u9c;1awNb3@JLcLVxOnD+Ice{n{^?HOQ0x}l zkg8X#ba`r;#)yr|TgI%8ArmW+X`#gNgy?SSZ(_qtX|asjU`|IB;0xN&TtPNPrCR!f zGk!7ZQ8;NB@}3F7TOat60%37nc zGWxt}AYdQz$D|Va%+nt#z_PF^!Ih-fk*9kC@#=RODIITG5;{`$2v8-R+;N)$@ro&e zrRq!|U5qeau$m$jVz-SYD!l9ht8Gj04{uxJ$X09nhfUs8`*&>9#x;7A&o-IA?7!7Y zwJb|;Vr=;i?qt!_T-9*&`&q&g=n8ikvDbi9U@>58lzres!5_J|vPrD>h+mS22-Dhh zhO;BwSKNL>d$H`6v10rD@9%Ga9Yx%QeKIG;31sAIlUZFv<;<7Fm{S(|De6k@`=Sew zM(nLC@bPC{{+Nn(yyo&B+YxE)P{;G^wIB zaERbSE-6#-#bb{O71ff6pX(l-qELwZ*_q>}Ew&@_P46e3Qar@E&b5@4<>Z3H?=l+& zAElk@hyvaJixQ?}dgDyctchhOO*LJdly2VgkytF6(k!R$x_WvBqhjT!S5BTyvXaj9Gq$Z}YXqo`0u*KJW#w0_NEWQ+e7ktQoc7%_VPvrGdK-u34~vkz%R zyAGYiVnLl971nN1gbam%top3gj=P7S))f&R7alacd2_!DkQNnt13EvVEnE zuFfm5uX+S#|2yDhFAVYe2VmyzWl6^6f2>y9VR+%wOMa|;Q(q9VOYzKCpHtl44#Y^r{ZH@a6=%o1 zrk8zXTw{T}!uRzVxU_)4sJ8a3q+0qXb_9|YH`+5l>AZm$5_UGW5r5!ER#JQ(6<`t4 zuW1;raG45N+!Bms=|82dTYK`$oo*1~im-OQAQv$3FQA)6>Hl#x?}NEr*V495ZnVL) zty=2htQS|{WC*y{V937sr+=R3 znQGW<3ycM`u#U^8k)fdN39~_;USoE;*I-|xE(D>HLQv1RKRd%bQQ=YU4Y8a_@QZ{F zz&o7xlWOTVSX$VsLIz;aepxmoV`2*gg9~HRv2(!mF8S+)^hoL? zIqFzc7dCf|XWU}z(D4*nCAZX-315HE4* zMtZ-!{^^>7un(MFi4xyh@`i8j1AkiO{J)9kKsG3|?fh_=4lE`jh#sgM1WysSVQmhy z{CL#Du!WF*Dt{}ES*r&U&skAuAx$+363>Sf(R#1QisNt?(_lTwu-!vu5v>yj0WGxl zovORWNVLk2;@YCQ4b^{1{vHCT*#bm3(5U?axA*oN%zXJn-W;-D1bPWh>#$?D;*%re zaIQ#&g(NvCVHO!OTXnp20EB&}(x%^Tpv zqNsOq1}fVV-vZ2~WXcGNJRzK!=OVj z_c#*m;|M}2q;~?U5t%-C8hACJ^G%S=d4nlVqPu0Dir|abR+P9=Y4K6- z(RxKL2)<`^FXnxIfUtQ2r?M*pBxoO(6~iR#3kij^9v zs!+{!Vv41HHF+G`G?2x$VW7=h0hjm!yB3ikg>KY_7@M1{!s+O-S##*^!oB`2Aa@;3 zho6?Vs1X4W?{?1Xo#Xdd+?q>mP#faqRThfMP^9BM4- zU7)a^L-8k~7GwWC@qa?u8RrnoH+L@{*2DRO3@R0YSd&Z(Ng|I;Dq~(?ZeWGA-T%h2 zJ4n2Pj^P@DN=`l%c?WJ$;`%1PbB}33NE<>(B(?>L2L-1{ zl8l{-zLd*RPSl8nXozpZwKZ{|Bqb3uZ?r~UF1>yB`8{p~504jKjcqr{jmRmXHkdj1 zn{No-Jh#uDTzMCAXPlqB8*f`rL+S@PZn9YKtY}tg-M?Y%Smfq-cr!>`Mdg96`G9s;eK9vQK=4?`|%|LfMjIvx7{Rf%p1 zqxEXog8B&A2qHlUa8j;=dg1{5vrS&mrbMPAB);T>+T?8{RTZ)YMkVPd%~Dm|+yy91 zzVQft`_H~m5NYCw<3B;`OvJ9-uSbRRuKJB>Z~ND_$AgNG=_H17MC_8xlG{eO?nOf8 zE+=wxpJ{)b<=bEhIav*hH}Y5An#r)90R$AZBu(YbHN4Lba_<)~>BlS@v^d@q#t0Za z(F8&@bEoV~ReHyoCZXm?1t$V1)ep3Q(Xo=(_~2f9Zim2Ec>|tuL{Pgv_J>3_)aOX= zoA_w*k$Q_U7bO0ZE;UVlwSSc}!wG=P|Aw^xEGs*IM%O@Z9GK$9yN})*?jN++%_v5E zD>>T2A)9((8YK(Ya1OG3Jd76E`eHZOnfU6OaS78U`|p!wTA=u7GvN(j7#c%aY8&+c zdBx{Rh|n>DWxI|~I5REiZ}khYdKlCi3)MBd3Q+4#alh{GU8h&cwL19NkfN#*u3K{$ z4yBSip@^{-ikUhG|5wI96+;D6qgE#!H=B;HcTH4DX0RG*nL41|N~h~KXY1m0rl3(_ zppZwbnMMRt!tRq50|^X@gVoos&Kc%j$mm-`W0ZOmQ~T)?3Y8_I_uHYfLG0t8W&@6M zgC)tp|K>XVWByt}WnaQO=YSJUr5b)}jW}%VUpo0vg<3j@Be#+yqt6tou1=<<9@#kw zY5EcW|D}g?UmU5$S7Ry~Wk)LQU%lYHLqj`t=V_?A>pRZqj}YwNr08DUT(gPn54Y!A z!Gs-NF+@P3p~dBGJhWSpa|aj~=Q{5`l$5ZvVmwlz%4S+3!6m3yFGPC%f6kr42@T0` z|0dS`SBj>iw}=3(5nCW0Xtl7!PSq10UbH?$K|fk*<5B$1^xEqSEJ@+eWDTO)1)1_B ztQ{cRICy;+*qdgqZF(2FSD4JQavKJ6lJXY}6ho>DBBJi&;3Q=oH0FyoK`6{5D& zmNo4#5yG`wZ}I8GwbyRBg`|Vk?e?8Czl%rPPbIXfn_$&NBKMBLBjP2t$z`a^W4vVC z`g$kzTp3cNU6iu^;Zts;7F6t6VDH*Tv$nWrpv$y^mF_v z=>A4Z2x$DhO!-=a{*x7tQ2aX}Vh#QiAoUZd0|<~h_-SKM2%jg6=^C6-l~}TuEb9@5 zsY}o~BbM_(5snI+;ALzr@QkF?KRU+FT=sLNSB?eM!Mlrjv!AXmcvMa*k#+y32jYYv zQ0er#a7=1$JSwU$z)=4aAtjg`sPwRVs<4QE@!qXfvfpnfTEn1T3K(zfT(-j9SW2P3 z^Q3Em>r6D9@UTpx-G5LEFW>(|CZb>>aW3Uoi`HI@#)M`eCTotXLS!~#Ckbm?xt|+fF=feXR#c@jPw|# zc5=uGyi8wB)uRHw2{C$jB@$9Mtq}#nE^?#^Wdat0oqY*6vsFyA!!6igKYs0cg zJ_^F%Y$N4eirYr0;dM(OftO;LzUaSe(>#q9uI#OaP_BChKwhHKz#jjj;`w?GH%xyX z1ClwbpZNrl2VQRhEVxa9t>!sPVLzN&1evnjf_rFgoD<>7gWZfCoWF9%+mrGMWLy>+ zi`q?{rL1H7Mv?KJAy#Q&T<(8}35n8W18Kwp>^hY2b0MVqu0QjlWKUG`>3`y$;`0m- z|4FlixPc%@OUvHkKTE7 z#`=4hwUkaN7%YpKZ0zG5(C!YYGPQwkB#xc4s1kH%K79Q(%?H@aJ&EBwRY>Lh(X8|V zL-Y@2eL8ogSw0m^k7##G_ZI=dML*3$GeCVxm&t}Tis8PIE>syTIhEvuPn9KI|Ge3j z3>;5CVHp;-gVPQQa>S!9bVJHN(J%Dr1q<|4BNB#Vi-!P`Q_P9FNZ~hVLPMws1)pEp zUyERKA=bedQzzRUP6kzZ|55%g7SK`n$GeZIwPwTc9N$vwHdXNW4R-P#0z~*y0m?gF z6eY|A5qcGgk%FT<*ZQ!=?K)x*ku=Lu5gXdt!PfA6i*X7RU8+D3ZVtZf9@Wm;j@ym! z8Vy8A>=Pv1;Za8!%WRgSPZY27u#I^h{zr~b1K>P$Rii#veGQZJUbH&nC)RWhaSxjp zVx4{s&VDavfQ5!(R_nU>cWi;Vx$S(e(o{>LRyzLnbx^nI+sG-0OWl>%FpBHay@eM~Hur&`i5RQu#47w8YD3L^#3xE0h?$Kw zvoXY!p!ZeE$!EO9CX2s>_5tV3mtMVkNhyVfrMY4$xj!bwf~TIEahqu}^Mo}@^#?q? zda2pLSh zLlImL{G)Y$)t+3qA#+DP?{eg|O@-6U{`X%_=C#PAsr}gTssv0I7>S(UJ1WvcYx?H0 zKl=9b!Y@ALGzQ&aWP3A{=*=K6Vs*k9&Uxch6%rPw=2$4jpW>6*(3>atRf54^Op;T& z1>Umqh^0}YjE@wc8+ic}fq<|Luni_pJTwRYA6su7l~vb$4b$Dy-Q6f9AT8Yz(j@}Y zf|SxocS(0k2?Bz2gP=%@2vUNefPx_PuIs*^=l90<{lyp#;X2nj`|Q2eoO8`t-ACS| zz$$1|u0cg6E$Eh>K9E#z_7LH1#H#mu{7st$WGRC%h#Gb1*W(|P1F{)|EN}}5%8##KA|d2;SWt_ z+^Muyvw^B!PcAM8u1`s(d$_8laI1t-B?0NYslSF&Ku=Vn>OdqqO=LPh33u`@e{LGg zDhFTGNVfN0+^UTSbl7NG1L@O&6}=h*NUWbr`MLQWG-`a2%vHNTzS0m;hCYz3{r<+t z>MhST#olOtdA~h}!vO>K?tU}6n-7Un!>yL3aBJ(5c$FX)GE0#AxzH7sq}59z31;Sg zB{mwB0XqOw1|rXXg8uR}`WH~RnIcVN#5Roba=sDQo))`dm-0*lS-A1MD42;aQ;5tUrO&wPd^&Y2JepNuC`6brDy>hMBkXK6!ED-Pd&t=ZEm%VGvz8a z(DH=kr40>1ju_={JKHSpEWv@WMp~iGD4|!nQ2JGogk@2UH&+x$a6M0!Wwghb7i@ho z-JJZ4WnzHUdQv4|af;SfH07M7QT7QUvNMCEv;?JrMj7+hmlg7+_}qk3uKhvIq*iIp zSjJVlN$134R^0pXbk*lCp@=AbY)$?q%FxSx^t+IOU{F^01{=lwo)4)M-`Z{`;f`5S zqQ0k!k0>gZv1-WPai|l2suUAOLMeh66Kn2c*a@P1@!ckIj>A-2{N^5VSjm2tnxMcU z$F4?A^gAI>&iLfu&)h#ZiDbDz9^9k8YPtIrQnMma*`+G1h*?&-y{7S>i@V5%>uPTi zUL`2J5;Kq(#ks&hw%6-=T(3r0OR8jU>9?(*rlLhcf)60iNP1ZkNkOltwT6TM6B3BJJ1(8ce4u( z=AO6e^Q(*bT5~XVt9;r&FBoX!Gq=(R{Oy@H)v3bZdh34v(UIYBksS1mii(NV%+C8IFj!1H2)KNxrDag^6bB zuZ0N9o#>GMcEQ{=>TlT3s37MC%nmk_JtL6|43H3hJDj^iqUWG~SOC_BTj6n>(-U}a z87U&~(A|SBtZz6sB1~E}rce=5eW>na)#Oq?X~%aO%eMN+-^AwR44^{yFiC zT*T+7GbGjIrw^$uaiV^nFU9#+(`X}lK29^)|aQ$g;)m=bOTP@ub_ zpL`JI1|p1OgDGQGyy}W_6<4Fd9GQmThX#-inzaVDGjY!xQNQDaVdiL=Muk80z{Xxb z`97a$MeCh(sV7FfbVEoBS(@to4F|J#?MMNIES*LjI8tuCAFPzWiF}Q%R7dhqb-6Eo z^JEsWe1z)qvul@K19wmZ#@>>oS4=q9wMWLr?w6z913MXZ!!m`pW&(zHu_)&BGn_{` zc8pT8(xUfK6_UUAw1>HPq^{k%&~MksemIii++zLA(|H<)l@nt}u-Kh+VMr%Jp)9ua zQ+hheSFn}=lyD}zQE|IL(22TJmCrHnCnT5*U*A@48an^kJ>|bjAmAytBett5fZmCGyOFqL=D~&!KJ#7KcB44n zIeM8!kB!NeEc8h<8RRWvgRGm45Fm#~LXNy?f!HumOwpFGbQdixNy4nmhaD2Xj&qVw zLRcifH_-&Mzlx`5%#Ze7rRV?8R{e*sBN{XA;RQ=;sdmha;T_P0==>o`y$j`j-tuDz zJ?;^lAy-&{jSSIlf*I=Wx#umE>X)vcUdI=n!t|BG*wp2Bz>vTWq#MDGZo)i^J_bfK zu7V2%!~Hfgy;Mx2&sdeO@5Aolcc<}EhBqFdfA5`Xdyt4B3^C>iuo4jS{VDfGgraV< z3b&w7C52D-A1(hpE3{l#qTL};n_-%Y0`7a&x9M}FHQBHL6YJ|BU8`< z?(i6HosgrI`v*8APJp6;n!F3xAGf#1hR<++f(roP7Xyzv!HRXyh8KLCPrwJ@2zvar zP(F)JV-xL(w--m_zNUc)WAcxmT+!MSjriZ)i+TWl0FVCs{KCK;qJu-q87#ty*?ly| z12nKd7!d%IS2s%}jc!FqE8g?Pt$mZcs#`mNuJ2{jjj2PxFy8Jpjl+GZ;1!;As)5h^ z1dTk9dLsV6A1-CV2nvYNZsb5{nJMslRi7HH`_nX)RRzHWAAqT*Log!Gl_w&i;S0>zV6%kb(Tm0^kuQ=>Ovep(v+SC&X{>WlNim75RDgQ10qJqi6~MG74GqxOg6wJJ z*Fio?L-=kHA?E{Nf=RV}$L}f+F)ef7mIwety~^uK-I5JmhnKH$&ibz4D-^}Esikom zH>|?wMM6&W=T@jZ0U`esfqlzr1x`*b^%Csr!C#uXn0-&{-=1VQS)5MS7zw~+<*z6S zCrG=$=`#Q+K#)x6##`=??-zMWpihU9%yFjVi~7d#ePM_c24@EPN17YufWC}Pix2J+ zw^NQ{`2X`=06w7L^P5CZC7={61SK#m+7+;SPXj}8K$*eFjrduw5NUFNHnOoXp%)=W zIIp5PiSmJ4OaDkV%pEqf9YbV7x4BC?iv69J!G03BqdH6D$oGjx%?oL`_GPF1sVN6| zZG`3`8A`wWVhtT3ksxuw3;kiN>}&m(iuw_L6s*3dS)!h$6S96YX$MJDhu5dWcNTzZ z+y?AHQB6nfy|(>$jmTkCua>;h#-! za0$kew#N0FJ(&acH0Ynr35YFrJ?&^B!8)3)V+0KIW0I-huQppyqD>&9U5yj}uy`>Q7I%Q72#jL5} zrilzI1FFeE)LFNOS0EU5uS*x`yHP%Uk4uD!}#Pb6e- zW-~$3huaOBSPHTqK6vZRl zw=xYs{fSzt{vBqh%?G&tEsl?&4r=&HqIqhPu6j)8qZOQo70sx#5k}KG3Rps?=g}Z9 zAh*%7e**kR_**Ot;s%E?p)Xle3#6yP6Uxai*eFyR3b^K9IcO&^QH&b-9dc^1)lmfv z_cK?;>?pL zKK!d^IRlc{AcI~R$R0%K!6oS%I^d!=E5N|y2i$mqd#iAyJO)WaD)W0nCUI`de=||{ z;2d{@yaRi3aHanZE?P22BP?JSv5iP%NPSuH_6EdtBSMJDIdytoiqaGPHxA+NIDf=* zc+65)r|Xc^OdLT5H$r(?#}wdwse(g1LL(5(0ISCkcp!JS^wLz!Is=5{l5INxpn}_t zO$mJ6K7o8r!`cP#q1g)nRR+_jp?#GHuUXpxA_Nu8vLLj<6ZS%Gbpkt(s{mp01;~By zY`%i7g3VMrfP+-P!i?S%i)KT0WC7Zz^biH6fRjBqMKi#7N+pWpxxp7x1~k{7gv0Nw zR~Oh^8sijweZWZK#C9l=L12o6^}Ne9z!6lj&>j{)d;J@4CosFqESr zDOr@TboPOgs4Gas@c}u4RV(;QIIGzZXy=H&gzo61&%<2Fll)Z#${H7DeE#hx2$3F2;|B!Lla=&Mv4>GlmYjui3MdP_7AVNSnbD41$ z^cLrEfWJT*NI9KRTTW(4b3#m~Tlnvkft-sUGSHwKBhmi`K%yU<$d-^(vBjh>nWmx) zOg|XMONd%AFQNwMwOwL!cWsSlYXA0y#|5+hetxUV2_TQr!56g}g|D3lXBucxT=!XW zbu{{b_;L#1vy!Ik>5rJf>Uj&^Yrxy$-%F@qY~bJcuj7o^|2WR5`P+etu9o4brxSvO z$isF{1q``G8C?*er-c&3whpIT0O`V3QL(q&p8DOsl{3CDN^T~3cV?(FJ?Tb)KfzrB z?POyO!Zz%h5DAPI!ZeMyPNR{!mjeSpTl8xu^_8vG(dfl6Qc*LY;jz=TbjBh8eGJ0pKN9%T_C>hX!Q~ROD2Hk}EP^{5TLDMjTPHoy9}9h9|8nig#O z{p@n!JB$g(x7_yGGd{x!>NQJ{hZLVDpIlmds~fC=+$`z?;+RvthwdLmj_%#+FZ1OJ zI|=(Lt6U_pE}_<;PfNpoBpU0?SH2#d2#$oc?ZBRqXeh5U5~>OF`ofl`eQC0EWZK`Zt~q*RPYn)``I^*UP- ziGqA4iW9r!kjpJ3hPFu2COVXhXS&{2tn@av_gdZ>2}%D+^v;E~oJr`LQbrYzufys5 z=J)-SLKUloOwiIEg|lpI7Rl}Ipz389P|6(tb20y?G0fcmYYfv33;?ldu80G{NnQzB zu4^UvgP9$ay(iZJcOjQav0DEVv>BSd5p85(UV{ZbOm{dfXU$F%5Kb`p6xMVa*x&?% zS}Rd5^dsd|zm#HwPt)!Yt3ZA2)Rp8C*-rFqgVZJq&N)SM-_(pIUd0FELf(`7cA9DC zM%p-}so|*NTtTGXW_dT$>i@nhp_bdNx-ECDE`R78?0jF01WWPT zNWoYK{(j+A_|!Kqy}H13Q@g#f9?z`sTcc{uPbG=>(*Fa3?1U-)S_Gfb!EMA`XAKwYnq4hL@{h{#M8|5!$A@P$4t(0OlYO6 z6n;M$h~J!%Td}EysbQfU>4Vt@q!6pEjrqF?z19HT&10I>mmF*hw~;B_Kxi~WBsxqL zE<7*+p73gEfprQ*lo_lvsG95XDP)7518FQ=y~+SHJbq~`3eZ}A?{AWS{9p7jhJrGq zn2NNk)u;_DT9oidd!o37b;l7C&8@j~3@<)v=1ZB#ml@3e+Xv-Gx-_C%ocvZ>Sv_8lP{xz3 zXdgTR?La~WIE5fnz7-9N3T9&eGrace>l-zhfu7akew`e-Qm7%(wOkQ~EoFb8=0*Dd zu;d_uXaQ{p{Y$MAk4BhZ`A!2>VKMqYmKyp>_C_XC@gH_!fBHWRTQ>87iRXkWpyK1{AvlRU zV6o8(_iINPXFIW31=KnNS(`kYDn=J@ra<%g_2=VBP#L5jTm6LLsE1vmcw8A;ociT) zDn}4iZGby1XP0!_LZUnWmDNvKf-HnUr|b$8MU)8I6;wqaZ!r^Z+kt8)d~o#=F$$wu zQzY00Gl>;2n>KdT1|uSuqZ|dR!U|P4uPJcNNcn=MA&Er(g+cT^2cTlI+?F1&&S8Tw zi}()nO`D&x0rqJja)O{m>IQ1_&3HEqzZdoaPt@?gZCPG4Q`%5Ymdcr^2(}2?DxILR zQ2RG++eKORHF)|=$jS^3q*_|r9btnFK^Zo*px*OEK%u2E6nVz=vcWAsr+~YnZN;eY zw=I4{5R$dT!jgsXe=J%2HBX+2u;<9d zz_-r>g3i_ICfB$W0>%ADS<_2A6l-Akh*%(9@P*;~!7;Biq(y7)ufYH%(*`jJ&+?=a zqWBbsgdid$yW!W1AoR@MOZwM@$mvd&Ik5Z#4Rrr;WO-yNvq?^6?@citc3Z*}tje9d zk2XfZ*A=~Uht&#`nz9X^J!(o;n*H9GdR|%CLCKp9PclP72tmLmj_?e+)iCq;j%|d*%E;YQ?lUkJ8~l&(ihe)jD>zHP?tTj^Nf{OTaKz4;48*27g&_rW^y0G6|k5NRn6lw(|(34uZE? zzRGYy5GH5}e$N9MmLXvI3~V1@4NKHy3{h-a+>Rjeoq1Cx<_x)$*yu`OkuFVzM#99dW~OBN*Z%`J@YN zxlR(`Wv{L<@XTd4DYFUFQQ0u2c}475W!c>|C4^`Ms`Sbbmj{q3*a=@}L(~hnf@Bsu zDq}+yAI~rSuD*v*|AF1?7GV5{Ur25xZFZWCVf+i_=a}R~r1@=5rQi>UfF3~$S8ap~ zBqUxTy{JyJg{*o2ANb1}pd{SXlEm|+!fjS_t z|BaN?FlpsiaEC`Q`!tL93SxO}+M-WF{yGnPav_A}*En}W8N;|^+|8WBR#l8^@QuF1 zK63#IlMBL6uN)GaXld=GEQCtSUrX5WP+?PF(+l~(SU^5T+w`RK zSa!eXciz`UTP+~;ts(6zvY;8|BbDGAIe~bAr_h_}U&EQS^IQx7tlT}XJ*Z{XK78yw zTBR<}2rLtWvTXm^-URZF&sk~zt@^5NAKpyu))CC!0<9JXDt8?v;(WD13^^jPnW3d) zz{Y?o$tt54z+R6UGe}8vcyg9Ji{cj)VG{SpM3{qy`9g~-yiP6j2SuG0wN}b&(zT5KEj{xmGkUZ!v+Ts zcp67M(kPHIH`#47NXh<4t{Ypb1fk4s3k^)OlWuFk?QN4bY=AZn7NgN-nMI9U$dSMv zMHh*5X=Jf1g<6>?v~EXH9l^qmC@aO!dhs9ETjpv=;Z9Nf==oV=P?b`Pv*7Ie`({Q0 z8D=0%KsG1qdr_jlDT$dO`s5C{PqP7@-F?l*F&q9j*~JjOc7))pR9s=S7&;;y7P8VzVArb?&QnbXcT(m)pXTIjh0Fw&&tYTcrYG+M zde>-9)jJedRh(aTqD2kZ@RxCu%GIoaF3qXd9zEUag!QBJbEG^IV+Xig_DT1YMxZb8cyP)>MH)s^|xkO{1 zWe>lk#dQ>Jf}v(H(AN8AB##LbI14hTm%SdsGR$BkNwfPSh5*@4Mn0ZDTAj3drGp~X z*J=M7HWPCb?G%yURlD#EUz}y>PE>++O5Q0v30z+%mc44`omSB)xDBv|h|NXIdF;Yf z%Lv`o^Lwie6oLkop~J)&dH^Wk{?Y4DP>D^C+Nm%Ka3&ssTa8+7^5npBiLD7oCDSKG zBneMw!9ZSU`$?DJdXvLmnnHsK0MzzrlmM$3czbn8Gu=SS(ts+Bx9+6@lhSSP;b7f} zNfk<(2(jZ$L`gKvbcBpzZPc#JY^8Xo-ySUw?X9-AC8 zF37Frm(s`3jg4!)5Kh=d4bdyU>-hGn51Pz+Z)I6Ak0+pO&S-}xv^()439>84XZhy4 zw~io_lkwj)8;w?ECsZy8Y8bYU4ozfD+mg{^3>$m(`Y}O9UelfqIi-Ja9V4lFYlFKD zl4q%Ti&EJ5?#fB`9L5zi`LV@gb@_Kzf%PQOz8lWrZ4j%ZZSqqrxn39tZV{7Wp8hbq z&F2TgB5i9r7zKt2_GZGU(Ji=4W3Rr**^yo%=UEq8vkLnNiP`B@bxQ`fN$iHwmf$^U zqzgo&ZY0f;2WXu7gc{F2(FfD0D#Fx5WHIT<+=$kWp1(p@%*i%XL3G#PXc_B;h3V%M zYFoeN9J})_dsy_X+#T7Qt@jJ3l+^SsimaZ9uq0Ow3~h|{RkZEiUkx{V*_5IBh;1Qt zjToScA`XSwIbDTH6WoDuh4(-~vR%EuL{VH4A&sMSScpHpl3z?%Lm+kodQj~*9*xpfLH>^nF;>lg6(+?B(o^}Y!DcECQEG70LHGipOyBLp# z7ufW-_5c-X*EzfRM!bn49`=fL^$n@?OU1T_#NXqeg(+6DZ2F_uzT6&UQleibfnv@FkqlK zSGLteKl1ibxH#7fktSc2hD0i!>*9jOtC86SZAHS5Xa2WHthGqej8!N6CXDyQJLLoK zWuYW$FV)>PaZ{fXmz*P*aKFFryUlc{_9o9h&O-0C4#sN{qg=+|$!lNwDonDcnDXV&w7KZNl_y!Ab+eeH*^EF zHf9Q4(~JD7PiTVYf}jciVhqnAf4zS3%fjP}Q;*%?7Wwq7=WTbILvNzXu-x&6;FMPf zJj;^6&oPH3p&x@VvD}e#o!)6k!Y1cV$^g;v5&&1z9QVVFRy^x#J7%#C)}7T+6isHf zO7zsVk8T|I$``47F9$ol*VyI#sasyK!}jJc43aQ@xm%IWYoceOjy_7Rhg_Osf+XmR z&7|vvvypm9(4sX$%wM?A%lb7X5#o;fLP=HVzUlc)KmU!v2F2PgXa`Hrl5jiwHw(Sr zqnXD;8mpH>!0-~CtX3~lu-Zn;Efjv{9rbM4H^I8SeJ9t8w}1LpReN354=e{Z^hPKu zmZ71M-oyzdl0#QSrIgKPB+tge*oi^I!r+qUEaJi;mcwJ_MhOiqiZ(80v?*35=2eV} z;PjvUKKt$GAMb97@2?hIPA0e}Cj1KSOgey>m~;K#+Sa|xM-p0=AAT9gqPXZfyh)95 zJ)F&`Np%lSM}!|dvgq1mRK&ZUeu2lFY1I(*{IA_DYYqP4B=EdEIb~vDyD`B{78_Qq z5+&tF9de1^#e&s`=f1xAo=AU;9=rOe$^)ciVp+o@`xF61e%1X zc_4LHNrzPeFjEnjx;aOXmTr*u%%xvmYw=cc)3yTGyhyGLX??!|2i;( zg&8EMiA%&bYINQ%gV&-h=(7N?DJc<0IIr+MW7~fJ>k)}r@=BrGFpQIK|59*X!PpEX zi(w(Sx5$T`Zoa-VY*=IH0uusHV50QS^_g~?LiigEB<+-5}8VyqsUC^*W zOb91oBOSm04(oF4?YRc)CwI~BB0_G4r+ z&`wggh6XV`{W2<8#VN;c+<waei@+`TK(wAhafB&XhgU)!TH6|<2{?5niVpmc_F@=c2!?E%y>Y-3_A~(Ml3x{6Wz1@&M^Jkx6P#hBhNb zIV1+6HOi0P(TN8+OD2z=ss>*Z@(l8;*wnDo%GKndW&QZ8RPAJuV};f%#PpbgqSf1WS z%5^x8h^m`v5I?w;&ZL`6>@#y&s3Oybj-kEM-(}$a}}UMuCAG+&HhAGrWio?Ewz zI9(8T8*{1u#R4p1Bo7B}NSM%XRqz20P|*ick7iP(#*0r7Fg;m>#ybET zheB8Ah}AEKi&f0P^D0cEk<1&BgbZ5UixuC=Vx<1vrudDh#N8PybgjTR658)^hf~tq zjUXZ#ruD+3jiJC}l3(6ngBT&@o*!V10lp+ej`-iE$k9{5F)2NYzO)kpE=H0I#*NJW zRM*rMdjTb_5%5&L>owZ!woV$xzwcL!u=twbmAw1K;O|sixhhHz9TE!;H2m$DVq&~| z;B;iv>IpSBq)`dRLcX~b{fgQ zUmWGM65x%~K|~OxSFL%6XaPWX{1@ZhzJ(`zhtSKXg+=Hnn9clwJXD0K7Au1ubF_FH zT-m?x(5-w0&F180Brf!CaZ{9$B%P?9*K~`h6GD4;r%At7jI;W(kY!=cj#CMo_~ zfR(Y*$z3)&AmUNOYnDK3 z>TG^OyaP5aV8Ip|Q6-i37Q!0tlX^?Qi!g;qK&)QnRzroYCo|YYO-0LfQDjB>DWGM{ zH%N|ehRW+YC7Tmef$%~JZA2oDQYf^NDxYhMbw>2b53|i%5zJWW#S=n355q4CU%^rO z{%II&D(?UH##HuI<`{B{rdEF43j{N=9>7HQq+MUEfyT?7;d&XMKe7`Qij7cQzeJ&` zdpJT$F@5vgHLEoB&Cf={vFV>E<&^xrvsH{KMfsEc9fgH&uZ&t2+Qo)j(7CDm<7w_) zAkw3!(Rl73@1%`TIduTI1R((DVGI|tH-ke>ORKi^U-KyU-Z|{btKZ8U4 zSEYkgHzI`%hEf>W5HV#hio;%}k5Vigs$HdCp8v7*p1lX9t0zNZBhiPg(<{QaoPqNI z_vvd%DCIkc+lT{0@ zRimWPltY#;pN0V}gTD7;iO+tQtV<*OS710>DBtO0tUwpmzR!W{fUYV4+>>CE zqFR+>yucJTQ(UgtR}6*GLcQf3Q)Gs}C;I`v-ie8jEmlJajae!?BH?w~dNf&`plT#Q zWth%uLP(f|8J{%l@vT5%opLfdN&d%hy1epI!|y)-(Sau=pxc%<6=A^8_tln+>gQ;X zeqm0ZKc$qfAOm36)Yrc#-yZ3(rrmno5_9)x+v2l`y2ZT(x_aNX<7ScoIpYsoS%?Sl zOVjmNM#$DSo#bOUS3{#C-A0OkFyoN3VU#$Fjs?8mNBl%m; zZC#2tJizti6ARc0P74H`sViUZy_$Mp`}jq~yH0R6=iO5mcsnB**ZV7MthtD!i~m4j zbF{+pa@QzLnJE`_--hk*1{FzM;Ojh?5-50=F&h5%3<1`E1pkxgPbX)U0un~3hq!)t zxmyD`m_03c3OMt_&bN6%6uib(#VuY?8q@ec839&5zJ!tJi}FJo2)8rHs?Ue?;H+Oy zn}%k#pLCzoX_kBcZpUgFo*AVl~3ZbTKxEy z(Eu%0g1HXI3vp6Z{9CKiqn||(_3mp@eyw1sELvKd$y_j0F1Q;{J?J0>jy9faH5KP% zxLIo@k)%=T-(p1X9tRy1XPHBm#fH(zEk+PSw5W^^;Bum+SH^EkOuzNP{Y};af+--r zbX7GPV41Gzi>&Q1uwR3&N(uxhH;5*2?iCQIS*+{WdJCtXWn!b=iP@LWO7vJmjR1r7 z53I_Qm3#LE!(e-Qcl$?Mm{LTy-<8DS1GsZeJi^B4Ml6m+hnVj<><3kPD?jJm)d8>o<790=SgHab2u(u0R0-|D14{%g&Ca} zp6zqwYLi#&8sWrpFQJxz8bOM^A8Mtk!fJONjx(^X#v6mqfQn89|4Sew#2g_VfxM@Y zfIje`*DBrEQ?NWdiP8*(z=m=tE)&;M`g462<;{3H0v77b_hc>!yFp)+9Jw@0mNf2A znXJEEB^JDSnERbZSYl)%T#_mRs2X9Pu3|(v3-&jeUI}nxEib-O#9`G$(m$w2P(2ST znJQ)Ixc%ZahkYVEFoT3tE0J6(P}~b3u1(BMi>ED3gu8>>JqQG3kj*hd-b>5&NMJZx zM-ba?Q_OKXT;kpD7Ln-ah$6Y9&}ViP#hB|;6a(s~%E&`@Em)mRY#t%jxP{u1)eY&)YS z?Z-r$9*Lu*3%)h>q}672)<}((eATM(`yjg#gD4hnZVVHP8pE!^cmwT8;j{G}tkphu zok?q<*e2XajJN|>HSgEz$Qv0AIH+=TNe=~m&(fPicja(+IqKvc*=v7&R&p*tkE0Tx z&^-=kpdzU3?P3t-T%z5B8@tGhJ*A!w$X~y;-^dbc*wlzkeuKA=&(JHPr%Kl34Nh6| zrN^sPyR$VSWfF4b#Tw^n$-_FM&it$j3L#nXddOmV*>y2a{8f86SD*(TWA5d2pBLGB zQ;QaY*ZnTp6vNIS?umBL#o2V?AxW36RZd^luvfBmYHfSmTYLqb^2>?N=0D{FBg$&z z5icivmAf=pT3;U)3a6y>r+A+8b;X~E@40nWWhl-WU$J3xVk+Teu_}+LO$TmCpG(NB z16aIiYFUoFD;3;2KRit46jNdO{-~^d8?i%qlMYp$)iq)N104^ ziALW#6-W2jPTDqb?cKnI=)(06rR(GRAl;^WzJqR>H8v<;Hj-C}>e8yd^TbRJW2H|C zm!C2m3H-LxV^Ti4&(C_Cj5+jKP<>7}r>54_fV)GSc+Y^ckwlhw^+r2^fa=5bk^TEB zaTy7*cP#xE)lSFc3c}q;ImtUx@-RP2@8;s!MP#)N*t<(}UPA>ou&$Y1c< zuGrh^#%o>vyWN8Y0>88;t-HqLYKE<~%t$&d8+l&uJTTPG1;d%R@I`_sntg%y}kqp|E z!3ELL39Qke?{SGb1m-daJt39zxN1_l`5L3CQj|L!KU7J{jIf69GXEJ8K`OH4HO!)Woe~ya*I;kOaG{T)AbQSZ zo2kelvHR?%|4uK8@szYJ_Ee?6aDs7!Z#HBNXqZIp2mN7ee6WswrOBj|Wx`!g+vF^W zZNpl>9+c%O?WJm;NmPF5$}F;CmYL-N`Y~47NEX}9)~K;jXrOL>3ILR7(^5BYu!~J& zJhX_RWb#S60QwXE;S{MH?I*mvsOTF5+Ja>)|Tq>?7opBVeZFvL#Ji`3WWvfP~!q{Ut zVZH1iu}J1Z0Jo@^@+j*W9l zBJ(QwN#n4{=?mGsxIEo%_5sQIgsuMzmPcW6$cMI9h>aLz#5Y%n*imU@KIU};!Rw$s z)Rz9|CgzmG*2{yQwy&7hL2C>j&iD8Sd> zl&4*t*=Y4ZpDKgLEAwO9Z|G|p4QtO>3d!txIdk8az8!t>gBe%ZYk_d2Be~i(HM71A zZT_pN&^@I2zKxJ-N*PgZd7K{$$u(;+aVXcqXzt9ALdHI?;pT->LO3tT$s52NDabg) zJIDN%ZaM6QCu!eBkqn;D3%Okl%E<(Z&ni<5*^Dxeg62DqW>aOh1*o*kB}_22{)+{$ zp~^iBtrY4PQM9UdBJo&@E$Xh;CG%Mr#qx z#1d-084=qg^v__j<~aN;6~WQh;IX{j_&on7_s8sq*k33Ge`Q_fYWxv?rgXZi&5o9z z_pa&%^YmoABMZ+#ZDm&Q+Z{_O` znx+YafIo}cOxhZQh0~7?^>6N^_D=H~=)9Ma-VKM^_779r;J!=Dq=8_c2u-%%Y$W{d zJ`crDa7nomkL>skm;|le1)BDs)<0Tfb!sdZ@g3p1TjcN3j(maDK1%)v$4A5uxic~C zr!Lz!mLl>w)*p5mUj8ZMbi`IiR+lC}yKc%>@rm_xvL-6`jIb-K5zf_HCf<=RXTB1` zi0F&Z%aJb{QK%fN`}fC>5@1IH9hi1Z%8Q4#`J z8@C2fGVEaRAbk9DCC>}wbdSLaV;Qn3+j;;sSb=n7&gbitSx2tiQabz&3<9lKYJJo{ z`9#vX_{zcTwN(tjKkxzw z)otCMc(D~@Xa-@jW5j6D$GJm3`4S#EQ9g0zX?r=e3TmN+Hg2j~a3ILwcr zd{?Wnb|dD-c9vqZARvEsM~7352H=8=iw*9MEKg$}&^WES!RBUOrjP3vhM{-{u5S7+ zcw%3$byFIYHAN$sSpWt)J#(zu`?>;CS*u`6RR#EdXU-U=ythN1H+jqFPCu`2s0ymA z)?_$Jp76h|@A)9ovEpviPIKh@_W8QK6SQUwjC6}t*V^Debs|jN#TL z&=rw*ZV3#=IJZszG4MhpH%O{CMI6Hs{bEW}VdGI>H4OLVc&U8Gc&8m9PmBt1dF>c~ z9S^2NL2e{Z*I($$X#@5e>$(;|_=So6#{XI-T&>S$u8fVpT8A?Z2p6P6rKrSi%BM$N zt`YLO%Q|mg+hATDLG_1S1|6(=3cn5~=^%dDYn$OOS0`egwF8qg^#+`3c>g!^#NBb1 zBkBx--NPub^q+=)0)mU~vgW%mNGUph{I-L!2SU_kIMvIzJAhZKO zhHEPvsLoE%e->Gmksf)6?92nEasCtTN5Gw|}LwJ)UVe)eT9V9Q)Es&H=bWI-AyujBR8trrgP@uKdlvS&{~fqMaX!cS#7 zF}V1DU-#I>h|2{q2@>~!b}Mje0fOIvEOrcT#69{Gcj>7a$zsF$N*Yn@rCjtYOdDf*xQR z&eUx;Ek9(HR93Dl7meKd_YFpDNg%$W_=r%m_nQoHZ@j{aCu$_2&J*|e3ZK#mxaLC? z$!8Eh3@c>3OsM6NM9|-l1#OD3n_!>xSI{=*DoL-gbNkKSGosRNGD|T1ELLm_4L`{l z62rGj5MQ68319ySx}GO(J2^oe{GUhLKc!vQgv;6;qItKO{^Nu%aS!5JvK~NLn_4Ze zoh~Ko1&X$|pF2-w*-6Jza|~9+jiTp0@rN~$h0ch$hj7i0G9TzsHI7{EtflE|387DK zzm~mt|L>P0J?HD_J{=U`Eg>r!6=E=6aBBes(Wyj6arv{SDkE7#u`>Cl`f? zXNLnTxhxtx@!0#g5T}GHvaQn#d0P;T{t0NfizRL&3L^b!-=B39R3w3c z>q>J23wZSZd#&>HaIk48_asap#VNmZ4~hOkHRZD531;>K<*BJ_{*4u8?gaeYc(~p+ zUFaeeRKW)QUvL@6JRmi%DBt&8;Lv==#{om&h`mY@Xd;;B3%NTY?k$q(;IF@pO1xop z^O@4_$FbJr!(av2<*;5ReP^vpJhtl`Miornpp}1KdUsXxs|{KGW(J6Y# z$0KOrf$h0DqQpe2x8EYcx$+f@iy-B-@34UtoE@Ij(thjlVhD#maI)gHopd7z(jdA^Yi8WfjNCmfgK7(ulBF`byK9?O90)WV+ zfFHt05vxx=ISdL{Mxu91!(PLMR*4tJEXGGphGSX7dHQCO^h4AJ&r$pm0(MBTO*d+z zAd3psT_u!C>P6&0AdpQUx?mJuJevOuCK$iKz@~6MkntxVWYiFr4MmLSV{_ylbbPtw z{~Zpe=;1zG-KdmK4M6M9z^s~`s?rbUT@|Sr{hq?i`yUwG0lzWR{FN!ZdN78C1r7?p z{E6x{8(0fqcFpF!0`?+Qc_NeI>%bho)GJei|F86m8zXK6VX<6T+VO?8DxC|X&DVk35$v*XqWyt7rU1hl< z=_B1AF0`Z&kl!G52l8=@AD!oF$H?}S6Hpo`xTp} zP%3Kg;mHpkhq`lg)_<43t7x4pGV|K|yP@bA(;unxSK8B!}(}5$Q&{kw#J_1VKP*=#UOY8lyrU)z*{U&oouGAsoyxHl z*X`?ohGRtDs_rq1>dB`*aBuXn-EQVZIw%+u>_#JkV+n@hMGawH%xB)JQQQZfibi7c zvlax&_P{QNMTG8VeC%r)xU_q=;_CR=t278=%<665qm^0q?nvoE(>#xpC=DLQQbx>$lX%-65hAF zKWPyD%cM)%Dx~D&*{0`4#og#Mf0=G)i=u_^Hx$kk?fTjV;aZ@K!ix#Q6|zwF&~@$t}topp(vS2=F<@5Y)cD$BG0 zM;}DAG1lEtje{zhtl!Wcz8Qj2Ur<<1c4XnLkjBUZ3Gtfc7gVR>He`E)?v7Z#HZtL| z6kyH6fg5O*N3?S1qNs-G48|jW6I2dxy(B9B&_5|ll^+Yd=A)L(5m8|DevrB6s>gDd zTrXbiFM+xL#R8~l*$T%BW3wlv20xoSN55C;X@JwpABFpKf{B!KqpQQovv$IW|S(tq+xV*8h&>vri9PsaaQB@K$v_oV$2@pixNoMjJiQWmvv@DlK+)L}C49YdY+aaX*l;;+~jhA0qb=lAn;C47-rrx;we zx|!NgWg4ijjGRs6ZpNarL_CwLlWg;C%E%}vGOU@yp6UyliM8q_a_es6Q*tlO@gG^C zzG4k+@R<|(HdYHJ9ASu9sHIjHHU5axJKZ1a*Toc0>m5(zd<(K@BD6nF z6&ak5hY=JfP0X^_K6*KS7o24XH43z;ZEr)UZr(k~_f#)}n!mnaYi`2Rw9nFvdE`7v z=c#+A#KyDKTxhz}`49 zuXQfaSKGZg;R+`3N+T_}bVvA&FbS^8r-5%xw>v1Xxcm0YIel>soJ6blog4}PD^VhH znLQK{bLg|1*oON+m4m}M2~SPRdslyv)l;{23qTGl58O9(&7CMEuJDgFxVm;RhrVx5 zO3tu@M{B2<=h5+(EQWt@E=GswW`n~jEU+T7ZX7e-U!9jmQ-3nh_Ih@oArD*GfrNTv z>C~HO(U|gbV6CGFDq1B_MI~qGJ8x4GV)vmt#aBr@5q5Opyuv14vx|b*mR9n9gSWSf z2ZK4Hji_A5b}NCW5av&niBl>^=i20>{oZ^!yqeRGhhj{F^Gy)i_ojvWy~mg)W{9-xPaafBzJi zQGQz;4(p)lu|CbpC`rKB!U!3Aig>G7$QLggzeO4Uz-nrORhU%Z6E=zJbluF0&nh00K$B*+yS zw~}R_w}!e?){rO5Vdy#Tme$QytZFz#w>){3;(Ff_=i$!tYRi%l;5Pr?{AHksMxGn~ zfBa?lm{Gn>_op<%fc;3p9|;ABV#I9pJ+MNG!mhGu);`$>SjNm%Mzy?42W&oeI5NFP z-gpXx8fITJd#_J)+&P1`(6$(oCPHLh)2`Iy4ed8FeP_F%v=e^8!^om2>iGl5!ULkvJ3^9?znM*k%PW$lQl;DERw2P1B`_gGF%PqqvMf94_HYjx#^fd>GOBm~_d`7p&0Z=N_1@W?qGSnRntKeJ%*7*M@B1QEc z?{xQ(&6!nqVg_+w?UNCs|2?seeT^j+)j+wY4727*K<+hz3rZTg_k>GODdas%2T_xP zo>1M@W}>`n^mmi_Qv4dU!t(NG(hlWP{OE}Tv1K3lMQv!c`*=JfJQ@&q{6a4ewut_N zFzXsKra0L<&djrGVVMZX=R9$Tc}20)fkahKx#q^k-NePHnmr&co4rpldQVCdOA3); z8N4?8l?rsY-#k2kzUF-t(I!e;zwAw=mJ;%e7yj*FdQ8pUwuFv`E8RolxjZGNdfp*q zuuYjEvxiG=6{SYx?l2Ae{#@PI&4W*~RG<2_H*uPzx1`i_lqz_?GjNqPC%tO}jr!q; zdXWEp6(cR)r+mmn1$50G|9^hu;OaaX6PD8yC*ivs4R`$G8BJr}X?UNNa0;)J2+zP= z9=tDs-1Gq{tU;g|imeGv)mnVxdt9Nvf+5qySr^(KjcFAD+i)kr!*!?>q( zl->*yjMXP^*<01o8jGc|a*zI-p!*2NO1VY6_Vq^6mv zrkU8sl%4x(rOc{Mm$%~TTHlPVK+S1=x@$n1UZiJza+K1#Z^6`jZ(eUKz0`Z;r~f`c z8dzlsJM=>f1gxPEwOZ7oU-umctp^Hq-iK;90+NnKf>s`jXZ=$Vlq7B%fYxF-c|A1#3V zZ+$m^Pm{)4e29{CkhC8A2wS=l3!_(b0k)s~8T&k#hgAkfp58Y|(|YiU^F63dZvYi#14;acU*bF-U zLL98EQE9pbQ)jMIsSPK1_Szm+t^w|z8F&sW6!0k;mcxBh@)+ox&PK+HbAt~y3cwD> zi19Y!&MKX%ouTO5BZc7RhQa~n1Z~F{Bcxg1`vNJioGzmnUH?fna&sMO^K~00PZS;> zmQ)bYRSdQ4<|SItkH6A#AG;`|?8AOFGdBes#_0XcMkH%a8#5MDb$@dS=+C+Wy>kG! zv22T3BXP{1?C0Yq65$)DB>h__j8RX=5rLV8yz3z7_$y~+7U*mmD71R<;nX0}_kdfW z-^K8`W&?L#voDPB#`7xBy3cHdk|OMkO5)+E{8tHN*tOay4s5{%;e7m0q)?~(o6@Ss zl*q(BI4S?0`G*u8Q?Maq^Nbx$_9Xx{m#LizlG-#;yvRtL|M@6Z8L(MNsuNO z%ke6tF|a5+wEy|BRL~2c+;hOdATn_5W&MR)>5};*m1k%Zq_{ar;F`%w3LSMSK>&BV z7g6MTo@h*inK^rjwOgoUR0?eVQFeys|=MGB<%TYISfSd}OAPRl6b2p{7N7t3-dV<^Dorn-}`m%iClyBCXDyq+%x$zQQiPypDSHSC8G=$XVg zqCNswPHj>K3u~F=!5)q}7jo&9o|r6QZ8sCV4&C1`81qLE`)sYi0RxDbqDfDxR zXYCKuii^D*?bqJCkmPGf4YBzcgRpkd_6XBsHrKNK^!Zettx-W4#vHRfG^0O(+e4m!pf<-sLGw6t6+vo-o)aG_&0iumr2oi%@z)7%F4 zvts3F+grj3PNH9~LCi$zJS0GQa7&dG9TevZT4B>nUpYJvH4K}>e!EISPH%gjq&}fE z((h@+|6Ed^<;`*A8Z9MV>?jLg6N1`IAPG>n`z0lrd~VRN!m=H2QMo@~rBuJCf-mg_ zu5o`0W)~0j_WA8keHQ0FFc5$R8|%v@0Pzh``O`k^)u#YqGw7#E=-obpP#Sm6!PsYv zM*gzbyP6qbfg#EN96)%vI#g*k#(EV(Yd5v;?NQc~ar!)gGG-`ydv$jy0<9H79Mzf8)5|Af=il*#%XnRA1>O<#Lqa zjvF^3=E|>~vgY?A)E9yFTuDZ8#}IW2Y-P76ZxX@uz<3Q39VLeMUxgpF6#3FzB?E=X zgMP7%>{oCheKQKmzGhNv%HCLHMUM8fe785@Jx)PHQ2o+o#E50l&H5m)v-My`<`keZ zyG){9?zkMBM%Mg}A?j`PeaoUY3U56@>^;uU-a~9v^m;3a@^VNG{T-#d8MUu#NthSM zjC=DBtH1qXTNg0?3u~aJxP(1pSg}2f6Hpnx8;fi#A#BHZ_ZmMqIDE+^=NS5w2-_=Z zm92y%&*(0WMp?=pZ-%CmbDASnC1?O8e#D(#*QLlIr_ml-cn15oQ$5!mA}vFCikAe> z?+5crNXNgHW4>Z%MU1%|8EW?)xHpQ5K62rJex3TtptW1X3*^wSl7mg#de*)J+`T1; zgYgW@8<=sNgaqQ07*W@y$ zyPPpDx5-E4GP z$NcRf-8gLys_gm#K4i8g`*3Mb!zT=E za|W{Aqw)%zhz+rc6IfM**X5pRmC_4}?*s-L)?F0uM2BwGe8c|`MLtgS`0b+2N8_5k zF{VoGk+GL*Z`oycx&89Et~d(DzkTZdrmvgaCPJTxoywU#{FPvHtitl;qEU|pAD&L) zHjYK@Ujsq)T;V16G9G6k@?#TG<2yEHcl)y1+E4jqJEE%O_LxMHorY90gshUv#C?Kw zSoAKX3%RUQMX_5ZRrri@<%(V?udw=#T3vkr*eS!e$x0w%teQ2^=T(R1{0N^p9gwoz zEI)5DZ?qb@L3!6fQ2WdG+zs2LYgvBDG70Y$tfuPxlcf|CYaNv16a5ME#pry?*f>>I zZKI;;vFW|e6PL{F()7fW%zEwg_2LG<4INs^rBSxzuO5I4GBhb865D>RDv8O9w{fJjC@u>0 z-$=4eWkZUE5VgOj*`085-g@37M9jYkMmFy+41`5r^!Y`vXib{X>NQ7J!=I1Xcy5%+ zr9tjI_Qo>h0|#JTR>0wEl)jW`a>7u9}LeB$S*UAcMR1SS6x>(*6@T}a zywEi@K72YBLsVeOx591?qxV9mi2my&*{WGLsi1YwVm==Qs?ac*XQo_%_UjaYXm^$+ z$0?;rEe5jat3MQ=CvO> z1uM9&ycp;t-m6C4vb`}=Mfn|<`V2a#X5WZC+(3?lB6R5em zTS=(D3hmnt6b& z9qJR9pM>=xcusCI3n@Un@W7UF^LH@Vg=Rtbs?eWS3?T}tKBqdymptVDLzQ%_L(y4$ z``cd^<#y#>aSVfc79+b?k^Hm{>eqX)=v#oZ(8>{hGh53EqUvZqB$8n$d!O=4U(m+V z$Jj&c8{ZUq0b|e$HF==mJ4ns+@x}-$`Tk{mlXDOgQN4O+tJ!yNwE!b z_h|Q>fGOVu_Gdq6dXytm&=$-R*C(LaDP#F#k;U&)ruu96%AY2KB1OQdu0U&RnJG3_ z3v!~*Z_0)vuy7_7&-Nh7nyQ^DNZ|?$b6yvSpN1Zo@>8(lc*@~@s zEX0HE;FI-V91cG?h4sqv6DmD1Fb&waOqha)tk7z@wW2sye!4#i(kpc5u-jdForUhO zOLJ6;M1k8d`*v{fG(M*oc?iN|Soi-K;k<7cHSe3nz0e4Y-xJ^_IDfU;vIf4?kn>Wf zKaW|qn}lk>&A-3qUQR0sV|mHAzm71M$l})fYi{%)Jz(Y^Spa|@y#rtX%+;8E{`=?K zU#Bb!jN*s(3U2Spl;Ro5gFFeh)Pq8qP2AK*t^Ej}8zAqQg+CBnNKn}K*->o&^v~J1 zE0`^6&_D^BRH*_`5=dj8g&$@XEe36*)ami7b|i8QxCNi*86E@ARAoikH9bGbqmecF z_$Vbw_?bJT@#bAIO~^x!JnwaELTO$SY0@-^i zYmf)XdMQw_s8hbu9KP}Ua@+JLlC2UY3&52SY3&PY_jU650>ZL|R*ya0{fk$(U<|@J zRu1H|4Ra@H_Vb0>xWS19OXzsqH;ivcG)ICC-jVQC zH79?2_PHLWoJ8Y@7yYv_Or0$au409|=2@osNhAZh(Z3_~6U7eUYjpZG`aPL~mNo^q z+`;XHFM>3wGKeS02|JUZcsV?K(ES^Ust-ICIL; zd3#A(qCXlHLw`qXVPA^pjoGOlqYkAn6xHgpFjmKED-Fj4R@2*ebpjV}ZDs{10*x;d zzUbM+&-5yqs!6Msizh!e$@=OqCnn!69y%S;*HUsz)->z7%ZAYN6V4!;JZAtL27jix zmB*1X#Xe^rt3A(_z~oO<-UCmM1Q%seb8lJYJ(Z9u&bPkNYRYTO1A30nZ;e318eQD#VFF1o}x7JWcX#a6L@$Qj6vEcZP>(+0@ZoVJlosb>QSJWc9eDPOrspxTquRV`uhW>?#bn2G zg#Z3IR~IZu7JO)Hd4FD-`#$;}VNiorOKkk5rW*%OL_dX*3I7ikptN^MXEW!{!*EGT zW>bj8-B=Pk23CgdSDIr(BK9%oZ-;cjSAuIZlhErG2fvjZ$l|iNDV#Yjl6<2WDz#A? zoei66vf2kR z5NFKoQHyj3Go^36?yvh(KtrrIh|#Fm;tzxcAk6X=H>DI-g_ImhO3WQP#_7^HDHu;@7^oUZ=JJS;(k$}n!+07#jhWLZn&*EbF>u)QkZ{!Ey90-s z{f*0xw8_dF319sK&hDu@h4xNn&E@sEx0ZrPK$3uL@Qxx#o5e0PH4@q`gL@6c>M%Xh zE84Is3S96g5$~igY0Zr+6Z%2^#_Uk2M7|xR=YdTZb4btKmyYZX|9h{wRu54d{@LWf zJWJYTN$5GQi73N-j-%x4%QG{>U>cs7?1)EO%f;jPlk!btqM_qmZl!d_MzcY;B#L$D zb!_`AWQcQ^kC0x=baMv0cAk{)$g^;0oCaJAWC&@(o;KEWaqGR4j-D)Upy!@ulU&gk z=F!X&zR4TE8o>WTN(bjuTXK7e7)t>l-m_D^*{>DSyM@-eIOa+)9-@`(S8^;p-K^ z?+*6riXJKdp`2qERLt3)%FrG}L8(vJuu=l_bh&`nPni@>w@_%voCXwoye-CqC z`UI5byU^4A!NhRmV<^3-Lk}%E$PgAm*<=c)n6EX>A4+;~d}R98 zn+$mGLb(pU{!wIUED3{?cptclIu7MggH30)@0upXzZd^s!W_Te`BD4J?6{)!$m{|8 zPCDd=8d!*7v=8iM65x>mn@q9MRmCNt`vND0Q{m9y?1eq?DfnPaKYRJ@Z<+4VZa=}r z=+Rpj0w3-JCGZXTR}>pEQviKXh3h997Dd#}~xyFUmjc7i8p zokk)|)8t)XVsQEA0JT9Eu*SC>c21Q&W`V(uNZRWo7TIiF`TOTsY^tcpZ;TICmFxY$ zSz+L+I0I^+@ki($9q5f&N$Me{VEpZw^8YU+_Vq2D7~u^+ce&Obcz=W5$R>#*>amxh z>K_P58BxEk(t__BONDPiH^$l(j1?2P&eq~sjqibtgFD@mo4^+Y5xHD2(5}v(JM?1P zU;dPN<$R5NJq+Xf&~=M{iY9t$xgOFBpw$3mrx08zmvleZ$;!^X08EOWyM7whz|}Rk zG86#+Imu3z-FnSiAOB%8ANZPOy!GxvUx8o!o#rbK&$vl@qOInC>FNqY6Kf(x`jtV@ z>A^c(#?-%#jnw`~`RzPs6)wxIO^nDofbg3G!&<{ZLqeMOPwf^eosSa4(GtEY7)JX5 zEbyBd42BhSbm%@L*1{zqG|Lmyl4wf~+~$<1J3!PE;9!kVPYNDUwsZjZdp#TCHhzO&LQb60lHckBj96j=Osi?0U=b66XTt)FBfM!jeHXKOd@V5&MsFr~4j4jt z4*0YP$Vi)MVhj~uyzqW69#5{)YLADP)R@Jtvx86>XdY5PXQdoFD0JDDX^_SuPKbs)hVvr z0{JhGtUi-Og!P&Nx596tLTal{ z%d_?b)8PTjU+hCiQ1yQ-o~C1z5NOCcr<5Rgi?0I8gR3{$HG_Rv(+0+=t8IeOZ+ANe z+2#Q!xuAy0l<(4&ti)qxUl2ak6mD_vftgftcuzGHLLWBt z{WBu5DcGUxlv^7pmg=2oWwdA0pOZxpY6w0DMUg18xKCay=9*#dcnX@e;Cwrg7~Vin zf1#|CAb*`kMfK->13Hb^wWaL3NV}vfE9(&Qcqf2QtxA5Irtgpg?_8gnbXKS`Q=t*C zc6}N2xE)9;hLS{4pEaXYYM<8VIKcE{99{smSeK`h`CWt?2qsVK5=8c1# z2KOi05EvVZUbBL^3wte9KKTd9vKybq)^L95ut~?6X?b>J5crAHTXn01`i!QlH4YGz z)0k_Li_9bS5O*@>i#|kfUui1h)2CYeLI2J{qUT3ttogo9`diFLDN5z<K&UH8b~9R8$GRKp7X-!yo3qLYS^2-4raD-n2|qoE-(vNt-<<;eMs{9L>>w1@jt{Z zprvZ=z2k<1{HP6OR8QVuC!h`>Plfa(~ZM53ChUeOk4Rc^0vbNKgiq3guROM zp$N0sz4M?mn~XuIyMy+`0g;HNwes&YZ?rjlrAJr4Quu{jEPx1&V+Vv2rOlSh#)~K1 zCqzwIRiH#Uu$yE1`}ITn6q3RgpG`+=F{Q1gp-L%uxfmW3rAuPYIbz{lJB4D3klBNH zoo9(K-}p2;=Cs`Ch{H|wj~?b>9vqN^8_|Qw`(WoRjpZQ6L>`HsHQlxRfHD?yBrHl0 zqTs6V>RK#CacpH9HUCk!x>O}EP)X{xPB=cUfj}Ji%N1R1ywO_p522%_-qR2c0EA9$ z3xm*cr0F716elHJ+3zjHl6ACL@88ejCH=@xWnBK^u=~zN@FI-*WiQaJd*l_{w=Z7h zExAmhy8dfmFX4Hw*I`ZwhkXeH(}HVJI@^$le)n!oZHIj16%X+clADU?&ks>;5>E~< zS&@b0O4(~OiHV+e-TQraJsLa|xXXFHy=reD<>Kp1-jm`<&>O_%x5FKc(Ez-bW%91V ztvx{c&ed5(TMSCNKKgF8j7<~pXU;zSMuk(uB#4|->>V2o1&{DfmEDp3afFn*Z&J2YpQcg9(j1&%SOy%M zadqLwwJ1qZ)S6-GHOVw$$DMQm63msP_LeXb1HsMTevQjRap$p5P!7EUu0HY*6M6bk zK*WVYX&s>K$cygS*~2z*_U1tmB3k-d4oUpINU9B)WgBh>9 zsV8bqWs}F+EzP4F^-g(~3p(+Jd`qxTYg)F9G^9_?G`uifv($Wqs(pCKQ=*^BPe2@h zx3WS(uvhTz)E8PZl|c077fO|opkL@s=fo(Hof{U;k66mYjYJ~J@LrJKcvCcA5|j0= z+~1Orib9Jwx^BeJh3;w7>GPxkyw9^Qo^!-0(Nal_b>qm|_g-*B!R+ z3O4J`RAI_uC99@nTnEb$qg^5H%kMNNCn&R%h+9=%m9p!Gd}Hf)lmchTxQf;@Le9Y# zCXA!*4AlHEGfwo5_02vckvsW{A6H*K^9bn9Wnwrx2lf*dsPieO+F`^t>hJUV4LM1RT1z@XQUpEFci8X2&_*zaD1`;u*IK*MPWXO zyhk_JN!$P+dh!ATrtD8hK3Gcsdl5Rna@=l=sAG4o;R}$~X`wf`q4z5{egkCB z*`hcfMGAn629LuOm15b88T~OZX-iWG8Mkv)NY@G^^m;Z;v(Lsk_>O_Q9P`D2>k&g+f+A5e z`hl#o?VJu;(2=wfY=*|s<`#zOJD)+4c`$MLOn~WebeUYeh>KA<&{|mFzXf(p%#&5M zu4~EMzRPq%*65HVDG-Zd?AdToM9&Hkh{U!;CW96 ze5f6y&KLQ={}Y}eeLYtoL*WK|QlDpQvO$UN(FZfHcc!JuZ1quC+jh{6AIKl9cT!yU zqpC5MH!1(O%L1ZDSu=6`fpY*=U%w4leO`Vs_7U0v;-C8>EL8z0xNfwxCM~clWqS2( zLCklI*$9H~t{9@YS4tg};28E@4QQh?DUS2EUk8-F9vwZL<=xmaIMKa=8MK-4@XKUt z4sm0US|2e0=J|yeV_%)V1?P}wWM)fj#SiSwtJ7b+Tlhe=q5BRy5IQ!8Ua<ml1A3EsDm|G@&H6~=eaaXF}BpUz+e+XW+?kUh)Dpa zT!f~_Aqz#`tErVwDaLZ`kin_qUF%hQ`3fxroYSdMcqW+J^fs*0y9Ju5SH1gAN@A$( zLqNA#5~P7;LYd3TDg5V^NTbk20Sm_#NF2Onif55d1w~CTlFt)MCwC^ zo&t7REZIxwh^0R;qNUTy{+uzH0%J6%us}1T2mi148@#HmkC{&xb|(xAc0-Ig*cntt z&FSTLz%?p>s@RV`6OYYH&wOT?@DYQS{7Wb{v!nCye1zIb;onYOMCFMo0v7{1{SQb! zA`=1oj~JOVH`eHTKrWNUZUTW5s7AhPF?5B#Lk#DapwC)8Riv@CV56%C!lx9aOsAVH z&fdz)zhKJu2@j!ah;7hFE&k$1_u(Ymv6oQT4J0_-qxtWA4fhI<}A~_v1p{ zuv*qrI!+s7@tqItB5GG$$B=ndqMkkQu-J6^ak*RrMy1L$(ZdxG4grq+8zK%5Z$Y5| za)dg`8t{LWg-MyDlf}Zp{f+mHl@9Ui3f|`OIvtWQMbX zNdXWbJT46*nH;7u##&&F?$vND^3|9vKIw!4sWx)rz7|k6LF+4_T)99`%58E$K20r}y>I>He z@Fg{LJqDfPM*Csco6XTovGD^eK82F(R+unhjCL9|q1M$X*=n5Ff4Ofi8^5wfi~V?2 zX^m~QbQ)K&QQ<2j&R`saS>+*X;@;pi0Nc;qSHZ#F1?#n>fKSGGsWRTR4fP9_0kB^A zSp2Q&EdfiAk{z$_TYZ@~73hSdObX9vCRBKB#aqYuC<*?-_wpMIhWU$(7% z_G|j3B+elV=_LDhChD2bI?7v6wSRsQr3Nz)jvYL>qJF@$o{I8x47MCfe`nk4BJ~!)oMv zuY&=?kf~Xm?%A-tz8F_?lBb>A&-*iC`lpAA?yL`scg{i$n(o zN^GrrZw&FSrM5&IY{+J==1yIXW3VzB%1m+2G3j635~Uc4YqZ9sOdx{H>I~{9l?<_h zzrG8)qbN}f{R#OI>H|$czXB4=h&OsE{yJE^(Q=7#28UW+C~JD&Sd)Ljhx%dZqKcls zaK|ckAhGB8WTNUTu03;2is%M5yx0r)kFkwDs=5>y$cPWKiD*0y|NBQWKO7!yzse$9 z(y*sGWbOV`M~@GfL-kC(wFP5=+He5Ch4eC`V_6jMDHBb_}lf=Iu-i;Q39AD08ay3LE5n8&l%NezMEM^zH&Z&PnW+Js^&!b@C---Bg zG129EOT`9mOpa<8G$|GsNE;FUHc()fRI2fEUzZ@cjUaW>ZyZIZdccv5k2Kn_CO2_V zBLjUpuF_Y)I#<;BFe#RQN2iePGmUfPgK`o)ToKKD6;(mGp(Mq}-?cLg35Muy%o8*BOy zs~{zK?`Cq{1wBUviLoF%(aOl*{0a0}su82n>d|7KyIri22{%G1;wF)L3dbGpnXd~# zv<5_*w4`@BCC-j!giUGI+`ZR_j(Jjv`H1zjG%{1t-k@Dh5v>9uTP3PK_D=PL0pjsL z=oej_n~lWB^9XMf&)gzv#Xg;AXmoqOpnrfN;Hvs%Uz3e7Og(TB9eM8j(xHO7MASp2 zG+?6hwV&uKl^3EBr>g#o$(L%aTSfE7@~k0QR&x0!^Z66>)O-F6dr2K-I$}l}`u?~d zwmL~t+V)n&@^ZzdL+iZ+tS)qc$3A9_ZI(FmQV{&IuH1+J%~2w;fN|%vl>@3 zpyEc=3#UsJ+~Ls0lPhu5=rg&a4mF?rZC0jlo zdUrbi&IWP6=pq~oYPikr87qSlF%~O~WV;nY8Bfjl%g?D);rt1}oBxjRdiR?bvgLKWZ*dWIHXUCIsi%QOCt>0>zuITh)!DDAQx8#^S7ATlDzV*6c0TnJLG*pDGk zgN_T;s?zAS48sJpA7!$&UWxJb)`|3QT+p)FNOFh~8#5iH%1H_jNt@c^EtR_U(K30W z*>X0hEHA|6Me^fYygC(wxc_=&frr8Sc0@z>ORl}VciD(#D4TjyIM@Pjjwj7amop;e zcOSFU^|+jVJ2!>D>1tSAqQ2{Dp)LtGdlm*JEsX{)?TaMeIliD#aLqbnEu&onF(9`d zhgR9=@HK<4%~Uyeg(#nDBbqVl&V~4_%!^N7k82^H5t>9ROaif^JhPjhKTHcO~ogek99+jcew6xaF2#i_UN_vd{- z?deFXTNSY=iEJJ>mf5!4ziyFg=>JguPNb^~kzMI^cuF(=prkd;7?h1iC#Zu6Uecf4 zgtpccvA$8e`iNK0A~3AP8*4yFn@TxrqWJ({tCSf-?v|NHI|SEBn|RCeN7E%`DdY(R zF;B={XaAk_d9uyGI`K5}H;HfB?|caDl|4eMf3iBFrX`;lavQDId^Bb06yki1+SV|Ro5@hDCEG*~qrlosw0nRaXg1H;#xRi>pgLY?U%fa6Uqm z5*OX8F;d^ys52@~bEOX!!#P#B`pe*Tpln zJZ|S=8<|wbjacFelJk}cM4sE9BkNcW=YAkawDuB&;`*v3mPV#Zm=a6L-+Sb>;wp6t zQ{MJA=w!}~JwzpnuyN{zG-;~X>l>73k5u!vm@vNTC5e2^;L8Z^uv>1~)0vIrbERv0 zs#M(0Iu5IiWlAo3TGj*aMoUG9Ri=i`xe_LDE5$n^)qV^mGpOEA*Bj{Iw%EvItcY|` z7cC0I64^$PmK!uycd7vqU{vAt6usuOoE~C3aO{tZK-3aFv8UEhPE$`_-=Ci1%Hb2C zd=tMq>FYNXq(W=PrmReUbauJ)2elDr5s@FV-_Dq)^3grWL`iDjX-bVsU*~{H_s_>o zNWB!-{G?&^uD<&wNij)HFW2G)A5%F&6m2x_h*OUNZ)E3Wms?x!%N+N-y7O_=^{Xaz zA#)+tbU*oaRP<(8mp4BmqPZDY`9(;F`v7Er4K$`9xUDEn#i8tSsagfG! z2U3cb{4h!p8~z@Wp&s^2e8<#V)OqytwsiuFtO_@uU)hpubUE-xIPKaHNoWLKPU*2b z_{&k;l_R!ux${e`LS=}*>b(nplSHwXDcHx)SEV+Bp>cj?VkbZXO!mLZ$RTcx_}Gs2 zuq~{8qESj}q2>l!6W-*1h>b3Y9x&!*|L985qDPR^ys4<+7jtxv!|B5jUYKI`HH(Nj z0%I-IWc)8@eO9nlc@a=+sZ4s~XCm$GsI&41Dn{ZX^8b9T)h?OdHafvrTK848&{B^C z-e;7m0cU;~P8h|U)Nsgw$)1`$bz`xkiSSJa|8qqwJ62f?ogA#pb|6Crv;h(?@gE45nvYMyf{ z1cLevI?-e8ba=m*?!~;X1l|S66y-p5cG55i#@8nYw3kFE{s#*fX4OUH)y@lce|(ma z^md4M1^)mH7vg6wT1cvs%J_(dnv>A-F-b2hV-8j=;KSbsIA;Q82O z&gWV8zX{U60{#{{lER4Fzaz@akUkKo=cTJ76{i#X0iUMvOk{Wq>v(UB*m-iI{sMX+ zu8B|pn+z*&nT>pU_4veXD9m4qC3I~bVAE^zb z6Q|?$D%u|2d{zzCTpdC5*mVT8OZ5Ecacdn8VImWU_X$KGv({(Eh$u%#A$!k3Y_v>E zx|0FDBi6XR6kRYC#bXh%rS95s7k}XfG~fV-K1VZFOO(iHcg31B+0zpf>XepQhoos) zJsWEukaQ%HjR_^RA=G21dtz9EowER4d&LX2=V}5004VtobRoP(&Qib*i^+^ZUisH- z(6j3q)jg6AK^oMh&rgVNjf+V?->EcLjd4tQT&+2UVG#K++}=|hdl32KA;+z>7c)cK zBG@aIZuNy~T@*LFI(WMx-1tk$g3M-XGNjl_ZXzrQR%o2qr=yQ9lVBHUrfWI<92(CY z!cpn{+OvKMJarPbls^xZwd8pc0|%jqkgK91l=%1Bd&gEM1cZjr+BuLnemh1Vo)9OE zCRM97=dC$-QF58Ne+7VnjxzG~7`>ZXGM)a$t+9EAM|?(CWGX25Nd)YTg0*r4@bONN z6|`1i;~?|1r8j3BpW>h8LH4CAG>OHCsx~Ua4wN%->XXU<9^&*2EubdIzHOFq(Bm7O zFfcV}AN^{S*u;QxT)%eVHR~TnML>80KGo*sCV)o_o^fM)SV8c1K1#JQO8qB^D#^Wp zyb31{*7yzbCa0!0kGDfe9<|P6*k-LKo-q*bF`N&loyd$`u6(C>wK-?}dw{-n1wj3XynFe0NvLjZx zSFS8boj_Dep=0_~?&hsB&K@4uSpJn*X*4tODeameu~>RtkmST`Sd7v< zkQoqXt0W6L_yW#dnj(5wn&V2AVb-jG!SFC;UyxaRvB6_XpOe=Q!X(5Xl|#%ck2CNh z+6uK$c+acD+I-cO?yv5;AUfqB8X)_rz?9F!xLiBY!vo^PL~Bm^B&>=G6&<|bF+zeL z8Ec7yZp8qJ%1JIvmH~oS`;;tsvqljB5=4_?SeB&<&=1^FqJJohT;|2{t|ud1`@JUH zvdl|spRpk-zNayGGFP)V&Adk}(DT_d%_;rWqf5DFI&~>ZRKG7!Q~G|iMp1iIH!Mh! zhNt+&EA&aJZ4v4kaXp|m?RI^2#t6P*ktOfW$F?aFerFn1N;>6c8CXZuntTVdn#FG2 z3W%Y)E&hbl&)`Ohkvu6*jwgY@|0(OOqpC{Zuz$LdZlt@Uqy&URNOy;{C?z3Cs&sdU zG%6+C-6;a1g3_UgfRuzV`n!)a-*>I|{rxqwW@eq)?z7K+p69x+>vJirXFcOK4z>kb zOsFZ|_cd0L1d0CUy}U{G`>g0AHM{(84AMooF;?hrr?pmSQ)kSuF^r^H*HX(?U|hc2 z%li?-S;?ist@xVfX(?}*vwVQ*15bS=(sX03h*}eMqv$zoN>YQ-6oIP_Kc-~xeBlOQ zCotXJzlV}yd`s;@%t4{JcZ+NMrF%R@1UHYie6}r?%l+dGNGDUD52jL-;qf@7p`GUw zzmi5zdpDX3Az0PIxePQgpN;Oy7q}=aiz*hWp#2xL<5v3{v~$wuBKM1uHdy!vUidKz zkNGTH_1b0Ammp20?PfSZUFuL$x;T0r;8fr3DYg(C;)gJeb^Fvfwn=Myl1jlI7g*8^ z!P&&y7h~FrgT=270PlAKs=TN*&@iW=s2p|%2XP`(t1Ciw!x(SRRKKJFQBXDKGNpnVWR_3K5cHhFQpWKB+I> zOnx}$v*i6zp5?(mY-RM$7e`w#VPPYR1ntBRY}>H-l1DI$((=%3rp|gB`oOAu^?Bv@ z2XeHRd7k579KW2dL8{AOBu-;^_VX?PM|Gd4-jS%s6EyBz)Q5eIVi->(aZN!Lm)|CJ zld7z^EQ}2WEEq}0>&CnKPNxiarmM}xldmYx+1xF;EzcS%ZAoKvxGh`8bkDGUAjjYL z1%g4JjK6;C!`XS}Vdn;c0BvYmO!qzo_@{(4R;g_$g>zjM(mU()i#N)G^@_fS zq9_5ZI~!;la=N|<-UqO{gDGREtc)Wg4l!|oyaTYC09Zjt=ss)Zuz3v9b#QZ7sSGy| zw6$R<7hVB8+o3{T&^d)iCHQ+{v9xkT%OSKpPbK=M;w4+pHf%*M+By?P+6N9}y1^n| zA{<9+408Dfe9hBfdQY$drx>)B(}Sb2CnV%z-1lMX>Iy8M=XfMr>^oMllZ5X(cIXV8 zPlq)%3K~`C2hf%13l2~fL1e6+C37>^7`{TgX&NKjk~~#A$2U1cr_(JDt^Dpp28oG< z${VM#f%Cxxp`rFc@TsLx@uNe4S0ag9d@~yfx2`oXPHcg(b3_Od$ehfqfWoePuM+?~ z&?u+66eMKQ)+E|VW&1)_@`DbpRSRvE{f?kbKZbKnU4}9Ul^8$Bb`Ia>NjAWpqmEM? zQM?jv%tIzoLG1LEn#jB{GIMXJy)w!HOFj|gSnwI2Pl&1ws<ALyCrG_#GUAey5^UL(`IqAmt}5L7VfBX+Ui9Ou<7v975JKKOr3>6 z4?EvCDDqCvZ#`y!_RKGmm&6=`xdq$8_F~&HDT;OabmYCo!uh}Azjv46f4F^I52u)x zMNfPVbdhsFd)hP%VcDn-$mg-nra$wR4LEg)yEgNAO+$kBOCaw)CC}RT`Y~P1TB%GR zt2rzW6jjCGQSh*7Od+sMh;`To+ieE0T#}|eUugqI!|6lS1L>bqpWLi=2V?ppLi~{8 zs5#&6z;9H>zFp`JA&*UWm0O-g!R>!(Qa;bEEq#bFnRQiMbvI{HErPuC+O&RW@r}-b zFY@X_bVA=PP<8!|$ZJxApWP9JVnXyH?Lb68lJMfA-MSIdeR6IpW~vBWEdp6_%CfUq zp^0$8UvX!1GN*hI$0dofJGsUX)@)Ll=__*a^ps66wYw8Xtqa_(8ICcRX$tme+m~W% zO{-rCdb?w~mG@}S0J)Yr_G@E8>!T8h7SH-YdSyXUuO?Qb;b?3*U@b2Y7yef zxEy9{&2_0<={x_m%hX_4|2aNCHhzCaXl>2yw8{@GXF*j7d#o3FrMK#Xnkpra6ab$uF!a+m6S{JJmGtsBCo2nJhTmT<(Rw z=29iU)zl_g!ZOLIYM&Ei^4r0<1|DcZxv5fnrLp~-&8sldZWOKLkD7G{wdA!{phqY7 zT@tgIovr-&XQgP%I!7K4#xqWZlD1Fq3bB$a?L2HlqoixV{*6t7aZi=Ahl_)B>HTo< zeFfWZQ7n+#@(vxwf8R?N9ulqB7L%TlZmrNxq7dhH+xMU_U8^2xXxj4@8r1leRL5b# z^(W@Y-GJ#mi&|w{5?m}QT&%m0ROZ?!P zmUC@|tzri|nNu%;_ye>rH}i1{uXq zw6WU9m-QeLKA32Jn=|qZk3Ukd^YH2pDJCChea!i2u_3-Q*{uN%c4igZLEkmbIEfB_ z_B}2d)!=iht0Z5VyKDmXN3rW+wAvr?q`wRh-JVo}3V51|ZRfs1vgkkXDy;hMw{eG2PqQI=%L}k&4}ZMPgzs)*1Fi@!!o4SMp!cyusziuITUG zlqefh7b};(QnyV*M4ekpdh%<1LC4R3Tjk@zm4kb|mk*)JXDq9ay?&ofSy1aDwk7?b z__WPgZ+TXJ7ahZZ?$@@w24Jy-cntd?-Zs4Rxh5r{v^`jS~mT zQooN<_yf#byv}dA#)0^`$7Cuo*@BR1!n66xDt5;+Xi%ph2j5Yu&*s&sC#1Ox&cQ zX9YS4a9s-;nq*hGs)M8J4}vDknEZRU4{vp>Cow*zh>`ydwV98u99ze{E%Y%CHJ*_$ zG8e+YUNm?}JWY?jIo@i=h&dw8U_n(;Jmn%7K8HPJjeJAy7K>4q26aUd)h2do86=|$ zQrF#7*%_00WQsPNwku*07ZBS}rM42oqKH(_mVf_W>KP%z0UZaQ7?lZ4y;0XsQ@0Va z<5$=u{<+l5_LQBEcU6#8a7f#y0{?MQ%qLiN*CjoC_R z8E6JTX_-;7OVV=?N4NI;#ULVx>fOwx`Z)~I9diXA3l=Gl@?E#Z)`LE zH>u4emfdK56Wp8Sf(}knlJ{io*J>7X-iqQe*t^5VP90a4*-G-xkfa(=AkG57Md0yj zHv}X`+8=Em8|4wy+Ogq1uIT1r6AEMQt&cmY|^(JyW$lmCHC=pk|PH`$PX$X z7r5DHI9S_H&sr)7j)hl*zt@ZBQ^-{?sjs)puMYGduwE0si)6<$_-&HJjkCFw#Tku* zA1o5$6`C{9qO`e(?OU=bs`B_CJ5K><(D5yYI($9#3mUur#*P*!n0D(n4^sBR%K`LY zOIkRZ+WePz^zYY-7qt)_@EL43#Sa99*U+lOE;6F%=y0u)myuKz`}mtYT~3`CA%|jY zAt{^K)Hq^nmrRj?NoTdA*`9-(o4h2dC0q{wf`tUqE%6ui2<&HthhxuXg2fb7^2zU{ zJChuhC=s)pVhVTK`&zr7=0bxCvHXAp`}^LO#@M=&<}~gB#p~8G{#gZf!TqD~+iyX1 zQ}5a%vP9wvb<;Qi`14c?$~g52cskIs!r!P096luK?r^PZE8K;~fiSF5YZDhKoaYRo zKjxWNr_aTES`po%F`qugH5aGBh)^A~Uf)3+_dug=M)1StJ(3OX=nW@6lUl&x%#6OS z)-dpiFIHKr*d+~36soBw*1*jhhyA!+2T8?1?8wcCZ*d3`eCTz2YF|C>hFCRAK?#12 z8%kQr`pB9*#z5!qVG$?3`af(FC96fz5?g(pthG)LoK8TxbFsOrpu`L(zK|fa=wgVW z*$bof#HXBU-p%d-B(PF|i0hiOH%4Eppw#QH25h0P1;NsU0U??9fCBliyYZR(+bYur zz2AeJjn1T_!&vH&fLwxgZ4n%Z{hcvapkA-Fd)n>&uk1SM9t!Pple4kj`%+USuX8wS z7AhcvEnrXv`>f3GuTX4s0!cz7u$roRvt@34lY^Q>`Howen3DK5UI}m#g2&w;NeQbJ zFA)JUQwb^B;SL)1bCslU?fW0ulHz{`Ux3E*aK&?iA2$8al2<=Q4yY4Tu-VKFe1*C@ zLK@*g`nDjP7^C3Mq3OzZ_Sxxnoaj$d0h zo^oR=G`Vk}jscvfZ`m(bZ$ljGz09cNj8XEXH9$#tIziz7bxvCR$fG1l@y5q$LxL1% z{79DQ6!(74s3pnC)+mWrffQ2PF_YlZ$$qta7nD&tF_%^-F*tt@&qCemfjD>;l<6C% z%cyziCh~s2uX&=RxvOy5d<5CqeDQ}2FNkj@kC-idZsQ_Alqi}WgCa1DF(6L9rmEXr z_6nq;ja#w1*y@krU1q^`E``~j{0OsW2Rup|{~$TsACPg}^NmEIZZ76m9$5d8nERuO z<(Xj8Kog|$N7QL<^rbA~Ulwz74Va)#JWC=tUKpYM3Ixv;RJw!iR~FPLJ6|wA2MBiC zb6CszR6Oz+GE(i*!t4Y{42VwOtihhc9x56dsf=YFO;dz}of51myw=x`G97wrv?RC4 z10%u51nm#m=FKj_B%7WBf%SFg*C7Ve@#ps?v;LtlNVYQ;^}v7y&#D^wb6! zUFU^S$Cl0-9Gc_Kp8W%xbd;K|(&~(#3g$Ojg9#W<$t_O7Y90N>vNOefjvetn zG{`GU-bO9ziGllce6c$c+>&hJ@G+b)uWoZw)}$?0^xU_Emu_M_7+-=BQH1d!l!7lB zjW<}OEo$V@l-_1%*sTwb2C~FkvDdICUceEU#Sg_p!9-QtAL!meHfa>!A9D8m^W`jYZ z0KQb;X7oA zNaN`c;A`qD0xRFW<4gw{o?q#RC;Gm`~E6u5u^PXPm37leSl2g zY(6Nsxx?orS{;^be};ssQ;Njxx@64La65OBID?-u8 zD(ofCXL!79uUUkqxogk4Vu*DyAzE4Vf&^XTbLr~9RO|i6t?^9f?=tzuz6!B z;N=eYV6SCG46{Z^Y&l>xnwZSq<^!oF=f%(yfrrtYW_-NU6rY;v>*gX`Nh>kMGfW74 z$QUf#)knT3Ls6kZBIa0)VrlL#b+dOtlfC3oZ(?j%ey9?+7$^p51~1nHyzF>{HuH$r z`c9C$7PA#uJft1pk>9_jpdB_zL;GpSb~ud=gs4B`%7}~%w?`{$Oor<`NkcGgw4HkV z(~~`dLQ0f!)6rVaiZ(Kf)pEp8#pd{i*gb=%o{OghqWn;`rz+ta&Gpmz@wLw$b?tro zg}iv+#MP{>pJ<9w9n)lE>yJB|qI$tJsF;4P*64(4icrau>4c%?ys*)IDzbs}_@P18 ztC5x~jHlVY@s+WvcBVT9(J?|FajDh=b!l3$cxYfg3$cHk>*LRdi81CTv)xgf(#4k! zy{=eg$?}TbwJ2{z&9iK(-{i`mE>IlA_0%$}Kxn z+ZqsX#89~2Q~U%>AkHO*QmDdP_>we3 ziu$@k#VuKrSJBs`v0`~Y<=Um5Ig+xkO{-@a?DWOh0-G}9uC*KqGm9Cb9trzD4XbrR!PisIbM-a=tgk-*kpb~UCL|sz27j9u!}yw+uUZQ35wR0>4F@b zQq(+3VGTD0^#HA+8mzkCz(;=sWj_b+q2PxbTc zxhh%JdgTw#;ef%Ef`f;!Mt`eY4Zn}3z{*MYmazw1ayEb9G*Eaak)iE!m|JNd^2`ld z4j(ZL%!@pq^n1{Mg||C0PX(_}on!Ds+epg`jgo(UXRPvSx-yVrjtZXWB*Va;mI*`> z8_3ZBa}zS2O8i>d_XnDY4?r1=&LP2JbFv4fXYNQsxtn$r>_o^M#=?twIs@0A^5klY z$+j?0CEpqs#Y2SOeQ@i^BP7qZ(l}8!a7Z%!>-<)c`uO2-@EqF<8C@l?;k6D!kmD*0qg)*sBY?Kl~u&;QZ5q?8QCLA;RJjCFee3- z#Qml=;&jd2N%1I&#Q$jlMY!-#bCV-C4Ga-{e@Uq~Bh|mz{vx>+`jO4$D{t@%io4tI z@47+29(EwKBKI^%artJL8frrIxDs&w&m~YBC3IM5{6-Zg3#o+Tll1mJnifdql@I*Vmj$z`Kh6?rNdJ$mUhn> zt|DWN&gsRd%JZGOS{jyDrUa_9IK!#);Xf9gX?}R%KVTIQ+f_D>gNdzh_@Sylb$GEo z{3emlNxy+P^B@I7Ap?tZ${EwCb{(`srxYmE1E=vBR~!A1?T3r7yJI}ouWh$yB1J!R zvB=m_SlJYtH90LzkSK3{)#1-39AAMmH%O#N2mMjMCx4vP5tapxPl>HTme}kCuS{=` zzy%LEJCH^pv0z#TtkF;7eXs|gOWzrsWcxtrUy`k)vz^X|?fQ7gT4Ak&KKT|&Pnma$ zgIKxTKXtzYH;Q%A2!IlO_Uujgjkr5;H^WH$hiM$C!x0`5_1_<0#HIbALfyKFZ-JP7 zar<)N?dT*|4L5laB&ZhAjXuwosgHf8Tzeymr<5;Wu34nB3Fl+ufB(`#t$W1Nft&6L zLFocLMsD2E46Jl-Nm8?5WUZM89G~=AjiEgNt;~Y-4bnQ+!6Uv+K??JaE}+Kk^%Nh8 z!ijaK)_yD{4SLAd6&Qv;nKipaubo1f4ZCy!1H_?kg&fhzF1im8f=eg>ip!AV_lCzH z(n9jfq8;;ln?;)^G_;5>v;NBBm%lk)JOo=%jR6>?(0P6S1iPxEV?ezkh2eKE;(t_v zo^Kn)KBTWnTmh6E@!%N)&KSGl?kn-ZlwisqXmMz7Q!Mmo5r-P=~ zaNL{s9*ff!OHon{IAPFk{hVB`5int{T9$72nA#3Y2L05A#Vzx@9?JwrmkXhF9p-uF*ugPRYONa z0-hKCEe^btsn>MKG@;g7WKERrcXW9R4)uZ1VUYyE!CEfWP(*B&nWzrKEZfnR{`inV zm^~zT9!O)dZCr#Nlmx1O9^Fl00ZMBaJC=>FoP;U1dE`)nQw|cmj)2#6V;T!&wA1jPhq%FGn@5S@y zZ*)db40{Vn7qRJz7U|B%&AI@rWZ ze+Og0LMfuN6gy5it{x5o`+X2aQ>(N*ru@+g#3|3ARgdpfyyQqXtPFu^F=WPaDqT-cJtS}}TC6mc1W#3fd-i#JLH4W`@AW(p-`&%V98(;ZUF6&Z?8$;Wi0 z6l|h*p7mN!AoGi8LaHCwG*YSA^!6lQ$n{Rqzpjc+jOM&H^G?JqJu2t1sQMWNq7_=?i*f{d96dv>$&lT$QN$~uiFHw2A~gX5QE8P{L=t-n9k^v z*Curc@+T$-RfZu}e7-3tS-7MRVx$Uw5;?(-M}=}W zF&|r4?l&?$8(JS>4?C}oUbXPN#^>#s3}hviC)zL2(6-Po-d#!`R6=ju0C%388RdZH zT{fozlY?Mt`sK#FcaTb&yxX=n;Ct=n1C0CON%Z_IlFznqcy+xtmee>*tyB2nRW*b? z(wyS8on2=);(5)x&|fsNIrSze6gN4iami%zeAlCOBsnn(N<4$r-9!XW_}y;&{PwYC z1$bxQlyNbYq4o^9ZwDG(gPOy~ey7j0Z}E#L4U{*pUVv~|sj0aAEVRPBVb zDPm3k1L0jE_WMs><=>z4fQKG-B!01=%o5wAnIFWBeDrOFH73TNR=#MI6JX)VuXbsb zbPGWl`IikG9RqA&@NF1_I;>Wxmv%uw4TnM3X&Rdj->+sxqay#WCY(X9qCdW8DUWf} zSMms^8-G3zK!oVwY;fg%E^(Z+ixQ3J4JGFM7Sz z{LaZY1P3#jFJZ8*>_dtD?x&{8!~KY#)s?UZ8xtV~j2kiPvd+oQd*{(4=6#aUedMcj z^Y~voC2z~9?i9RLe*@u6Z44$(EkvZHRXd4LiwiIK7nfCTu*YH^1Orj8;o=5kjUSQ!$)SwbZD?kw`TZIZ z-Uv~8K_kp_#Bv0OR@vOmlQ&;%QG;}*aFV$xd&ln!>MXsquOMTFfFG7lcn3Jeoj8z-k5}-S`+t8Sh_?Fe3Z5b8%7zJOEI~DB{e7$8Eda5K65KY*Pq;av;KjdEO<#nu_$w+7KBx#otG?T}i|gEV0p>mgr`aya+GnwUEtalrsTye(-Y#OJ}i(pW5wLY%YB@T=A)8 zO0aOOA)OBgejr&9=<8&*0`I2itsQiYeDv-2I>m|DyZO;#z}KS|Y!63aRnMlWGlZx3 ztQJ=7z@4yQzfm6VdF_wh9e57C!(Awb2J*PS|Zlm+U!*tNX%# zNbL(hv)|vYOeccFZ}B@YM`-?#cZy5CpHR;W`{ImveS0dzS8Dt)Zq0}9j2n~V{otJ= zEUN28y25yE3ulrSgD_ZF3fSF5Ut=eEGJgZx(tWc?+TR*z*V+F|vlyrGnTdaF{4*J-U&M zXEfgChSc#xB9HeiaOZ_yhSq$+y%Lot(m$~J z;3w|&sT{|)qZ?vO86lz=%YBRZ{xxub8}O|AgT(J@1)sFBNUIl&dhD7aQ&?2Qg%J=2 zX>_%B@Wd#Ijt{%L?t67%^o)ougLYhViu5Cy*x~!}NHCR;tM?14d{b`2BaEzorh+~O zCR)=XuQ=JX$J@QafxUV5l+hRu=JLX7x3zulDB~T+KfI`bRbK;LB8OCQ7_Z&lIc!5Q zFzN03V>@TN(%9H%N@Ml5@9hO`>M4h`T-#p5cEHa(AWXv+ynPERf*4tSlb4SMqy%=& zj&SAlzCegN+s`7l=_3$HrVG?pqqo!u!ugk85qde&QK;i;*vhEzE^Ke%p#vynt z`?YOtwLN?lu9aJTcV}{Alk38`;~bS~9_r!-{E}kEGKlymj);0mfM{0oD*e3haMDI! zP<(NNREVjR`f2wZ#)oJ3t6Vs55njii2#evov~G&M;JuZ%6l1MdS6%!i>m>gwqsL`= z{pFqKiTq>i2g+-1;%v5;*d-eNap4LD?*efW+|s&;L({mKa|&yzm$5K%`ohM{kd}*u z_H~_w^rxwnyTb(qdJdTvoH=g0WmyKgrK!YyhMK3n%TM~=Z!H;s=_QN~QQzAT+94D; z-=4kgLt$znv@C|Hl8sV!aY9guc6NIwZ#7&G%?ft{Eivv0qWUJ4M*OK9S<+#&9=;xF zRp`8|T&NQI#G&{ca+{vD?pGJW^m?tl2Ap&@ohpvRx?O1*DPEHowL}<^PvcebS4fBt z{?YNdUf1oB1));yus)7M8cYPQZ1#bT= z4Bl|oyyxY~H#<&xb8(+yZr>U;;&ThpuxQ?TH(56F4ew+{A&KZLcVf>5=E^cy*~gx4 zo$}vhmZjooh-X_xr+xb)I^ zF$l*A3+tW}m&ym;PJ5gS%%!Artdo)9XYuz&w3e~$e=u`yqn2O zO@>uUbay9dW~4V-a%G(3I5SOvFfBf*U5JoP!nsdggHD``CFvyjQ6@p7p~yY1 zEtNU?REE?QJ(+s#*#OoSNy6|O9Lh?>Z1vzF3 z2^UjW?>1YuU|UEDpqw1*8R8m8xkx?ly=m~?xRrEhb0j3FL96GDF~{DnvHC3jxyO)Z z=%;f&+{;(T*)K3OVFKhv9TsfA!7|I1!2DElsy$r(JoEa|c1dDH8_rq}00oGN(=^u& z-L%;~@2t}NifESTe-xaEa}5!$L)sAIFlo<@m%th=sqB*by}o>wYm&IzcA;Ua4e#TY zJy4sWZBm!C%cqhjOx-S;aE2JSQJ0ZN`*Zdg^|MFhuklo0Q}7z;u)nww?DY}<3uzX@ zf@*ls%LbjP@uU`emNjj-MxqsJMm13GU#pDV(PcCtz-sRh z*2prlQ|Hh4)+(wDrsAGAWmKiUlIInv%ImZwf^zUWpLAaa*%WA)~IoG_hSmiCH)MF z-;mk($nPTt9;NKc-Ye!+O@zqOq~#cTO_DEhFkLhePYk+mGAtm?6WLj2SD)*T8UBB* zWRWgLpyUd@(d9~zfdA>uqq|@N85F-$1OOf+>x3}ayhR5iw?xOD0*oh(mAiP0jy*x% zu?Ujo@k$+XxX>1Z%3azYhlLPynXbFa%YH|RmE7-{ZI1)h*O|XZeKnlh!0oxZ zz%}%_{P{gH=+61rd)qfCApAYbGzlrLSKmj#9(nx@bbp5*LXntV{^B5BM9QzTAKFoS zfIVz@QBa+Wv+0=*2geA!O^&u0gl<3lNd|O28Td#dR7hTMqzC`uT1d2BTF3M}R?RU? z7XSATI?+0ra}%E>B40vNaV5}OgaoavSyI=SS$P45`dOc|kV=``;uWfP9|yI5Slvh* z4XY6;u6`WfY!uKaSl__80gt53F@Ehsvb%MBG6qv2hx5&yKqHRd2H-1P11!n^)x_gZ zY}ZdSXv(UWV1-3;K(;8JA$7>@#B!r*lW9h%&H^VmnPSLbP$kS?kQ$QjAvK&g^n!_t z7}~5bn#0cpQIuY0G9FPhvqeyUM&ZzdUX~)<`q#5WZiZW-^sit)PG-oWQrkI7h<77n6qF)6wWZ`6Y= zlpZ`&)BVB&C0oXro=`sa{}$q;DCC##VtuE_uwzba-A^wm3KRVIUn4Gg}yt= z>~)4~n(YZva%bIA?}%}dyMy`%V60K=zQyYoNB)A!o{|mRrj-)7 zr$~R(k@2V*Mw*z*JQLoEtsycd)F=q$-7y z6fOzyq?m8(7uHW;!`$HaV#V${(QxH16wV3;5&T@OATtfkJ@{2eStNFje@0nTAW)1U zRU02#sD+v=d`|N9c}^!ZO&N`86-ns*@Arp!bc!w@3SyE69k^fwst7G-y@?Anzu5Z6 z=KcurI#^$`#fxNNzj~>I>_kLfwGPjtnC{zDO7b zBSHW8$gIuJ7`suc1UsQVrmKlhvY=+$2vm_831eV5Y`hthAynMQLCCL6Q{GX@M-XFR z7a@#>-*%E3YQo0B~U#5PWW9*e{V*WiwqdU`ZyYEFXV`@AD)m_QQ(TN z4zYRvl@jVR|BgAzj2w)6w1$jX2<0MV?WGq56y)V%%p>6mLw$|RV)TB2u7~>+F|24%&1s1A!c^?4 zwXdq!0NE2vN8q0Ar7p5p+2Y1;>LWXd*;pQIP+0}qfKve$rjDekq9# zzb>btkC5H$0f^K{Kr8s(vbi9>dLNdmi=7w1D9s&$_wGCJ7!JPxFHcc8nAwmqXdz?O zSE?P}-;GrEpz{44sOQT;XO;qA_lsY9K9mOZ?L^gcVFx^oG`GYyro=kWEj9lVkP*Wz z3i#;!v$zE+I6;nMUHT0%#>e}Meqd4S!@jhn_ny-&CQGN3g>P_G!LFz&=2u2ov__mu zWiuwasOu+D+1{dmTgb9hb`wt5B&jrWM3av-=C z#=533MIe^15|P(?I)O)2p=BltNY!(D2dtdN;zI83J!FObt5e7vXL4!;jdyXhcWg#T zv~jlp1hBaJbm{Sm!>WnlzqN}gq}~o;A}C)H7k&B8#KzzKrlw+XuYdGy_PpR_ZpIL& z?ZS^wO%rUDhU9_$NNfw->Ree?gkzLX#4{01hzX64FX9L1NERiq?5J+C2w))L&KH zpMb~#6u#D84SB!Kd`3OmjiYep8fbbTJJC+5&5*dnW8zi zA{~>`d0U^CU4JjjkT`TgprcCbxl}DriFU9_CiT)}BU=xlr3KKaeB5Bm8Fdcju5gi& zZ*jM*x{E(e%H(9!7rX;U1c%{*gN)Uq8KtDyIO6oRNnlUK;#~idyY1L3G5Ccm-n(Dz zUO3&umzL0d?oEMTqB=20bNfl>A$iePkj8?<5H zcfP!>jgP35x!$l{jWkK1hLRsSeQM63(RBK@f4yw> z_G>j?ou3#PkE5Sy**!bRT(c^#rvKCP=kj(&jAE;`yVfeH4|cy7)uB42B!L!Y@l@s= zi9%1Q3?)p{T8bI_-|P}{1?tn&#+6JUPpyrsrn@)U83hyBV`UK?T&u&m_nh8-_V@Y7 z?JrE3$ey>f-niK5Aqul8q_K{muN!P#CJa(O6E>2ydJ?km`vL30%iXV!V7IoyS~R|o zBqDTnUB3*ck+vHq`0d~_N-BIjFLKc<7CuHO9^d5|g@S@7tg0w)5Ummou@a_^R9AHy z(Fc9=b#`^!t5h0FyRs{n#G5qQR*&0aTIG9lcMD$hnikeg1=%O83jsTe>i^j_pEjcl6(q&^o>0h za$X_L_GH?6MiW;2;jcKARK<>m?$W;lFID)&_->M4s-xN0S6(<#gjKfb^}kOjcrQ=C z)feQSb0Cnq=*vu{Z~b7HwY3#7fqKxybz8*i;Gu<#Q-89C;Az0;0PagkOK=_A00EQY zy{U^34*pJX`YP3{coLS+I5(^ngl>3nDy35DM7Fmag8!!LtG2M`c#XvVZS>OO_U@;1_!_h{bg{RAp^W4Pc}lrE*K`x|WJ1oDulgGEf8S#caz z3&k}>IVP$PwN>UGk~AW`Ds)bB;`5_N${P95e&9I5bgr2WvmVhB?fz- ze#j_^&CO=iamX(*E!oaukVQza?h|<^eD589WqOI|%(6yP6u`zGDY&u39*zvho_^T z$%i6bl%p~_I)PwROa;=>t2)%xZ^Q|WPcjyL?3NDTWt=@w@)K>L*dze%Z%3_S!tLL_ z;tRm8n|b*&&~424)>_rId;CLrgH}+0$=NN)|He9SZyoYSZ(pps(hb|$M3dm-VB1kC z{G)2IigXLB8v0|87RQ*@}fhKA)hRK(Fea*-F>RG5Hfbg!7*};B|su zMv8a>lihf6hiGh($OCOnxwemc0*sr>B$xajhxP}aq|xQ5$jj|(SZpMHL2gCfW_F}) z@h;?*84ul0e~3Ak(XM;^*N1p z*tsRJp)?tQ?1E*^g?{GVWz9p6@Ql!lu}S+XTtc#RyA7A=!eH(!hBUc9 z2MR26!eg-j9?Laz_}G;hX~3GQvHvQGHBC8i(CuZKY7(X~Nyvaa(=34P7=}o2!fD>( zx>VCR&m#QhQ?9~}xic=}skm>kaYS&P2}h2eT(nP!1vBbNJVLkBQ&3^N`(z%ylfY6> z=-T>4$}f8vYuRZQS~PUhfDlI;RIaS{L$AZmSEO_(UeRN3WHtQd?Gxf0nFK?ZZe@?X ztNRqK8s5E?KNM%BP*X3xjhZ3wJ@TK>S}Fdr&qYcRDIQ@#t(2zMZJ(2Jgt~q+@eC(N z3_L(Hc04bh;#9cvJ0YQ1c$zYRAoCv1e89F3Y2bdBbz_JeMR-GMG*t%S`(Z+Y=kF=6 zk_dAjC|Fb zRn@mlId#}Rpem6>{ao@Ru2{?^-7TvXBT&h%+CwY{eh~%KqimTq5A~DG;Q}^he3j=aKn4N_Qz*Q0yem@XE5hPcXw&MR8EKqj@~m z_~J@+dp(9HvVv4?Cqgk*kzgqN z`yXg^Emp_SVRmG9q71io$txyr={Vg&<08yyY&BK{Omv4TIIji^=U)7~0k8buK716B zzC<901h_5tS1lLasH{dv|dPEf)q zIwL<1K`LCJybeq{wa~l5mxb&&lScWbl`Bjq?duM+$cSs#Y0diK^u88;?pOh5w`MS7 ztZuw-(7BFKc$Od=}Z^LO(A&96{zhIE_+%y`Ve{W)L%&dbh+?bx2 zMf?;P4s1+8QKaJ~O1s!dx+RP)or;?rgMNIvMYnJ{n9`}lGjEZVl1&cBXCz2f>CzL*^Bn?wo^bQZQS`lFJB-EL|zdYnzK4C8NdxI9o}o6G;n%;Tt*mUO_l zhLDgF*?Xw8jEoUM-m8a&R68P5)B$W1Tkq+*S8{NIE!u(;@a{CF{fZ^NchG*)>B=qi zWbDE4{jpy=+Bk201JVt8$yF}ZsyA`2N3AvgMcabhp{o zR49=dmrZkA%}*<^6Hc;d&ih6-TGkK031pMXD2cv}w2qbfH!dEH4D|M|7>_X?{77L} zKd1B}Dxvm#$()z?lXfm8Ts&ytO^b>B6-J8fGkE0Hn5SjxBqvQGvP6)j=*3F-JE3p2 zGNP*z7QJzf+okH1b){e(1A)$`P_#CA40E-}Qr=^_5}90q`&3IT z1M;**NoL(Ki%55|XuXw#_zh6y$_N+Oox(_x&whE#%PVH8D4v5|@B_-jCA>|Z8g5T= z9wk4Fq%EEfo}|iA^sA>RC@6paEE_hQ!rx#acaP{OjS9~UefT=@;GdwVDrqUcMp%dZ Ee+%%6f&c&j literal 0 HcmV?d00001 diff --git a/tests/e2e/snapshots/next-font-webpack-Desktop---Chromium-darwin.png b/tests/e2e/snapshots/next-font-webpack-Desktop---Chromium-darwin.png new file mode 100644 index 0000000000000000000000000000000000000000..7763786267f76e5e9b5ad1a31c0d864e85db63c1 GIT binary patch literal 228405 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

; +} diff --git a/fixtures/next-16-app-pages-router/src/app/page.tsx b/fixtures/next-16-app-pages-router/src/app/page.tsx index 404237596..0a72cb5a5 100644 --- a/fixtures/next-16-app-pages-router/src/app/page.tsx +++ b/fixtures/next-16-app-pages-router/src/app/page.tsx @@ -16,6 +16,8 @@ export default function Home() { next font
duplication test +
+ next image ); } diff --git a/packages/turbopack-plugin/src/index.ts b/packages/turbopack-plugin/src/index.ts index 54be141e3..1903357c4 100644 --- a/packages/turbopack-plugin/src/index.ts +++ b/packages/turbopack-plugin/src/index.ts @@ -95,6 +95,71 @@ const getOrMakeCompiler = async ({ }); }, }, + { + name: 'vanilla-extract-next-image', + enforce: 'pre', + async resolveId(source: string, importer: string | undefined) { + if (!importer) return null; + + if ( + source.endsWith('.png') || + source.endsWith('.svg') || + source.endsWith('.jpg') || + source.endsWith('.jpeg') || + source.endsWith('.gif') || + source.endsWith('.webp') || + source.endsWith('.avif') || + source.endsWith('.ico') || + source.endsWith('.bmp') + ) { + const sourceImage = path.isAbsolute(source) + ? path.join(loaderContext.rootContext, source) + : path.join(path.dirname(importer), source); + + // since we'll be using the image in our final css file, we must craft an import path that will resolve to the image file from the css file + const referenceFile = require.resolve( + '@vanilla-extract/css/vanilla.virtual.css?ve-css=unknown', + { paths: [importer] }, + ); + const relativeImport = path.relative( + path.dirname(referenceFile), + sourceImage, + ); + + // determine the dimensions of the image + const imageAsBuffer = new Promise((resolve, reject) => { + loaderContext.fs.readFile(sourceImage, (error, data) => { + if (error) reject(error); + resolve(data); + }); + }); + const { getImageSize } = await import( + 'next/dist/server/image-optimizer.js' + ); + const imageSize: { width?: number; height?: number } = + await getImageSize(await imageAsBuffer).catch((error) => { + const message = `Process image "${sourceImage}" failed: ${error}`; + throw new Error(message); + }); + + const moduleContent = `export default { + src: '${relativeImport}', + height: ${imageSize.height}, + width: ${imageSize.width}, + blurDataURL: undefined, + blurWidth: undefined, + blurHeight: undefined, + }`; + + return ( + 'data:text/javascript;base64,' + + Buffer.from(moduleContent).toString('base64') + ); + } + + return null; + }, + }, { // avoid module resolution errors by letting turbopack resolve our modules for us name: 'vanilla-extract-turbo-resolve', diff --git a/tests/e2e/fixtures-next-unified.playwright.ts b/tests/e2e/fixtures-next-unified.playwright.ts index b9582a742..14171bd25 100644 --- a/tests/e2e/fixtures-next-unified.playwright.ts +++ b/tests/e2e/fixtures-next-unified.playwright.ts @@ -18,6 +18,7 @@ const full = [ { route: '/duplication-test', index: '/' }, { route: '/function-serializer', index: '/' }, { route: '/next-font', index: '/' }, + { route: '/next-image', index: '/' }, ]; const getTasks = (type: 'full' | 'limited') => { diff --git a/tests/e2e/snapshots/next-image-Desktop---Chromium-darwin.png b/tests/e2e/snapshots/next-image-Desktop---Chromium-darwin.png new file mode 100644 index 0000000000000000000000000000000000000000..a1aa003e95e8bd1e69c9f2331a8d3aa31d7a773d GIT binary patch literal 49357 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 F{{fQ568``I literal 0 HcmV?d00001 From f796980a51abbd29d4b457c2da0c7a39482dcc64 Mon Sep 17 00:00:00 2001 From: Robbie Date: Wed, 10 Dec 2025 11:46:08 -0700 Subject: [PATCH 49/52] typecast --- .../src/app/next-image/image.css.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/fixtures/next-16-app-pages-router/src/app/next-image/image.css.ts b/fixtures/next-16-app-pages-router/src/app/next-image/image.css.ts index f12f83712..41074e056 100644 --- a/fixtures/next-16-app-pages-router/src/app/next-image/image.css.ts +++ b/fixtures/next-16-app-pages-router/src/app/next-image/image.css.ts @@ -1,9 +1,13 @@ import logo from './logo.png'; import { style } from '@vanilla-extract/css'; +import type { StaticImageData } from 'next/image'; + +// types are funky because of our monorepo setup +const withCast = logo as unknown as StaticImageData; export const imageStyle = style({ - backgroundImage: `url(${logo.src})`, - width: `${logo.width}px`, - height: `${logo.height}px`, + backgroundImage: `url(${withCast.src})`, + width: `${withCast.width}px`, + height: `${withCast.height}px`, border: '1px solid red', }); From 6069616a87d91194a5e051f878540dc687132b09 Mon Sep 17 00:00:00 2001 From: Robbie Date: Wed, 10 Dec 2025 11:47:03 -0700 Subject: [PATCH 50/52] revert devEngines --- package.json | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/package.json b/package.json index 6a446623a..dc20c6e27 100644 --- a/package.json +++ b/package.json @@ -63,12 +63,5 @@ "manypkg": { "workspaceProtocol": "require" }, - "packageManager": "pnpm@10.24.0", - "devEngines": { - "runtime": { - "name": "node", - "version": "^24", - "onFail": "download" - } - } + "packageManager": "pnpm@10.24.0" } From 885c8af96d2fc416ce3d704d828f5cb1af1fbe39 Mon Sep 17 00:00:00 2001 From: Robbie Date: Wed, 10 Dec 2025 11:53:02 -0700 Subject: [PATCH 51/52] update lockfile --- pnpm-lock.yaml | 95 -------------------------------------------------- 1 file changed, 95 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8abb84989..03cb1fc02 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -59,9 +59,6 @@ importers: jest-environment-jsdom: specifier: ^29.7.0 version: 29.7.0 - node: - specifier: runtime:^24 - version: runtime:24.11.1 prettier: specifier: ^2.8.8 version: 2.8.8 @@ -9243,96 +9240,6 @@ packages: resolution: {integrity: sha512-E9EhoJkpIIZyYplB298W8ZfhcojQrnKnUPcaOgJqVqICUZwPZkuj10nTzEscwdziOOj545v4tGPvNBG3ieUbSw==} engines: {node: '>=10.17.0'} - node@runtime:24.11.1: - resolution: - type: variations - variants: - - resolution: - archive: tarball - bin: bin/node - integrity: sha256-mLqRmgOQ2MQi1LsxBexbd3I89UFDtMHkudd2kPoHUgY= - type: binary - url: https://nodejs.org/download/release/v24.11.1/node-v24.11.1-aix-ppc64.tar.gz - targets: - - cpu: ppc64 - os: aix - - resolution: - archive: tarball - bin: bin/node - integrity: sha256-sFqjpm7+aAAj+TC9WvP9u9VCeU2lZEyirXEdaMvU3DU= - type: binary - url: https://nodejs.org/download/release/v24.11.1/node-v24.11.1-darwin-arm64.tar.gz - targets: - - cpu: arm64 - os: darwin - - resolution: - archive: tarball - bin: bin/node - integrity: sha256-CWCBttb83T9boPXx1EpH6DA3rS546tomZxwlL+ZN0RE= - type: binary - url: https://nodejs.org/download/release/v24.11.1/node-v24.11.1-darwin-x64.tar.gz - targets: - - cpu: x64 - os: darwin - - resolution: - archive: tarball - bin: bin/node - integrity: sha256-Dck+xceYsNNH8GjbbSBdA96ppxdl5qU5IraCuRJl1x8= - type: binary - url: https://nodejs.org/download/release/v24.11.1/node-v24.11.1-linux-arm64.tar.gz - targets: - - cpu: arm64 - os: linux - - resolution: - archive: tarball - bin: bin/node - integrity: sha256-zUFAfzNS3i8GbqJsXF0OqbY2I3TWthg4Wp8una0iBhY= - type: binary - url: https://nodejs.org/download/release/v24.11.1/node-v24.11.1-linux-ppc64le.tar.gz - targets: - - cpu: ppc64le - os: linux - - resolution: - archive: tarball - bin: bin/node - integrity: sha256-XUyLyl+PJZP5CB3uOYNHYOhaFvphyVDz6G7IWZbwBVA= - type: binary - url: https://nodejs.org/download/release/v24.11.1/node-v24.11.1-linux-s390x.tar.gz - targets: - - cpu: s390x - os: linux - - resolution: - archive: tarball - bin: bin/node - integrity: sha256-WKX/XMjyIA5Fi+oi4ynVwZlKobER1JnKRuwkEdWCOco= - type: binary - url: https://nodejs.org/download/release/v24.11.1/node-v24.11.1-linux-x64.tar.gz - targets: - - cpu: x64 - os: linux - - resolution: - archive: zip - bin: node.exe - integrity: sha256-zp7k5Ufr3/NVvrSOMJsWbCTfa+ApHJ6vEDzhXz3p5bQ= - prefix: node-v24.11.1-win-arm64 - type: binary - url: https://nodejs.org/download/release/v24.11.1/node-v24.11.1-win-arm64.zip - targets: - - cpu: arm64 - os: win32 - - resolution: - archive: zip - bin: node.exe - integrity: sha256-U1WubXxJ7dz959NKw0hoIGAKgxv4HcO9ylyNtqm7DnY= - prefix: node-v24.11.1-win-x64 - type: binary - url: https://nodejs.org/download/release/v24.11.1/node-v24.11.1-win-x64.zip - targets: - - cpu: x64 - os: win32 - version: 24.11.1 - hasBin: true - noop2@2.0.0: resolution: {integrity: sha512-2bu7Pfpf6uNqashWV8P7yYeutQ3XkLY9MBSYI5sOAFZxuWcW/uJfLbKj5m6SvMDT9U1Y0C+7UFG+7VSiIdXjtA==} @@ -22308,8 +22215,6 @@ snapshots: path-exists: 4.0.0 semver: 7.7.3 - node@runtime:24.11.1: {} - noop2@2.0.0: {} nopt@5.0.0: From 501a69d63832e90787a2d197753427febd15effa Mon Sep 17 00:00:00 2001 From: Robbie Date: Wed, 10 Dec 2025 11:54:31 -0700 Subject: [PATCH 52/52] type mismatch --- packages/turbopack-plugin/src/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/turbopack-plugin/src/index.ts b/packages/turbopack-plugin/src/index.ts index 1903357c4..edb49c22c 100644 --- a/packages/turbopack-plugin/src/index.ts +++ b/packages/turbopack-plugin/src/index.ts @@ -137,6 +137,7 @@ const getOrMakeCompiler = async ({ 'next/dist/server/image-optimizer.js' ); const imageSize: { width?: number; height?: number } = + // @ts-expect-error - next.js version mismatch loads next 12 types but uses next 16 code await getImageSize(await imageAsBuffer).catch((error) => { const message = `Process image "${sourceImage}" failed: ${error}`; throw new Error(message);