@wyw-in-js/nextjs 1.0.5 → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/esm/index.mjs CHANGED
@@ -2,6 +2,17 @@ import fs from 'fs';
2
2
  import path from 'path';
3
3
  const DEFAULT_EXTENSION = '.wyw-in-js.module.css';
4
4
  const DEFAULT_TURBO_RULE_KEYS = ['*.js', '*.jsx', '*.ts', '*.tsx'];
5
+ const DEFAULT_REACT_IMPORT_OVERRIDES = {
6
+ react: {
7
+ mock: 'react'
8
+ },
9
+ 'react/jsx-runtime': {
10
+ mock: 'react/jsx-runtime'
11
+ },
12
+ 'react/jsx-dev-runtime': {
13
+ mock: 'react/jsx-dev-runtime'
14
+ }
15
+ };
5
16
  const PLACEHOLDER_EXTENSIONS = new Set(['.js', '.jsx', '.ts', '.tsx']);
6
17
  const PLACEHOLDER_IGNORED_DIRS = new Set(['.git', '.next', '.turbo', 'node_modules']);
7
18
  function isObject(value) {
@@ -188,11 +199,17 @@ function injectWywLoader(config, nextOptions, wywNext) {
188
199
  const babelOptions = wywNext.loaderOptions?.babelOptions ?? {
189
200
  presets: [nextBabelPreset]
190
201
  };
202
+ const userImportOverrides = wywNext.loaderOptions?.importOverrides;
203
+ const importOverrides = userImportOverrides ? {
204
+ ...DEFAULT_REACT_IMPORT_OVERRIDES,
205
+ ...userImportOverrides
206
+ } : DEFAULT_REACT_IMPORT_OVERRIDES;
191
207
  const loaderOptions = {
192
208
  cssImport: 'import',
193
209
  ...wywNext.loaderOptions,
194
210
  babelOptions,
195
211
  extension,
212
+ importOverrides,
196
213
  sourceMap: wywNext.loaderOptions?.sourceMap ?? nextOptions.dev
197
214
  };
198
215
  const wywLoaderItem = {
@@ -282,12 +299,17 @@ function injectWywTurbopackRules(nextConfig, wywNext) {
282
299
  });
283
300
  const userOptions = wywNext.turbopackLoaderOptions ?? {};
284
301
  assertNoFunctions(userOptions, 'turbopackLoaderOptions');
302
+ const userImportOverrides = isPlainObject(userOptions.importOverrides) ? userOptions.importOverrides : undefined;
285
303
  const loaderOptions = {
286
304
  babelOptions: {
287
305
  presets: [nextBabelPreset]
288
306
  },
289
307
  sourceMap: process.env.NODE_ENV !== 'production',
290
- ...userOptions
308
+ ...userOptions,
309
+ importOverrides: userImportOverrides ? {
310
+ ...DEFAULT_REACT_IMPORT_OVERRIDES,
311
+ ...userImportOverrides
312
+ } : DEFAULT_REACT_IMPORT_OVERRIDES
291
313
  };
292
314
  const useTurbopackConfig = shouldUseTurbopackConfig(nextConfig);
293
315
  const isNextBuild = process.argv.includes('build');
package/esm/index.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["fs","path","DEFAULT_EXTENSION","DEFAULT_TURBO_RULE_KEYS","PLACEHOLDER_EXTENSIONS","Set","PLACEHOLDER_IGNORED_DIRS","isObject","value","isUseLoaderObject","item","loader","normalizeUseItems","use","list","Array","isArray","filter","Boolean","length","getLoaderName","isWywLoaderPath","includes","test","convertLoaderRuleToUseRule","rule","wywLoaderItem","alreadyInjected","isNextJsTranspileRule","some","needle","options","nextRule","Object","assign","undefined","traverseRules","rules","visitor","oneOf","escapeRegExp","replace","isPlainObject","proto","getPrototypeOf","prototype","assertNoFunctions","name","queue","seen","current","shift","Error","has","add","forEach","idx","push","entries","key","createWywCssModuleRule","baseRule","extensionSuffix","patchedUse","map","itemOptions","modules","nextModules","mode","getLocalIdent","_context","_localIdentName","localName","sideEffects","RegExp","ensureWywCssModuleRules","config","module","expectedTestSource","alreadyPresent","candidate","source","candidateRule","isModuleCssRule","hasCssLoader","splice","injectWywLoader","nextOptions","wywNext","require","resolve","nextBabelPreset","paths","process","cwd","extension","loaderOptions","babelOptions","presets","cssImport","sourceMap","dev","loaders","l","ensureTurbopackCssPlaceholders","projectRoot","dir","pop","readdirSync","withFileTypes","entry","entryPath","join","isDirectory","isFile","shouldIgnore","startsWith","endsWith","ext","extname","baseName","basename","cssFilePath","dirname","writeFileSync","flag","err","code","shouldUseTurbopackConfig","nextConfig","explicit","turbopack","pkgPath","pkg","version","major","Number","parseInt","split","isFinite","injectWywTurbopackRules","userOptions","turbopackLoaderOptions","env","NODE_ENV","useTurbopackConfig","isNextBuild","argv","isWebpackBuild","ruleValue","condition","all","not","wywRules","fromEntries","turbopackConfig","userTurbopack","userRules","userExperimental","experimental","userTurbo","turbo","withWyw","userWebpack","webpack","resolvedConfig"],"sources":["../src/index.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\n\nimport type { LoaderOptions as WywWebpackLoaderOptions } from '@wyw-in-js/webpack-loader';\nimport type { NextConfig } from 'next';\nimport type { Configuration, RuleSetRule, RuleSetUseItem } from 'webpack';\n\nconst DEFAULT_EXTENSION = '.wyw-in-js.module.css';\n\nconst DEFAULT_TURBO_RULE_KEYS = ['*.js', '*.jsx', '*.ts', '*.tsx'];\n\nconst PLACEHOLDER_EXTENSIONS = new Set(['.js', '.jsx', '.ts', '.tsx']);\nconst PLACEHOLDER_IGNORED_DIRS = new Set([\n '.git',\n '.next',\n '.turbo',\n 'node_modules',\n]);\n\nexport type WywNextPluginOptions = {\n loaderOptions?: Omit<WywWebpackLoaderOptions, 'extension' | 'sourceMap'> &\n Partial<Pick<WywWebpackLoaderOptions, 'extension' | 'sourceMap'>>;\n turbopackLoaderOptions?: Record<string, unknown>;\n};\n\ntype NextWebpackConfigFn = NonNullable<NextConfig['webpack']>;\ntype NextWebpackOptions = Parameters<NextWebpackConfigFn>[1];\n\nfunction isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null;\n}\n\nfunction isUseLoaderObject(\n item: RuleSetUseItem\n): item is Exclude<RuleSetUseItem, string> & { loader: string } {\n return (\n isObject(item) &&\n typeof (item as Record<string, unknown>).loader === 'string'\n );\n}\n\nfunction normalizeUseItems(use: RuleSetRule['use']): RuleSetUseItem[] | null {\n if (!use) return null;\n if (typeof use === 'function') return null;\n\n const list = (Array.isArray(use) ? use : [use]).filter(Boolean);\n return list.length ? (list as RuleSetUseItem[]) : null;\n}\n\nfunction getLoaderName(item: RuleSetUseItem): string {\n if (typeof item === 'string') return item;\n if (isUseLoaderObject(item)) return item.loader;\n return '';\n}\n\nfunction isWywLoaderPath(loader: string) {\n return (\n loader.includes('@wyw-in-js/webpack-loader') ||\n /[\\\\/]webpack-loader[\\\\/]/.test(loader)\n );\n}\n\nfunction convertLoaderRuleToUseRule(\n rule: RuleSetRule,\n wywLoaderItem: RuleSetUseItem\n) {\n const { loader } = rule as { loader?: unknown };\n if (typeof loader !== 'string') return;\n\n const alreadyInjected = isWywLoaderPath(loader);\n if (alreadyInjected) return;\n\n const isNextJsTranspileRule = [\n 'next-swc-loader',\n 'next-babel-loader',\n 'babel-loader',\n ].some((needle) => loader.includes(needle));\n if (!isNextJsTranspileRule) return;\n\n const { options } = rule as { options?: unknown };\n\n const nextRule = rule as RuleSetRule & {\n loader?: unknown;\n options?: unknown;\n };\n\n delete nextRule.loader;\n delete nextRule.options;\n\n // Loader order is right-to-left. We want WyW to run first, so it should be last.\n Object.assign(nextRule, {\n use: [\n { loader, ...(options !== undefined ? { options } : {}) },\n wywLoaderItem,\n ],\n });\n}\n\nfunction traverseRules(rules: unknown[], visitor: (rule: RuleSetRule) => void) {\n for (const rule of rules) {\n if (rule && typeof rule === 'object') {\n visitor(rule as RuleSetRule);\n\n if (Array.isArray((rule as RuleSetRule).oneOf)) {\n traverseRules((rule as RuleSetRule).oneOf!, visitor);\n }\n if (Array.isArray((rule as RuleSetRule).rules)) {\n traverseRules((rule as RuleSetRule).rules!, visitor);\n }\n }\n }\n}\n\nfunction escapeRegExp(value: string) {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n if (!isObject(value)) return false;\n const proto = Object.getPrototypeOf(value);\n return proto === Object.prototype || proto === null;\n}\n\nfunction assertNoFunctions(value: unknown, name: string) {\n const queue: Array<{ path: string; value: unknown }> = [\n { path: name, value },\n ];\n const seen = new Set<unknown>();\n\n while (queue.length) {\n const current = queue.shift()!;\n\n if (typeof current.value === 'function') {\n throw new Error(\n `${current.path} must be JSON-serializable (functions are not supported in Turbopack loader options). Use \"configFile\" to pass non-JSON config.`\n );\n }\n\n if (current.value === null) {\n // skip\n } else if (Array.isArray(current.value)) {\n if (!seen.has(current.value)) {\n seen.add(current.value);\n current.value.forEach((item, idx) =>\n queue.push({ path: `${current.path}[${idx}]`, value: item })\n );\n }\n } else if (isPlainObject(current.value)) {\n if (!seen.has(current.value)) {\n seen.add(current.value);\n Object.entries(current.value).forEach(([key, item]) =>\n queue.push({ path: `${current.path}.${key}`, value: item })\n );\n }\n }\n }\n}\n\nfunction createWywCssModuleRule(\n baseRule: RuleSetRule,\n extensionSuffix: string\n): RuleSetRule {\n const use = normalizeUseItems(baseRule.use) ?? [];\n\n const patchedUse = use.map((item) => {\n if (!isUseLoaderObject(item) || !item.loader.includes('css-loader')) {\n return item;\n }\n\n const itemOptions = (item as { options?: unknown }).options;\n if (!isObject(itemOptions)) {\n return item;\n }\n\n const { modules } = itemOptions as { modules?: unknown };\n if (!isObject(modules)) {\n return item;\n }\n\n const nextModules = {\n ...(modules as Record<string, unknown>),\n mode: 'global',\n getLocalIdent: (\n _context: unknown,\n _localIdentName: string,\n localName: string\n ) => localName,\n };\n\n return {\n ...item,\n options: {\n ...(itemOptions as Record<string, unknown>),\n modules: nextModules,\n },\n };\n });\n\n const nextRule: RuleSetRule = {\n ...baseRule,\n sideEffects: true,\n test: new RegExp(`${escapeRegExp(extensionSuffix)}$`),\n use: patchedUse,\n };\n\n return nextRule;\n}\n\nfunction ensureWywCssModuleRules(\n config: Configuration,\n extensionSuffix: string\n) {\n traverseRules(config.module?.rules ?? [], (rule) => {\n if (!Array.isArray(rule.oneOf) || rule.oneOf.length === 0) {\n return;\n }\n\n const expectedTestSource = `${escapeRegExp(extensionSuffix)}$`;\n\n const alreadyPresent = rule.oneOf.some((candidate) => {\n if (!candidate || typeof candidate !== 'object') return false;\n\n const { test } = candidate as RuleSetRule;\n return test instanceof RegExp && test.source === expectedTestSource;\n });\n\n if (alreadyPresent) {\n return;\n }\n\n const oneOf = rule.oneOf as unknown[];\n for (let idx = 0; idx < oneOf.length; idx += 1) {\n const candidate = oneOf[idx];\n if (candidate && typeof candidate === 'object') {\n const candidateRule = candidate as RuleSetRule;\n const { test } = candidateRule;\n\n const isModuleCssRule =\n test instanceof RegExp && test.source.includes('\\\\.module\\\\.css');\n\n if (isModuleCssRule) {\n const use = normalizeUseItems(candidateRule.use);\n if (use) {\n const hasCssLoader = use.some(\n (item) =>\n isUseLoaderObject(item) && item.loader.includes('css-loader')\n );\n if (hasCssLoader) {\n oneOf.splice(\n idx,\n 0,\n createWywCssModuleRule(candidateRule, extensionSuffix)\n );\n break;\n }\n }\n }\n }\n }\n });\n}\n\nfunction injectWywLoader(\n config: Configuration,\n nextOptions: NextWebpackOptions,\n wywNext: WywNextPluginOptions\n) {\n const loader = require.resolve('@wyw-in-js/webpack-loader');\n const nextBabelPreset = require.resolve('next/babel', {\n paths: [process.cwd()],\n });\n\n const extension = wywNext.loaderOptions?.extension ?? DEFAULT_EXTENSION;\n const babelOptions = wywNext.loaderOptions?.babelOptions ?? {\n presets: [nextBabelPreset],\n };\n\n const loaderOptions = {\n cssImport: 'import',\n ...wywNext.loaderOptions,\n babelOptions,\n extension,\n sourceMap: wywNext.loaderOptions?.sourceMap ?? nextOptions.dev,\n } satisfies WywWebpackLoaderOptions;\n\n const wywLoaderItem: RuleSetUseItem = {\n loader,\n options: loaderOptions,\n };\n\n traverseRules(config.module?.rules ?? [], (rule) => {\n convertLoaderRuleToUseRule(rule, wywLoaderItem);\n\n const use = normalizeUseItems(rule.use);\n if (!use) return;\n\n const loaders = use.map(getLoaderName);\n\n const alreadyInjected = loaders.some(\n (l) => l === loader || isWywLoaderPath(l)\n );\n if (alreadyInjected) return;\n\n const isNextJsTranspileRule = loaders.some((l) =>\n ['next-swc-loader', 'next-babel-loader', 'babel-loader'].some((needle) =>\n l.includes(needle)\n )\n );\n if (!isNextJsTranspileRule) return;\n\n // Loader order is right-to-left. We want WyW to run first, so it should be last.\n Object.assign(rule, { use: [...use, wywLoaderItem] });\n });\n\n ensureWywCssModuleRules(config, extension);\n}\n\nfunction ensureTurbopackCssPlaceholders(projectRoot: string) {\n const queue: string[] = [projectRoot];\n\n while (queue.length) {\n const dir = queue.pop()!;\n let entries: fs.Dirent[];\n\n try {\n entries = fs.readdirSync(dir, { withFileTypes: true });\n } catch {\n entries = [];\n }\n\n for (const entry of entries) {\n if (entry.name !== '.' && entry.name !== '..') {\n const entryPath = path.join(dir, entry.name);\n\n if (entry.isDirectory()) {\n if (!PLACEHOLDER_IGNORED_DIRS.has(entry.name)) {\n queue.push(entryPath);\n }\n } else if (entry.isFile()) {\n const shouldIgnore =\n entry.name.startsWith('middleware.') ||\n entry.name.endsWith('.d.ts');\n\n if (!shouldIgnore) {\n const ext = path.extname(entry.name);\n if (PLACEHOLDER_EXTENSIONS.has(ext)) {\n const baseName = path.basename(entry.name, ext);\n const cssFilePath = path.join(\n path.dirname(entryPath),\n `${baseName}${DEFAULT_EXTENSION}`\n );\n\n try {\n fs.writeFileSync(cssFilePath, '', { flag: 'wx' });\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code !== 'EEXIST') {\n throw err;\n }\n }\n }\n }\n }\n }\n }\n }\n}\n\nfunction shouldUseTurbopackConfig(nextConfig: NextConfig) {\n const explicit = (nextConfig as unknown as Record<string, unknown>).turbopack;\n if (typeof explicit !== 'undefined') {\n return true;\n }\n\n try {\n const pkgPath = require.resolve('next/package.json', {\n paths: [process.cwd()],\n });\n const pkg = require(pkgPath) as { version?: unknown };\n const version = typeof pkg.version === 'string' ? pkg.version : '';\n const major = Number.parseInt(version.split('.')[0] ?? '', 10);\n return Number.isFinite(major) && major >= 16;\n } catch {\n return false;\n }\n}\n\nfunction injectWywTurbopackRules(\n nextConfig: NextConfig,\n wywNext: WywNextPluginOptions\n): NextConfig {\n const loader = require.resolve('@wyw-in-js/turbopack-loader');\n const nextBabelPreset = require.resolve('next/babel', {\n paths: [process.cwd()],\n });\n\n const userOptions = wywNext.turbopackLoaderOptions ?? {};\n\n assertNoFunctions(userOptions, 'turbopackLoaderOptions');\n\n const loaderOptions = {\n babelOptions: { presets: [nextBabelPreset] },\n sourceMap: process.env.NODE_ENV !== 'production',\n ...userOptions,\n };\n\n const useTurbopackConfig = shouldUseTurbopackConfig(nextConfig);\n\n const isNextBuild = process.argv.includes('build');\n const isWebpackBuild = process.argv.includes('--webpack');\n\n if (\n useTurbopackConfig &&\n process.env.NODE_ENV === 'production' &&\n isNextBuild &&\n !isWebpackBuild\n ) {\n ensureTurbopackCssPlaceholders(process.cwd());\n }\n\n const ruleValue = useTurbopackConfig\n ? {\n loaders: [{ loader, options: loaderOptions }],\n condition: {\n all: [\n { not: 'foreign' },\n { not: { path: /(?:^|[\\\\/])middleware\\.[jt]sx?$/ } },\n ],\n },\n }\n : [{ loader, options: loaderOptions }];\n\n const wywRules = Object.fromEntries(\n DEFAULT_TURBO_RULE_KEYS.map((key) => [key, ruleValue])\n );\n\n if (useTurbopackConfig) {\n const turbopackConfig = (nextConfig as unknown as Record<string, unknown>)\n .turbopack;\n const userTurbopack = isPlainObject(turbopackConfig) ? turbopackConfig : {};\n\n const userRules = isPlainObject(userTurbopack.rules)\n ? (userTurbopack.rules as Record<string, unknown>)\n : {};\n\n return {\n ...nextConfig,\n turbopack: {\n ...userTurbopack,\n rules: {\n ...wywRules,\n ...userRules,\n },\n },\n } as NextConfig;\n }\n\n const userExperimental = isPlainObject(nextConfig.experimental)\n ? (nextConfig.experimental as Record<string, unknown>)\n : {};\n\n const userTurbo = isPlainObject(userExperimental.turbo)\n ? (userExperimental.turbo as Record<string, unknown>)\n : {};\n\n const userRules = isPlainObject(userTurbo.rules)\n ? (userTurbo.rules as Record<string, unknown>)\n : {};\n\n return {\n ...nextConfig,\n experimental: {\n ...userExperimental,\n turbo: {\n ...userTurbo,\n rules: {\n ...wywRules,\n ...userRules,\n },\n },\n },\n } as NextConfig;\n}\n\nexport function withWyw(\n nextConfig: NextConfig = {},\n wywNext: WywNextPluginOptions = {}\n): NextConfig {\n const userWebpack = nextConfig.webpack;\n\n return {\n ...injectWywTurbopackRules(nextConfig, wywNext),\n webpack(config: Configuration, options: NextWebpackOptions) {\n const resolvedConfig =\n typeof userWebpack === 'function'\n ? userWebpack(config, options)\n : config;\n\n injectWywLoader(resolvedConfig, options, wywNext);\n\n return resolvedConfig;\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.mjs","names":["fs","path","DEFAULT_EXTENSION","DEFAULT_TURBO_RULE_KEYS","DEFAULT_REACT_IMPORT_OVERRIDES","react","mock","PLACEHOLDER_EXTENSIONS","Set","PLACEHOLDER_IGNORED_DIRS","isObject","value","isUseLoaderObject","item","loader","normalizeUseItems","use","list","Array","isArray","filter","Boolean","length","getLoaderName","isWywLoaderPath","includes","test","convertLoaderRuleToUseRule","rule","wywLoaderItem","alreadyInjected","isNextJsTranspileRule","some","needle","options","nextRule","Object","assign","undefined","traverseRules","rules","visitor","oneOf","escapeRegExp","replace","isPlainObject","proto","getPrototypeOf","prototype","assertNoFunctions","name","queue","seen","current","shift","Error","has","add","forEach","idx","push","entries","key","createWywCssModuleRule","baseRule","extensionSuffix","patchedUse","map","itemOptions","modules","nextModules","mode","getLocalIdent","_context","_localIdentName","localName","sideEffects","RegExp","ensureWywCssModuleRules","config","module","expectedTestSource","alreadyPresent","candidate","source","candidateRule","isModuleCssRule","hasCssLoader","splice","injectWywLoader","nextOptions","wywNext","require","resolve","nextBabelPreset","paths","process","cwd","extension","loaderOptions","babelOptions","presets","userImportOverrides","importOverrides","cssImport","sourceMap","dev","loaders","l","ensureTurbopackCssPlaceholders","projectRoot","dir","pop","readdirSync","withFileTypes","entry","entryPath","join","isDirectory","isFile","shouldIgnore","startsWith","endsWith","ext","extname","baseName","basename","cssFilePath","dirname","writeFileSync","flag","err","code","shouldUseTurbopackConfig","nextConfig","explicit","turbopack","pkgPath","pkg","version","major","Number","parseInt","split","isFinite","injectWywTurbopackRules","userOptions","turbopackLoaderOptions","env","NODE_ENV","useTurbopackConfig","isNextBuild","argv","isWebpackBuild","ruleValue","condition","all","not","wywRules","fromEntries","turbopackConfig","userTurbopack","userRules","userExperimental","experimental","userTurbo","turbo","withWyw","userWebpack","webpack","resolvedConfig"],"sources":["../src/index.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\n\nimport type { LoaderOptions as WywWebpackLoaderOptions } from '@wyw-in-js/webpack-loader';\nimport type { NextConfig } from 'next';\nimport type { Configuration, RuleSetRule, RuleSetUseItem } from 'webpack';\n\nconst DEFAULT_EXTENSION = '.wyw-in-js.module.css';\n\nconst DEFAULT_TURBO_RULE_KEYS = ['*.js', '*.jsx', '*.ts', '*.tsx'];\n\nconst DEFAULT_REACT_IMPORT_OVERRIDES = {\n react: { mock: 'react' },\n 'react/jsx-runtime': { mock: 'react/jsx-runtime' },\n 'react/jsx-dev-runtime': { mock: 'react/jsx-dev-runtime' },\n} satisfies WywWebpackLoaderOptions['importOverrides'];\n\nconst PLACEHOLDER_EXTENSIONS = new Set(['.js', '.jsx', '.ts', '.tsx']);\nconst PLACEHOLDER_IGNORED_DIRS = new Set([\n '.git',\n '.next',\n '.turbo',\n 'node_modules',\n]);\n\nexport type WywNextPluginOptions = {\n loaderOptions?: Omit<WywWebpackLoaderOptions, 'extension' | 'sourceMap'> &\n Partial<Pick<WywWebpackLoaderOptions, 'extension' | 'sourceMap'>>;\n turbopackLoaderOptions?: Record<string, unknown>;\n};\n\ntype NextWebpackConfigFn = NonNullable<NextConfig['webpack']>;\ntype NextWebpackOptions = Parameters<NextWebpackConfigFn>[1];\n\nfunction isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null;\n}\n\nfunction isUseLoaderObject(\n item: RuleSetUseItem\n): item is Exclude<RuleSetUseItem, string> & { loader: string } {\n return (\n isObject(item) &&\n typeof (item as Record<string, unknown>).loader === 'string'\n );\n}\n\nfunction normalizeUseItems(use: RuleSetRule['use']): RuleSetUseItem[] | null {\n if (!use) return null;\n if (typeof use === 'function') return null;\n\n const list = (Array.isArray(use) ? use : [use]).filter(Boolean);\n return list.length ? (list as RuleSetUseItem[]) : null;\n}\n\nfunction getLoaderName(item: RuleSetUseItem): string {\n if (typeof item === 'string') return item;\n if (isUseLoaderObject(item)) return item.loader;\n return '';\n}\n\nfunction isWywLoaderPath(loader: string) {\n return (\n loader.includes('@wyw-in-js/webpack-loader') ||\n /[\\\\/]webpack-loader[\\\\/]/.test(loader)\n );\n}\n\nfunction convertLoaderRuleToUseRule(\n rule: RuleSetRule,\n wywLoaderItem: RuleSetUseItem\n) {\n const { loader } = rule as { loader?: unknown };\n if (typeof loader !== 'string') return;\n\n const alreadyInjected = isWywLoaderPath(loader);\n if (alreadyInjected) return;\n\n const isNextJsTranspileRule = [\n 'next-swc-loader',\n 'next-babel-loader',\n 'babel-loader',\n ].some((needle) => loader.includes(needle));\n if (!isNextJsTranspileRule) return;\n\n const { options } = rule as { options?: unknown };\n\n const nextRule = rule as RuleSetRule & {\n loader?: unknown;\n options?: unknown;\n };\n\n delete nextRule.loader;\n delete nextRule.options;\n\n // Loader order is right-to-left. We want WyW to run first, so it should be last.\n Object.assign(nextRule, {\n use: [\n { loader, ...(options !== undefined ? { options } : {}) },\n wywLoaderItem,\n ],\n });\n}\n\nfunction traverseRules(rules: unknown[], visitor: (rule: RuleSetRule) => void) {\n for (const rule of rules) {\n if (rule && typeof rule === 'object') {\n visitor(rule as RuleSetRule);\n\n if (Array.isArray((rule as RuleSetRule).oneOf)) {\n traverseRules((rule as RuleSetRule).oneOf!, visitor);\n }\n if (Array.isArray((rule as RuleSetRule).rules)) {\n traverseRules((rule as RuleSetRule).rules!, visitor);\n }\n }\n }\n}\n\nfunction escapeRegExp(value: string) {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n if (!isObject(value)) return false;\n const proto = Object.getPrototypeOf(value);\n return proto === Object.prototype || proto === null;\n}\n\nfunction assertNoFunctions(value: unknown, name: string) {\n const queue: Array<{ path: string; value: unknown }> = [\n { path: name, value },\n ];\n const seen = new Set<unknown>();\n\n while (queue.length) {\n const current = queue.shift()!;\n\n if (typeof current.value === 'function') {\n throw new Error(\n `${current.path} must be JSON-serializable (functions are not supported in Turbopack loader options). Use \"configFile\" to pass non-JSON config.`\n );\n }\n\n if (current.value === null) {\n // skip\n } else if (Array.isArray(current.value)) {\n if (!seen.has(current.value)) {\n seen.add(current.value);\n current.value.forEach((item, idx) =>\n queue.push({ path: `${current.path}[${idx}]`, value: item })\n );\n }\n } else if (isPlainObject(current.value)) {\n if (!seen.has(current.value)) {\n seen.add(current.value);\n Object.entries(current.value).forEach(([key, item]) =>\n queue.push({ path: `${current.path}.${key}`, value: item })\n );\n }\n }\n }\n}\n\nfunction createWywCssModuleRule(\n baseRule: RuleSetRule,\n extensionSuffix: string\n): RuleSetRule {\n const use = normalizeUseItems(baseRule.use) ?? [];\n\n const patchedUse = use.map((item) => {\n if (!isUseLoaderObject(item) || !item.loader.includes('css-loader')) {\n return item;\n }\n\n const itemOptions = (item as { options?: unknown }).options;\n if (!isObject(itemOptions)) {\n return item;\n }\n\n const { modules } = itemOptions as { modules?: unknown };\n if (!isObject(modules)) {\n return item;\n }\n\n const nextModules = {\n ...(modules as Record<string, unknown>),\n mode: 'global',\n getLocalIdent: (\n _context: unknown,\n _localIdentName: string,\n localName: string\n ) => localName,\n };\n\n return {\n ...item,\n options: {\n ...(itemOptions as Record<string, unknown>),\n modules: nextModules,\n },\n };\n });\n\n const nextRule: RuleSetRule = {\n ...baseRule,\n sideEffects: true,\n test: new RegExp(`${escapeRegExp(extensionSuffix)}$`),\n use: patchedUse,\n };\n\n return nextRule;\n}\n\nfunction ensureWywCssModuleRules(\n config: Configuration,\n extensionSuffix: string\n) {\n traverseRules(config.module?.rules ?? [], (rule) => {\n if (!Array.isArray(rule.oneOf) || rule.oneOf.length === 0) {\n return;\n }\n\n const expectedTestSource = `${escapeRegExp(extensionSuffix)}$`;\n\n const alreadyPresent = rule.oneOf.some((candidate) => {\n if (!candidate || typeof candidate !== 'object') return false;\n\n const { test } = candidate as RuleSetRule;\n return test instanceof RegExp && test.source === expectedTestSource;\n });\n\n if (alreadyPresent) {\n return;\n }\n\n const oneOf = rule.oneOf as unknown[];\n for (let idx = 0; idx < oneOf.length; idx += 1) {\n const candidate = oneOf[idx];\n if (candidate && typeof candidate === 'object') {\n const candidateRule = candidate as RuleSetRule;\n const { test } = candidateRule;\n\n const isModuleCssRule =\n test instanceof RegExp && test.source.includes('\\\\.module\\\\.css');\n\n if (isModuleCssRule) {\n const use = normalizeUseItems(candidateRule.use);\n if (use) {\n const hasCssLoader = use.some(\n (item) =>\n isUseLoaderObject(item) && item.loader.includes('css-loader')\n );\n if (hasCssLoader) {\n oneOf.splice(\n idx,\n 0,\n createWywCssModuleRule(candidateRule, extensionSuffix)\n );\n break;\n }\n }\n }\n }\n }\n });\n}\n\nfunction injectWywLoader(\n config: Configuration,\n nextOptions: NextWebpackOptions,\n wywNext: WywNextPluginOptions\n) {\n const loader = require.resolve('@wyw-in-js/webpack-loader');\n const nextBabelPreset = require.resolve('next/babel', {\n paths: [process.cwd()],\n });\n\n const extension = wywNext.loaderOptions?.extension ?? DEFAULT_EXTENSION;\n const babelOptions = wywNext.loaderOptions?.babelOptions ?? {\n presets: [nextBabelPreset],\n };\n\n const userImportOverrides = wywNext.loaderOptions?.importOverrides;\n const importOverrides = userImportOverrides\n ? { ...DEFAULT_REACT_IMPORT_OVERRIDES, ...userImportOverrides }\n : DEFAULT_REACT_IMPORT_OVERRIDES;\n\n const loaderOptions = {\n cssImport: 'import',\n ...wywNext.loaderOptions,\n babelOptions,\n extension,\n importOverrides,\n sourceMap: wywNext.loaderOptions?.sourceMap ?? nextOptions.dev,\n } satisfies WywWebpackLoaderOptions;\n\n const wywLoaderItem: RuleSetUseItem = {\n loader,\n options: loaderOptions,\n };\n\n traverseRules(config.module?.rules ?? [], (rule) => {\n convertLoaderRuleToUseRule(rule, wywLoaderItem);\n\n const use = normalizeUseItems(rule.use);\n if (!use) return;\n\n const loaders = use.map(getLoaderName);\n\n const alreadyInjected = loaders.some(\n (l) => l === loader || isWywLoaderPath(l)\n );\n if (alreadyInjected) return;\n\n const isNextJsTranspileRule = loaders.some((l) =>\n ['next-swc-loader', 'next-babel-loader', 'babel-loader'].some((needle) =>\n l.includes(needle)\n )\n );\n if (!isNextJsTranspileRule) return;\n\n // Loader order is right-to-left. We want WyW to run first, so it should be last.\n Object.assign(rule, { use: [...use, wywLoaderItem] });\n });\n\n ensureWywCssModuleRules(config, extension);\n}\n\nfunction ensureTurbopackCssPlaceholders(projectRoot: string) {\n const queue: string[] = [projectRoot];\n\n while (queue.length) {\n const dir = queue.pop()!;\n let entries: fs.Dirent[];\n\n try {\n entries = fs.readdirSync(dir, { withFileTypes: true });\n } catch {\n entries = [];\n }\n\n for (const entry of entries) {\n if (entry.name !== '.' && entry.name !== '..') {\n const entryPath = path.join(dir, entry.name);\n\n if (entry.isDirectory()) {\n if (!PLACEHOLDER_IGNORED_DIRS.has(entry.name)) {\n queue.push(entryPath);\n }\n } else if (entry.isFile()) {\n const shouldIgnore =\n entry.name.startsWith('middleware.') ||\n entry.name.endsWith('.d.ts');\n\n if (!shouldIgnore) {\n const ext = path.extname(entry.name);\n if (PLACEHOLDER_EXTENSIONS.has(ext)) {\n const baseName = path.basename(entry.name, ext);\n const cssFilePath = path.join(\n path.dirname(entryPath),\n `${baseName}${DEFAULT_EXTENSION}`\n );\n\n try {\n fs.writeFileSync(cssFilePath, '', { flag: 'wx' });\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code !== 'EEXIST') {\n throw err;\n }\n }\n }\n }\n }\n }\n }\n }\n}\n\nfunction shouldUseTurbopackConfig(nextConfig: NextConfig) {\n const explicit = (nextConfig as unknown as Record<string, unknown>).turbopack;\n if (typeof explicit !== 'undefined') {\n return true;\n }\n\n try {\n const pkgPath = require.resolve('next/package.json', {\n paths: [process.cwd()],\n });\n const pkg = require(pkgPath) as { version?: unknown };\n const version = typeof pkg.version === 'string' ? pkg.version : '';\n const major = Number.parseInt(version.split('.')[0] ?? '', 10);\n return Number.isFinite(major) && major >= 16;\n } catch {\n return false;\n }\n}\n\nfunction injectWywTurbopackRules(\n nextConfig: NextConfig,\n wywNext: WywNextPluginOptions\n): NextConfig {\n const loader = require.resolve('@wyw-in-js/turbopack-loader');\n const nextBabelPreset = require.resolve('next/babel', {\n paths: [process.cwd()],\n });\n\n const userOptions = wywNext.turbopackLoaderOptions ?? {};\n\n assertNoFunctions(userOptions, 'turbopackLoaderOptions');\n\n const userImportOverrides = isPlainObject(userOptions.importOverrides)\n ? (userOptions.importOverrides as Record<string, unknown>)\n : undefined;\n\n const loaderOptions = {\n babelOptions: { presets: [nextBabelPreset] },\n sourceMap: process.env.NODE_ENV !== 'production',\n ...userOptions,\n importOverrides: userImportOverrides\n ? { ...DEFAULT_REACT_IMPORT_OVERRIDES, ...userImportOverrides }\n : DEFAULT_REACT_IMPORT_OVERRIDES,\n };\n\n const useTurbopackConfig = shouldUseTurbopackConfig(nextConfig);\n\n const isNextBuild = process.argv.includes('build');\n const isWebpackBuild = process.argv.includes('--webpack');\n\n if (\n useTurbopackConfig &&\n process.env.NODE_ENV === 'production' &&\n isNextBuild &&\n !isWebpackBuild\n ) {\n ensureTurbopackCssPlaceholders(process.cwd());\n }\n\n const ruleValue = useTurbopackConfig\n ? {\n loaders: [{ loader, options: loaderOptions }],\n condition: {\n all: [\n { not: 'foreign' },\n { not: { path: /(?:^|[\\\\/])middleware\\.[jt]sx?$/ } },\n ],\n },\n }\n : [{ loader, options: loaderOptions }];\n\n const wywRules = Object.fromEntries(\n DEFAULT_TURBO_RULE_KEYS.map((key) => [key, ruleValue])\n );\n\n if (useTurbopackConfig) {\n const turbopackConfig = (nextConfig as unknown as Record<string, unknown>)\n .turbopack;\n const userTurbopack = isPlainObject(turbopackConfig) ? turbopackConfig : {};\n\n const userRules = isPlainObject(userTurbopack.rules)\n ? (userTurbopack.rules as Record<string, unknown>)\n : {};\n\n return {\n ...nextConfig,\n turbopack: {\n ...userTurbopack,\n rules: {\n ...wywRules,\n ...userRules,\n },\n },\n } as NextConfig;\n }\n\n const userExperimental = isPlainObject(nextConfig.experimental)\n ? (nextConfig.experimental as Record<string, unknown>)\n : {};\n\n const userTurbo = isPlainObject(userExperimental.turbo)\n ? (userExperimental.turbo as Record<string, unknown>)\n : {};\n\n const userRules = isPlainObject(userTurbo.rules)\n ? (userTurbo.rules as Record<string, unknown>)\n : {};\n\n return {\n ...nextConfig,\n experimental: {\n ...userExperimental,\n turbo: {\n ...userTurbo,\n rules: {\n ...wywRules,\n ...userRules,\n },\n },\n },\n } as NextConfig;\n}\n\nexport function withWyw(\n nextConfig: NextConfig = {},\n wywNext: WywNextPluginOptions = {}\n): NextConfig {\n const userWebpack = nextConfig.webpack;\n\n return {\n ...injectWywTurbopackRules(nextConfig, wywNext),\n webpack(config: Configuration, options: NextWebpackOptions) {\n const resolvedConfig =\n typeof userWebpack === 'function'\n ? userWebpack(config, options)\n : config;\n\n injectWywLoader(resolvedConfig, options, wywNext);\n\n return resolvedConfig;\n },\n };\n}\n"],"mappings":"AAAA,OAAOA,EAAE,MAAM,IAAI;AACnB,OAAOC,IAAI,MAAM,MAAM;AAMvB,MAAMC,iBAAiB,GAAG,uBAAuB;AAEjD,MAAMC,uBAAuB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC;AAElE,MAAMC,8BAA8B,GAAG;EACrCC,KAAK,EAAE;IAAEC,IAAI,EAAE;EAAQ,CAAC;EACxB,mBAAmB,EAAE;IAAEA,IAAI,EAAE;EAAoB,CAAC;EAClD,uBAAuB,EAAE;IAAEA,IAAI,EAAE;EAAwB;AAC3D,CAAsD;AAEtD,MAAMC,sBAAsB,GAAG,IAAIC,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACtE,MAAMC,wBAAwB,GAAG,IAAID,GAAG,CAAC,CACvC,MAAM,EACN,OAAO,EACP,QAAQ,EACR,cAAc,CACf,CAAC;AAWF,SAASE,QAAQA,CAACC,KAAc,EAAoC;EAClE,OAAO,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI;AACpD;AAEA,SAASC,iBAAiBA,CACxBC,IAAoB,EAC0C;EAC9D,OACEH,QAAQ,CAACG,IAAI,CAAC,IACd,OAAQA,IAAI,CAA6BC,MAAM,KAAK,QAAQ;AAEhE;AAEA,SAASC,iBAAiBA,CAACC,GAAuB,EAA2B;EAC3E,IAAI,CAACA,GAAG,EAAE,OAAO,IAAI;EACrB,IAAI,OAAOA,GAAG,KAAK,UAAU,EAAE,OAAO,IAAI;EAE1C,MAAMC,IAAI,GAAG,CAACC,KAAK,CAACC,OAAO,CAACH,GAAG,CAAC,GAAGA,GAAG,GAAG,CAACA,GAAG,CAAC,EAAEI,MAAM,CAACC,OAAO,CAAC;EAC/D,OAAOJ,IAAI,CAACK,MAAM,GAAIL,IAAI,GAAwB,IAAI;AACxD;AAEA,SAASM,aAAaA,CAACV,IAAoB,EAAU;EACnD,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE,OAAOA,IAAI;EACzC,IAAID,iBAAiB,CAACC,IAAI,CAAC,EAAE,OAAOA,IAAI,CAACC,MAAM;EAC/C,OAAO,EAAE;AACX;AAEA,SAASU,eAAeA,CAACV,MAAc,EAAE;EACvC,OACEA,MAAM,CAACW,QAAQ,CAAC,2BAA2B,CAAC,IAC5C,0BAA0B,CAACC,IAAI,CAACZ,MAAM,CAAC;AAE3C;AAEA,SAASa,0BAA0BA,CACjCC,IAAiB,EACjBC,aAA6B,EAC7B;EACA,MAAM;IAAEf;EAAO,CAAC,GAAGc,IAA4B;EAC/C,IAAI,OAAOd,MAAM,KAAK,QAAQ,EAAE;EAEhC,MAAMgB,eAAe,GAAGN,eAAe,CAACV,MAAM,CAAC;EAC/C,IAAIgB,eAAe,EAAE;EAErB,MAAMC,qBAAqB,GAAG,CAC5B,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,CACf,CAACC,IAAI,CAAEC,MAAM,IAAKnB,MAAM,CAACW,QAAQ,CAACQ,MAAM,CAAC,CAAC;EAC3C,IAAI,CAACF,qBAAqB,EAAE;EAE5B,MAAM;IAAEG;EAAQ,CAAC,GAAGN,IAA6B;EAEjD,MAAMO,QAAQ,GAAGP,IAGhB;EAED,OAAOO,QAAQ,CAACrB,MAAM;EACtB,OAAOqB,QAAQ,CAACD,OAAO;;EAEvB;EACAE,MAAM,CAACC,MAAM,CAACF,QAAQ,EAAE;IACtBnB,GAAG,EAAE,CACH;MAAEF,MAAM;MAAE,IAAIoB,OAAO,KAAKI,SAAS,GAAG;QAAEJ;MAAQ,CAAC,GAAG,CAAC,CAAC;IAAE,CAAC,EACzDL,aAAa;EAEjB,CAAC,CAAC;AACJ;AAEA,SAASU,aAAaA,CAACC,KAAgB,EAAEC,OAAoC,EAAE;EAC7E,KAAK,MAAMb,IAAI,IAAIY,KAAK,EAAE;IACxB,IAAIZ,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;MACpCa,OAAO,CAACb,IAAmB,CAAC;MAE5B,IAAIV,KAAK,CAACC,OAAO,CAAES,IAAI,CAAiBc,KAAK,CAAC,EAAE;QAC9CH,aAAa,CAAEX,IAAI,CAAiBc,KAAK,EAAGD,OAAO,CAAC;MACtD;MACA,IAAIvB,KAAK,CAACC,OAAO,CAAES,IAAI,CAAiBY,KAAK,CAAC,EAAE;QAC9CD,aAAa,CAAEX,IAAI,CAAiBY,KAAK,EAAGC,OAAO,CAAC;MACtD;IACF;EACF;AACF;AAEA,SAASE,YAAYA,CAAChC,KAAa,EAAE;EACnC,OAAOA,KAAK,CAACiC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC;AACrD;AAEA,SAASC,aAAaA,CAAClC,KAAc,EAAoC;EACvE,IAAI,CAACD,QAAQ,CAACC,KAAK,CAAC,EAAE,OAAO,KAAK;EAClC,MAAMmC,KAAK,GAAGV,MAAM,CAACW,cAAc,CAACpC,KAAK,CAAC;EAC1C,OAAOmC,KAAK,KAAKV,MAAM,CAACY,SAAS,IAAIF,KAAK,KAAK,IAAI;AACrD;AAEA,SAASG,iBAAiBA,CAACtC,KAAc,EAAEuC,IAAY,EAAE;EACvD,MAAMC,KAA8C,GAAG,CACrD;IAAElD,IAAI,EAAEiD,IAAI;IAAEvC;EAAM,CAAC,CACtB;EACD,MAAMyC,IAAI,GAAG,IAAI5C,GAAG,CAAU,CAAC;EAE/B,OAAO2C,KAAK,CAAC7B,MAAM,EAAE;IACnB,MAAM+B,OAAO,GAAGF,KAAK,CAACG,KAAK,CAAC,CAAE;IAE9B,IAAI,OAAOD,OAAO,CAAC1C,KAAK,KAAK,UAAU,EAAE;MACvC,MAAM,IAAI4C,KAAK,CACb,GAAGF,OAAO,CAACpD,IAAI,iIACjB,CAAC;IACH;IAEA,IAAIoD,OAAO,CAAC1C,KAAK,KAAK,IAAI,EAAE;MAC1B;IAAA,CACD,MAAM,IAAIO,KAAK,CAACC,OAAO,CAACkC,OAAO,CAAC1C,KAAK,CAAC,EAAE;MACvC,IAAI,CAACyC,IAAI,CAACI,GAAG,CAACH,OAAO,CAAC1C,KAAK,CAAC,EAAE;QAC5ByC,IAAI,CAACK,GAAG,CAACJ,OAAO,CAAC1C,KAAK,CAAC;QACvB0C,OAAO,CAAC1C,KAAK,CAAC+C,OAAO,CAAC,CAAC7C,IAAI,EAAE8C,GAAG,KAC9BR,KAAK,CAACS,IAAI,CAAC;UAAE3D,IAAI,EAAE,GAAGoD,OAAO,CAACpD,IAAI,IAAI0D,GAAG,GAAG;UAAEhD,KAAK,EAAEE;QAAK,CAAC,CAC7D,CAAC;MACH;IACF,CAAC,MAAM,IAAIgC,aAAa,CAACQ,OAAO,CAAC1C,KAAK,CAAC,EAAE;MACvC,IAAI,CAACyC,IAAI,CAACI,GAAG,CAACH,OAAO,CAAC1C,KAAK,CAAC,EAAE;QAC5ByC,IAAI,CAACK,GAAG,CAACJ,OAAO,CAAC1C,KAAK,CAAC;QACvByB,MAAM,CAACyB,OAAO,CAACR,OAAO,CAAC1C,KAAK,CAAC,CAAC+C,OAAO,CAAC,CAAC,CAACI,GAAG,EAAEjD,IAAI,CAAC,KAChDsC,KAAK,CAACS,IAAI,CAAC;UAAE3D,IAAI,EAAE,GAAGoD,OAAO,CAACpD,IAAI,IAAI6D,GAAG,EAAE;UAAEnD,KAAK,EAAEE;QAAK,CAAC,CAC5D,CAAC;MACH;IACF;EACF;AACF;AAEA,SAASkD,sBAAsBA,CAC7BC,QAAqB,EACrBC,eAAuB,EACV;EACb,MAAMjD,GAAG,GAAGD,iBAAiB,CAACiD,QAAQ,CAAChD,GAAG,CAAC,IAAI,EAAE;EAEjD,MAAMkD,UAAU,GAAGlD,GAAG,CAACmD,GAAG,CAAEtD,IAAI,IAAK;IACnC,IAAI,CAACD,iBAAiB,CAACC,IAAI,CAAC,IAAI,CAACA,IAAI,CAACC,MAAM,CAACW,QAAQ,CAAC,YAAY,CAAC,EAAE;MACnE,OAAOZ,IAAI;IACb;IAEA,MAAMuD,WAAW,GAAIvD,IAAI,CAA2BqB,OAAO;IAC3D,IAAI,CAACxB,QAAQ,CAAC0D,WAAW,CAAC,EAAE;MAC1B,OAAOvD,IAAI;IACb;IAEA,MAAM;MAAEwD;IAAQ,CAAC,GAAGD,WAAoC;IACxD,IAAI,CAAC1D,QAAQ,CAAC2D,OAAO,CAAC,EAAE;MACtB,OAAOxD,IAAI;IACb;IAEA,MAAMyD,WAAW,GAAG;MAClB,GAAID,OAAmC;MACvCE,IAAI,EAAE,QAAQ;MACdC,aAAa,EAAEA,CACbC,QAAiB,EACjBC,eAAuB,EACvBC,SAAiB,KACdA;IACP,CAAC;IAED,OAAO;MACL,GAAG9D,IAAI;MACPqB,OAAO,EAAE;QACP,GAAIkC,WAAuC;QAC3CC,OAAO,EAAEC;MACX;IACF,CAAC;EACH,CAAC,CAAC;EAEF,MAAMnC,QAAqB,GAAG;IAC5B,GAAG6B,QAAQ;IACXY,WAAW,EAAE,IAAI;IACjBlD,IAAI,EAAE,IAAImD,MAAM,CAAC,GAAGlC,YAAY,CAACsB,eAAe,CAAC,GAAG,CAAC;IACrDjD,GAAG,EAAEkD;EACP,CAAC;EAED,OAAO/B,QAAQ;AACjB;AAEA,SAAS2C,uBAAuBA,CAC9BC,MAAqB,EACrBd,eAAuB,EACvB;EACA1B,aAAa,CAACwC,MAAM,CAACC,MAAM,EAAExC,KAAK,IAAI,EAAE,EAAGZ,IAAI,IAAK;IAClD,IAAI,CAACV,KAAK,CAACC,OAAO,CAACS,IAAI,CAACc,KAAK,CAAC,IAAId,IAAI,CAACc,KAAK,CAACpB,MAAM,KAAK,CAAC,EAAE;MACzD;IACF;IAEA,MAAM2D,kBAAkB,GAAG,GAAGtC,YAAY,CAACsB,eAAe,CAAC,GAAG;IAE9D,MAAMiB,cAAc,GAAGtD,IAAI,CAACc,KAAK,CAACV,IAAI,CAAEmD,SAAS,IAAK;MACpD,IAAI,CAACA,SAAS,IAAI,OAAOA,SAAS,KAAK,QAAQ,EAAE,OAAO,KAAK;MAE7D,MAAM;QAAEzD;MAAK,CAAC,GAAGyD,SAAwB;MACzC,OAAOzD,IAAI,YAAYmD,MAAM,IAAInD,IAAI,CAAC0D,MAAM,KAAKH,kBAAkB;IACrE,CAAC,CAAC;IAEF,IAAIC,cAAc,EAAE;MAClB;IACF;IAEA,MAAMxC,KAAK,GAAGd,IAAI,CAACc,KAAkB;IACrC,KAAK,IAAIiB,GAAG,GAAG,CAAC,EAAEA,GAAG,GAAGjB,KAAK,CAACpB,MAAM,EAAEqC,GAAG,IAAI,CAAC,EAAE;MAC9C,MAAMwB,SAAS,GAAGzC,KAAK,CAACiB,GAAG,CAAC;MAC5B,IAAIwB,SAAS,IAAI,OAAOA,SAAS,KAAK,QAAQ,EAAE;QAC9C,MAAME,aAAa,GAAGF,SAAwB;QAC9C,MAAM;UAAEzD;QAAK,CAAC,GAAG2D,aAAa;QAE9B,MAAMC,eAAe,GACnB5D,IAAI,YAAYmD,MAAM,IAAInD,IAAI,CAAC0D,MAAM,CAAC3D,QAAQ,CAAC,iBAAiB,CAAC;QAEnE,IAAI6D,eAAe,EAAE;UACnB,MAAMtE,GAAG,GAAGD,iBAAiB,CAACsE,aAAa,CAACrE,GAAG,CAAC;UAChD,IAAIA,GAAG,EAAE;YACP,MAAMuE,YAAY,GAAGvE,GAAG,CAACgB,IAAI,CAC1BnB,IAAI,IACHD,iBAAiB,CAACC,IAAI,CAAC,IAAIA,IAAI,CAACC,MAAM,CAACW,QAAQ,CAAC,YAAY,CAChE,CAAC;YACD,IAAI8D,YAAY,EAAE;cAChB7C,KAAK,CAAC8C,MAAM,CACV7B,GAAG,EACH,CAAC,EACDI,sBAAsB,CAACsB,aAAa,EAAEpB,eAAe,CACvD,CAAC;cACD;YACF;UACF;QACF;MACF;IACF;EACF,CAAC,CAAC;AACJ;AAEA,SAASwB,eAAeA,CACtBV,MAAqB,EACrBW,WAA+B,EAC/BC,OAA6B,EAC7B;EACA,MAAM7E,MAAM,GAAG8E,OAAO,CAACC,OAAO,CAAC,2BAA2B,CAAC;EAC3D,MAAMC,eAAe,GAAGF,OAAO,CAACC,OAAO,CAAC,YAAY,EAAE;IACpDE,KAAK,EAAE,CAACC,OAAO,CAACC,GAAG,CAAC,CAAC;EACvB,CAAC,CAAC;EAEF,MAAMC,SAAS,GAAGP,OAAO,CAACQ,aAAa,EAAED,SAAS,IAAIhG,iBAAiB;EACvE,MAAMkG,YAAY,GAAGT,OAAO,CAACQ,aAAa,EAAEC,YAAY,IAAI;IAC1DC,OAAO,EAAE,CAACP,eAAe;EAC3B,CAAC;EAED,MAAMQ,mBAAmB,GAAGX,OAAO,CAACQ,aAAa,EAAEI,eAAe;EAClE,MAAMA,eAAe,GAAGD,mBAAmB,GACvC;IAAE,GAAGlG,8BAA8B;IAAE,GAAGkG;EAAoB,CAAC,GAC7DlG,8BAA8B;EAElC,MAAM+F,aAAa,GAAG;IACpBK,SAAS,EAAE,QAAQ;IACnB,GAAGb,OAAO,CAACQ,aAAa;IACxBC,YAAY;IACZF,SAAS;IACTK,eAAe;IACfE,SAAS,EAAEd,OAAO,CAACQ,aAAa,EAAEM,SAAS,IAAIf,WAAW,CAACgB;EAC7D,CAAmC;EAEnC,MAAM7E,aAA6B,GAAG;IACpCf,MAAM;IACNoB,OAAO,EAAEiE;EACX,CAAC;EAED5D,aAAa,CAACwC,MAAM,CAACC,MAAM,EAAExC,KAAK,IAAI,EAAE,EAAGZ,IAAI,IAAK;IAClDD,0BAA0B,CAACC,IAAI,EAAEC,aAAa,CAAC;IAE/C,MAAMb,GAAG,GAAGD,iBAAiB,CAACa,IAAI,CAACZ,GAAG,CAAC;IACvC,IAAI,CAACA,GAAG,EAAE;IAEV,MAAM2F,OAAO,GAAG3F,GAAG,CAACmD,GAAG,CAAC5C,aAAa,CAAC;IAEtC,MAAMO,eAAe,GAAG6E,OAAO,CAAC3E,IAAI,CACjC4E,CAAC,IAAKA,CAAC,KAAK9F,MAAM,IAAIU,eAAe,CAACoF,CAAC,CAC1C,CAAC;IACD,IAAI9E,eAAe,EAAE;IAErB,MAAMC,qBAAqB,GAAG4E,OAAO,CAAC3E,IAAI,CAAE4E,CAAC,IAC3C,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,cAAc,CAAC,CAAC5E,IAAI,CAAEC,MAAM,IACnE2E,CAAC,CAACnF,QAAQ,CAACQ,MAAM,CACnB,CACF,CAAC;IACD,IAAI,CAACF,qBAAqB,EAAE;;IAE5B;IACAK,MAAM,CAACC,MAAM,CAACT,IAAI,EAAE;MAAEZ,GAAG,EAAE,CAAC,GAAGA,GAAG,EAAEa,aAAa;IAAE,CAAC,CAAC;EACvD,CAAC,CAAC;EAEFiD,uBAAuB,CAACC,MAAM,EAAEmB,SAAS,CAAC;AAC5C;AAEA,SAASW,8BAA8BA,CAACC,WAAmB,EAAE;EAC3D,MAAM3D,KAAe,GAAG,CAAC2D,WAAW,CAAC;EAErC,OAAO3D,KAAK,CAAC7B,MAAM,EAAE;IACnB,MAAMyF,GAAG,GAAG5D,KAAK,CAAC6D,GAAG,CAAC,CAAE;IACxB,IAAInD,OAAoB;IAExB,IAAI;MACFA,OAAO,GAAG7D,EAAE,CAACiH,WAAW,CAACF,GAAG,EAAE;QAAEG,aAAa,EAAE;MAAK,CAAC,CAAC;IACxD,CAAC,CAAC,MAAM;MACNrD,OAAO,GAAG,EAAE;IACd;IAEA,KAAK,MAAMsD,KAAK,IAAItD,OAAO,EAAE;MAC3B,IAAIsD,KAAK,CAACjE,IAAI,KAAK,GAAG,IAAIiE,KAAK,CAACjE,IAAI,KAAK,IAAI,EAAE;QAC7C,MAAMkE,SAAS,GAAGnH,IAAI,CAACoH,IAAI,CAACN,GAAG,EAAEI,KAAK,CAACjE,IAAI,CAAC;QAE5C,IAAIiE,KAAK,CAACG,WAAW,CAAC,CAAC,EAAE;UACvB,IAAI,CAAC7G,wBAAwB,CAAC+C,GAAG,CAAC2D,KAAK,CAACjE,IAAI,CAAC,EAAE;YAC7CC,KAAK,CAACS,IAAI,CAACwD,SAAS,CAAC;UACvB;QACF,CAAC,MAAM,IAAID,KAAK,CAACI,MAAM,CAAC,CAAC,EAAE;UACzB,MAAMC,YAAY,GAChBL,KAAK,CAACjE,IAAI,CAACuE,UAAU,CAAC,aAAa,CAAC,IACpCN,KAAK,CAACjE,IAAI,CAACwE,QAAQ,CAAC,OAAO,CAAC;UAE9B,IAAI,CAACF,YAAY,EAAE;YACjB,MAAMG,GAAG,GAAG1H,IAAI,CAAC2H,OAAO,CAACT,KAAK,CAACjE,IAAI,CAAC;YACpC,IAAI3C,sBAAsB,CAACiD,GAAG,CAACmE,GAAG,CAAC,EAAE;cACnC,MAAME,QAAQ,GAAG5H,IAAI,CAAC6H,QAAQ,CAACX,KAAK,CAACjE,IAAI,EAAEyE,GAAG,CAAC;cAC/C,MAAMI,WAAW,GAAG9H,IAAI,CAACoH,IAAI,CAC3BpH,IAAI,CAAC+H,OAAO,CAACZ,SAAS,CAAC,EACvB,GAAGS,QAAQ,GAAG3H,iBAAiB,EACjC,CAAC;cAED,IAAI;gBACFF,EAAE,CAACiI,aAAa,CAACF,WAAW,EAAE,EAAE,EAAE;kBAAEG,IAAI,EAAE;gBAAK,CAAC,CAAC;cACnD,CAAC,CAAC,OAAOC,GAAG,EAAE;gBACZ,IAAKA,GAAG,CAA2BC,IAAI,KAAK,QAAQ,EAAE;kBACpD,MAAMD,GAAG;gBACX;cACF;YACF;UACF;QACF;MACF;IACF;EACF;AACF;AAEA,SAASE,wBAAwBA,CAACC,UAAsB,EAAE;EACxD,MAAMC,QAAQ,GAAID,UAAU,CAAwCE,SAAS;EAC7E,IAAI,OAAOD,QAAQ,KAAK,WAAW,EAAE;IACnC,OAAO,IAAI;EACb;EAEA,IAAI;IACF,MAAME,OAAO,GAAG7C,OAAO,CAACC,OAAO,CAAC,mBAAmB,EAAE;MACnDE,KAAK,EAAE,CAACC,OAAO,CAACC,GAAG,CAAC,CAAC;IACvB,CAAC,CAAC;IACF,MAAMyC,GAAG,GAAG9C,OAAO,CAAC6C,OAAO,CAA0B;IACrD,MAAME,OAAO,GAAG,OAAOD,GAAG,CAACC,OAAO,KAAK,QAAQ,GAAGD,GAAG,CAACC,OAAO,GAAG,EAAE;IAClE,MAAMC,KAAK,GAAGC,MAAM,CAACC,QAAQ,CAACH,OAAO,CAACI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;IAC9D,OAAOF,MAAM,CAACG,QAAQ,CAACJ,KAAK,CAAC,IAAIA,KAAK,IAAI,EAAE;EAC9C,CAAC,CAAC,MAAM;IACN,OAAO,KAAK;EACd;AACF;AAEA,SAASK,uBAAuBA,CAC9BX,UAAsB,EACtB3C,OAA6B,EACjB;EACZ,MAAM7E,MAAM,GAAG8E,OAAO,CAACC,OAAO,CAAC,6BAA6B,CAAC;EAC7D,MAAMC,eAAe,GAAGF,OAAO,CAACC,OAAO,CAAC,YAAY,EAAE;IACpDE,KAAK,EAAE,CAACC,OAAO,CAACC,GAAG,CAAC,CAAC;EACvB,CAAC,CAAC;EAEF,MAAMiD,WAAW,GAAGvD,OAAO,CAACwD,sBAAsB,IAAI,CAAC,CAAC;EAExDlG,iBAAiB,CAACiG,WAAW,EAAE,wBAAwB,CAAC;EAExD,MAAM5C,mBAAmB,GAAGzD,aAAa,CAACqG,WAAW,CAAC3C,eAAe,CAAC,GACjE2C,WAAW,CAAC3C,eAAe,GAC5BjE,SAAS;EAEb,MAAM6D,aAAa,GAAG;IACpBC,YAAY,EAAE;MAAEC,OAAO,EAAE,CAACP,eAAe;IAAE,CAAC;IAC5CW,SAAS,EAAET,OAAO,CAACoD,GAAG,CAACC,QAAQ,KAAK,YAAY;IAChD,GAAGH,WAAW;IACd3C,eAAe,EAAED,mBAAmB,GAChC;MAAE,GAAGlG,8BAA8B;MAAE,GAAGkG;IAAoB,CAAC,GAC7DlG;EACN,CAAC;EAED,MAAMkJ,kBAAkB,GAAGjB,wBAAwB,CAACC,UAAU,CAAC;EAE/D,MAAMiB,WAAW,GAAGvD,OAAO,CAACwD,IAAI,CAAC/H,QAAQ,CAAC,OAAO,CAAC;EAClD,MAAMgI,cAAc,GAAGzD,OAAO,CAACwD,IAAI,CAAC/H,QAAQ,CAAC,WAAW,CAAC;EAEzD,IACE6H,kBAAkB,IAClBtD,OAAO,CAACoD,GAAG,CAACC,QAAQ,KAAK,YAAY,IACrCE,WAAW,IACX,CAACE,cAAc,EACf;IACA5C,8BAA8B,CAACb,OAAO,CAACC,GAAG,CAAC,CAAC,CAAC;EAC/C;EAEA,MAAMyD,SAAS,GAAGJ,kBAAkB,GAChC;IACE3C,OAAO,EAAE,CAAC;MAAE7F,MAAM;MAAEoB,OAAO,EAAEiE;IAAc,CAAC,CAAC;IAC7CwD,SAAS,EAAE;MACTC,GAAG,EAAE,CACH;QAAEC,GAAG,EAAE;MAAU,CAAC,EAClB;QAAEA,GAAG,EAAE;UAAE5J,IAAI,EAAE;QAAkC;MAAE,CAAC;IAExD;EACF,CAAC,GACD,CAAC;IAAEa,MAAM;IAAEoB,OAAO,EAAEiE;EAAc,CAAC,CAAC;EAExC,MAAM2D,QAAQ,GAAG1H,MAAM,CAAC2H,WAAW,CACjC5J,uBAAuB,CAACgE,GAAG,CAAEL,GAAG,IAAK,CAACA,GAAG,EAAE4F,SAAS,CAAC,CACvD,CAAC;EAED,IAAIJ,kBAAkB,EAAE;IACtB,MAAMU,eAAe,GAAI1B,UAAU,CAChCE,SAAS;IACZ,MAAMyB,aAAa,GAAGpH,aAAa,CAACmH,eAAe,CAAC,GAAGA,eAAe,GAAG,CAAC,CAAC;IAE3E,MAAME,SAAS,GAAGrH,aAAa,CAACoH,aAAa,CAACzH,KAAK,CAAC,GAC/CyH,aAAa,CAACzH,KAAK,GACpB,CAAC,CAAC;IAEN,OAAO;MACL,GAAG8F,UAAU;MACbE,SAAS,EAAE;QACT,GAAGyB,aAAa;QAChBzH,KAAK,EAAE;UACL,GAAGsH,QAAQ;UACX,GAAGI;QACL;MACF;IACF,CAAC;EACH;EAEA,MAAMC,gBAAgB,GAAGtH,aAAa,CAACyF,UAAU,CAAC8B,YAAY,CAAC,GAC1D9B,UAAU,CAAC8B,YAAY,GACxB,CAAC,CAAC;EAEN,MAAMC,SAAS,GAAGxH,aAAa,CAACsH,gBAAgB,CAACG,KAAK,CAAC,GAClDH,gBAAgB,CAACG,KAAK,GACvB,CAAC,CAAC;EAEN,MAAMJ,SAAS,GAAGrH,aAAa,CAACwH,SAAS,CAAC7H,KAAK,CAAC,GAC3C6H,SAAS,CAAC7H,KAAK,GAChB,CAAC,CAAC;EAEN,OAAO;IACL,GAAG8F,UAAU;IACb8B,YAAY,EAAE;MACZ,GAAGD,gBAAgB;MACnBG,KAAK,EAAE;QACL,GAAGD,SAAS;QACZ7H,KAAK,EAAE;UACL,GAAGsH,QAAQ;UACX,GAAGI;QACL;MACF;IACF;EACF,CAAC;AACH;AAEA,OAAO,SAASK,OAAOA,CACrBjC,UAAsB,GAAG,CAAC,CAAC,EAC3B3C,OAA6B,GAAG,CAAC,CAAC,EACtB;EACZ,MAAM6E,WAAW,GAAGlC,UAAU,CAACmC,OAAO;EAEtC,OAAO;IACL,GAAGxB,uBAAuB,CAACX,UAAU,EAAE3C,OAAO,CAAC;IAC/C8E,OAAOA,CAAC1F,MAAqB,EAAE7C,OAA2B,EAAE;MAC1D,MAAMwI,cAAc,GAClB,OAAOF,WAAW,KAAK,UAAU,GAC7BA,WAAW,CAACzF,MAAM,EAAE7C,OAAO,CAAC,GAC5B6C,MAAM;MAEZU,eAAe,CAACiF,cAAc,EAAExI,OAAO,EAAEyD,OAAO,CAAC;MAEjD,OAAO+E,cAAc;IACvB;EACF,CAAC;AACH","ignoreList":[]}
package/lib/index.js CHANGED
@@ -9,6 +9,17 @@ var _path = _interopRequireDefault(require("path"));
9
9
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
10
  const DEFAULT_EXTENSION = '.wyw-in-js.module.css';
11
11
  const DEFAULT_TURBO_RULE_KEYS = ['*.js', '*.jsx', '*.ts', '*.tsx'];
12
+ const DEFAULT_REACT_IMPORT_OVERRIDES = {
13
+ react: {
14
+ mock: 'react'
15
+ },
16
+ 'react/jsx-runtime': {
17
+ mock: 'react/jsx-runtime'
18
+ },
19
+ 'react/jsx-dev-runtime': {
20
+ mock: 'react/jsx-dev-runtime'
21
+ }
22
+ };
12
23
  const PLACEHOLDER_EXTENSIONS = new Set(['.js', '.jsx', '.ts', '.tsx']);
13
24
  const PLACEHOLDER_IGNORED_DIRS = new Set(['.git', '.next', '.turbo', 'node_modules']);
14
25
  function isObject(value) {
@@ -189,7 +200,7 @@ function ensureWywCssModuleRules(config, extensionSuffix) {
189
200
  });
190
201
  }
191
202
  function injectWywLoader(config, nextOptions, wywNext) {
192
- var _wywNext$loaderOption, _wywNext$loaderOption2, _wywNext$loaderOption3, _wywNext$loaderOption4, _wywNext$loaderOption5, _wywNext$loaderOption6, _config$module$rules2, _config$module2;
203
+ var _wywNext$loaderOption, _wywNext$loaderOption2, _wywNext$loaderOption3, _wywNext$loaderOption4, _wywNext$loaderOption5, _wywNext$loaderOption6, _wywNext$loaderOption7, _config$module$rules2, _config$module2;
193
204
  const loader = require.resolve('@wyw-in-js/webpack-loader');
194
205
  const nextBabelPreset = require.resolve('next/babel', {
195
206
  paths: [process.cwd()]
@@ -198,12 +209,18 @@ function injectWywLoader(config, nextOptions, wywNext) {
198
209
  const babelOptions = (_wywNext$loaderOption3 = (_wywNext$loaderOption4 = wywNext.loaderOptions) === null || _wywNext$loaderOption4 === void 0 ? void 0 : _wywNext$loaderOption4.babelOptions) !== null && _wywNext$loaderOption3 !== void 0 ? _wywNext$loaderOption3 : {
199
210
  presets: [nextBabelPreset]
200
211
  };
212
+ const userImportOverrides = (_wywNext$loaderOption5 = wywNext.loaderOptions) === null || _wywNext$loaderOption5 === void 0 ? void 0 : _wywNext$loaderOption5.importOverrides;
213
+ const importOverrides = userImportOverrides ? {
214
+ ...DEFAULT_REACT_IMPORT_OVERRIDES,
215
+ ...userImportOverrides
216
+ } : DEFAULT_REACT_IMPORT_OVERRIDES;
201
217
  const loaderOptions = {
202
218
  cssImport: 'import',
203
219
  ...wywNext.loaderOptions,
204
220
  babelOptions,
205
221
  extension,
206
- sourceMap: (_wywNext$loaderOption5 = (_wywNext$loaderOption6 = wywNext.loaderOptions) === null || _wywNext$loaderOption6 === void 0 ? void 0 : _wywNext$loaderOption6.sourceMap) !== null && _wywNext$loaderOption5 !== void 0 ? _wywNext$loaderOption5 : nextOptions.dev
222
+ importOverrides,
223
+ sourceMap: (_wywNext$loaderOption6 = (_wywNext$loaderOption7 = wywNext.loaderOptions) === null || _wywNext$loaderOption7 === void 0 ? void 0 : _wywNext$loaderOption7.sourceMap) !== null && _wywNext$loaderOption6 !== void 0 ? _wywNext$loaderOption6 : nextOptions.dev
207
224
  };
208
225
  const wywLoaderItem = {
209
226
  loader,
@@ -294,12 +311,17 @@ function injectWywTurbopackRules(nextConfig, wywNext) {
294
311
  });
295
312
  const userOptions = (_wywNext$turbopackLoa = wywNext.turbopackLoaderOptions) !== null && _wywNext$turbopackLoa !== void 0 ? _wywNext$turbopackLoa : {};
296
313
  assertNoFunctions(userOptions, 'turbopackLoaderOptions');
314
+ const userImportOverrides = isPlainObject(userOptions.importOverrides) ? userOptions.importOverrides : undefined;
297
315
  const loaderOptions = {
298
316
  babelOptions: {
299
317
  presets: [nextBabelPreset]
300
318
  },
301
319
  sourceMap: process.env.NODE_ENV !== 'production',
302
- ...userOptions
320
+ ...userOptions,
321
+ importOverrides: userImportOverrides ? {
322
+ ...DEFAULT_REACT_IMPORT_OVERRIDES,
323
+ ...userImportOverrides
324
+ } : DEFAULT_REACT_IMPORT_OVERRIDES
303
325
  };
304
326
  const useTurbopackConfig = shouldUseTurbopackConfig(nextConfig);
305
327
  const isNextBuild = process.argv.includes('build');
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_fs","_interopRequireDefault","require","_path","e","__esModule","default","DEFAULT_EXTENSION","DEFAULT_TURBO_RULE_KEYS","PLACEHOLDER_EXTENSIONS","Set","PLACEHOLDER_IGNORED_DIRS","isObject","value","isUseLoaderObject","item","loader","normalizeUseItems","use","list","Array","isArray","filter","Boolean","length","getLoaderName","isWywLoaderPath","includes","test","convertLoaderRuleToUseRule","rule","wywLoaderItem","alreadyInjected","isNextJsTranspileRule","some","needle","options","nextRule","Object","assign","undefined","traverseRules","rules","visitor","oneOf","escapeRegExp","replace","isPlainObject","proto","getPrototypeOf","prototype","assertNoFunctions","name","queue","path","seen","current","shift","Error","has","add","forEach","idx","push","entries","key","createWywCssModuleRule","baseRule","extensionSuffix","_normalizeUseItems","patchedUse","map","itemOptions","modules","nextModules","mode","getLocalIdent","_context","_localIdentName","localName","sideEffects","RegExp","ensureWywCssModuleRules","config","_config$module$rules","_config$module","module","expectedTestSource","alreadyPresent","candidate","source","candidateRule","isModuleCssRule","hasCssLoader","splice","injectWywLoader","nextOptions","wywNext","_wywNext$loaderOption","_wywNext$loaderOption2","_wywNext$loaderOption3","_wywNext$loaderOption4","_wywNext$loaderOption5","_wywNext$loaderOption6","_config$module$rules2","_config$module2","resolve","nextBabelPreset","paths","process","cwd","extension","loaderOptions","babelOptions","presets","cssImport","sourceMap","dev","loaders","l","ensureTurbopackCssPlaceholders","projectRoot","dir","pop","fs","readdirSync","withFileTypes","entry","entryPath","join","isDirectory","isFile","shouldIgnore","startsWith","endsWith","ext","extname","baseName","basename","cssFilePath","dirname","writeFileSync","flag","err","code","shouldUseTurbopackConfig","nextConfig","explicit","turbopack","_version$split$","pkgPath","pkg","version","major","Number","parseInt","split","isFinite","injectWywTurbopackRules","_wywNext$turbopackLoa","userOptions","turbopackLoaderOptions","env","NODE_ENV","useTurbopackConfig","isNextBuild","argv","isWebpackBuild","ruleValue","condition","all","not","wywRules","fromEntries","turbopackConfig","userTurbopack","userRules","userExperimental","experimental","userTurbo","turbo","withWyw","userWebpack","webpack","resolvedConfig"],"sources":["../src/index.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\n\nimport type { LoaderOptions as WywWebpackLoaderOptions } from '@wyw-in-js/webpack-loader';\nimport type { NextConfig } from 'next';\nimport type { Configuration, RuleSetRule, RuleSetUseItem } from 'webpack';\n\nconst DEFAULT_EXTENSION = '.wyw-in-js.module.css';\n\nconst DEFAULT_TURBO_RULE_KEYS = ['*.js', '*.jsx', '*.ts', '*.tsx'];\n\nconst PLACEHOLDER_EXTENSIONS = new Set(['.js', '.jsx', '.ts', '.tsx']);\nconst PLACEHOLDER_IGNORED_DIRS = new Set([\n '.git',\n '.next',\n '.turbo',\n 'node_modules',\n]);\n\nexport type WywNextPluginOptions = {\n loaderOptions?: Omit<WywWebpackLoaderOptions, 'extension' | 'sourceMap'> &\n Partial<Pick<WywWebpackLoaderOptions, 'extension' | 'sourceMap'>>;\n turbopackLoaderOptions?: Record<string, unknown>;\n};\n\ntype NextWebpackConfigFn = NonNullable<NextConfig['webpack']>;\ntype NextWebpackOptions = Parameters<NextWebpackConfigFn>[1];\n\nfunction isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null;\n}\n\nfunction isUseLoaderObject(\n item: RuleSetUseItem\n): item is Exclude<RuleSetUseItem, string> & { loader: string } {\n return (\n isObject(item) &&\n typeof (item as Record<string, unknown>).loader === 'string'\n );\n}\n\nfunction normalizeUseItems(use: RuleSetRule['use']): RuleSetUseItem[] | null {\n if (!use) return null;\n if (typeof use === 'function') return null;\n\n const list = (Array.isArray(use) ? use : [use]).filter(Boolean);\n return list.length ? (list as RuleSetUseItem[]) : null;\n}\n\nfunction getLoaderName(item: RuleSetUseItem): string {\n if (typeof item === 'string') return item;\n if (isUseLoaderObject(item)) return item.loader;\n return '';\n}\n\nfunction isWywLoaderPath(loader: string) {\n return (\n loader.includes('@wyw-in-js/webpack-loader') ||\n /[\\\\/]webpack-loader[\\\\/]/.test(loader)\n );\n}\n\nfunction convertLoaderRuleToUseRule(\n rule: RuleSetRule,\n wywLoaderItem: RuleSetUseItem\n) {\n const { loader } = rule as { loader?: unknown };\n if (typeof loader !== 'string') return;\n\n const alreadyInjected = isWywLoaderPath(loader);\n if (alreadyInjected) return;\n\n const isNextJsTranspileRule = [\n 'next-swc-loader',\n 'next-babel-loader',\n 'babel-loader',\n ].some((needle) => loader.includes(needle));\n if (!isNextJsTranspileRule) return;\n\n const { options } = rule as { options?: unknown };\n\n const nextRule = rule as RuleSetRule & {\n loader?: unknown;\n options?: unknown;\n };\n\n delete nextRule.loader;\n delete nextRule.options;\n\n // Loader order is right-to-left. We want WyW to run first, so it should be last.\n Object.assign(nextRule, {\n use: [\n { loader, ...(options !== undefined ? { options } : {}) },\n wywLoaderItem,\n ],\n });\n}\n\nfunction traverseRules(rules: unknown[], visitor: (rule: RuleSetRule) => void) {\n for (const rule of rules) {\n if (rule && typeof rule === 'object') {\n visitor(rule as RuleSetRule);\n\n if (Array.isArray((rule as RuleSetRule).oneOf)) {\n traverseRules((rule as RuleSetRule).oneOf!, visitor);\n }\n if (Array.isArray((rule as RuleSetRule).rules)) {\n traverseRules((rule as RuleSetRule).rules!, visitor);\n }\n }\n }\n}\n\nfunction escapeRegExp(value: string) {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n if (!isObject(value)) return false;\n const proto = Object.getPrototypeOf(value);\n return proto === Object.prototype || proto === null;\n}\n\nfunction assertNoFunctions(value: unknown, name: string) {\n const queue: Array<{ path: string; value: unknown }> = [\n { path: name, value },\n ];\n const seen = new Set<unknown>();\n\n while (queue.length) {\n const current = queue.shift()!;\n\n if (typeof current.value === 'function') {\n throw new Error(\n `${current.path} must be JSON-serializable (functions are not supported in Turbopack loader options). Use \"configFile\" to pass non-JSON config.`\n );\n }\n\n if (current.value === null) {\n // skip\n } else if (Array.isArray(current.value)) {\n if (!seen.has(current.value)) {\n seen.add(current.value);\n current.value.forEach((item, idx) =>\n queue.push({ path: `${current.path}[${idx}]`, value: item })\n );\n }\n } else if (isPlainObject(current.value)) {\n if (!seen.has(current.value)) {\n seen.add(current.value);\n Object.entries(current.value).forEach(([key, item]) =>\n queue.push({ path: `${current.path}.${key}`, value: item })\n );\n }\n }\n }\n}\n\nfunction createWywCssModuleRule(\n baseRule: RuleSetRule,\n extensionSuffix: string\n): RuleSetRule {\n const use = normalizeUseItems(baseRule.use) ?? [];\n\n const patchedUse = use.map((item) => {\n if (!isUseLoaderObject(item) || !item.loader.includes('css-loader')) {\n return item;\n }\n\n const itemOptions = (item as { options?: unknown }).options;\n if (!isObject(itemOptions)) {\n return item;\n }\n\n const { modules } = itemOptions as { modules?: unknown };\n if (!isObject(modules)) {\n return item;\n }\n\n const nextModules = {\n ...(modules as Record<string, unknown>),\n mode: 'global',\n getLocalIdent: (\n _context: unknown,\n _localIdentName: string,\n localName: string\n ) => localName,\n };\n\n return {\n ...item,\n options: {\n ...(itemOptions as Record<string, unknown>),\n modules: nextModules,\n },\n };\n });\n\n const nextRule: RuleSetRule = {\n ...baseRule,\n sideEffects: true,\n test: new RegExp(`${escapeRegExp(extensionSuffix)}$`),\n use: patchedUse,\n };\n\n return nextRule;\n}\n\nfunction ensureWywCssModuleRules(\n config: Configuration,\n extensionSuffix: string\n) {\n traverseRules(config.module?.rules ?? [], (rule) => {\n if (!Array.isArray(rule.oneOf) || rule.oneOf.length === 0) {\n return;\n }\n\n const expectedTestSource = `${escapeRegExp(extensionSuffix)}$`;\n\n const alreadyPresent = rule.oneOf.some((candidate) => {\n if (!candidate || typeof candidate !== 'object') return false;\n\n const { test } = candidate as RuleSetRule;\n return test instanceof RegExp && test.source === expectedTestSource;\n });\n\n if (alreadyPresent) {\n return;\n }\n\n const oneOf = rule.oneOf as unknown[];\n for (let idx = 0; idx < oneOf.length; idx += 1) {\n const candidate = oneOf[idx];\n if (candidate && typeof candidate === 'object') {\n const candidateRule = candidate as RuleSetRule;\n const { test } = candidateRule;\n\n const isModuleCssRule =\n test instanceof RegExp && test.source.includes('\\\\.module\\\\.css');\n\n if (isModuleCssRule) {\n const use = normalizeUseItems(candidateRule.use);\n if (use) {\n const hasCssLoader = use.some(\n (item) =>\n isUseLoaderObject(item) && item.loader.includes('css-loader')\n );\n if (hasCssLoader) {\n oneOf.splice(\n idx,\n 0,\n createWywCssModuleRule(candidateRule, extensionSuffix)\n );\n break;\n }\n }\n }\n }\n }\n });\n}\n\nfunction injectWywLoader(\n config: Configuration,\n nextOptions: NextWebpackOptions,\n wywNext: WywNextPluginOptions\n) {\n const loader = require.resolve('@wyw-in-js/webpack-loader');\n const nextBabelPreset = require.resolve('next/babel', {\n paths: [process.cwd()],\n });\n\n const extension = wywNext.loaderOptions?.extension ?? DEFAULT_EXTENSION;\n const babelOptions = wywNext.loaderOptions?.babelOptions ?? {\n presets: [nextBabelPreset],\n };\n\n const loaderOptions = {\n cssImport: 'import',\n ...wywNext.loaderOptions,\n babelOptions,\n extension,\n sourceMap: wywNext.loaderOptions?.sourceMap ?? nextOptions.dev,\n } satisfies WywWebpackLoaderOptions;\n\n const wywLoaderItem: RuleSetUseItem = {\n loader,\n options: loaderOptions,\n };\n\n traverseRules(config.module?.rules ?? [], (rule) => {\n convertLoaderRuleToUseRule(rule, wywLoaderItem);\n\n const use = normalizeUseItems(rule.use);\n if (!use) return;\n\n const loaders = use.map(getLoaderName);\n\n const alreadyInjected = loaders.some(\n (l) => l === loader || isWywLoaderPath(l)\n );\n if (alreadyInjected) return;\n\n const isNextJsTranspileRule = loaders.some((l) =>\n ['next-swc-loader', 'next-babel-loader', 'babel-loader'].some((needle) =>\n l.includes(needle)\n )\n );\n if (!isNextJsTranspileRule) return;\n\n // Loader order is right-to-left. We want WyW to run first, so it should be last.\n Object.assign(rule, { use: [...use, wywLoaderItem] });\n });\n\n ensureWywCssModuleRules(config, extension);\n}\n\nfunction ensureTurbopackCssPlaceholders(projectRoot: string) {\n const queue: string[] = [projectRoot];\n\n while (queue.length) {\n const dir = queue.pop()!;\n let entries: fs.Dirent[];\n\n try {\n entries = fs.readdirSync(dir, { withFileTypes: true });\n } catch {\n entries = [];\n }\n\n for (const entry of entries) {\n if (entry.name !== '.' && entry.name !== '..') {\n const entryPath = path.join(dir, entry.name);\n\n if (entry.isDirectory()) {\n if (!PLACEHOLDER_IGNORED_DIRS.has(entry.name)) {\n queue.push(entryPath);\n }\n } else if (entry.isFile()) {\n const shouldIgnore =\n entry.name.startsWith('middleware.') ||\n entry.name.endsWith('.d.ts');\n\n if (!shouldIgnore) {\n const ext = path.extname(entry.name);\n if (PLACEHOLDER_EXTENSIONS.has(ext)) {\n const baseName = path.basename(entry.name, ext);\n const cssFilePath = path.join(\n path.dirname(entryPath),\n `${baseName}${DEFAULT_EXTENSION}`\n );\n\n try {\n fs.writeFileSync(cssFilePath, '', { flag: 'wx' });\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code !== 'EEXIST') {\n throw err;\n }\n }\n }\n }\n }\n }\n }\n }\n}\n\nfunction shouldUseTurbopackConfig(nextConfig: NextConfig) {\n const explicit = (nextConfig as unknown as Record<string, unknown>).turbopack;\n if (typeof explicit !== 'undefined') {\n return true;\n }\n\n try {\n const pkgPath = require.resolve('next/package.json', {\n paths: [process.cwd()],\n });\n const pkg = require(pkgPath) as { version?: unknown };\n const version = typeof pkg.version === 'string' ? pkg.version : '';\n const major = Number.parseInt(version.split('.')[0] ?? '', 10);\n return Number.isFinite(major) && major >= 16;\n } catch {\n return false;\n }\n}\n\nfunction injectWywTurbopackRules(\n nextConfig: NextConfig,\n wywNext: WywNextPluginOptions\n): NextConfig {\n const loader = require.resolve('@wyw-in-js/turbopack-loader');\n const nextBabelPreset = require.resolve('next/babel', {\n paths: [process.cwd()],\n });\n\n const userOptions = wywNext.turbopackLoaderOptions ?? {};\n\n assertNoFunctions(userOptions, 'turbopackLoaderOptions');\n\n const loaderOptions = {\n babelOptions: { presets: [nextBabelPreset] },\n sourceMap: process.env.NODE_ENV !== 'production',\n ...userOptions,\n };\n\n const useTurbopackConfig = shouldUseTurbopackConfig(nextConfig);\n\n const isNextBuild = process.argv.includes('build');\n const isWebpackBuild = process.argv.includes('--webpack');\n\n if (\n useTurbopackConfig &&\n process.env.NODE_ENV === 'production' &&\n isNextBuild &&\n !isWebpackBuild\n ) {\n ensureTurbopackCssPlaceholders(process.cwd());\n }\n\n const ruleValue = useTurbopackConfig\n ? {\n loaders: [{ loader, options: loaderOptions }],\n condition: {\n all: [\n { not: 'foreign' },\n { not: { path: /(?:^|[\\\\/])middleware\\.[jt]sx?$/ } },\n ],\n },\n }\n : [{ loader, options: loaderOptions }];\n\n const wywRules = Object.fromEntries(\n DEFAULT_TURBO_RULE_KEYS.map((key) => [key, ruleValue])\n );\n\n if (useTurbopackConfig) {\n const turbopackConfig = (nextConfig as unknown as Record<string, unknown>)\n .turbopack;\n const userTurbopack = isPlainObject(turbopackConfig) ? turbopackConfig : {};\n\n const userRules = isPlainObject(userTurbopack.rules)\n ? (userTurbopack.rules as Record<string, unknown>)\n : {};\n\n return {\n ...nextConfig,\n turbopack: {\n ...userTurbopack,\n rules: {\n ...wywRules,\n ...userRules,\n },\n },\n } as NextConfig;\n }\n\n const userExperimental = isPlainObject(nextConfig.experimental)\n ? (nextConfig.experimental as Record<string, unknown>)\n : {};\n\n const userTurbo = isPlainObject(userExperimental.turbo)\n ? (userExperimental.turbo as Record<string, unknown>)\n : {};\n\n const userRules = isPlainObject(userTurbo.rules)\n ? (userTurbo.rules as Record<string, unknown>)\n : {};\n\n return {\n ...nextConfig,\n experimental: {\n ...userExperimental,\n turbo: {\n ...userTurbo,\n rules: {\n ...wywRules,\n ...userRules,\n },\n },\n },\n } as NextConfig;\n}\n\nexport function withWyw(\n nextConfig: NextConfig = {},\n wywNext: WywNextPluginOptions = {}\n): NextConfig {\n const userWebpack = nextConfig.webpack;\n\n return {\n ...injectWywTurbopackRules(nextConfig, wywNext),\n webpack(config: Configuration, options: NextWebpackOptions) {\n const resolvedConfig =\n typeof userWebpack === 'function'\n ? userWebpack(config, options)\n : config;\n\n injectWywLoader(resolvedConfig, options, wywNext);\n\n return resolvedConfig;\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_fs","_interopRequireDefault","require","_path","e","__esModule","default","DEFAULT_EXTENSION","DEFAULT_TURBO_RULE_KEYS","DEFAULT_REACT_IMPORT_OVERRIDES","react","mock","PLACEHOLDER_EXTENSIONS","Set","PLACEHOLDER_IGNORED_DIRS","isObject","value","isUseLoaderObject","item","loader","normalizeUseItems","use","list","Array","isArray","filter","Boolean","length","getLoaderName","isWywLoaderPath","includes","test","convertLoaderRuleToUseRule","rule","wywLoaderItem","alreadyInjected","isNextJsTranspileRule","some","needle","options","nextRule","Object","assign","undefined","traverseRules","rules","visitor","oneOf","escapeRegExp","replace","isPlainObject","proto","getPrototypeOf","prototype","assertNoFunctions","name","queue","path","seen","current","shift","Error","has","add","forEach","idx","push","entries","key","createWywCssModuleRule","baseRule","extensionSuffix","_normalizeUseItems","patchedUse","map","itemOptions","modules","nextModules","mode","getLocalIdent","_context","_localIdentName","localName","sideEffects","RegExp","ensureWywCssModuleRules","config","_config$module$rules","_config$module","module","expectedTestSource","alreadyPresent","candidate","source","candidateRule","isModuleCssRule","hasCssLoader","splice","injectWywLoader","nextOptions","wywNext","_wywNext$loaderOption","_wywNext$loaderOption2","_wywNext$loaderOption3","_wywNext$loaderOption4","_wywNext$loaderOption5","_wywNext$loaderOption6","_wywNext$loaderOption7","_config$module$rules2","_config$module2","resolve","nextBabelPreset","paths","process","cwd","extension","loaderOptions","babelOptions","presets","userImportOverrides","importOverrides","cssImport","sourceMap","dev","loaders","l","ensureTurbopackCssPlaceholders","projectRoot","dir","pop","fs","readdirSync","withFileTypes","entry","entryPath","join","isDirectory","isFile","shouldIgnore","startsWith","endsWith","ext","extname","baseName","basename","cssFilePath","dirname","writeFileSync","flag","err","code","shouldUseTurbopackConfig","nextConfig","explicit","turbopack","_version$split$","pkgPath","pkg","version","major","Number","parseInt","split","isFinite","injectWywTurbopackRules","_wywNext$turbopackLoa","userOptions","turbopackLoaderOptions","env","NODE_ENV","useTurbopackConfig","isNextBuild","argv","isWebpackBuild","ruleValue","condition","all","not","wywRules","fromEntries","turbopackConfig","userTurbopack","userRules","userExperimental","experimental","userTurbo","turbo","withWyw","userWebpack","webpack","resolvedConfig"],"sources":["../src/index.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\n\nimport type { LoaderOptions as WywWebpackLoaderOptions } from '@wyw-in-js/webpack-loader';\nimport type { NextConfig } from 'next';\nimport type { Configuration, RuleSetRule, RuleSetUseItem } from 'webpack';\n\nconst DEFAULT_EXTENSION = '.wyw-in-js.module.css';\n\nconst DEFAULT_TURBO_RULE_KEYS = ['*.js', '*.jsx', '*.ts', '*.tsx'];\n\nconst DEFAULT_REACT_IMPORT_OVERRIDES = {\n react: { mock: 'react' },\n 'react/jsx-runtime': { mock: 'react/jsx-runtime' },\n 'react/jsx-dev-runtime': { mock: 'react/jsx-dev-runtime' },\n} satisfies WywWebpackLoaderOptions['importOverrides'];\n\nconst PLACEHOLDER_EXTENSIONS = new Set(['.js', '.jsx', '.ts', '.tsx']);\nconst PLACEHOLDER_IGNORED_DIRS = new Set([\n '.git',\n '.next',\n '.turbo',\n 'node_modules',\n]);\n\nexport type WywNextPluginOptions = {\n loaderOptions?: Omit<WywWebpackLoaderOptions, 'extension' | 'sourceMap'> &\n Partial<Pick<WywWebpackLoaderOptions, 'extension' | 'sourceMap'>>;\n turbopackLoaderOptions?: Record<string, unknown>;\n};\n\ntype NextWebpackConfigFn = NonNullable<NextConfig['webpack']>;\ntype NextWebpackOptions = Parameters<NextWebpackConfigFn>[1];\n\nfunction isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null;\n}\n\nfunction isUseLoaderObject(\n item: RuleSetUseItem\n): item is Exclude<RuleSetUseItem, string> & { loader: string } {\n return (\n isObject(item) &&\n typeof (item as Record<string, unknown>).loader === 'string'\n );\n}\n\nfunction normalizeUseItems(use: RuleSetRule['use']): RuleSetUseItem[] | null {\n if (!use) return null;\n if (typeof use === 'function') return null;\n\n const list = (Array.isArray(use) ? use : [use]).filter(Boolean);\n return list.length ? (list as RuleSetUseItem[]) : null;\n}\n\nfunction getLoaderName(item: RuleSetUseItem): string {\n if (typeof item === 'string') return item;\n if (isUseLoaderObject(item)) return item.loader;\n return '';\n}\n\nfunction isWywLoaderPath(loader: string) {\n return (\n loader.includes('@wyw-in-js/webpack-loader') ||\n /[\\\\/]webpack-loader[\\\\/]/.test(loader)\n );\n}\n\nfunction convertLoaderRuleToUseRule(\n rule: RuleSetRule,\n wywLoaderItem: RuleSetUseItem\n) {\n const { loader } = rule as { loader?: unknown };\n if (typeof loader !== 'string') return;\n\n const alreadyInjected = isWywLoaderPath(loader);\n if (alreadyInjected) return;\n\n const isNextJsTranspileRule = [\n 'next-swc-loader',\n 'next-babel-loader',\n 'babel-loader',\n ].some((needle) => loader.includes(needle));\n if (!isNextJsTranspileRule) return;\n\n const { options } = rule as { options?: unknown };\n\n const nextRule = rule as RuleSetRule & {\n loader?: unknown;\n options?: unknown;\n };\n\n delete nextRule.loader;\n delete nextRule.options;\n\n // Loader order is right-to-left. We want WyW to run first, so it should be last.\n Object.assign(nextRule, {\n use: [\n { loader, ...(options !== undefined ? { options } : {}) },\n wywLoaderItem,\n ],\n });\n}\n\nfunction traverseRules(rules: unknown[], visitor: (rule: RuleSetRule) => void) {\n for (const rule of rules) {\n if (rule && typeof rule === 'object') {\n visitor(rule as RuleSetRule);\n\n if (Array.isArray((rule as RuleSetRule).oneOf)) {\n traverseRules((rule as RuleSetRule).oneOf!, visitor);\n }\n if (Array.isArray((rule as RuleSetRule).rules)) {\n traverseRules((rule as RuleSetRule).rules!, visitor);\n }\n }\n }\n}\n\nfunction escapeRegExp(value: string) {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n if (!isObject(value)) return false;\n const proto = Object.getPrototypeOf(value);\n return proto === Object.prototype || proto === null;\n}\n\nfunction assertNoFunctions(value: unknown, name: string) {\n const queue: Array<{ path: string; value: unknown }> = [\n { path: name, value },\n ];\n const seen = new Set<unknown>();\n\n while (queue.length) {\n const current = queue.shift()!;\n\n if (typeof current.value === 'function') {\n throw new Error(\n `${current.path} must be JSON-serializable (functions are not supported in Turbopack loader options). Use \"configFile\" to pass non-JSON config.`\n );\n }\n\n if (current.value === null) {\n // skip\n } else if (Array.isArray(current.value)) {\n if (!seen.has(current.value)) {\n seen.add(current.value);\n current.value.forEach((item, idx) =>\n queue.push({ path: `${current.path}[${idx}]`, value: item })\n );\n }\n } else if (isPlainObject(current.value)) {\n if (!seen.has(current.value)) {\n seen.add(current.value);\n Object.entries(current.value).forEach(([key, item]) =>\n queue.push({ path: `${current.path}.${key}`, value: item })\n );\n }\n }\n }\n}\n\nfunction createWywCssModuleRule(\n baseRule: RuleSetRule,\n extensionSuffix: string\n): RuleSetRule {\n const use = normalizeUseItems(baseRule.use) ?? [];\n\n const patchedUse = use.map((item) => {\n if (!isUseLoaderObject(item) || !item.loader.includes('css-loader')) {\n return item;\n }\n\n const itemOptions = (item as { options?: unknown }).options;\n if (!isObject(itemOptions)) {\n return item;\n }\n\n const { modules } = itemOptions as { modules?: unknown };\n if (!isObject(modules)) {\n return item;\n }\n\n const nextModules = {\n ...(modules as Record<string, unknown>),\n mode: 'global',\n getLocalIdent: (\n _context: unknown,\n _localIdentName: string,\n localName: string\n ) => localName,\n };\n\n return {\n ...item,\n options: {\n ...(itemOptions as Record<string, unknown>),\n modules: nextModules,\n },\n };\n });\n\n const nextRule: RuleSetRule = {\n ...baseRule,\n sideEffects: true,\n test: new RegExp(`${escapeRegExp(extensionSuffix)}$`),\n use: patchedUse,\n };\n\n return nextRule;\n}\n\nfunction ensureWywCssModuleRules(\n config: Configuration,\n extensionSuffix: string\n) {\n traverseRules(config.module?.rules ?? [], (rule) => {\n if (!Array.isArray(rule.oneOf) || rule.oneOf.length === 0) {\n return;\n }\n\n const expectedTestSource = `${escapeRegExp(extensionSuffix)}$`;\n\n const alreadyPresent = rule.oneOf.some((candidate) => {\n if (!candidate || typeof candidate !== 'object') return false;\n\n const { test } = candidate as RuleSetRule;\n return test instanceof RegExp && test.source === expectedTestSource;\n });\n\n if (alreadyPresent) {\n return;\n }\n\n const oneOf = rule.oneOf as unknown[];\n for (let idx = 0; idx < oneOf.length; idx += 1) {\n const candidate = oneOf[idx];\n if (candidate && typeof candidate === 'object') {\n const candidateRule = candidate as RuleSetRule;\n const { test } = candidateRule;\n\n const isModuleCssRule =\n test instanceof RegExp && test.source.includes('\\\\.module\\\\.css');\n\n if (isModuleCssRule) {\n const use = normalizeUseItems(candidateRule.use);\n if (use) {\n const hasCssLoader = use.some(\n (item) =>\n isUseLoaderObject(item) && item.loader.includes('css-loader')\n );\n if (hasCssLoader) {\n oneOf.splice(\n idx,\n 0,\n createWywCssModuleRule(candidateRule, extensionSuffix)\n );\n break;\n }\n }\n }\n }\n }\n });\n}\n\nfunction injectWywLoader(\n config: Configuration,\n nextOptions: NextWebpackOptions,\n wywNext: WywNextPluginOptions\n) {\n const loader = require.resolve('@wyw-in-js/webpack-loader');\n const nextBabelPreset = require.resolve('next/babel', {\n paths: [process.cwd()],\n });\n\n const extension = wywNext.loaderOptions?.extension ?? DEFAULT_EXTENSION;\n const babelOptions = wywNext.loaderOptions?.babelOptions ?? {\n presets: [nextBabelPreset],\n };\n\n const userImportOverrides = wywNext.loaderOptions?.importOverrides;\n const importOverrides = userImportOverrides\n ? { ...DEFAULT_REACT_IMPORT_OVERRIDES, ...userImportOverrides }\n : DEFAULT_REACT_IMPORT_OVERRIDES;\n\n const loaderOptions = {\n cssImport: 'import',\n ...wywNext.loaderOptions,\n babelOptions,\n extension,\n importOverrides,\n sourceMap: wywNext.loaderOptions?.sourceMap ?? nextOptions.dev,\n } satisfies WywWebpackLoaderOptions;\n\n const wywLoaderItem: RuleSetUseItem = {\n loader,\n options: loaderOptions,\n };\n\n traverseRules(config.module?.rules ?? [], (rule) => {\n convertLoaderRuleToUseRule(rule, wywLoaderItem);\n\n const use = normalizeUseItems(rule.use);\n if (!use) return;\n\n const loaders = use.map(getLoaderName);\n\n const alreadyInjected = loaders.some(\n (l) => l === loader || isWywLoaderPath(l)\n );\n if (alreadyInjected) return;\n\n const isNextJsTranspileRule = loaders.some((l) =>\n ['next-swc-loader', 'next-babel-loader', 'babel-loader'].some((needle) =>\n l.includes(needle)\n )\n );\n if (!isNextJsTranspileRule) return;\n\n // Loader order is right-to-left. We want WyW to run first, so it should be last.\n Object.assign(rule, { use: [...use, wywLoaderItem] });\n });\n\n ensureWywCssModuleRules(config, extension);\n}\n\nfunction ensureTurbopackCssPlaceholders(projectRoot: string) {\n const queue: string[] = [projectRoot];\n\n while (queue.length) {\n const dir = queue.pop()!;\n let entries: fs.Dirent[];\n\n try {\n entries = fs.readdirSync(dir, { withFileTypes: true });\n } catch {\n entries = [];\n }\n\n for (const entry of entries) {\n if (entry.name !== '.' && entry.name !== '..') {\n const entryPath = path.join(dir, entry.name);\n\n if (entry.isDirectory()) {\n if (!PLACEHOLDER_IGNORED_DIRS.has(entry.name)) {\n queue.push(entryPath);\n }\n } else if (entry.isFile()) {\n const shouldIgnore =\n entry.name.startsWith('middleware.') ||\n entry.name.endsWith('.d.ts');\n\n if (!shouldIgnore) {\n const ext = path.extname(entry.name);\n if (PLACEHOLDER_EXTENSIONS.has(ext)) {\n const baseName = path.basename(entry.name, ext);\n const cssFilePath = path.join(\n path.dirname(entryPath),\n `${baseName}${DEFAULT_EXTENSION}`\n );\n\n try {\n fs.writeFileSync(cssFilePath, '', { flag: 'wx' });\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code !== 'EEXIST') {\n throw err;\n }\n }\n }\n }\n }\n }\n }\n }\n}\n\nfunction shouldUseTurbopackConfig(nextConfig: NextConfig) {\n const explicit = (nextConfig as unknown as Record<string, unknown>).turbopack;\n if (typeof explicit !== 'undefined') {\n return true;\n }\n\n try {\n const pkgPath = require.resolve('next/package.json', {\n paths: [process.cwd()],\n });\n const pkg = require(pkgPath) as { version?: unknown };\n const version = typeof pkg.version === 'string' ? pkg.version : '';\n const major = Number.parseInt(version.split('.')[0] ?? '', 10);\n return Number.isFinite(major) && major >= 16;\n } catch {\n return false;\n }\n}\n\nfunction injectWywTurbopackRules(\n nextConfig: NextConfig,\n wywNext: WywNextPluginOptions\n): NextConfig {\n const loader = require.resolve('@wyw-in-js/turbopack-loader');\n const nextBabelPreset = require.resolve('next/babel', {\n paths: [process.cwd()],\n });\n\n const userOptions = wywNext.turbopackLoaderOptions ?? {};\n\n assertNoFunctions(userOptions, 'turbopackLoaderOptions');\n\n const userImportOverrides = isPlainObject(userOptions.importOverrides)\n ? (userOptions.importOverrides as Record<string, unknown>)\n : undefined;\n\n const loaderOptions = {\n babelOptions: { presets: [nextBabelPreset] },\n sourceMap: process.env.NODE_ENV !== 'production',\n ...userOptions,\n importOverrides: userImportOverrides\n ? { ...DEFAULT_REACT_IMPORT_OVERRIDES, ...userImportOverrides }\n : DEFAULT_REACT_IMPORT_OVERRIDES,\n };\n\n const useTurbopackConfig = shouldUseTurbopackConfig(nextConfig);\n\n const isNextBuild = process.argv.includes('build');\n const isWebpackBuild = process.argv.includes('--webpack');\n\n if (\n useTurbopackConfig &&\n process.env.NODE_ENV === 'production' &&\n isNextBuild &&\n !isWebpackBuild\n ) {\n ensureTurbopackCssPlaceholders(process.cwd());\n }\n\n const ruleValue = useTurbopackConfig\n ? {\n loaders: [{ loader, options: loaderOptions }],\n condition: {\n all: [\n { not: 'foreign' },\n { not: { path: /(?:^|[\\\\/])middleware\\.[jt]sx?$/ } },\n ],\n },\n }\n : [{ loader, options: loaderOptions }];\n\n const wywRules = Object.fromEntries(\n DEFAULT_TURBO_RULE_KEYS.map((key) => [key, ruleValue])\n );\n\n if (useTurbopackConfig) {\n const turbopackConfig = (nextConfig as unknown as Record<string, unknown>)\n .turbopack;\n const userTurbopack = isPlainObject(turbopackConfig) ? turbopackConfig : {};\n\n const userRules = isPlainObject(userTurbopack.rules)\n ? (userTurbopack.rules as Record<string, unknown>)\n : {};\n\n return {\n ...nextConfig,\n turbopack: {\n ...userTurbopack,\n rules: {\n ...wywRules,\n ...userRules,\n },\n },\n } as NextConfig;\n }\n\n const userExperimental = isPlainObject(nextConfig.experimental)\n ? (nextConfig.experimental as Record<string, unknown>)\n : {};\n\n const userTurbo = isPlainObject(userExperimental.turbo)\n ? (userExperimental.turbo as Record<string, unknown>)\n : {};\n\n const userRules = isPlainObject(userTurbo.rules)\n ? (userTurbo.rules as Record<string, unknown>)\n : {};\n\n return {\n ...nextConfig,\n experimental: {\n ...userExperimental,\n turbo: {\n ...userTurbo,\n rules: {\n ...wywRules,\n ...userRules,\n },\n },\n },\n } as NextConfig;\n}\n\nexport function withWyw(\n nextConfig: NextConfig = {},\n wywNext: WywNextPluginOptions = {}\n): NextConfig {\n const userWebpack = nextConfig.webpack;\n\n return {\n ...injectWywTurbopackRules(nextConfig, wywNext),\n webpack(config: Configuration, options: NextWebpackOptions) {\n const resolvedConfig =\n typeof userWebpack === 'function'\n ? userWebpack(config, options)\n : config;\n\n injectWywLoader(resolvedConfig, options, wywNext);\n\n return resolvedConfig;\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@wyw-in-js/nextjs",
3
- "version": "1.0.5",
3
+ "version": "1.0.7",
4
4
  "dependencies": {
5
- "@wyw-in-js/turbopack-loader": "1.0.5",
6
- "@wyw-in-js/webpack-loader": "1.0.5"
5
+ "@wyw-in-js/turbopack-loader": "1.0.6",
6
+ "@wyw-in-js/webpack-loader": "1.0.6"
7
7
  },
8
8
  "devDependencies": {
9
9
  "@types/node": "^16.18.55",
package/types/index.js CHANGED
@@ -8,6 +8,11 @@ const fs_1 = __importDefault(require("fs"));
8
8
  const path_1 = __importDefault(require("path"));
9
9
  const DEFAULT_EXTENSION = '.wyw-in-js.module.css';
10
10
  const DEFAULT_TURBO_RULE_KEYS = ['*.js', '*.jsx', '*.ts', '*.tsx'];
11
+ const DEFAULT_REACT_IMPORT_OVERRIDES = {
12
+ react: { mock: 'react' },
13
+ 'react/jsx-runtime': { mock: 'react/jsx-runtime' },
14
+ 'react/jsx-dev-runtime': { mock: 'react/jsx-dev-runtime' },
15
+ };
11
16
  const PLACEHOLDER_EXTENSIONS = new Set(['.js', '.jsx', '.ts', '.tsx']);
12
17
  const PLACEHOLDER_IGNORED_DIRS = new Set([
13
18
  '.git',
@@ -196,11 +201,16 @@ function injectWywLoader(config, nextOptions, wywNext) {
196
201
  const babelOptions = wywNext.loaderOptions?.babelOptions ?? {
197
202
  presets: [nextBabelPreset],
198
203
  };
204
+ const userImportOverrides = wywNext.loaderOptions?.importOverrides;
205
+ const importOverrides = userImportOverrides
206
+ ? { ...DEFAULT_REACT_IMPORT_OVERRIDES, ...userImportOverrides }
207
+ : DEFAULT_REACT_IMPORT_OVERRIDES;
199
208
  const loaderOptions = {
200
209
  cssImport: 'import',
201
210
  ...wywNext.loaderOptions,
202
211
  babelOptions,
203
212
  extension,
213
+ importOverrides,
204
214
  sourceMap: wywNext.loaderOptions?.sourceMap ?? nextOptions.dev,
205
215
  };
206
216
  const wywLoaderItem = {
@@ -291,10 +301,16 @@ function injectWywTurbopackRules(nextConfig, wywNext) {
291
301
  });
292
302
  const userOptions = wywNext.turbopackLoaderOptions ?? {};
293
303
  assertNoFunctions(userOptions, 'turbopackLoaderOptions');
304
+ const userImportOverrides = isPlainObject(userOptions.importOverrides)
305
+ ? userOptions.importOverrides
306
+ : undefined;
294
307
  const loaderOptions = {
295
308
  babelOptions: { presets: [nextBabelPreset] },
296
309
  sourceMap: process.env.NODE_ENV !== 'production',
297
310
  ...userOptions,
311
+ importOverrides: userImportOverrides
312
+ ? { ...DEFAULT_REACT_IMPORT_OVERRIDES, ...userImportOverrides }
313
+ : DEFAULT_REACT_IMPORT_OVERRIDES,
298
314
  };
299
315
  const useTurbopackConfig = shouldUseTurbopackConfig(nextConfig);
300
316
  const isNextBuild = process.argv.includes('build');