@openuiai/next 16.0.6 → 16.0.8

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.
Files changed (48) hide show
  1. package/dist/bin/next +1 -1
  2. package/dist/build/index.js +3 -3
  3. package/dist/build/swc/index.js +1 -1
  4. package/dist/build/webpack/loaders/css-loader/src/utils.js +2 -1
  5. package/dist/build/webpack/loaders/css-loader/src/utils.js.map +1 -1
  6. package/dist/build/webpack/plugins/jsconfig-paths-plugin.js +4 -0
  7. package/dist/build/webpack/plugins/jsconfig-paths-plugin.js.map +1 -1
  8. package/dist/build/webpack/plugins/profiling-plugin.js +4 -1
  9. package/dist/build/webpack/plugins/profiling-plugin.js.map +1 -1
  10. package/dist/build/webpack/plugins/react-loadable-plugin.js +2 -0
  11. package/dist/build/webpack/plugins/react-loadable-plugin.js.map +1 -1
  12. package/dist/build/webpack/plugins/wellknown-errors-plugin/parseNotFoundError.js +8 -0
  13. package/dist/build/webpack/plugins/wellknown-errors-plugin/parseNotFoundError.js.map +1 -1
  14. package/dist/build/webpack-config.js +2 -2
  15. package/dist/client/app-bootstrap.js +1 -1
  16. package/dist/client/index.js +1 -1
  17. package/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-plugin.js +2 -0
  18. package/dist/esm/build/index.js +3 -3
  19. package/dist/esm/build/swc/index.js +1 -1
  20. package/dist/esm/build/webpack/loaders/css-loader/src/utils.js +2 -1
  21. package/dist/esm/build/webpack/loaders/css-loader/src/utils.js.map +1 -1
  22. package/dist/esm/build/webpack/plugins/jsconfig-paths-plugin.js +4 -0
  23. package/dist/esm/build/webpack/plugins/jsconfig-paths-plugin.js.map +1 -1
  24. package/dist/esm/build/webpack/plugins/profiling-plugin.js +4 -1
  25. package/dist/esm/build/webpack/plugins/profiling-plugin.js.map +1 -1
  26. package/dist/esm/build/webpack/plugins/react-loadable-plugin.js +2 -0
  27. package/dist/esm/build/webpack/plugins/react-loadable-plugin.js.map +1 -1
  28. package/dist/esm/build/webpack/plugins/wellknown-errors-plugin/parseNotFoundError.js +8 -0
  29. package/dist/esm/build/webpack/plugins/wellknown-errors-plugin/parseNotFoundError.js.map +1 -1
  30. package/dist/esm/build/webpack-config.js +2 -2
  31. package/dist/esm/client/app-bootstrap.js +1 -1
  32. package/dist/esm/client/index.js +1 -1
  33. package/dist/esm/server/dev/hot-reloader-webpack.js +1 -1
  34. package/dist/esm/server/dev/middleware-webpack.js +10 -3
  35. package/dist/esm/server/dev/middleware-webpack.js.map +1 -1
  36. package/dist/esm/server/lib/app-info-log.js +1 -1
  37. package/dist/esm/server/lib/start-server.js +1 -1
  38. package/dist/esm/shared/lib/errors/canary-only-config-error.js +1 -1
  39. package/dist/server/dev/hot-reloader-webpack.js +1 -1
  40. package/dist/server/dev/middleware-webpack.js +10 -3
  41. package/dist/server/dev/middleware-webpack.js.map +1 -1
  42. package/dist/server/lib/app-info-log.js +1 -1
  43. package/dist/server/lib/start-server.js +1 -1
  44. package/dist/shared/lib/errors/canary-only-config-error.js +1 -1
  45. package/dist/telemetry/anonymous-meta.js +1 -1
  46. package/dist/telemetry/events/session-stopped.js +2 -2
  47. package/dist/telemetry/events/version.js +2 -2
  48. package/package.json +1 -1
package/dist/bin/next CHANGED
@@ -79,7 +79,7 @@ const program = new NextRootCommand();
79
79
  program.name('next').description('The Next.js CLI allows you to develop, build, start your application, and more.').configureHelp({
80
80
  formatHelp: (cmd, helper)=>(0, _formatclihelpoutput.formatCliHelpOutput)(cmd, helper),
81
81
  subcommandTerm: (cmd)=>`${cmd.name()} ${cmd.usage()}`
82
- }).helpCommand(false).helpOption('-h, --help', 'Displays this message.').version(`Next.js v${"16.0.6"}`, '-v, --version', 'Outputs the Next.js version.');
82
+ }).helpCommand(false).helpOption('-h, --help', 'Displays this message.').version(`Next.js v${"16.0.8"}`, '-v, --version', 'Outputs the Next.js version.');
83
83
  program.command('build').description('Creates an optimized production build of your application. The output displays information about each route.').argument('[directory]', `A directory on which to build the application. ${(0, _picocolors.italic)('If no directory is provided, the current directory will be used.')}`).option('-d, --debug', 'Enables a more verbose build output.').option('--debug-prerender', 'Enables debug mode for prerendering. Not for production use!').option('--no-mangling', 'Disables mangling.').option('--profile', 'Enables production profiling for React.').option('--experimental-app-only', 'Builds only App Router routes.').option('--webpack', 'Builds using webpack.').addOption(new _commander.Option('--experimental-build-mode [mode]', 'Uses an experimental build mode.').choices([
84
84
  'compile',
85
85
  'generate',
@@ -373,7 +373,7 @@ async function build(dir, reactProductionProfiling = false, debugOutput = false,
373
373
  try {
374
374
  const nextBuildSpan = (0, _trace.trace)('next-build', undefined, {
375
375
  buildMode: experimentalBuildMode,
376
- version: "16.0.6"
376
+ version: "16.0.8"
377
377
  });
378
378
  _buildcontext.NextBuildContext.nextBuildSpan = nextBuildSpan;
379
379
  _buildcontext.NextBuildContext.dir = dir;
@@ -886,7 +886,7 @@ async function build(dir, reactProductionProfiling = false, debugOutput = false,
886
886
  // Files outside of the distDir can be "type": "module"
887
887
  await writeFileUtf8(_path.default.join(distDir, 'package.json'), '{"type": "commonjs"}');
888
888
  // These are written to distDir, so they need to come after creating and cleaning distDr.
889
- await (0, _builddiagnostics.recordFrameworkVersion)("16.0.6");
889
+ await (0, _builddiagnostics.recordFrameworkVersion)("16.0.8");
890
890
  await (0, _builddiagnostics.updateBuildDiagnostics)({
891
891
  buildStage: 'start'
892
892
  });
@@ -2535,7 +2535,7 @@ async function build(dir, reactProductionProfiling = false, debugOutput = false,
2535
2535
  configOutDir: _path.default.join(dir, configOutDir),
2536
2536
  staticPages,
2537
2537
  serverPropsPages,
2538
- nextVersion: "16.0.6",
2538
+ nextVersion: "16.0.8",
2539
2539
  tracingRoot: outputFileTracingRoot,
2540
2540
  hasNodeMiddleware,
2541
2541
  hasInstrumentationHook,
@@ -128,7 +128,7 @@ function _interop_require_wildcard(obj, nodeInterop) {
128
128
  }
129
129
  return newObj;
130
130
  }
131
- const nextVersion = "16.0.6";
131
+ const nextVersion = "16.0.8";
132
132
  const ArchName = (0, _os.arch)();
133
133
  const PlatformName = (0, _os.platform)();
134
134
  function infoLog(...args) {
@@ -264,7 +264,8 @@ function getPreRequester({ loaders, loaderIndex }) {
264
264
  if (number === false) {
265
265
  cache[number] = '';
266
266
  } else {
267
- const loadersRequest = loaders.slice(loaderIndex, loaderIndex + 1 + (typeof number !== 'number' ? 0 : number)).map((x)=>x.request).join('!');
267
+ const loadersRequest = loaders.slice(loaderIndex, loaderIndex + 1 + (typeof number !== 'number' ? 0 : number)).map((x)=>x.request).filter((r)=>r) // Filter out undefined requests (Bun compatibility)
268
+ .join('!');
268
269
  cache[number] = `-!${loadersRequest}!`;
269
270
  }
270
271
  return cache[number];
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/build/webpack/loaders/css-loader/src/utils.ts"],"sourcesContent":["/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nimport { fileURLToPath } from 'url'\nimport path from 'path'\n\nimport { urlToRequest } from 'next/dist/compiled/loader-utils3'\nimport modulesValues from 'next/dist/compiled/postcss-modules-values'\nimport localByDefault from 'next/dist/compiled/postcss-modules-local-by-default'\nimport extractImports from 'next/dist/compiled/postcss-modules-extract-imports'\nimport modulesScope from 'next/dist/compiled/postcss-modules-scope'\nimport camelCase from './camelcase'\nimport { normalizePath } from '../../../../../lib/normalize-path'\n\nconst whitespace = '[\\\\x20\\\\t\\\\r\\\\n\\\\f]'\nconst unescapeRegExp = new RegExp(\n `\\\\\\\\([\\\\da-f]{1,6}${whitespace}?|(${whitespace})|.)`,\n 'ig'\n)\nconst matchNativeWin32Path = /^[A-Z]:[/\\\\]|^\\\\\\\\/i\n\nfunction unescape(str: string) {\n return str.replace(unescapeRegExp, (_, escaped, escapedWhitespace) => {\n const high = (`0x${escaped}` as any) - 0x10000\n\n // NaN means non-codepoint\n // Workaround erroneous numeric interpretation of +\"0x\"\n // eslint-disable-next-line no-self-compare\n return high !== high || escapedWhitespace\n ? escaped\n : high < 0\n ? // BMP codepoint\n String.fromCharCode(high + 0x10000)\n : // Supplemental Plane codepoint (surrogate pair)\n String.fromCharCode((high >> 10) | 0xd800, (high & 0x3ff) | 0xdc00)\n })\n}\n\nfunction fixedEncodeURIComponent(str: string) {\n return str.replace(/[!'()*]/g, (c) => `%${c.charCodeAt(0).toString(16)}`)\n}\n\nfunction normalizeUrl(url: string, isStringValue: boolean) {\n let normalizedUrl = url\n\n if (isStringValue && /\\\\(\\n|\\r\\n|\\r|\\f)/.test(normalizedUrl)) {\n normalizedUrl = normalizedUrl.replace(/\\\\(\\n|\\r\\n|\\r|\\f)/g, '')\n }\n\n if (matchNativeWin32Path.test(url)) {\n try {\n normalizedUrl = decodeURIComponent(normalizedUrl)\n } catch (error) {\n // Ignores invalid and broken URLs and try to resolve them as is\n }\n\n return normalizedUrl\n }\n\n normalizedUrl = unescape(normalizedUrl)\n\n if (isDataUrl(url)) {\n return fixedEncodeURIComponent(normalizedUrl)\n }\n\n try {\n normalizedUrl = decodeURI(normalizedUrl)\n } catch (error) {\n // Ignores invalid and broken URLs and try to resolve them as is\n }\n\n return normalizedUrl\n}\n\nfunction requestify(url: string, rootContext: string) {\n if (/^file:/i.test(url)) {\n return fileURLToPath(url)\n }\n\n if (/^[a-z][a-z0-9+.-]*:/i.test(url)) {\n return url\n }\n\n return url.charAt(0) === '/'\n ? urlToRequest(url, rootContext)\n : urlToRequest(url)\n}\n\nfunction getFilter(filter: any, resourcePath: string) {\n return (...args: any[]) => {\n if (typeof filter === 'function') {\n return filter(...args, resourcePath)\n }\n\n return true\n }\n}\n\nfunction shouldUseImportPlugin(options: any) {\n if (options.modules.exportOnlyLocals) {\n return false\n }\n\n if (typeof options.import === 'boolean') {\n return options.import\n }\n\n return true\n}\n\nfunction shouldUseURLPlugin(options: any) {\n if (options.modules.exportOnlyLocals) {\n return false\n }\n\n if (typeof options.url === 'boolean') {\n return options.url\n }\n\n return true\n}\n\nfunction shouldUseModulesPlugins(options: any) {\n return options.modules.compileType === 'module'\n}\n\nfunction shouldUseIcssPlugin(options: any) {\n return options.icss === true || Boolean(options.modules)\n}\n\nfunction getModulesPlugins(options: any, loaderContext: any, meta: any) {\n const {\n mode,\n getLocalIdent,\n localIdentName,\n localIdentContext,\n localIdentHashPrefix,\n localIdentRegExp,\n } = options.modules\n\n let plugins: any[] = []\n\n try {\n plugins = [\n modulesValues,\n localByDefault({ mode }),\n extractImports(),\n modulesScope({\n generateScopedName(exportName: any) {\n return getLocalIdent(\n loaderContext,\n localIdentName,\n exportName,\n {\n context: localIdentContext,\n hashPrefix: localIdentHashPrefix,\n regExp: localIdentRegExp,\n },\n meta\n )\n },\n exportGlobals: options.modules.exportGlobals,\n }),\n ]\n } catch (error) {\n loaderContext.emitError(error)\n }\n\n return plugins\n}\n\nconst IS_NATIVE_WIN32_PATH = /^[a-z]:[/\\\\]|^\\\\\\\\/i\nconst ABSOLUTE_SCHEME = /^[a-z0-9+\\-.]+:/i\n\nfunction getURLType(source: string) {\n if (source[0] === '/') {\n if (source[1] === '/') {\n return 'scheme-relative'\n }\n\n return 'path-absolute'\n }\n\n if (IS_NATIVE_WIN32_PATH.test(source)) {\n return 'path-absolute'\n }\n\n return ABSOLUTE_SCHEME.test(source) ? 'absolute' : 'path-relative'\n}\n\nfunction normalizeSourceMap(map: any, resourcePath: string) {\n let newMap = map\n\n // Some loader emit source map as string\n // Strip any JSON XSSI avoidance prefix from the string (as documented in the source maps specification), and then parse the string as JSON.\n if (typeof newMap === 'string') {\n newMap = JSON.parse(newMap)\n }\n\n delete newMap.file\n\n const { sourceRoot } = newMap\n\n delete newMap.sourceRoot\n\n if (newMap.sources) {\n // Source maps should use forward slash because it is URLs (https://github.com/mozilla/source-map/issues/91)\n // We should normalize path because previous loaders like `sass-loader` using backslash when generate source map\n newMap.sources = newMap.sources.map((source: string) => {\n // Non-standard syntax from `postcss`\n if (source.startsWith('<')) {\n return source\n }\n\n const sourceType = getURLType(source)\n\n // Do no touch `scheme-relative` and `absolute` URLs\n if (sourceType === 'path-relative' || sourceType === 'path-absolute') {\n const absoluteSource =\n sourceType === 'path-relative' && sourceRoot\n ? path.resolve(sourceRoot, normalizePath(source))\n : normalizePath(source)\n\n return path.relative(path.dirname(resourcePath), absoluteSource)\n }\n\n return source\n })\n }\n\n return newMap\n}\n\nfunction getPreRequester({ loaders, loaderIndex }: any) {\n const cache = Object.create(null)\n\n return (number: any) => {\n if (cache[number]) {\n return cache[number]\n }\n\n if (number === false) {\n cache[number] = ''\n } else {\n const loadersRequest = loaders\n .slice(\n loaderIndex,\n loaderIndex + 1 + (typeof number !== 'number' ? 0 : number)\n )\n .map((x: any) => x.request)\n .join('!')\n\n cache[number] = `-!${loadersRequest}!`\n }\n\n return cache[number]\n }\n}\n\nfunction getImportCode(imports: any, options: any) {\n let code = ''\n\n for (const item of imports) {\n const { importName, url, icss } = item\n\n if (options.esModule) {\n if (icss && options.modules.namedExport) {\n code += `import ${\n options.modules.exportOnlyLocals ? '' : `${importName}, `\n }* as ${importName}_NAMED___ from ${url};\\n`\n } else {\n code += `import ${importName} from ${url};\\n`\n }\n } else {\n code += `var ${importName} = require(${url});\\n`\n }\n }\n\n return code ? `// Imports\\n${code}` : ''\n}\n\nfunction normalizeSourceMapForRuntime(map: any, loaderContext: any) {\n const resultMap = map ? map.toJSON() : null\n\n if (resultMap) {\n delete resultMap.file\n\n resultMap.sourceRoot = ''\n\n resultMap.sources = resultMap.sources.map((source: string) => {\n // Non-standard syntax from `postcss`\n if (source.startsWith('<')) {\n return source\n }\n\n const sourceType = getURLType(source)\n\n if (sourceType !== 'path-relative') {\n return source\n }\n\n const resourceDirname = path.dirname(loaderContext.resourcePath)\n const absoluteSource = path.resolve(resourceDirname, source)\n const contextifyPath = normalizePath(\n path.relative(loaderContext.rootContext, absoluteSource)\n )\n\n return `webpack://${contextifyPath}`\n })\n }\n\n return JSON.stringify(resultMap)\n}\n\nfunction getModuleCode(\n result: { map: any; css: any },\n api: any,\n replacements: any,\n options: {\n modules: { exportOnlyLocals: boolean; namedExport: any }\n sourceMap: any\n },\n loaderContext: any\n) {\n if (options.modules.exportOnlyLocals === true) {\n return ''\n }\n\n const sourceMapValue = options.sourceMap\n ? `,${normalizeSourceMapForRuntime(result.map, loaderContext)}`\n : ''\n\n let code = JSON.stringify(result.css)\n let beforeCode = `var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(${options.sourceMap});\\n`\n\n for (const item of api) {\n const { url, media, dedupe } = item\n\n beforeCode += url\n ? `___CSS_LOADER_EXPORT___.push([module.id, ${JSON.stringify(\n `@import url(${url});`\n )}${media ? `, ${JSON.stringify(media)}` : ''}]);\\n`\n : `___CSS_LOADER_EXPORT___.i(${item.importName}${\n media ? `, ${JSON.stringify(media)}` : dedupe ? ', \"\"' : ''\n }${dedupe ? ', true' : ''});\\n`\n }\n\n for (const item of replacements) {\n const { replacementName, importName, localName } = item\n\n if (localName) {\n code = code.replace(new RegExp(replacementName, 'g'), () =>\n options.modules.namedExport\n ? `\" + ${importName}_NAMED___[${JSON.stringify(\n camelCase(localName)\n )}] + \"`\n : `\" + ${importName}.locals[${JSON.stringify(localName)}] + \"`\n )\n } else {\n const { hash, needQuotes } = item\n const getUrlOptions = [\n ...(hash ? [`hash: ${JSON.stringify(hash)}`] : []),\n ...(needQuotes ? 'needQuotes: true' : []),\n ]\n const preparedOptions =\n getUrlOptions.length > 0 ? `, { ${getUrlOptions.join(', ')} }` : ''\n\n beforeCode += `var ${replacementName} = ___CSS_LOADER_GET_URL_IMPORT___(${importName}${preparedOptions});\\n`\n code = code.replace(\n new RegExp(replacementName, 'g'),\n () => `\" + ${replacementName} + \"`\n )\n }\n }\n\n return `${beforeCode}// Module\\n___CSS_LOADER_EXPORT___.push([module.id, ${code}, \"\"${sourceMapValue}]);\\n`\n}\n\nfunction dashesCamelCase(str: string) {\n return str.replace(/-+(\\w)/g, (_match: any, firstLetter: string) =>\n firstLetter.toUpperCase()\n )\n}\n\nfunction getExportCode(\n exports: any,\n replacements: any,\n options: {\n modules: {\n namedExport: any\n exportLocalsConvention: any\n exportOnlyLocals: any\n }\n esModule: any\n }\n) {\n let code = '// Exports\\n'\n let localsCode = ''\n\n const addExportToLocalsCode = (name: string, value: any) => {\n if (options.modules.namedExport) {\n localsCode += `export const ${camelCase(name)} = ${JSON.stringify(\n value\n )};\\n`\n } else {\n if (localsCode) {\n localsCode += `,\\n`\n }\n\n localsCode += `\\t${JSON.stringify(name)}: ${JSON.stringify(value)}`\n }\n }\n\n for (const { name, value } of exports) {\n switch (options.modules.exportLocalsConvention) {\n case 'camelCase': {\n addExportToLocalsCode(name, value)\n\n const modifiedName = camelCase(name)\n\n if (modifiedName !== name) {\n addExportToLocalsCode(modifiedName, value)\n }\n break\n }\n case 'camelCaseOnly': {\n addExportToLocalsCode(camelCase(name), value)\n break\n }\n case 'dashes': {\n addExportToLocalsCode(name, value)\n\n const modifiedName = dashesCamelCase(name)\n\n if (modifiedName !== name) {\n addExportToLocalsCode(modifiedName, value)\n }\n break\n }\n case 'dashesOnly': {\n addExportToLocalsCode(dashesCamelCase(name), value)\n break\n }\n case 'asIs':\n default:\n addExportToLocalsCode(name, value)\n break\n }\n }\n\n for (const item of replacements) {\n const { replacementName, localName } = item\n\n if (localName) {\n const { importName } = item\n\n localsCode = localsCode.replace(new RegExp(replacementName, 'g'), () => {\n if (options.modules.namedExport) {\n return `\" + ${importName}_NAMED___[${JSON.stringify(\n camelCase(localName)\n )}] + \"`\n } else if (options.modules.exportOnlyLocals) {\n return `\" + ${importName}[${JSON.stringify(localName)}] + \"`\n }\n\n return `\" + ${importName}.locals[${JSON.stringify(localName)}] + \"`\n })\n } else {\n localsCode = localsCode.replace(\n new RegExp(replacementName, 'g'),\n () => `\" + ${replacementName} + \"`\n )\n }\n }\n\n if (options.modules.exportOnlyLocals) {\n code += options.modules.namedExport\n ? localsCode\n : `${\n options.esModule ? 'export default' : 'module.exports ='\n } {\\n${localsCode}\\n};\\n`\n\n return code\n }\n\n if (localsCode) {\n code += options.modules.namedExport\n ? localsCode\n : `___CSS_LOADER_EXPORT___.locals = {\\n${localsCode}\\n};\\n`\n }\n\n code += `${\n options.esModule ? 'export default' : 'module.exports ='\n } ___CSS_LOADER_EXPORT___;\\n`\n\n return code\n}\n\nasync function resolveRequests(\n resolve: (arg0: any, arg1: any) => Promise<any>,\n context: any,\n possibleRequests: any[]\n): Promise<any> {\n return resolve(context, possibleRequests[0])\n .then((result: any) => {\n return result\n })\n .catch((error: any) => {\n const [, ...tailPossibleRequests] = possibleRequests\n\n if (tailPossibleRequests.length === 0) {\n throw error\n }\n\n return resolveRequests(resolve, context, tailPossibleRequests)\n })\n}\n\nfunction isUrlRequestable(url: string) {\n // Protocol-relative URLs\n if (/^\\/\\//.test(url)) {\n return false\n }\n\n // `file:` protocol\n if (/^file:/i.test(url)) {\n return true\n }\n\n // Absolute URLs\n if (/^[a-z][a-z0-9+.-]*:/i.test(url)) {\n return true\n }\n\n // `#` URLs\n if (/^#/.test(url)) {\n return false\n }\n\n return true\n}\n\nfunction sort(a: { index: number }, b: { index: number }) {\n return a.index - b.index\n}\n\nfunction isDataUrl(url: string) {\n if (/^data:/i.test(url)) {\n return true\n }\n\n return false\n}\n\nexport {\n isDataUrl,\n shouldUseModulesPlugins,\n shouldUseImportPlugin,\n shouldUseURLPlugin,\n shouldUseIcssPlugin,\n normalizeUrl,\n requestify,\n getFilter,\n getModulesPlugins,\n normalizeSourceMap,\n getPreRequester,\n getImportCode,\n getModuleCode,\n getExportCode,\n resolveRequests,\n isUrlRequestable,\n sort,\n // For lightningcss-loader\n normalizeSourceMapForRuntime,\n dashesCamelCase,\n}\n"],"names":["dashesCamelCase","getExportCode","getFilter","getImportCode","getModuleCode","getModulesPlugins","getPreRequester","isDataUrl","isUrlRequestable","normalizeSourceMap","normalizeSourceMapForRuntime","normalizeUrl","requestify","resolveRequests","shouldUseIcssPlugin","shouldUseImportPlugin","shouldUseModulesPlugins","shouldUseURLPlugin","sort","whitespace","unescapeRegExp","RegExp","matchNativeWin32Path","unescape","str","replace","_","escaped","escapedWhitespace","high","String","fromCharCode","fixedEncodeURIComponent","c","charCodeAt","toString","url","isStringValue","normalizedUrl","test","decodeURIComponent","error","decodeURI","rootContext","fileURLToPath","charAt","urlToRequest","filter","resourcePath","args","options","modules","exportOnlyLocals","import","compileType","icss","Boolean","loaderContext","meta","mode","getLocalIdent","localIdentName","localIdentContext","localIdentHashPrefix","localIdentRegExp","plugins","modulesValues","localByDefault","extractImports","modulesScope","generateScopedName","exportName","context","hashPrefix","regExp","exportGlobals","emitError","IS_NATIVE_WIN32_PATH","ABSOLUTE_SCHEME","getURLType","source","map","newMap","JSON","parse","file","sourceRoot","sources","startsWith","sourceType","absoluteSource","path","resolve","normalizePath","relative","dirname","loaders","loaderIndex","cache","Object","create","number","loadersRequest","slice","x","request","join","imports","code","item","importName","esModule","namedExport","resultMap","toJSON","resourceDirname","contextifyPath","stringify","result","api","replacements","sourceMapValue","sourceMap","css","beforeCode","media","dedupe","replacementName","localName","camelCase","hash","needQuotes","getUrlOptions","preparedOptions","length","_match","firstLetter","toUpperCase","exports","localsCode","addExportToLocalsCode","name","value","exportLocalsConvention","modifiedName","possibleRequests","then","catch","tailPossibleRequests","a","b","index"],"mappings":"AAAA;;;AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA4jBEA,eAAe;eAAfA;;IANAC,aAAa;eAAbA;;IANAC,SAAS;eAATA;;IAIAC,aAAa;eAAbA;;IACAC,aAAa;eAAbA;;IAJAC,iBAAiB;eAAjBA;;IAEAC,eAAe;eAAfA;;IAVAC,SAAS;eAATA;;IAeAC,gBAAgB;eAAhBA;;IANAC,kBAAkB;eAAlBA;;IAQA,0BAA0B;IAC1BC,4BAA4B;eAA5BA;;IAbAC,YAAY;eAAZA;;IACAC,UAAU;eAAVA;;IAQAC,eAAe;eAAfA;;IAVAC,mBAAmB;eAAnBA;;IAFAC,qBAAqB;eAArBA;;IADAC,uBAAuB;eAAvBA;;IAEAC,kBAAkB;eAAlBA;;IAaAC,IAAI;eAAJA;;;qBAxjB4B;6DACb;8BAEY;6EACH;qFACC;qFACA;4EACF;kEACH;+BACQ;;;;;;AAE9B,MAAMC,aAAa;AACnB,MAAMC,iBAAiB,IAAIC,OACzB,CAAC,kBAAkB,EAAEF,WAAW,GAAG,EAAEA,WAAW,IAAI,CAAC,EACrD;AAEF,MAAMG,uBAAuB;AAE7B,SAASC,SAASC,GAAW;IAC3B,OAAOA,IAAIC,OAAO,CAACL,gBAAgB,CAACM,GAAGC,SAASC;QAC9C,MAAMC,OAAO,AAAC,CAAC,EAAE,EAAEF,SAAS,GAAW;QAEvC,0BAA0B;QAC1B,uDAAuD;QACvD,2CAA2C;QAC3C,OAAOE,SAASA,QAAQD,oBACpBD,UACAE,OAAO,IAELC,OAAOC,YAAY,CAACF,OAAO,WAE3BC,OAAOC,YAAY,CAAC,AAACF,QAAQ,KAAM,QAAQ,AAACA,OAAO,QAAS;IACpE;AACF;AAEA,SAASG,wBAAwBR,GAAW;IAC1C,OAAOA,IAAIC,OAAO,CAAC,YAAY,CAACQ,IAAM,CAAC,CAAC,EAAEA,EAAEC,UAAU,CAAC,GAAGC,QAAQ,CAAC,KAAK;AAC1E;AAEA,SAASxB,aAAayB,GAAW,EAAEC,aAAsB;IACvD,IAAIC,gBAAgBF;IAEpB,IAAIC,iBAAiB,oBAAoBE,IAAI,CAACD,gBAAgB;QAC5DA,gBAAgBA,cAAcb,OAAO,CAAC,sBAAsB;IAC9D;IAEA,IAAIH,qBAAqBiB,IAAI,CAACH,MAAM;QAClC,IAAI;YACFE,gBAAgBE,mBAAmBF;QACrC,EAAE,OAAOG,OAAO;QACd,gEAAgE;QAClE;QAEA,OAAOH;IACT;IAEAA,gBAAgBf,SAASe;IAEzB,IAAI/B,UAAU6B,MAAM;QAClB,OAAOJ,wBAAwBM;IACjC;IAEA,IAAI;QACFA,gBAAgBI,UAAUJ;IAC5B,EAAE,OAAOG,OAAO;IACd,gEAAgE;IAClE;IAEA,OAAOH;AACT;AAEA,SAAS1B,WAAWwB,GAAW,EAAEO,WAAmB;IAClD,IAAI,UAAUJ,IAAI,CAACH,MAAM;QACvB,OAAOQ,IAAAA,kBAAa,EAACR;IACvB;IAEA,IAAI,uBAAuBG,IAAI,CAACH,MAAM;QACpC,OAAOA;IACT;IAEA,OAAOA,IAAIS,MAAM,CAAC,OAAO,MACrBC,IAAAA,0BAAY,EAACV,KAAKO,eAClBG,IAAAA,0BAAY,EAACV;AACnB;AAEA,SAASlC,UAAU6C,MAAW,EAAEC,YAAoB;IAClD,OAAO,CAAC,GAAGC;QACT,IAAI,OAAOF,WAAW,YAAY;YAChC,OAAOA,UAAUE,MAAMD;QACzB;QAEA,OAAO;IACT;AACF;AAEA,SAASjC,sBAAsBmC,OAAY;IACzC,IAAIA,QAAQC,OAAO,CAACC,gBAAgB,EAAE;QACpC,OAAO;IACT;IAEA,IAAI,OAAOF,QAAQG,MAAM,KAAK,WAAW;QACvC,OAAOH,QAAQG,MAAM;IACvB;IAEA,OAAO;AACT;AAEA,SAASpC,mBAAmBiC,OAAY;IACtC,IAAIA,QAAQC,OAAO,CAACC,gBAAgB,EAAE;QACpC,OAAO;IACT;IAEA,IAAI,OAAOF,QAAQd,GAAG,KAAK,WAAW;QACpC,OAAOc,QAAQd,GAAG;IACpB;IAEA,OAAO;AACT;AAEA,SAASpB,wBAAwBkC,OAAY;IAC3C,OAAOA,QAAQC,OAAO,CAACG,WAAW,KAAK;AACzC;AAEA,SAASxC,oBAAoBoC,OAAY;IACvC,OAAOA,QAAQK,IAAI,KAAK,QAAQC,QAAQN,QAAQC,OAAO;AACzD;AAEA,SAAS9C,kBAAkB6C,OAAY,EAAEO,aAAkB,EAAEC,IAAS;IACpE,MAAM,EACJC,IAAI,EACJC,aAAa,EACbC,cAAc,EACdC,iBAAiB,EACjBC,oBAAoB,EACpBC,gBAAgB,EACjB,GAAGd,QAAQC,OAAO;IAEnB,IAAIc,UAAiB,EAAE;IAEvB,IAAI;QACFA,UAAU;YACRC,6BAAa;YACbC,IAAAA,qCAAc,EAAC;gBAAER;YAAK;YACtBS,IAAAA,qCAAc;YACdC,IAAAA,4BAAY,EAAC;gBACXC,oBAAmBC,UAAe;oBAChC,OAAOX,cACLH,eACAI,gBACAU,YACA;wBACEC,SAASV;wBACTW,YAAYV;wBACZW,QAAQV;oBACV,GACAN;gBAEJ;gBACAiB,eAAezB,QAAQC,OAAO,CAACwB,aAAa;YAC9C;SACD;IACH,EAAE,OAAOlC,OAAO;QACdgB,cAAcmB,SAAS,CAACnC;IAC1B;IAEA,OAAOwB;AACT;AAEA,MAAMY,uBAAuB;AAC7B,MAAMC,kBAAkB;AAExB,SAASC,WAAWC,MAAc;IAChC,IAAIA,MAAM,CAAC,EAAE,KAAK,KAAK;QACrB,IAAIA,MAAM,CAAC,EAAE,KAAK,KAAK;YACrB,OAAO;QACT;QAEA,OAAO;IACT;IAEA,IAAIH,qBAAqBtC,IAAI,CAACyC,SAAS;QACrC,OAAO;IACT;IAEA,OAAOF,gBAAgBvC,IAAI,CAACyC,UAAU,aAAa;AACrD;AAEA,SAASvE,mBAAmBwE,GAAQ,EAAEjC,YAAoB;IACxD,IAAIkC,SAASD;IAEb,wCAAwC;IACxC,4IAA4I;IAC5I,IAAI,OAAOC,WAAW,UAAU;QAC9BA,SAASC,KAAKC,KAAK,CAACF;IACtB;IAEA,OAAOA,OAAOG,IAAI;IAElB,MAAM,EAAEC,UAAU,EAAE,GAAGJ;IAEvB,OAAOA,OAAOI,UAAU;IAExB,IAAIJ,OAAOK,OAAO,EAAE;QAClB,4GAA4G;QAC5G,gHAAgH;QAChHL,OAAOK,OAAO,GAAGL,OAAOK,OAAO,CAACN,GAAG,CAAC,CAACD;YACnC,qCAAqC;YACrC,IAAIA,OAAOQ,UAAU,CAAC,MAAM;gBAC1B,OAAOR;YACT;YAEA,MAAMS,aAAaV,WAAWC;YAE9B,oDAAoD;YACpD,IAAIS,eAAe,mBAAmBA,eAAe,iBAAiB;gBACpE,MAAMC,iBACJD,eAAe,mBAAmBH,aAC9BK,aAAI,CAACC,OAAO,CAACN,YAAYO,IAAAA,4BAAa,EAACb,WACvCa,IAAAA,4BAAa,EAACb;gBAEpB,OAAOW,aAAI,CAACG,QAAQ,CAACH,aAAI,CAACI,OAAO,CAAC/C,eAAe0C;YACnD;YAEA,OAAOV;QACT;IACF;IAEA,OAAOE;AACT;AAEA,SAAS5E,gBAAgB,EAAE0F,OAAO,EAAEC,WAAW,EAAO;IACpD,MAAMC,QAAQC,OAAOC,MAAM,CAAC;IAE5B,OAAO,CAACC;QACN,IAAIH,KAAK,CAACG,OAAO,EAAE;YACjB,OAAOH,KAAK,CAACG,OAAO;QACtB;QAEA,IAAIA,WAAW,OAAO;YACpBH,KAAK,CAACG,OAAO,GAAG;QAClB,OAAO;YACL,MAAMC,iBAAiBN,QACpBO,KAAK,CACJN,aACAA,cAAc,IAAK,CAAA,OAAOI,WAAW,WAAW,IAAIA,MAAK,GAE1DpB,GAAG,CAAC,CAACuB,IAAWA,EAAEC,OAAO,EACzBC,IAAI,CAAC;YAERR,KAAK,CAACG,OAAO,GAAG,CAAC,EAAE,EAAEC,eAAe,CAAC,CAAC;QACxC;QAEA,OAAOJ,KAAK,CAACG,OAAO;IACtB;AACF;AAEA,SAASlG,cAAcwG,OAAY,EAAEzD,OAAY;IAC/C,IAAI0D,OAAO;IAEX,KAAK,MAAMC,QAAQF,QAAS;QAC1B,MAAM,EAAEG,UAAU,EAAE1E,GAAG,EAAEmB,IAAI,EAAE,GAAGsD;QAElC,IAAI3D,QAAQ6D,QAAQ,EAAE;YACpB,IAAIxD,QAAQL,QAAQC,OAAO,CAAC6D,WAAW,EAAE;gBACvCJ,QAAQ,CAAC,OAAO,EACd1D,QAAQC,OAAO,CAACC,gBAAgB,GAAG,KAAK,GAAG0D,WAAW,EAAE,CAAC,CAC1D,KAAK,EAAEA,WAAW,eAAe,EAAE1E,IAAI,GAAG,CAAC;YAC9C,OAAO;gBACLwE,QAAQ,CAAC,OAAO,EAAEE,WAAW,MAAM,EAAE1E,IAAI,GAAG,CAAC;YAC/C;QACF,OAAO;YACLwE,QAAQ,CAAC,IAAI,EAAEE,WAAW,WAAW,EAAE1E,IAAI,IAAI,CAAC;QAClD;IACF;IAEA,OAAOwE,OAAO,CAAC,YAAY,EAAEA,MAAM,GAAG;AACxC;AAEA,SAASlG,6BAA6BuE,GAAQ,EAAExB,aAAkB;IAChE,MAAMwD,YAAYhC,MAAMA,IAAIiC,MAAM,KAAK;IAEvC,IAAID,WAAW;QACb,OAAOA,UAAU5B,IAAI;QAErB4B,UAAU3B,UAAU,GAAG;QAEvB2B,UAAU1B,OAAO,GAAG0B,UAAU1B,OAAO,CAACN,GAAG,CAAC,CAACD;YACzC,qCAAqC;YACrC,IAAIA,OAAOQ,UAAU,CAAC,MAAM;gBAC1B,OAAOR;YACT;YAEA,MAAMS,aAAaV,WAAWC;YAE9B,IAAIS,eAAe,iBAAiB;gBAClC,OAAOT;YACT;YAEA,MAAMmC,kBAAkBxB,aAAI,CAACI,OAAO,CAACtC,cAAcT,YAAY;YAC/D,MAAM0C,iBAAiBC,aAAI,CAACC,OAAO,CAACuB,iBAAiBnC;YACrD,MAAMoC,iBAAiBvB,IAAAA,4BAAa,EAClCF,aAAI,CAACG,QAAQ,CAACrC,cAAcd,WAAW,EAAE+C;YAG3C,OAAO,CAAC,UAAU,EAAE0B,gBAAgB;QACtC;IACF;IAEA,OAAOjC,KAAKkC,SAAS,CAACJ;AACxB;AAEA,SAAS7G,cACPkH,MAA8B,EAC9BC,GAAQ,EACRC,YAAiB,EACjBtE,OAGC,EACDO,aAAkB;IAElB,IAAIP,QAAQC,OAAO,CAACC,gBAAgB,KAAK,MAAM;QAC7C,OAAO;IACT;IAEA,MAAMqE,iBAAiBvE,QAAQwE,SAAS,GACpC,CAAC,CAAC,EAAEhH,6BAA6B4G,OAAOrC,GAAG,EAAExB,gBAAgB,GAC7D;IAEJ,IAAImD,OAAOzB,KAAKkC,SAAS,CAACC,OAAOK,GAAG;IACpC,IAAIC,aAAa,CAAC,0DAA0D,EAAE1E,QAAQwE,SAAS,CAAC,IAAI,CAAC;IAErG,KAAK,MAAMb,QAAQU,IAAK;QACtB,MAAM,EAAEnF,GAAG,EAAEyF,KAAK,EAAEC,MAAM,EAAE,GAAGjB;QAE/Be,cAAcxF,MACV,CAAC,yCAAyC,EAAE+C,KAAKkC,SAAS,CACxD,CAAC,YAAY,EAAEjF,IAAI,EAAE,CAAC,IACpByF,QAAQ,CAAC,EAAE,EAAE1C,KAAKkC,SAAS,CAACQ,QAAQ,GAAG,GAAG,KAAK,CAAC,GACpD,CAAC,0BAA0B,EAAEhB,KAAKC,UAAU,GAC1Ce,QAAQ,CAAC,EAAE,EAAE1C,KAAKkC,SAAS,CAACQ,QAAQ,GAAGC,SAAS,SAAS,KACxDA,SAAS,WAAW,GAAG,IAAI,CAAC;IACrC;IAEA,KAAK,MAAMjB,QAAQW,aAAc;QAC/B,MAAM,EAAEO,eAAe,EAAEjB,UAAU,EAAEkB,SAAS,EAAE,GAAGnB;QAEnD,IAAImB,WAAW;YACbpB,OAAOA,KAAKnF,OAAO,CAAC,IAAIJ,OAAO0G,iBAAiB,MAAM,IACpD7E,QAAQC,OAAO,CAAC6D,WAAW,GACvB,CAAC,IAAI,EAAEF,WAAW,UAAU,EAAE3B,KAAKkC,SAAS,CAC1CY,IAAAA,kBAAS,EAACD,YACV,KAAK,CAAC,GACR,CAAC,IAAI,EAAElB,WAAW,QAAQ,EAAE3B,KAAKkC,SAAS,CAACW,WAAW,KAAK,CAAC;QAEpE,OAAO;YACL,MAAM,EAAEE,IAAI,EAAEC,UAAU,EAAE,GAAGtB;YAC7B,MAAMuB,gBAAgB;mBAChBF,OAAO;oBAAC,CAAC,MAAM,EAAE/C,KAAKkC,SAAS,CAACa,OAAO;iBAAC,GAAG,EAAE;mBAC7CC,aAAa,qBAAqB,EAAE;aACzC;YACD,MAAME,kBACJD,cAAcE,MAAM,GAAG,IAAI,CAAC,IAAI,EAAEF,cAAc1B,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG;YAEnEkB,cAAc,CAAC,IAAI,EAAEG,gBAAgB,mCAAmC,EAAEjB,aAAauB,gBAAgB,IAAI,CAAC;YAC5GzB,OAAOA,KAAKnF,OAAO,CACjB,IAAIJ,OAAO0G,iBAAiB,MAC5B,IAAM,CAAC,IAAI,EAAEA,gBAAgB,IAAI,CAAC;QAEtC;IACF;IAEA,OAAO,GAAGH,WAAW,oDAAoD,EAAEhB,KAAK,IAAI,EAAEa,eAAe,KAAK,CAAC;AAC7G;AAEA,SAASzH,gBAAgBwB,GAAW;IAClC,OAAOA,IAAIC,OAAO,CAAC,WAAW,CAAC8G,QAAaC,cAC1CA,YAAYC,WAAW;AAE3B;AAEA,SAASxI,cACPyI,QAAY,EACZlB,YAAiB,EACjBtE,OAOC;IAED,IAAI0D,OAAO;IACX,IAAI+B,aAAa;IAEjB,MAAMC,wBAAwB,CAACC,MAAcC;QAC3C,IAAI5F,QAAQC,OAAO,CAAC6D,WAAW,EAAE;YAC/B2B,cAAc,CAAC,aAAa,EAAEV,IAAAA,kBAAS,EAACY,MAAM,GAAG,EAAE1D,KAAKkC,SAAS,CAC/DyB,OACA,GAAG,CAAC;QACR,OAAO;YACL,IAAIH,YAAY;gBACdA,cAAc,CAAC,GAAG,CAAC;YACrB;YAEAA,cAAc,CAAC,EAAE,EAAExD,KAAKkC,SAAS,CAACwB,MAAM,EAAE,EAAE1D,KAAKkC,SAAS,CAACyB,QAAQ;QACrE;IACF;IAEA,KAAK,MAAM,EAAED,IAAI,EAAEC,KAAK,EAAE,IAAIJ,SAAS;QACrC,OAAQxF,QAAQC,OAAO,CAAC4F,sBAAsB;YAC5C,KAAK;gBAAa;oBAChBH,sBAAsBC,MAAMC;oBAE5B,MAAME,eAAef,IAAAA,kBAAS,EAACY;oBAE/B,IAAIG,iBAAiBH,MAAM;wBACzBD,sBAAsBI,cAAcF;oBACtC;oBACA;gBACF;YACA,KAAK;gBAAiB;oBACpBF,sBAAsBX,IAAAA,kBAAS,EAACY,OAAOC;oBACvC;gBACF;YACA,KAAK;gBAAU;oBACbF,sBAAsBC,MAAMC;oBAE5B,MAAME,eAAehJ,gBAAgB6I;oBAErC,IAAIG,iBAAiBH,MAAM;wBACzBD,sBAAsBI,cAAcF;oBACtC;oBACA;gBACF;YACA,KAAK;gBAAc;oBACjBF,sBAAsB5I,gBAAgB6I,OAAOC;oBAC7C;gBACF;YACA,KAAK;YACL;gBACEF,sBAAsBC,MAAMC;gBAC5B;QACJ;IACF;IAEA,KAAK,MAAMjC,QAAQW,aAAc;QAC/B,MAAM,EAAEO,eAAe,EAAEC,SAAS,EAAE,GAAGnB;QAEvC,IAAImB,WAAW;YACb,MAAM,EAAElB,UAAU,EAAE,GAAGD;YAEvB8B,aAAaA,WAAWlH,OAAO,CAAC,IAAIJ,OAAO0G,iBAAiB,MAAM;gBAChE,IAAI7E,QAAQC,OAAO,CAAC6D,WAAW,EAAE;oBAC/B,OAAO,CAAC,IAAI,EAAEF,WAAW,UAAU,EAAE3B,KAAKkC,SAAS,CACjDY,IAAAA,kBAAS,EAACD,YACV,KAAK,CAAC;gBACV,OAAO,IAAI9E,QAAQC,OAAO,CAACC,gBAAgB,EAAE;oBAC3C,OAAO,CAAC,IAAI,EAAE0D,WAAW,CAAC,EAAE3B,KAAKkC,SAAS,CAACW,WAAW,KAAK,CAAC;gBAC9D;gBAEA,OAAO,CAAC,IAAI,EAAElB,WAAW,QAAQ,EAAE3B,KAAKkC,SAAS,CAACW,WAAW,KAAK,CAAC;YACrE;QACF,OAAO;YACLW,aAAaA,WAAWlH,OAAO,CAC7B,IAAIJ,OAAO0G,iBAAiB,MAC5B,IAAM,CAAC,IAAI,EAAEA,gBAAgB,IAAI,CAAC;QAEtC;IACF;IAEA,IAAI7E,QAAQC,OAAO,CAACC,gBAAgB,EAAE;QACpCwD,QAAQ1D,QAAQC,OAAO,CAAC6D,WAAW,GAC/B2B,aACA,GACEzF,QAAQ6D,QAAQ,GAAG,mBAAmB,mBACvC,IAAI,EAAE4B,WAAW,MAAM,CAAC;QAE7B,OAAO/B;IACT;IAEA,IAAI+B,YAAY;QACd/B,QAAQ1D,QAAQC,OAAO,CAAC6D,WAAW,GAC/B2B,aACA,CAAC,oCAAoC,EAAEA,WAAW,MAAM,CAAC;IAC/D;IAEA/B,QAAQ,GACN1D,QAAQ6D,QAAQ,GAAG,mBAAmB,mBACvC,2BAA2B,CAAC;IAE7B,OAAOH;AACT;AAEA,eAAe/F,gBACb+E,OAA+C,EAC/CpB,OAAY,EACZyE,gBAAuB;IAEvB,OAAOrD,QAAQpB,SAASyE,gBAAgB,CAAC,EAAE,EACxCC,IAAI,CAAC,CAAC5B;QACL,OAAOA;IACT,GACC6B,KAAK,CAAC,CAAC1G;QACN,MAAM,GAAG,GAAG2G,qBAAqB,GAAGH;QAEpC,IAAIG,qBAAqBd,MAAM,KAAK,GAAG;YACrC,MAAM7F;QACR;QAEA,OAAO5B,gBAAgB+E,SAASpB,SAAS4E;IAC3C;AACJ;AAEA,SAAS5I,iBAAiB4B,GAAW;IACnC,yBAAyB;IACzB,IAAI,QAAQG,IAAI,CAACH,MAAM;QACrB,OAAO;IACT;IAEA,mBAAmB;IACnB,IAAI,UAAUG,IAAI,CAACH,MAAM;QACvB,OAAO;IACT;IAEA,gBAAgB;IAChB,IAAI,uBAAuBG,IAAI,CAACH,MAAM;QACpC,OAAO;IACT;IAEA,WAAW;IACX,IAAI,KAAKG,IAAI,CAACH,MAAM;QAClB,OAAO;IACT;IAEA,OAAO;AACT;AAEA,SAASlB,KAAKmI,CAAoB,EAAEC,CAAoB;IACtD,OAAOD,EAAEE,KAAK,GAAGD,EAAEC,KAAK;AAC1B;AAEA,SAAShJ,UAAU6B,GAAW;IAC5B,IAAI,UAAUG,IAAI,CAACH,MAAM;QACvB,OAAO;IACT;IAEA,OAAO;AACT","ignoreList":[0]}
1
+ {"version":3,"sources":["../../../../../../src/build/webpack/loaders/css-loader/src/utils.ts"],"sourcesContent":["/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nimport { fileURLToPath } from 'url'\nimport path from 'path'\n\nimport { urlToRequest } from 'next/dist/compiled/loader-utils3'\nimport modulesValues from 'next/dist/compiled/postcss-modules-values'\nimport localByDefault from 'next/dist/compiled/postcss-modules-local-by-default'\nimport extractImports from 'next/dist/compiled/postcss-modules-extract-imports'\nimport modulesScope from 'next/dist/compiled/postcss-modules-scope'\nimport camelCase from './camelcase'\nimport { normalizePath } from '../../../../../lib/normalize-path'\n\nconst whitespace = '[\\\\x20\\\\t\\\\r\\\\n\\\\f]'\nconst unescapeRegExp = new RegExp(\n `\\\\\\\\([\\\\da-f]{1,6}${whitespace}?|(${whitespace})|.)`,\n 'ig'\n)\nconst matchNativeWin32Path = /^[A-Z]:[/\\\\]|^\\\\\\\\/i\n\nfunction unescape(str: string) {\n return str.replace(unescapeRegExp, (_, escaped, escapedWhitespace) => {\n const high = (`0x${escaped}` as any) - 0x10000\n\n // NaN means non-codepoint\n // Workaround erroneous numeric interpretation of +\"0x\"\n // eslint-disable-next-line no-self-compare\n return high !== high || escapedWhitespace\n ? escaped\n : high < 0\n ? // BMP codepoint\n String.fromCharCode(high + 0x10000)\n : // Supplemental Plane codepoint (surrogate pair)\n String.fromCharCode((high >> 10) | 0xd800, (high & 0x3ff) | 0xdc00)\n })\n}\n\nfunction fixedEncodeURIComponent(str: string) {\n return str.replace(/[!'()*]/g, (c) => `%${c.charCodeAt(0).toString(16)}`)\n}\n\nfunction normalizeUrl(url: string, isStringValue: boolean) {\n let normalizedUrl = url\n\n if (isStringValue && /\\\\(\\n|\\r\\n|\\r|\\f)/.test(normalizedUrl)) {\n normalizedUrl = normalizedUrl.replace(/\\\\(\\n|\\r\\n|\\r|\\f)/g, '')\n }\n\n if (matchNativeWin32Path.test(url)) {\n try {\n normalizedUrl = decodeURIComponent(normalizedUrl)\n } catch (error) {\n // Ignores invalid and broken URLs and try to resolve them as is\n }\n\n return normalizedUrl\n }\n\n normalizedUrl = unescape(normalizedUrl)\n\n if (isDataUrl(url)) {\n return fixedEncodeURIComponent(normalizedUrl)\n }\n\n try {\n normalizedUrl = decodeURI(normalizedUrl)\n } catch (error) {\n // Ignores invalid and broken URLs and try to resolve them as is\n }\n\n return normalizedUrl\n}\n\nfunction requestify(url: string, rootContext: string) {\n if (/^file:/i.test(url)) {\n return fileURLToPath(url)\n }\n\n if (/^[a-z][a-z0-9+.-]*:/i.test(url)) {\n return url\n }\n\n return url.charAt(0) === '/'\n ? urlToRequest(url, rootContext)\n : urlToRequest(url)\n}\n\nfunction getFilter(filter: any, resourcePath: string) {\n return (...args: any[]) => {\n if (typeof filter === 'function') {\n return filter(...args, resourcePath)\n }\n\n return true\n }\n}\n\nfunction shouldUseImportPlugin(options: any) {\n if (options.modules.exportOnlyLocals) {\n return false\n }\n\n if (typeof options.import === 'boolean') {\n return options.import\n }\n\n return true\n}\n\nfunction shouldUseURLPlugin(options: any) {\n if (options.modules.exportOnlyLocals) {\n return false\n }\n\n if (typeof options.url === 'boolean') {\n return options.url\n }\n\n return true\n}\n\nfunction shouldUseModulesPlugins(options: any) {\n return options.modules.compileType === 'module'\n}\n\nfunction shouldUseIcssPlugin(options: any) {\n return options.icss === true || Boolean(options.modules)\n}\n\nfunction getModulesPlugins(options: any, loaderContext: any, meta: any) {\n const {\n mode,\n getLocalIdent,\n localIdentName,\n localIdentContext,\n localIdentHashPrefix,\n localIdentRegExp,\n } = options.modules\n\n let plugins: any[] = []\n\n try {\n plugins = [\n modulesValues,\n localByDefault({ mode }),\n extractImports(),\n modulesScope({\n generateScopedName(exportName: any) {\n return getLocalIdent(\n loaderContext,\n localIdentName,\n exportName,\n {\n context: localIdentContext,\n hashPrefix: localIdentHashPrefix,\n regExp: localIdentRegExp,\n },\n meta\n )\n },\n exportGlobals: options.modules.exportGlobals,\n }),\n ]\n } catch (error) {\n loaderContext.emitError(error)\n }\n\n return plugins\n}\n\nconst IS_NATIVE_WIN32_PATH = /^[a-z]:[/\\\\]|^\\\\\\\\/i\nconst ABSOLUTE_SCHEME = /^[a-z0-9+\\-.]+:/i\n\nfunction getURLType(source: string) {\n if (source[0] === '/') {\n if (source[1] === '/') {\n return 'scheme-relative'\n }\n\n return 'path-absolute'\n }\n\n if (IS_NATIVE_WIN32_PATH.test(source)) {\n return 'path-absolute'\n }\n\n return ABSOLUTE_SCHEME.test(source) ? 'absolute' : 'path-relative'\n}\n\nfunction normalizeSourceMap(map: any, resourcePath: string) {\n let newMap = map\n\n // Some loader emit source map as string\n // Strip any JSON XSSI avoidance prefix from the string (as documented in the source maps specification), and then parse the string as JSON.\n if (typeof newMap === 'string') {\n newMap = JSON.parse(newMap)\n }\n\n delete newMap.file\n\n const { sourceRoot } = newMap\n\n delete newMap.sourceRoot\n\n if (newMap.sources) {\n // Source maps should use forward slash because it is URLs (https://github.com/mozilla/source-map/issues/91)\n // We should normalize path because previous loaders like `sass-loader` using backslash when generate source map\n newMap.sources = newMap.sources.map((source: string) => {\n // Non-standard syntax from `postcss`\n if (source.startsWith('<')) {\n return source\n }\n\n const sourceType = getURLType(source)\n\n // Do no touch `scheme-relative` and `absolute` URLs\n if (sourceType === 'path-relative' || sourceType === 'path-absolute') {\n const absoluteSource =\n sourceType === 'path-relative' && sourceRoot\n ? path.resolve(sourceRoot, normalizePath(source))\n : normalizePath(source)\n\n return path.relative(path.dirname(resourcePath), absoluteSource)\n }\n\n return source\n })\n }\n\n return newMap\n}\n\nfunction getPreRequester({ loaders, loaderIndex }: any) {\n const cache = Object.create(null)\n\n return (number: any) => {\n if (cache[number]) {\n return cache[number]\n }\n\n if (number === false) {\n cache[number] = ''\n } else {\n const loadersRequest = loaders\n .slice(\n loaderIndex,\n loaderIndex + 1 + (typeof number !== 'number' ? 0 : number)\n )\n .map((x: any) => x.request)\n .filter((r: any) => r) // Filter out undefined requests (Bun compatibility)\n .join('!')\n\n cache[number] = `-!${loadersRequest}!`\n }\n\n return cache[number]\n }\n}\n\nfunction getImportCode(imports: any, options: any) {\n let code = ''\n\n for (const item of imports) {\n const { importName, url, icss } = item\n\n if (options.esModule) {\n if (icss && options.modules.namedExport) {\n code += `import ${\n options.modules.exportOnlyLocals ? '' : `${importName}, `\n }* as ${importName}_NAMED___ from ${url};\\n`\n } else {\n code += `import ${importName} from ${url};\\n`\n }\n } else {\n code += `var ${importName} = require(${url});\\n`\n }\n }\n\n return code ? `// Imports\\n${code}` : ''\n}\n\nfunction normalizeSourceMapForRuntime(map: any, loaderContext: any) {\n const resultMap = map ? map.toJSON() : null\n\n if (resultMap) {\n delete resultMap.file\n\n resultMap.sourceRoot = ''\n\n resultMap.sources = resultMap.sources.map((source: string) => {\n // Non-standard syntax from `postcss`\n if (source.startsWith('<')) {\n return source\n }\n\n const sourceType = getURLType(source)\n\n if (sourceType !== 'path-relative') {\n return source\n }\n\n const resourceDirname = path.dirname(loaderContext.resourcePath)\n const absoluteSource = path.resolve(resourceDirname, source)\n const contextifyPath = normalizePath(\n path.relative(loaderContext.rootContext, absoluteSource)\n )\n\n return `webpack://${contextifyPath}`\n })\n }\n\n return JSON.stringify(resultMap)\n}\n\nfunction getModuleCode(\n result: { map: any; css: any },\n api: any,\n replacements: any,\n options: {\n modules: { exportOnlyLocals: boolean; namedExport: any }\n sourceMap: any\n },\n loaderContext: any\n) {\n if (options.modules.exportOnlyLocals === true) {\n return ''\n }\n\n const sourceMapValue = options.sourceMap\n ? `,${normalizeSourceMapForRuntime(result.map, loaderContext)}`\n : ''\n\n let code = JSON.stringify(result.css)\n let beforeCode = `var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(${options.sourceMap});\\n`\n\n for (const item of api) {\n const { url, media, dedupe } = item\n\n beforeCode += url\n ? `___CSS_LOADER_EXPORT___.push([module.id, ${JSON.stringify(\n `@import url(${url});`\n )}${media ? `, ${JSON.stringify(media)}` : ''}]);\\n`\n : `___CSS_LOADER_EXPORT___.i(${item.importName}${\n media ? `, ${JSON.stringify(media)}` : dedupe ? ', \"\"' : ''\n }${dedupe ? ', true' : ''});\\n`\n }\n\n for (const item of replacements) {\n const { replacementName, importName, localName } = item\n\n if (localName) {\n code = code.replace(new RegExp(replacementName, 'g'), () =>\n options.modules.namedExport\n ? `\" + ${importName}_NAMED___[${JSON.stringify(\n camelCase(localName)\n )}] + \"`\n : `\" + ${importName}.locals[${JSON.stringify(localName)}] + \"`\n )\n } else {\n const { hash, needQuotes } = item\n const getUrlOptions = [\n ...(hash ? [`hash: ${JSON.stringify(hash)}`] : []),\n ...(needQuotes ? 'needQuotes: true' : []),\n ]\n const preparedOptions =\n getUrlOptions.length > 0 ? `, { ${getUrlOptions.join(', ')} }` : ''\n\n beforeCode += `var ${replacementName} = ___CSS_LOADER_GET_URL_IMPORT___(${importName}${preparedOptions});\\n`\n code = code.replace(\n new RegExp(replacementName, 'g'),\n () => `\" + ${replacementName} + \"`\n )\n }\n }\n\n return `${beforeCode}// Module\\n___CSS_LOADER_EXPORT___.push([module.id, ${code}, \"\"${sourceMapValue}]);\\n`\n}\n\nfunction dashesCamelCase(str: string) {\n return str.replace(/-+(\\w)/g, (_match: any, firstLetter: string) =>\n firstLetter.toUpperCase()\n )\n}\n\nfunction getExportCode(\n exports: any,\n replacements: any,\n options: {\n modules: {\n namedExport: any\n exportLocalsConvention: any\n exportOnlyLocals: any\n }\n esModule: any\n }\n) {\n let code = '// Exports\\n'\n let localsCode = ''\n\n const addExportToLocalsCode = (name: string, value: any) => {\n if (options.modules.namedExport) {\n localsCode += `export const ${camelCase(name)} = ${JSON.stringify(\n value\n )};\\n`\n } else {\n if (localsCode) {\n localsCode += `,\\n`\n }\n\n localsCode += `\\t${JSON.stringify(name)}: ${JSON.stringify(value)}`\n }\n }\n\n for (const { name, value } of exports) {\n switch (options.modules.exportLocalsConvention) {\n case 'camelCase': {\n addExportToLocalsCode(name, value)\n\n const modifiedName = camelCase(name)\n\n if (modifiedName !== name) {\n addExportToLocalsCode(modifiedName, value)\n }\n break\n }\n case 'camelCaseOnly': {\n addExportToLocalsCode(camelCase(name), value)\n break\n }\n case 'dashes': {\n addExportToLocalsCode(name, value)\n\n const modifiedName = dashesCamelCase(name)\n\n if (modifiedName !== name) {\n addExportToLocalsCode(modifiedName, value)\n }\n break\n }\n case 'dashesOnly': {\n addExportToLocalsCode(dashesCamelCase(name), value)\n break\n }\n case 'asIs':\n default:\n addExportToLocalsCode(name, value)\n break\n }\n }\n\n for (const item of replacements) {\n const { replacementName, localName } = item\n\n if (localName) {\n const { importName } = item\n\n localsCode = localsCode.replace(new RegExp(replacementName, 'g'), () => {\n if (options.modules.namedExport) {\n return `\" + ${importName}_NAMED___[${JSON.stringify(\n camelCase(localName)\n )}] + \"`\n } else if (options.modules.exportOnlyLocals) {\n return `\" + ${importName}[${JSON.stringify(localName)}] + \"`\n }\n\n return `\" + ${importName}.locals[${JSON.stringify(localName)}] + \"`\n })\n } else {\n localsCode = localsCode.replace(\n new RegExp(replacementName, 'g'),\n () => `\" + ${replacementName} + \"`\n )\n }\n }\n\n if (options.modules.exportOnlyLocals) {\n code += options.modules.namedExport\n ? localsCode\n : `${\n options.esModule ? 'export default' : 'module.exports ='\n } {\\n${localsCode}\\n};\\n`\n\n return code\n }\n\n if (localsCode) {\n code += options.modules.namedExport\n ? localsCode\n : `___CSS_LOADER_EXPORT___.locals = {\\n${localsCode}\\n};\\n`\n }\n\n code += `${\n options.esModule ? 'export default' : 'module.exports ='\n } ___CSS_LOADER_EXPORT___;\\n`\n\n return code\n}\n\nasync function resolveRequests(\n resolve: (arg0: any, arg1: any) => Promise<any>,\n context: any,\n possibleRequests: any[]\n): Promise<any> {\n return resolve(context, possibleRequests[0])\n .then((result: any) => {\n return result\n })\n .catch((error: any) => {\n const [, ...tailPossibleRequests] = possibleRequests\n\n if (tailPossibleRequests.length === 0) {\n throw error\n }\n\n return resolveRequests(resolve, context, tailPossibleRequests)\n })\n}\n\nfunction isUrlRequestable(url: string) {\n // Protocol-relative URLs\n if (/^\\/\\//.test(url)) {\n return false\n }\n\n // `file:` protocol\n if (/^file:/i.test(url)) {\n return true\n }\n\n // Absolute URLs\n if (/^[a-z][a-z0-9+.-]*:/i.test(url)) {\n return true\n }\n\n // `#` URLs\n if (/^#/.test(url)) {\n return false\n }\n\n return true\n}\n\nfunction sort(a: { index: number }, b: { index: number }) {\n return a.index - b.index\n}\n\nfunction isDataUrl(url: string) {\n if (/^data:/i.test(url)) {\n return true\n }\n\n return false\n}\n\nexport {\n isDataUrl,\n shouldUseModulesPlugins,\n shouldUseImportPlugin,\n shouldUseURLPlugin,\n shouldUseIcssPlugin,\n normalizeUrl,\n requestify,\n getFilter,\n getModulesPlugins,\n normalizeSourceMap,\n getPreRequester,\n getImportCode,\n getModuleCode,\n getExportCode,\n resolveRequests,\n isUrlRequestable,\n sort,\n // For lightningcss-loader\n normalizeSourceMapForRuntime,\n dashesCamelCase,\n}\n"],"names":["dashesCamelCase","getExportCode","getFilter","getImportCode","getModuleCode","getModulesPlugins","getPreRequester","isDataUrl","isUrlRequestable","normalizeSourceMap","normalizeSourceMapForRuntime","normalizeUrl","requestify","resolveRequests","shouldUseIcssPlugin","shouldUseImportPlugin","shouldUseModulesPlugins","shouldUseURLPlugin","sort","whitespace","unescapeRegExp","RegExp","matchNativeWin32Path","unescape","str","replace","_","escaped","escapedWhitespace","high","String","fromCharCode","fixedEncodeURIComponent","c","charCodeAt","toString","url","isStringValue","normalizedUrl","test","decodeURIComponent","error","decodeURI","rootContext","fileURLToPath","charAt","urlToRequest","filter","resourcePath","args","options","modules","exportOnlyLocals","import","compileType","icss","Boolean","loaderContext","meta","mode","getLocalIdent","localIdentName","localIdentContext","localIdentHashPrefix","localIdentRegExp","plugins","modulesValues","localByDefault","extractImports","modulesScope","generateScopedName","exportName","context","hashPrefix","regExp","exportGlobals","emitError","IS_NATIVE_WIN32_PATH","ABSOLUTE_SCHEME","getURLType","source","map","newMap","JSON","parse","file","sourceRoot","sources","startsWith","sourceType","absoluteSource","path","resolve","normalizePath","relative","dirname","loaders","loaderIndex","cache","Object","create","number","loadersRequest","slice","x","request","r","join","imports","code","item","importName","esModule","namedExport","resultMap","toJSON","resourceDirname","contextifyPath","stringify","result","api","replacements","sourceMapValue","sourceMap","css","beforeCode","media","dedupe","replacementName","localName","camelCase","hash","needQuotes","getUrlOptions","preparedOptions","length","_match","firstLetter","toUpperCase","exports","localsCode","addExportToLocalsCode","name","value","exportLocalsConvention","modifiedName","possibleRequests","then","catch","tailPossibleRequests","a","b","index"],"mappings":"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","ignoreList":[0]}
@@ -169,6 +169,10 @@ class JsConfigPathsPlugin {
169
169
  return callback();
170
170
  }
171
171
  const moduleName = request.request;
172
+ // Skip if moduleName is undefined (Bun compatibility)
173
+ if (!moduleName || typeof moduleName !== 'string') {
174
+ return callback();
175
+ }
172
176
  // Exclude node_modules from paths support (speeds up resolving)
173
177
  if (request.path.match(NODE_MODULES_REGEX)) {
174
178
  log('skipping request as it is inside node_modules %s', moduleName);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/build/webpack/plugins/jsconfig-paths-plugin.ts"],"sourcesContent":["/**\n * This webpack resolver is largely based on TypeScript's \"paths\" handling\n * The TypeScript license can be found here:\n * https://github.com/microsoft/TypeScript/blob/214df64e287804577afa1fea0184c18c40f7d1ca/LICENSE.txt\n */\nimport path from 'path'\nimport type { webpack } from 'next/dist/compiled/webpack/webpack'\nimport { debug } from 'next/dist/compiled/debug'\nimport type { ResolvedBaseUrl } from '../../load-jsconfig'\n\nconst log = debug('next:jsconfig-paths-plugin')\n\nexport interface Pattern {\n prefix: string\n suffix: string\n}\n\nconst asterisk = 0x2a\n\nexport function hasZeroOrOneAsteriskCharacter(str: string): boolean {\n let seenAsterisk = false\n for (let i = 0; i < str.length; i++) {\n if (str.charCodeAt(i) === asterisk) {\n if (!seenAsterisk) {\n seenAsterisk = true\n } else {\n // have already seen asterisk\n return false\n }\n }\n }\n return true\n}\n\n/**\n * Determines whether a path starts with a relative path component (i.e. `.` or `..`).\n */\nexport function pathIsRelative(testPath: string): boolean {\n return /^\\.\\.?($|[\\\\/])/.test(testPath)\n}\n\nexport function tryParsePattern(pattern: string): Pattern | undefined {\n // This should be verified outside of here and a proper error thrown.\n const indexOfStar = pattern.indexOf('*')\n return indexOfStar === -1\n ? undefined\n : {\n prefix: pattern.slice(0, indexOfStar),\n suffix: pattern.slice(indexOfStar + 1),\n }\n}\n\nfunction isPatternMatch({ prefix, suffix }: Pattern, candidate: string) {\n return (\n candidate.length >= prefix.length + suffix.length &&\n candidate.startsWith(prefix) &&\n candidate.endsWith(suffix)\n )\n}\n\n/** Return the object corresponding to the best pattern to match `candidate`. */\nexport function findBestPatternMatch<T>(\n values: readonly T[],\n getPattern: (value: T) => Pattern,\n candidate: string\n): T | undefined {\n let matchedValue: T | undefined\n // use length of prefix as betterness criteria\n let longestMatchPrefixLength = -1\n\n for (const v of values) {\n const pattern = getPattern(v)\n if (\n isPatternMatch(pattern, candidate) &&\n pattern.prefix.length > longestMatchPrefixLength\n ) {\n longestMatchPrefixLength = pattern.prefix.length\n matchedValue = v\n }\n }\n\n return matchedValue\n}\n\n/**\n * patternStrings contains both pattern strings (containing \"*\") and regular strings.\n * Return an exact match if possible, or a pattern match, or undefined.\n * (These are verified by verifyCompilerOptions to have 0 or 1 \"*\" characters.)\n */\nexport function matchPatternOrExact(\n patternStrings: readonly string[],\n candidate: string\n): string | Pattern | undefined {\n const patterns: Pattern[] = []\n for (const patternString of patternStrings) {\n if (!hasZeroOrOneAsteriskCharacter(patternString)) continue\n const pattern = tryParsePattern(patternString)\n if (pattern) {\n patterns.push(pattern)\n } else if (patternString === candidate) {\n // pattern was matched as is - no need to search further\n return patternString\n }\n }\n\n return findBestPatternMatch(patterns, (_) => _, candidate)\n}\n\n/**\n * Tests whether a value is string\n */\nexport function isString(text: unknown): text is string {\n return typeof text === 'string'\n}\n\n/**\n * Given that candidate matches pattern, returns the text matching the '*'.\n * E.g.: matchedText(tryParsePattern(\"foo*baz\"), \"foobarbaz\") === \"bar\"\n */\nexport function matchedText(pattern: Pattern, candidate: string): string {\n return candidate.substring(\n pattern.prefix.length,\n candidate.length - pattern.suffix.length\n )\n}\n\nexport function patternText({ prefix, suffix }: Pattern): string {\n return `${prefix}*${suffix}`\n}\n\n/**\n * Calls the iterator function for each entry of the array\n * until the first result or error is reached\n */\nfunction forEachBail<TEntry>(\n array: TEntry[],\n iterator: (\n entry: TEntry,\n entryCallback: (err?: any, result?: any) => void\n ) => void,\n callback: (err?: any, result?: any) => void\n): void {\n if (array.length === 0) return callback()\n\n let i = 0\n const next = () => {\n let loop: boolean | undefined = undefined\n iterator(array[i++], (err, result) => {\n if (err || result !== undefined || i >= array.length) {\n return callback(err, result)\n }\n if (loop === false) while (next());\n loop = true\n })\n if (!loop) loop = false\n return loop\n }\n while (next());\n}\n\nconst NODE_MODULES_REGEX = /node_modules/\n\ntype Paths = { [match: string]: string[] }\n\n/**\n * Handles tsconfig.json or jsconfig.js \"paths\" option for webpack\n * Largely based on how the TypeScript compiler handles it:\n * https://github.com/microsoft/TypeScript/blob/1a9c8197fffe3dace5f8dca6633d450a88cba66d/src/compiler/moduleNameResolver.ts#L1362\n */\n\ntype NonFunction<T> = T extends Function ? never : T\n\n// Pick the object type of ResolvePluginInstance\ntype ResolvePluginPlugin = NonFunction<webpack.ResolvePluginInstance>\nexport class JsConfigPathsPlugin implements ResolvePluginPlugin {\n paths: Paths\n resolvedBaseUrl: ResolvedBaseUrl\n jsConfigPlugin: true\n\n constructor(paths: Paths, resolvedBaseUrl: ResolvedBaseUrl) {\n this.paths = paths\n this.resolvedBaseUrl = resolvedBaseUrl\n this.jsConfigPlugin = true\n log('tsconfig.json or jsconfig.json paths: %O', paths)\n log('resolved baseUrl: %s', resolvedBaseUrl)\n }\n apply(resolver: webpack.Resolver) {\n const target = resolver.ensureHook('resolve')\n resolver\n .getHook('described-resolve')\n .tapAsync(\n 'JsConfigPathsPlugin',\n (\n request: any,\n resolveContext: any,\n callback: (err?: any, result?: any) => void\n ) => {\n const resolvedBaseUrl = this.resolvedBaseUrl\n if (resolvedBaseUrl === undefined) {\n return callback()\n }\n const paths = this.paths\n const pathsKeys = Object.keys(paths)\n\n // If no aliases are added bail out\n if (pathsKeys.length === 0) {\n log('paths are empty, bailing out')\n return callback()\n }\n\n const moduleName = request.request\n\n // Exclude node_modules from paths support (speeds up resolving)\n if (request.path.match(NODE_MODULES_REGEX)) {\n log('skipping request as it is inside node_modules %s', moduleName)\n return callback()\n }\n\n if (\n path.posix.isAbsolute(moduleName) ||\n (process.platform === 'win32' && path.win32.isAbsolute(moduleName))\n ) {\n log('skipping request as it is an absolute path %s', moduleName)\n return callback()\n }\n\n if (pathIsRelative(moduleName)) {\n log('skipping request as it is a relative path %s', moduleName)\n return callback()\n }\n\n // log('starting to resolve request %s', moduleName)\n\n // If the module name does not match any of the patterns in `paths` we hand off resolving to webpack\n const matchedPattern = matchPatternOrExact(pathsKeys, moduleName)\n if (!matchedPattern) {\n log('moduleName did not match any paths pattern %s', moduleName)\n return callback()\n }\n\n const matchedStar = isString(matchedPattern)\n ? undefined\n : matchedText(matchedPattern, moduleName)\n const matchedPatternText = isString(matchedPattern)\n ? matchedPattern\n : patternText(matchedPattern)\n\n let triedPaths = []\n\n forEachBail(\n paths[matchedPatternText],\n (subst, pathCallback) => {\n const curPath = matchedStar\n ? subst.replace('*', matchedStar)\n : subst\n // Ensure .d.ts is not matched\n if (curPath.endsWith('.d.ts')) {\n // try next path candidate\n return pathCallback()\n }\n const candidate = path.join(resolvedBaseUrl.baseUrl, curPath)\n const obj = Object.assign({}, request, {\n request: candidate,\n })\n resolver.doResolve(\n target,\n obj,\n `Aliased with tsconfig.json or jsconfig.json ${matchedPatternText} to ${candidate}`,\n resolveContext,\n (resolverErr: any, resolverResult: any) => {\n if (resolverErr || resolverResult === undefined) {\n triedPaths.push(candidate)\n // try next path candidate\n return pathCallback()\n }\n return pathCallback(resolverErr, resolverResult)\n }\n )\n },\n callback\n )\n }\n )\n }\n}\n"],"names":["JsConfigPathsPlugin","findBestPatternMatch","hasZeroOrOneAsteriskCharacter","isString","matchPatternOrExact","matchedText","pathIsRelative","patternText","tryParsePattern","log","debug","asterisk","str","seenAsterisk","i","length","charCodeAt","testPath","test","pattern","indexOfStar","indexOf","undefined","prefix","slice","suffix","isPatternMatch","candidate","startsWith","endsWith","values","getPattern","matchedValue","longestMatchPrefixLength","v","patternStrings","patterns","patternString","push","_","text","substring","forEachBail","array","iterator","callback","next","loop","err","result","NODE_MODULES_REGEX","constructor","paths","resolvedBaseUrl","jsConfigPlugin","apply","resolver","target","ensureHook","getHook","tapAsync","request","resolveContext","pathsKeys","Object","keys","moduleName","path","match","posix","isAbsolute","process","platform","win32","matchedPattern","matchedStar","matchedPatternText","triedPaths","subst","pathCallback","curPath","replace","join","baseUrl","obj","assign","doResolve","resolverErr","resolverResult"],"mappings":"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","ignoreList":[0]}
1
+ {"version":3,"sources":["../../../../src/build/webpack/plugins/jsconfig-paths-plugin.ts"],"sourcesContent":["/**\n * This webpack resolver is largely based on TypeScript's \"paths\" handling\n * The TypeScript license can be found here:\n * https://github.com/microsoft/TypeScript/blob/214df64e287804577afa1fea0184c18c40f7d1ca/LICENSE.txt\n */\nimport path from 'path'\nimport type { webpack } from 'next/dist/compiled/webpack/webpack'\nimport { debug } from 'next/dist/compiled/debug'\nimport type { ResolvedBaseUrl } from '../../load-jsconfig'\n\nconst log = debug('next:jsconfig-paths-plugin')\n\nexport interface Pattern {\n prefix: string\n suffix: string\n}\n\nconst asterisk = 0x2a\n\nexport function hasZeroOrOneAsteriskCharacter(str: string): boolean {\n let seenAsterisk = false\n for (let i = 0; i < str.length; i++) {\n if (str.charCodeAt(i) === asterisk) {\n if (!seenAsterisk) {\n seenAsterisk = true\n } else {\n // have already seen asterisk\n return false\n }\n }\n }\n return true\n}\n\n/**\n * Determines whether a path starts with a relative path component (i.e. `.` or `..`).\n */\nexport function pathIsRelative(testPath: string): boolean {\n return /^\\.\\.?($|[\\\\/])/.test(testPath)\n}\n\nexport function tryParsePattern(pattern: string): Pattern | undefined {\n // This should be verified outside of here and a proper error thrown.\n const indexOfStar = pattern.indexOf('*')\n return indexOfStar === -1\n ? undefined\n : {\n prefix: pattern.slice(0, indexOfStar),\n suffix: pattern.slice(indexOfStar + 1),\n }\n}\n\nfunction isPatternMatch({ prefix, suffix }: Pattern, candidate: string) {\n return (\n candidate.length >= prefix.length + suffix.length &&\n candidate.startsWith(prefix) &&\n candidate.endsWith(suffix)\n )\n}\n\n/** Return the object corresponding to the best pattern to match `candidate`. */\nexport function findBestPatternMatch<T>(\n values: readonly T[],\n getPattern: (value: T) => Pattern,\n candidate: string\n): T | undefined {\n let matchedValue: T | undefined\n // use length of prefix as betterness criteria\n let longestMatchPrefixLength = -1\n\n for (const v of values) {\n const pattern = getPattern(v)\n if (\n isPatternMatch(pattern, candidate) &&\n pattern.prefix.length > longestMatchPrefixLength\n ) {\n longestMatchPrefixLength = pattern.prefix.length\n matchedValue = v\n }\n }\n\n return matchedValue\n}\n\n/**\n * patternStrings contains both pattern strings (containing \"*\") and regular strings.\n * Return an exact match if possible, or a pattern match, or undefined.\n * (These are verified by verifyCompilerOptions to have 0 or 1 \"*\" characters.)\n */\nexport function matchPatternOrExact(\n patternStrings: readonly string[],\n candidate: string\n): string | Pattern | undefined {\n const patterns: Pattern[] = []\n for (const patternString of patternStrings) {\n if (!hasZeroOrOneAsteriskCharacter(patternString)) continue\n const pattern = tryParsePattern(patternString)\n if (pattern) {\n patterns.push(pattern)\n } else if (patternString === candidate) {\n // pattern was matched as is - no need to search further\n return patternString\n }\n }\n\n return findBestPatternMatch(patterns, (_) => _, candidate)\n}\n\n/**\n * Tests whether a value is string\n */\nexport function isString(text: unknown): text is string {\n return typeof text === 'string'\n}\n\n/**\n * Given that candidate matches pattern, returns the text matching the '*'.\n * E.g.: matchedText(tryParsePattern(\"foo*baz\"), \"foobarbaz\") === \"bar\"\n */\nexport function matchedText(pattern: Pattern, candidate: string): string {\n return candidate.substring(\n pattern.prefix.length,\n candidate.length - pattern.suffix.length\n )\n}\n\nexport function patternText({ prefix, suffix }: Pattern): string {\n return `${prefix}*${suffix}`\n}\n\n/**\n * Calls the iterator function for each entry of the array\n * until the first result or error is reached\n */\nfunction forEachBail<TEntry>(\n array: TEntry[],\n iterator: (\n entry: TEntry,\n entryCallback: (err?: any, result?: any) => void\n ) => void,\n callback: (err?: any, result?: any) => void\n): void {\n if (array.length === 0) return callback()\n\n let i = 0\n const next = () => {\n let loop: boolean | undefined = undefined\n iterator(array[i++], (err, result) => {\n if (err || result !== undefined || i >= array.length) {\n return callback(err, result)\n }\n if (loop === false) while (next());\n loop = true\n })\n if (!loop) loop = false\n return loop\n }\n while (next());\n}\n\nconst NODE_MODULES_REGEX = /node_modules/\n\ntype Paths = { [match: string]: string[] }\n\n/**\n * Handles tsconfig.json or jsconfig.js \"paths\" option for webpack\n * Largely based on how the TypeScript compiler handles it:\n * https://github.com/microsoft/TypeScript/blob/1a9c8197fffe3dace5f8dca6633d450a88cba66d/src/compiler/moduleNameResolver.ts#L1362\n */\n\ntype NonFunction<T> = T extends Function ? never : T\n\n// Pick the object type of ResolvePluginInstance\ntype ResolvePluginPlugin = NonFunction<webpack.ResolvePluginInstance>\nexport class JsConfigPathsPlugin implements ResolvePluginPlugin {\n paths: Paths\n resolvedBaseUrl: ResolvedBaseUrl\n jsConfigPlugin: true\n\n constructor(paths: Paths, resolvedBaseUrl: ResolvedBaseUrl) {\n this.paths = paths\n this.resolvedBaseUrl = resolvedBaseUrl\n this.jsConfigPlugin = true\n log('tsconfig.json or jsconfig.json paths: %O', paths)\n log('resolved baseUrl: %s', resolvedBaseUrl)\n }\n apply(resolver: webpack.Resolver) {\n const target = resolver.ensureHook('resolve')\n resolver\n .getHook('described-resolve')\n .tapAsync(\n 'JsConfigPathsPlugin',\n (\n request: any,\n resolveContext: any,\n callback: (err?: any, result?: any) => void\n ) => {\n const resolvedBaseUrl = this.resolvedBaseUrl\n if (resolvedBaseUrl === undefined) {\n return callback()\n }\n const paths = this.paths\n const pathsKeys = Object.keys(paths)\n\n // If no aliases are added bail out\n if (pathsKeys.length === 0) {\n log('paths are empty, bailing out')\n return callback()\n }\n\n const moduleName = request.request\n\n // Skip if moduleName is undefined (Bun compatibility)\n if (!moduleName || typeof moduleName !== 'string') {\n return callback()\n }\n\n // Exclude node_modules from paths support (speeds up resolving)\n if (request.path.match(NODE_MODULES_REGEX)) {\n log('skipping request as it is inside node_modules %s', moduleName)\n return callback()\n }\n\n if (\n path.posix.isAbsolute(moduleName) ||\n (process.platform === 'win32' && path.win32.isAbsolute(moduleName))\n ) {\n log('skipping request as it is an absolute path %s', moduleName)\n return callback()\n }\n\n if (pathIsRelative(moduleName)) {\n log('skipping request as it is a relative path %s', moduleName)\n return callback()\n }\n\n // log('starting to resolve request %s', moduleName)\n\n // If the module name does not match any of the patterns in `paths` we hand off resolving to webpack\n const matchedPattern = matchPatternOrExact(pathsKeys, moduleName)\n if (!matchedPattern) {\n log('moduleName did not match any paths pattern %s', moduleName)\n return callback()\n }\n\n const matchedStar = isString(matchedPattern)\n ? undefined\n : matchedText(matchedPattern, moduleName)\n const matchedPatternText = isString(matchedPattern)\n ? matchedPattern\n : patternText(matchedPattern)\n\n let triedPaths = []\n\n forEachBail(\n paths[matchedPatternText],\n (subst, pathCallback) => {\n const curPath = matchedStar\n ? subst.replace('*', matchedStar)\n : subst\n // Ensure .d.ts is not matched\n if (curPath.endsWith('.d.ts')) {\n // try next path candidate\n return pathCallback()\n }\n const candidate = path.join(resolvedBaseUrl.baseUrl, curPath)\n const obj = Object.assign({}, request, {\n request: candidate,\n })\n resolver.doResolve(\n target,\n obj,\n `Aliased with tsconfig.json or jsconfig.json ${matchedPatternText} to ${candidate}`,\n resolveContext,\n (resolverErr: any, resolverResult: any) => {\n if (resolverErr || resolverResult === undefined) {\n triedPaths.push(candidate)\n // try next path candidate\n return pathCallback()\n }\n return pathCallback(resolverErr, resolverResult)\n }\n )\n },\n callback\n )\n }\n )\n }\n}\n"],"names":["JsConfigPathsPlugin","findBestPatternMatch","hasZeroOrOneAsteriskCharacter","isString","matchPatternOrExact","matchedText","pathIsRelative","patternText","tryParsePattern","log","debug","asterisk","str","seenAsterisk","i","length","charCodeAt","testPath","test","pattern","indexOfStar","indexOf","undefined","prefix","slice","suffix","isPatternMatch","candidate","startsWith","endsWith","values","getPattern","matchedValue","longestMatchPrefixLength","v","patternStrings","patterns","patternString","push","_","text","substring","forEachBail","array","iterator","callback","next","loop","err","result","NODE_MODULES_REGEX","constructor","paths","resolvedBaseUrl","jsConfigPlugin","apply","resolver","target","ensureHook","getHook","tapAsync","request","resolveContext","pathsKeys","Object","keys","moduleName","path","match","posix","isAbsolute","process","platform","win32","matchedPattern","matchedStar","matchedPatternText","triedPaths","subst","pathCallback","curPath","replace","join","baseUrl","obj","assign","doResolve","resolverErr","resolverResult"],"mappings":"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","ignoreList":[0]}
@@ -208,7 +208,10 @@ class ProfilingPlugin {
208
208
  return;
209
209
  }
210
210
  const addEntrySpan = parentSpan.traceChild('add-entry');
211
- addEntrySpan.setAttribute('request', entry.request);
211
+ // Only set request attribute if it's defined (Bun compatibility)
212
+ if (entry.request) {
213
+ addEntrySpan.setAttribute('request', entry.request);
214
+ }
212
215
  spans.set(entry, addEntrySpan);
213
216
  });
214
217
  compilation.hooks.succeedEntry.tap(pluginName, (entry)=>{
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/build/webpack/plugins/profiling-plugin.ts"],"sourcesContent":["import { NormalModule } from 'next/dist/compiled/webpack/webpack'\nimport type { Span } from '../../../trace'\nimport type { webpack } from 'next/dist/compiled/webpack/webpack'\nimport path from 'path'\n\nconst pluginName = 'ProfilingPlugin'\nexport const spans = new WeakMap<webpack.Compilation | webpack.Compiler, Span>()\nconst moduleSpansByCompilation = new WeakMap<\n webpack.Compilation,\n WeakMap<webpack.Module, Span>\n>()\nconst makeSpanByCompilation = new WeakMap<webpack.Compilation, Span>()\nconst sealSpanByCompilation = new WeakMap<webpack.Compilation, Span>()\nexport const webpackInvalidSpans = new WeakMap<any, Span>()\n\nconst TRACE_LABELS_SEAL = [\n 'module assets',\n 'create chunk assets',\n 'asset render',\n 'asset emit',\n 'store asset',\n]\n\nfunction inTraceLabelsSeal(label: string) {\n return TRACE_LABELS_SEAL.some((l) => label.startsWith(l))\n}\n\nexport class ProfilingPlugin {\n compiler: any\n runWebpackSpan: Span\n rootDir: string\n\n constructor({\n runWebpackSpan,\n rootDir,\n }: {\n runWebpackSpan: Span\n rootDir: string\n }) {\n this.runWebpackSpan = runWebpackSpan\n this.rootDir = rootDir\n }\n apply(compiler: any) {\n this.traceTopLevelHooks(compiler)\n this.traceCompilationHooks(compiler)\n this.compiler = compiler\n }\n\n traceHookPair(\n spanName: string | (() => string),\n startHook: any,\n stopHook: any,\n {\n parentSpan,\n attrs,\n onStart,\n onStop,\n }: {\n parentSpan?: (...params: any[]) => Span\n attrs?: any\n onStart?: (span: Span, ...params: any[]) => void\n onStop?: (span: Span, ...params: any[]) => void\n } = {}\n ) {\n let span: Span | undefined\n startHook.tap(\n { name: pluginName, stage: -Infinity },\n (...params: any[]) => {\n const name = typeof spanName === 'function' ? spanName() : spanName\n const attributes = attrs ? attrs(...params) : attrs\n span = parentSpan\n ? parentSpan(...params).traceChild(name, attributes)\n : this.runWebpackSpan.traceChild(name, attributes)\n\n if (onStart) onStart(span, ...params)\n }\n )\n stopHook.tap({ name: pluginName, stage: Infinity }, (...params: any[]) => {\n // `stopHook` may be triggered when `startHook` has not in cases\n // where `stopHook` is used as the terminating event for more\n // than one pair of hooks.\n if (!span) {\n return\n }\n\n if (onStop) onStop(span, ...params)\n span.stop()\n })\n }\n\n traceTopLevelHooks(compiler: any) {\n this.traceHookPair(\n 'webpack-compilation',\n compiler.hooks.compilation,\n compiler.hooks.afterCompile,\n {\n parentSpan: () =>\n webpackInvalidSpans.get(compiler) || this.runWebpackSpan,\n attrs: () => ({ name: compiler.name }),\n onStart: (span, compilation) => {\n spans.set(compilation, span)\n spans.set(compiler, span)\n moduleSpansByCompilation.set(compilation, new WeakMap())\n },\n }\n )\n\n if (compiler.options.mode === 'development') {\n this.traceHookPair(\n () => `webpack-invalidated-${compiler.name}`,\n compiler.hooks.invalid,\n compiler.hooks.done,\n {\n onStart: (span) => webpackInvalidSpans.set(compiler, span),\n onStop: () => webpackInvalidSpans.delete(compiler),\n attrs: (fileName: any) => ({\n trigger: fileName\n ? path.relative(this.rootDir, fileName).replaceAll(path.sep, '/')\n : 'manual',\n }),\n }\n )\n }\n }\n\n traceCompilationHooks(compiler: any) {\n this.traceHookPair('emit', compiler.hooks.emit, compiler.hooks.afterEmit, {\n parentSpan: () =>\n webpackInvalidSpans.get(compiler) || this.runWebpackSpan,\n })\n\n this.traceHookPair('make', compiler.hooks.make, compiler.hooks.finishMake, {\n parentSpan: (compilation) => {\n const compilationSpan = spans.get(compilation)\n if (!compilationSpan) {\n return webpackInvalidSpans.get(compiler) || this.runWebpackSpan\n }\n\n return compilationSpan\n },\n onStart: (span, compilation) => {\n makeSpanByCompilation.set(compilation, span)\n },\n onStop: (_span, compilation) => {\n makeSpanByCompilation.delete(compilation)\n },\n })\n\n compiler.hooks.compilation.tap(\n { name: pluginName, stage: -Infinity },\n (compilation: any) => {\n compilation.hooks.buildModule.tap(pluginName, (module: any) => {\n const moduleType = (() => {\n const r = module.userRequest\n if (!r || r.endsWith('!')) {\n return ''\n } else {\n const resource = r.split('!').pop()\n const match = /^[^?]+\\.([^?]+)$/.exec(resource)\n return match ? match[1] : ''\n }\n })()\n\n const issuerModule = compilation?.moduleGraph?.getIssuer(module)\n\n let span: Span\n\n const moduleSpans = moduleSpansByCompilation.get(compilation)\n const spanName = `build-module${moduleType ? `-${moduleType}` : ''}`\n const issuerSpan: Span | undefined =\n issuerModule && moduleSpans?.get(issuerModule)\n if (issuerSpan) {\n span = issuerSpan.traceChild(spanName)\n } else {\n let parentSpan: Span | undefined\n for (const incomingConnection of compilation.moduleGraph.getIncomingConnections(\n module\n )) {\n const entrySpan = spans.get(incomingConnection.dependency)\n if (entrySpan) {\n parentSpan = entrySpan\n break\n }\n }\n\n if (!parentSpan) {\n const compilationSpan = spans.get(compilation)\n if (!compilationSpan) {\n return\n }\n\n parentSpan = compilationSpan\n }\n span = parentSpan.traceChild(spanName)\n }\n span.setAttribute('name', module.userRequest)\n span.setAttribute('layer', module.layer)\n moduleSpans!.set(module, span)\n })\n\n const moduleHooks = NormalModule.getCompilationHooks(compilation)\n moduleHooks.readResource.for(undefined).intercept({\n register(tapInfo: any) {\n const fn = tapInfo.fn\n tapInfo.fn = (loaderContext: any, callback: any) => {\n fn(loaderContext, (err: any, result: any) => {\n callback(err, result)\n })\n }\n return tapInfo\n },\n })\n\n moduleHooks.loader.tap(\n pluginName,\n (loaderContext: any, module: any) => {\n const moduleSpan = moduleSpansByCompilation\n .get(compilation)\n ?.get(module)\n loaderContext.currentTraceSpan = moduleSpan\n }\n )\n\n compilation.hooks.succeedModule.tap(pluginName, (module: any) => {\n moduleSpansByCompilation?.get(compilation)?.get(module)?.stop()\n })\n compilation.hooks.failedModule.tap(pluginName, (module: any) => {\n moduleSpansByCompilation?.get(compilation)?.get(module)?.stop()\n })\n\n this.traceHookPair(\n 'seal',\n compilation.hooks.seal,\n compilation.hooks.afterSeal,\n {\n parentSpan: () => spans.get(compilation)!,\n onStart(span) {\n sealSpanByCompilation.set(compilation, span)\n },\n onStop() {\n sealSpanByCompilation.delete(compilation)\n },\n }\n )\n\n compilation.hooks.addEntry.tap(pluginName, (entry: any) => {\n const parentSpan =\n makeSpanByCompilation.get(compilation) || spans.get(compilation)\n if (!parentSpan) {\n return\n }\n const addEntrySpan = parentSpan.traceChild('add-entry')\n addEntrySpan.setAttribute('request', entry.request)\n spans.set(entry, addEntrySpan)\n })\n\n compilation.hooks.succeedEntry.tap(pluginName, (entry: any) => {\n spans.get(entry)?.stop()\n spans.delete(entry)\n })\n compilation.hooks.failedEntry.tap(pluginName, (entry: any) => {\n spans.get(entry)?.stop()\n spans.delete(entry)\n })\n\n this.traceHookPair(\n 'chunk-graph',\n compilation.hooks.beforeChunks,\n compilation.hooks.afterChunks,\n {\n parentSpan: () =>\n sealSpanByCompilation.get(compilation) || spans.get(compilation)!,\n }\n )\n this.traceHookPair(\n 'optimize',\n compilation.hooks.optimize,\n compilation.hooks.reviveModules,\n {\n parentSpan: () =>\n sealSpanByCompilation.get(compilation) || spans.get(compilation)!,\n }\n )\n this.traceHookPair(\n 'optimize-modules',\n compilation.hooks.optimizeModules,\n compilation.hooks.afterOptimizeModules,\n {\n parentSpan: () =>\n sealSpanByCompilation.get(compilation) || spans.get(compilation)!,\n }\n )\n this.traceHookPair(\n 'optimize-chunks',\n compilation.hooks.optimizeChunks,\n compilation.hooks.afterOptimizeChunks,\n {\n parentSpan: () =>\n sealSpanByCompilation.get(compilation) || spans.get(compilation)!,\n }\n )\n this.traceHookPair(\n 'optimize-tree',\n compilation.hooks.optimizeTree,\n compilation.hooks.afterOptimizeTree,\n {\n parentSpan: () =>\n sealSpanByCompilation.get(compilation) || spans.get(compilation)!,\n }\n )\n this.traceHookPair(\n 'optimize-chunk-modules',\n compilation.hooks.optimizeChunkModules,\n compilation.hooks.afterOptimizeChunkModules,\n {\n parentSpan: () =>\n sealSpanByCompilation.get(compilation) || spans.get(compilation)!,\n }\n )\n this.traceHookPair(\n 'module-hash',\n compilation.hooks.beforeModuleHash,\n compilation.hooks.afterModuleHash,\n {\n parentSpan: () =>\n sealSpanByCompilation.get(compilation) || spans.get(compilation)!,\n }\n )\n this.traceHookPair(\n 'code-generation',\n compilation.hooks.beforeCodeGeneration,\n compilation.hooks.afterCodeGeneration,\n {\n parentSpan: () =>\n sealSpanByCompilation.get(compilation) || spans.get(compilation)!,\n }\n )\n this.traceHookPair(\n 'hash',\n compilation.hooks.beforeHash,\n compilation.hooks.afterHash,\n {\n parentSpan: () =>\n sealSpanByCompilation.get(compilation) || spans.get(compilation)!,\n }\n )\n this.traceHookPair(\n 'code-generation-jobs',\n compilation.hooks.afterHash,\n compilation.hooks.beforeModuleAssets,\n {\n parentSpan: () =>\n sealSpanByCompilation.get(compilation) || spans.get(compilation)!,\n }\n )\n\n const logs = new Map()\n const originalTime = compilation.logger.time\n const originalTimeEnd = compilation.logger.timeEnd\n\n compilation.logger.time = (label: string) => {\n if (!inTraceLabelsSeal(label)) {\n return originalTime.call(compilation.logger, label)\n }\n const span = sealSpanByCompilation.get(compilation)\n if (span) {\n logs.set(label, span.traceChild(label.replace(/ /g, '-')))\n }\n return originalTime.call(compilation.logger, label)\n }\n compilation.logger.timeEnd = (label: string) => {\n if (!inTraceLabelsSeal(label)) {\n return originalTimeEnd.call(compilation.logger, label)\n }\n\n const span = logs.get(label)\n if (span) {\n span.stop()\n logs.delete(label)\n }\n return originalTimeEnd.call(compilation.logger, label)\n }\n }\n )\n }\n}\n"],"names":["ProfilingPlugin","spans","webpackInvalidSpans","pluginName","WeakMap","moduleSpansByCompilation","makeSpanByCompilation","sealSpanByCompilation","TRACE_LABELS_SEAL","inTraceLabelsSeal","label","some","l","startsWith","constructor","runWebpackSpan","rootDir","apply","compiler","traceTopLevelHooks","traceCompilationHooks","traceHookPair","spanName","startHook","stopHook","parentSpan","attrs","onStart","onStop","span","tap","name","stage","Infinity","params","attributes","traceChild","stop","hooks","compilation","afterCompile","get","set","options","mode","invalid","done","delete","fileName","trigger","path","relative","replaceAll","sep","emit","afterEmit","make","finishMake","compilationSpan","_span","buildModule","module","moduleType","r","userRequest","endsWith","resource","split","pop","match","exec","issuerModule","moduleGraph","getIssuer","moduleSpans","issuerSpan","incomingConnection","getIncomingConnections","entrySpan","dependency","setAttribute","layer","moduleHooks","NormalModule","getCompilationHooks","readResource","for","undefined","intercept","register","tapInfo","fn","loaderContext","callback","err","result","loader","moduleSpan","currentTraceSpan","succeedModule","failedModule","seal","afterSeal","addEntry","entry","addEntrySpan","request","succeedEntry","failedEntry","beforeChunks","afterChunks","optimize","reviveModules","optimizeModules","afterOptimizeModules","optimizeChunks","afterOptimizeChunks","optimizeTree","afterOptimizeTree","optimizeChunkModules","afterOptimizeChunkModules","beforeModuleHash","afterModuleHash","beforeCodeGeneration","afterCodeGeneration","beforeHash","afterHash","beforeModuleAssets","logs","Map","originalTime","logger","time","originalTimeEnd","timeEnd","call","replace"],"mappings":"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","ignoreList":[0]}
1
+ {"version":3,"sources":["../../../../src/build/webpack/plugins/profiling-plugin.ts"],"sourcesContent":["import { NormalModule } from 'next/dist/compiled/webpack/webpack'\nimport type { Span } from '../../../trace'\nimport type { webpack } from 'next/dist/compiled/webpack/webpack'\nimport path from 'path'\n\nconst pluginName = 'ProfilingPlugin'\nexport const spans = new WeakMap<webpack.Compilation | webpack.Compiler, Span>()\nconst moduleSpansByCompilation = new WeakMap<\n webpack.Compilation,\n WeakMap<webpack.Module, Span>\n>()\nconst makeSpanByCompilation = new WeakMap<webpack.Compilation, Span>()\nconst sealSpanByCompilation = new WeakMap<webpack.Compilation, Span>()\nexport const webpackInvalidSpans = new WeakMap<any, Span>()\n\nconst TRACE_LABELS_SEAL = [\n 'module assets',\n 'create chunk assets',\n 'asset render',\n 'asset emit',\n 'store asset',\n]\n\nfunction inTraceLabelsSeal(label: string) {\n return TRACE_LABELS_SEAL.some((l) => label.startsWith(l))\n}\n\nexport class ProfilingPlugin {\n compiler: any\n runWebpackSpan: Span\n rootDir: string\n\n constructor({\n runWebpackSpan,\n rootDir,\n }: {\n runWebpackSpan: Span\n rootDir: string\n }) {\n this.runWebpackSpan = runWebpackSpan\n this.rootDir = rootDir\n }\n apply(compiler: any) {\n this.traceTopLevelHooks(compiler)\n this.traceCompilationHooks(compiler)\n this.compiler = compiler\n }\n\n traceHookPair(\n spanName: string | (() => string),\n startHook: any,\n stopHook: any,\n {\n parentSpan,\n attrs,\n onStart,\n onStop,\n }: {\n parentSpan?: (...params: any[]) => Span\n attrs?: any\n onStart?: (span: Span, ...params: any[]) => void\n onStop?: (span: Span, ...params: any[]) => void\n } = {}\n ) {\n let span: Span | undefined\n startHook.tap(\n { name: pluginName, stage: -Infinity },\n (...params: any[]) => {\n const name = typeof spanName === 'function' ? spanName() : spanName\n const attributes = attrs ? attrs(...params) : attrs\n span = parentSpan\n ? parentSpan(...params).traceChild(name, attributes)\n : this.runWebpackSpan.traceChild(name, attributes)\n\n if (onStart) onStart(span, ...params)\n }\n )\n stopHook.tap({ name: pluginName, stage: Infinity }, (...params: any[]) => {\n // `stopHook` may be triggered when `startHook` has not in cases\n // where `stopHook` is used as the terminating event for more\n // than one pair of hooks.\n if (!span) {\n return\n }\n\n if (onStop) onStop(span, ...params)\n span.stop()\n })\n }\n\n traceTopLevelHooks(compiler: any) {\n this.traceHookPair(\n 'webpack-compilation',\n compiler.hooks.compilation,\n compiler.hooks.afterCompile,\n {\n parentSpan: () =>\n webpackInvalidSpans.get(compiler) || this.runWebpackSpan,\n attrs: () => ({ name: compiler.name }),\n onStart: (span, compilation) => {\n spans.set(compilation, span)\n spans.set(compiler, span)\n moduleSpansByCompilation.set(compilation, new WeakMap())\n },\n }\n )\n\n if (compiler.options.mode === 'development') {\n this.traceHookPair(\n () => `webpack-invalidated-${compiler.name}`,\n compiler.hooks.invalid,\n compiler.hooks.done,\n {\n onStart: (span) => webpackInvalidSpans.set(compiler, span),\n onStop: () => webpackInvalidSpans.delete(compiler),\n attrs: (fileName: any) => ({\n trigger: fileName\n ? path.relative(this.rootDir, fileName).replaceAll(path.sep, '/')\n : 'manual',\n }),\n }\n )\n }\n }\n\n traceCompilationHooks(compiler: any) {\n this.traceHookPair('emit', compiler.hooks.emit, compiler.hooks.afterEmit, {\n parentSpan: () =>\n webpackInvalidSpans.get(compiler) || this.runWebpackSpan,\n })\n\n this.traceHookPair('make', compiler.hooks.make, compiler.hooks.finishMake, {\n parentSpan: (compilation) => {\n const compilationSpan = spans.get(compilation)\n if (!compilationSpan) {\n return webpackInvalidSpans.get(compiler) || this.runWebpackSpan\n }\n\n return compilationSpan\n },\n onStart: (span, compilation) => {\n makeSpanByCompilation.set(compilation, span)\n },\n onStop: (_span, compilation) => {\n makeSpanByCompilation.delete(compilation)\n },\n })\n\n compiler.hooks.compilation.tap(\n { name: pluginName, stage: -Infinity },\n (compilation: any) => {\n compilation.hooks.buildModule.tap(pluginName, (module: any) => {\n const moduleType = (() => {\n const r = module.userRequest\n if (!r || r.endsWith('!')) {\n return ''\n } else {\n const resource = r.split('!').pop()\n const match = /^[^?]+\\.([^?]+)$/.exec(resource)\n return match ? match[1] : ''\n }\n })()\n\n const issuerModule = compilation?.moduleGraph?.getIssuer(module)\n\n let span: Span\n\n const moduleSpans = moduleSpansByCompilation.get(compilation)\n const spanName = `build-module${moduleType ? `-${moduleType}` : ''}`\n const issuerSpan: Span | undefined =\n issuerModule && moduleSpans?.get(issuerModule)\n if (issuerSpan) {\n span = issuerSpan.traceChild(spanName)\n } else {\n let parentSpan: Span | undefined\n for (const incomingConnection of compilation.moduleGraph.getIncomingConnections(\n module\n )) {\n const entrySpan = spans.get(incomingConnection.dependency)\n if (entrySpan) {\n parentSpan = entrySpan\n break\n }\n }\n\n if (!parentSpan) {\n const compilationSpan = spans.get(compilation)\n if (!compilationSpan) {\n return\n }\n\n parentSpan = compilationSpan\n }\n span = parentSpan.traceChild(spanName)\n }\n span.setAttribute('name', module.userRequest)\n span.setAttribute('layer', module.layer)\n moduleSpans!.set(module, span)\n })\n\n const moduleHooks = NormalModule.getCompilationHooks(compilation)\n moduleHooks.readResource.for(undefined).intercept({\n register(tapInfo: any) {\n const fn = tapInfo.fn\n tapInfo.fn = (loaderContext: any, callback: any) => {\n fn(loaderContext, (err: any, result: any) => {\n callback(err, result)\n })\n }\n return tapInfo\n },\n })\n\n moduleHooks.loader.tap(\n pluginName,\n (loaderContext: any, module: any) => {\n const moduleSpan = moduleSpansByCompilation\n .get(compilation)\n ?.get(module)\n loaderContext.currentTraceSpan = moduleSpan\n }\n )\n\n compilation.hooks.succeedModule.tap(pluginName, (module: any) => {\n moduleSpansByCompilation?.get(compilation)?.get(module)?.stop()\n })\n compilation.hooks.failedModule.tap(pluginName, (module: any) => {\n moduleSpansByCompilation?.get(compilation)?.get(module)?.stop()\n })\n\n this.traceHookPair(\n 'seal',\n compilation.hooks.seal,\n compilation.hooks.afterSeal,\n {\n parentSpan: () => spans.get(compilation)!,\n onStart(span) {\n sealSpanByCompilation.set(compilation, span)\n },\n onStop() {\n sealSpanByCompilation.delete(compilation)\n },\n }\n )\n\n compilation.hooks.addEntry.tap(pluginName, (entry: any) => {\n const parentSpan =\n makeSpanByCompilation.get(compilation) || spans.get(compilation)\n if (!parentSpan) {\n return\n }\n const addEntrySpan = parentSpan.traceChild('add-entry')\n // Only set request attribute if it's defined (Bun compatibility)\n if (entry.request) {\n addEntrySpan.setAttribute('request', entry.request)\n }\n spans.set(entry, addEntrySpan)\n })\n\n compilation.hooks.succeedEntry.tap(pluginName, (entry: any) => {\n spans.get(entry)?.stop()\n spans.delete(entry)\n })\n compilation.hooks.failedEntry.tap(pluginName, (entry: any) => {\n spans.get(entry)?.stop()\n spans.delete(entry)\n })\n\n this.traceHookPair(\n 'chunk-graph',\n compilation.hooks.beforeChunks,\n compilation.hooks.afterChunks,\n {\n parentSpan: () =>\n sealSpanByCompilation.get(compilation) || spans.get(compilation)!,\n }\n )\n this.traceHookPair(\n 'optimize',\n compilation.hooks.optimize,\n compilation.hooks.reviveModules,\n {\n parentSpan: () =>\n sealSpanByCompilation.get(compilation) || spans.get(compilation)!,\n }\n )\n this.traceHookPair(\n 'optimize-modules',\n compilation.hooks.optimizeModules,\n compilation.hooks.afterOptimizeModules,\n {\n parentSpan: () =>\n sealSpanByCompilation.get(compilation) || spans.get(compilation)!,\n }\n )\n this.traceHookPair(\n 'optimize-chunks',\n compilation.hooks.optimizeChunks,\n compilation.hooks.afterOptimizeChunks,\n {\n parentSpan: () =>\n sealSpanByCompilation.get(compilation) || spans.get(compilation)!,\n }\n )\n this.traceHookPair(\n 'optimize-tree',\n compilation.hooks.optimizeTree,\n compilation.hooks.afterOptimizeTree,\n {\n parentSpan: () =>\n sealSpanByCompilation.get(compilation) || spans.get(compilation)!,\n }\n )\n this.traceHookPair(\n 'optimize-chunk-modules',\n compilation.hooks.optimizeChunkModules,\n compilation.hooks.afterOptimizeChunkModules,\n {\n parentSpan: () =>\n sealSpanByCompilation.get(compilation) || spans.get(compilation)!,\n }\n )\n this.traceHookPair(\n 'module-hash',\n compilation.hooks.beforeModuleHash,\n compilation.hooks.afterModuleHash,\n {\n parentSpan: () =>\n sealSpanByCompilation.get(compilation) || spans.get(compilation)!,\n }\n )\n this.traceHookPair(\n 'code-generation',\n compilation.hooks.beforeCodeGeneration,\n compilation.hooks.afterCodeGeneration,\n {\n parentSpan: () =>\n sealSpanByCompilation.get(compilation) || spans.get(compilation)!,\n }\n )\n this.traceHookPair(\n 'hash',\n compilation.hooks.beforeHash,\n compilation.hooks.afterHash,\n {\n parentSpan: () =>\n sealSpanByCompilation.get(compilation) || spans.get(compilation)!,\n }\n )\n this.traceHookPair(\n 'code-generation-jobs',\n compilation.hooks.afterHash,\n compilation.hooks.beforeModuleAssets,\n {\n parentSpan: () =>\n sealSpanByCompilation.get(compilation) || spans.get(compilation)!,\n }\n )\n\n const logs = new Map()\n const originalTime = compilation.logger.time\n const originalTimeEnd = compilation.logger.timeEnd\n\n compilation.logger.time = (label: string) => {\n if (!inTraceLabelsSeal(label)) {\n return originalTime.call(compilation.logger, label)\n }\n const span = sealSpanByCompilation.get(compilation)\n if (span) {\n logs.set(label, span.traceChild(label.replace(/ /g, '-')))\n }\n return originalTime.call(compilation.logger, label)\n }\n compilation.logger.timeEnd = (label: string) => {\n if (!inTraceLabelsSeal(label)) {\n return originalTimeEnd.call(compilation.logger, label)\n }\n\n const span = logs.get(label)\n if (span) {\n span.stop()\n logs.delete(label)\n }\n return originalTimeEnd.call(compilation.logger, label)\n }\n }\n )\n }\n}\n"],"names":["ProfilingPlugin","spans","webpackInvalidSpans","pluginName","WeakMap","moduleSpansByCompilation","makeSpanByCompilation","sealSpanByCompilation","TRACE_LABELS_SEAL","inTraceLabelsSeal","label","some","l","startsWith","constructor","runWebpackSpan","rootDir","apply","compiler","traceTopLevelHooks","traceCompilationHooks","traceHookPair","spanName","startHook","stopHook","parentSpan","attrs","onStart","onStop","span","tap","name","stage","Infinity","params","attributes","traceChild","stop","hooks","compilation","afterCompile","get","set","options","mode","invalid","done","delete","fileName","trigger","path","relative","replaceAll","sep","emit","afterEmit","make","finishMake","compilationSpan","_span","buildModule","module","moduleType","r","userRequest","endsWith","resource","split","pop","match","exec","issuerModule","moduleGraph","getIssuer","moduleSpans","issuerSpan","incomingConnection","getIncomingConnections","entrySpan","dependency","setAttribute","layer","moduleHooks","NormalModule","getCompilationHooks","readResource","for","undefined","intercept","register","tapInfo","fn","loaderContext","callback","err","result","loader","moduleSpan","currentTraceSpan","succeedModule","failedModule","seal","afterSeal","addEntry","entry","addEntrySpan","request","succeedEntry","failedEntry","beforeChunks","afterChunks","optimize","reviveModules","optimizeModules","afterOptimizeModules","optimizeChunks","afterOptimizeChunks","optimizeTree","afterOptimizeTree","optimizeChunkModules","afterOptimizeChunkModules","beforeModuleHash","afterModuleHash","beforeCodeGeneration","afterCodeGeneration","beforeHash","afterHash","beforeModuleAssets","logs","Map","originalTime","logger","time","originalTimeEnd","timeEnd","call","replace"],"mappings":"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","ignoreList":[0]}
@@ -79,6 +79,8 @@ function buildManifest(_compiler, compilation, projectSrcDir, dev, shouldCreateD
79
79
  // We construct a "unique" key from origin module and request
80
80
  // It's not perfect unique, but that will be fine for us.
81
81
  // We also need to construct the same in the babel plugin.
82
+ // Skip if dependency.request is undefined (Bun compatibility)
83
+ if (!dependency.request) return;
82
84
  const key = `${_path.default.relative(projectSrcDir, originRequest)} -> ${dependency.request}`;
83
85
  // Capture all files that need to be loaded.
84
86
  const files = new Set();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/build/webpack/plugins/react-loadable-plugin.ts"],"sourcesContent":["/**\nCOPYRIGHT (c) 2017-present James Kyle <me@thejameskyle.com>\n MIT License\n Permission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n The above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWAR\n*/\n// Implementation of this PR: https://github.com/jamiebuilds/react-loadable/pull/132\n// Modified to strip out unneeded results for Next's specific use case\n\nimport type {\n DynamicCssManifest,\n ReactLoadableManifest,\n} from '../../../server/load-components'\nimport path from 'path'\nimport { webpack, sources } from 'next/dist/compiled/webpack/webpack'\nimport { DYNAMIC_CSS_MANIFEST } from '../../../shared/lib/constants'\n\nfunction getModuleId(compilation: any, module: any): string | number {\n return compilation.chunkGraph.getModuleId(module)\n}\n\nfunction getModuleFromDependency(\n compilation: any,\n dep: any\n): webpack.Module & { resource?: string } {\n return compilation.moduleGraph.getModule(dep)\n}\n\nfunction getOriginModuleFromDependency(\n compilation: any,\n dep: any\n): webpack.Module & { resource?: string } {\n return compilation.moduleGraph.getParentModule(dep)\n}\n\nfunction getChunkGroupFromBlock(\n compilation: any,\n block: any\n): webpack.Compilation['chunkGroups'] {\n return compilation.chunkGraph.getBlockChunkGroup(block)\n}\n\nfunction buildManifest(\n _compiler: webpack.Compiler,\n compilation: webpack.Compilation,\n projectSrcDir: string | undefined,\n dev: boolean,\n shouldCreateDynamicCssManifest: boolean\n): {\n reactLoadableManifest: ReactLoadableManifest\n dynamicCssManifest: DynamicCssManifest\n} {\n if (!projectSrcDir) {\n return {\n reactLoadableManifest: {},\n dynamicCssManifest: [],\n }\n }\n const dynamicCssManifestSet = new Set<string>()\n let manifest: ReactLoadableManifest = {}\n\n // This is allowed:\n // import(\"./module\"); <- ImportDependency\n\n // We don't support that:\n // import(/* webpackMode: \"eager\" */ \"./module\") <- ImportEagerDependency\n // import(`./module/${param}`) <- ImportContextDependency\n\n // Find all dependencies blocks which contains a `import()` dependency\n const handleBlock = (block: any) => {\n block.blocks.forEach(handleBlock)\n const chunkGroup = getChunkGroupFromBlock(compilation, block)\n for (const dependency of block.dependencies) {\n if (dependency.type.startsWith('import()')) {\n // get the referenced module\n const module = getModuleFromDependency(compilation, dependency)\n if (!module) return\n\n // get the module containing the import()\n const originModule = getOriginModuleFromDependency(\n compilation,\n dependency\n )\n const originRequest: string | undefined = originModule?.resource\n if (!originRequest) return\n\n // We construct a \"unique\" key from origin module and request\n // It's not perfect unique, but that will be fine for us.\n // We also need to construct the same in the babel plugin.\n const key = `${path.relative(projectSrcDir, originRequest)} -> ${\n dependency.request\n }`\n\n // Capture all files that need to be loaded.\n const files = new Set<string>()\n\n if (manifest[key]) {\n // In the \"rare\" case where multiple chunk groups\n // are created for the same `import()` or multiple\n // import()s reference the same module, we merge\n // the files to make sure to not miss files\n // This may cause overfetching in edge cases.\n for (const file of manifest[key].files) {\n files.add(file)\n }\n }\n\n // There might not be a chunk group when all modules\n // are already loaded. In this case we only need need\n // the module id and no files\n if (chunkGroup) {\n for (const chunk of (chunkGroup as any)\n .chunks as webpack.Compilation['chunks']) {\n chunk.files.forEach((file: string) => {\n if (\n (file.endsWith('.js') || file.endsWith('.css')) &&\n file.match(/^static\\/(chunks|css)\\//)\n ) {\n files.add(file)\n\n if (shouldCreateDynamicCssManifest && file.endsWith('.css')) {\n dynamicCssManifestSet.add(file)\n }\n }\n })\n }\n }\n\n // usually we have to add the parent chunk groups too\n // but we assume that all parents are also imported by\n // next/dynamic so they are loaded by the same technique\n\n // add the id and files to the manifest\n const id = dev ? key : getModuleId(compilation, module)\n manifest[key] = { id, files: Array.from(files) }\n }\n }\n }\n for (const module of compilation.modules) {\n module.blocks.forEach(handleBlock)\n }\n\n manifest = Object.keys(manifest)\n .sort()\n // eslint-disable-next-line no-sequences\n .reduce((a, c) => ((a[c] = manifest[c]), a), {} as any)\n\n return {\n reactLoadableManifest: manifest,\n dynamicCssManifest: Array.from(dynamicCssManifestSet),\n }\n}\n\nexport class ReactLoadablePlugin {\n private filename: string\n private pagesOrAppDir: string | undefined\n private isPagesDir: boolean\n private runtimeAsset?: string\n private dev: boolean\n\n constructor(opts: {\n filename: string\n pagesDir?: string\n appDir?: string\n runtimeAsset?: string\n dev: boolean\n }) {\n this.filename = opts.filename\n this.pagesOrAppDir = opts.pagesDir || opts.appDir\n this.isPagesDir = Boolean(opts.pagesDir)\n this.runtimeAsset = opts.runtimeAsset\n this.dev = opts.dev\n }\n\n createAssets(compiler: any, compilation: any) {\n const projectSrcDir = this.pagesOrAppDir\n ? path.dirname(this.pagesOrAppDir)\n : undefined\n const shouldCreateDynamicCssManifest = !this.dev && this.isPagesDir\n const { reactLoadableManifest, dynamicCssManifest } = buildManifest(\n compiler,\n compilation,\n projectSrcDir,\n this.dev,\n shouldCreateDynamicCssManifest\n )\n\n compilation.emitAsset(\n this.filename,\n new sources.RawSource(JSON.stringify(reactLoadableManifest, null, 2))\n )\n\n if (this.runtimeAsset) {\n compilation.emitAsset(\n this.runtimeAsset,\n new sources.RawSource(\n `self.__REACT_LOADABLE_MANIFEST=${JSON.stringify(\n JSON.stringify(reactLoadableManifest)\n )}`\n )\n )\n }\n\n // This manifest prevents removing server rendered <link> tags after client\n // navigation. This is only needed under Pages dir && Production && Webpack.\n // x-ref: https://github.com/vercel/next.js/pull/72959\n if (shouldCreateDynamicCssManifest) {\n compilation.emitAsset(\n `${DYNAMIC_CSS_MANIFEST}.json`,\n new sources.RawSource(JSON.stringify(dynamicCssManifest, null, 2))\n )\n\n // This is for edge runtime.\n compilation.emitAsset(\n `server/${DYNAMIC_CSS_MANIFEST}.js`,\n new sources.RawSource(\n `self.__DYNAMIC_CSS_MANIFEST=${JSON.stringify(\n JSON.stringify(dynamicCssManifest)\n )}`\n )\n )\n }\n }\n\n apply(compiler: webpack.Compiler) {\n compiler.hooks.make.tap('ReactLoadableManifest', (compilation) => {\n compilation.hooks.processAssets.tap(\n {\n name: 'ReactLoadableManifest',\n stage: webpack.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS,\n },\n () => {\n this.createAssets(compiler, compilation)\n }\n )\n })\n }\n}\n"],"names":["ReactLoadablePlugin","getModuleId","compilation","module","chunkGraph","getModuleFromDependency","dep","moduleGraph","getModule","getOriginModuleFromDependency","getParentModule","getChunkGroupFromBlock","block","getBlockChunkGroup","buildManifest","_compiler","projectSrcDir","dev","shouldCreateDynamicCssManifest","reactLoadableManifest","dynamicCssManifest","dynamicCssManifestSet","Set","manifest","handleBlock","blocks","forEach","chunkGroup","dependency","dependencies","type","startsWith","originModule","originRequest","resource","key","path","relative","request","files","file","add","chunk","chunks","endsWith","match","id","Array","from","modules","Object","keys","sort","reduce","a","c","constructor","opts","filename","pagesOrAppDir","pagesDir","appDir","isPagesDir","Boolean","runtimeAsset","createAssets","compiler","dirname","undefined","emitAsset","sources","RawSource","JSON","stringify","DYNAMIC_CSS_MANIFEST","apply","hooks","make","tap","processAssets","name","stage","webpack","Compilation","PROCESS_ASSETS_STAGE_ADDITIONS"],"mappings":"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","ignoreList":[0]}
1
+ {"version":3,"sources":["../../../../src/build/webpack/plugins/react-loadable-plugin.ts"],"sourcesContent":["/**\nCOPYRIGHT (c) 2017-present James Kyle <me@thejameskyle.com>\n MIT License\n Permission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n The above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWAR\n*/\n// Implementation of this PR: https://github.com/jamiebuilds/react-loadable/pull/132\n// Modified to strip out unneeded results for Next's specific use case\n\nimport type {\n DynamicCssManifest,\n ReactLoadableManifest,\n} from '../../../server/load-components'\nimport path from 'path'\nimport { webpack, sources } from 'next/dist/compiled/webpack/webpack'\nimport { DYNAMIC_CSS_MANIFEST } from '../../../shared/lib/constants'\n\nfunction getModuleId(compilation: any, module: any): string | number {\n return compilation.chunkGraph.getModuleId(module)\n}\n\nfunction getModuleFromDependency(\n compilation: any,\n dep: any\n): webpack.Module & { resource?: string } {\n return compilation.moduleGraph.getModule(dep)\n}\n\nfunction getOriginModuleFromDependency(\n compilation: any,\n dep: any\n): webpack.Module & { resource?: string } {\n return compilation.moduleGraph.getParentModule(dep)\n}\n\nfunction getChunkGroupFromBlock(\n compilation: any,\n block: any\n): webpack.Compilation['chunkGroups'] {\n return compilation.chunkGraph.getBlockChunkGroup(block)\n}\n\nfunction buildManifest(\n _compiler: webpack.Compiler,\n compilation: webpack.Compilation,\n projectSrcDir: string | undefined,\n dev: boolean,\n shouldCreateDynamicCssManifest: boolean\n): {\n reactLoadableManifest: ReactLoadableManifest\n dynamicCssManifest: DynamicCssManifest\n} {\n if (!projectSrcDir) {\n return {\n reactLoadableManifest: {},\n dynamicCssManifest: [],\n }\n }\n const dynamicCssManifestSet = new Set<string>()\n let manifest: ReactLoadableManifest = {}\n\n // This is allowed:\n // import(\"./module\"); <- ImportDependency\n\n // We don't support that:\n // import(/* webpackMode: \"eager\" */ \"./module\") <- ImportEagerDependency\n // import(`./module/${param}`) <- ImportContextDependency\n\n // Find all dependencies blocks which contains a `import()` dependency\n const handleBlock = (block: any) => {\n block.blocks.forEach(handleBlock)\n const chunkGroup = getChunkGroupFromBlock(compilation, block)\n for (const dependency of block.dependencies) {\n if (dependency.type.startsWith('import()')) {\n // get the referenced module\n const module = getModuleFromDependency(compilation, dependency)\n if (!module) return\n\n // get the module containing the import()\n const originModule = getOriginModuleFromDependency(\n compilation,\n dependency\n )\n const originRequest: string | undefined = originModule?.resource\n if (!originRequest) return\n\n // We construct a \"unique\" key from origin module and request\n // It's not perfect unique, but that will be fine for us.\n // We also need to construct the same in the babel plugin.\n // Skip if dependency.request is undefined (Bun compatibility)\n if (!dependency.request) return\n const key = `${path.relative(projectSrcDir, originRequest)} -> ${\n dependency.request\n }`\n\n // Capture all files that need to be loaded.\n const files = new Set<string>()\n\n if (manifest[key]) {\n // In the \"rare\" case where multiple chunk groups\n // are created for the same `import()` or multiple\n // import()s reference the same module, we merge\n // the files to make sure to not miss files\n // This may cause overfetching in edge cases.\n for (const file of manifest[key].files) {\n files.add(file)\n }\n }\n\n // There might not be a chunk group when all modules\n // are already loaded. In this case we only need need\n // the module id and no files\n if (chunkGroup) {\n for (const chunk of (chunkGroup as any)\n .chunks as webpack.Compilation['chunks']) {\n chunk.files.forEach((file: string) => {\n if (\n (file.endsWith('.js') || file.endsWith('.css')) &&\n file.match(/^static\\/(chunks|css)\\//)\n ) {\n files.add(file)\n\n if (shouldCreateDynamicCssManifest && file.endsWith('.css')) {\n dynamicCssManifestSet.add(file)\n }\n }\n })\n }\n }\n\n // usually we have to add the parent chunk groups too\n // but we assume that all parents are also imported by\n // next/dynamic so they are loaded by the same technique\n\n // add the id and files to the manifest\n const id = dev ? key : getModuleId(compilation, module)\n manifest[key] = { id, files: Array.from(files) }\n }\n }\n }\n for (const module of compilation.modules) {\n module.blocks.forEach(handleBlock)\n }\n\n manifest = Object.keys(manifest)\n .sort()\n // eslint-disable-next-line no-sequences\n .reduce((a, c) => ((a[c] = manifest[c]), a), {} as any)\n\n return {\n reactLoadableManifest: manifest,\n dynamicCssManifest: Array.from(dynamicCssManifestSet),\n }\n}\n\nexport class ReactLoadablePlugin {\n private filename: string\n private pagesOrAppDir: string | undefined\n private isPagesDir: boolean\n private runtimeAsset?: string\n private dev: boolean\n\n constructor(opts: {\n filename: string\n pagesDir?: string\n appDir?: string\n runtimeAsset?: string\n dev: boolean\n }) {\n this.filename = opts.filename\n this.pagesOrAppDir = opts.pagesDir || opts.appDir\n this.isPagesDir = Boolean(opts.pagesDir)\n this.runtimeAsset = opts.runtimeAsset\n this.dev = opts.dev\n }\n\n createAssets(compiler: any, compilation: any) {\n const projectSrcDir = this.pagesOrAppDir\n ? path.dirname(this.pagesOrAppDir)\n : undefined\n const shouldCreateDynamicCssManifest = !this.dev && this.isPagesDir\n const { reactLoadableManifest, dynamicCssManifest } = buildManifest(\n compiler,\n compilation,\n projectSrcDir,\n this.dev,\n shouldCreateDynamicCssManifest\n )\n\n compilation.emitAsset(\n this.filename,\n new sources.RawSource(JSON.stringify(reactLoadableManifest, null, 2))\n )\n\n if (this.runtimeAsset) {\n compilation.emitAsset(\n this.runtimeAsset,\n new sources.RawSource(\n `self.__REACT_LOADABLE_MANIFEST=${JSON.stringify(\n JSON.stringify(reactLoadableManifest)\n )}`\n )\n )\n }\n\n // This manifest prevents removing server rendered <link> tags after client\n // navigation. This is only needed under Pages dir && Production && Webpack.\n // x-ref: https://github.com/vercel/next.js/pull/72959\n if (shouldCreateDynamicCssManifest) {\n compilation.emitAsset(\n `${DYNAMIC_CSS_MANIFEST}.json`,\n new sources.RawSource(JSON.stringify(dynamicCssManifest, null, 2))\n )\n\n // This is for edge runtime.\n compilation.emitAsset(\n `server/${DYNAMIC_CSS_MANIFEST}.js`,\n new sources.RawSource(\n `self.__DYNAMIC_CSS_MANIFEST=${JSON.stringify(\n JSON.stringify(dynamicCssManifest)\n )}`\n )\n )\n }\n }\n\n apply(compiler: webpack.Compiler) {\n compiler.hooks.make.tap('ReactLoadableManifest', (compilation) => {\n compilation.hooks.processAssets.tap(\n {\n name: 'ReactLoadableManifest',\n stage: webpack.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS,\n },\n () => {\n this.createAssets(compiler, compilation)\n }\n )\n })\n }\n}\n"],"names":["ReactLoadablePlugin","getModuleId","compilation","module","chunkGraph","getModuleFromDependency","dep","moduleGraph","getModule","getOriginModuleFromDependency","getParentModule","getChunkGroupFromBlock","block","getBlockChunkGroup","buildManifest","_compiler","projectSrcDir","dev","shouldCreateDynamicCssManifest","reactLoadableManifest","dynamicCssManifest","dynamicCssManifestSet","Set","manifest","handleBlock","blocks","forEach","chunkGroup","dependency","dependencies","type","startsWith","originModule","originRequest","resource","request","key","path","relative","files","file","add","chunk","chunks","endsWith","match","id","Array","from","modules","Object","keys","sort","reduce","a","c","constructor","opts","filename","pagesOrAppDir","pagesDir","appDir","isPagesDir","Boolean","runtimeAsset","createAssets","compiler","dirname","undefined","emitAsset","sources","RawSource","JSON","stringify","DYNAMIC_CSS_MANIFEST","apply","hooks","make","tap","processAssets","name","stage","webpack","Compilation","PROCESS_ASSETS_STAGE_ADDITIONS"],"mappings":"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","ignoreList":[0]}
@@ -76,6 +76,14 @@ async function getSourceFrame(input, fileName, compilation) {
76
76
  if (sourceMap) {
77
77
  var _result_originalStackFrame_line1, _result_originalStackFrame, _result_originalStackFrame_column1, _result_originalStackFrame1;
78
78
  const moduleId = compilation.chunkGraph.getModuleId(module1);
79
+ // Skip if moduleId is undefined (Bun compatibility)
80
+ if (moduleId === undefined || moduleId === null) {
81
+ return {
82
+ frame: '',
83
+ line1: '',
84
+ column1: ''
85
+ };
86
+ }
79
87
  const result = await (0, _middlewarewebpack.createOriginalStackFrame)({
80
88
  ignoredByDefault: sourceMapIgnoreListsEverything(sourceMap),
81
89
  source: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/build/webpack/plugins/wellknown-errors-plugin/parseNotFoundError.ts"],"sourcesContent":["import { bold, cyan, green, red, yellow } from '../../../../lib/picocolors'\nimport { SimpleWebpackError } from './simpleWebpackError'\nimport {\n createOriginalStackFrame,\n getIgnoredSources,\n} from '../../../../server/dev/middleware-webpack'\nimport type { webpack } from 'next/dist/compiled/webpack/webpack'\nimport type { RawSourceMap } from 'next/dist/compiled/source-map08'\n\n// Based on https://github.com/webpack/webpack/blob/fcdd04a833943394bbb0a9eeb54a962a24cc7e41/lib/stats/DefaultStatsFactoryPlugin.js#L422-L431\n/*\nCopyright JS Foundation and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\nfunction getModuleTrace(input: any, compilation: any) {\n const visitedModules = new Set()\n const moduleTrace = []\n let current = input.module\n while (current) {\n if (visitedModules.has(current)) break // circular (technically impossible, but who knows)\n visitedModules.add(current)\n const origin = compilation.moduleGraph.getIssuer(current)\n if (!origin) break\n moduleTrace.push({ origin, module: current })\n current = origin\n }\n\n return moduleTrace\n}\n\nfunction sourceMapIgnoreListsEverything(\n sourceMap: RawSourceMap & { ignoreList?: number[] }\n): boolean {\n return sourceMap.sources.length === sourceMap.ignoreList?.length\n}\n\nasync function getSourceFrame(\n input: any,\n fileName: any,\n compilation: any\n): Promise<{ frame: string; line1: string; column1: string }> {\n try {\n const loc =\n input.loc || input.dependencies.map((d: any) => d.loc).filter(Boolean)[0]\n const module = input.module as webpack.Module\n const originalSource = module.originalSource()\n const sourceMap = originalSource?.map() ?? undefined\n\n if (sourceMap) {\n const moduleId = compilation.chunkGraph.getModuleId(module)\n\n const result = await createOriginalStackFrame({\n ignoredByDefault: sourceMapIgnoreListsEverything(sourceMap),\n source: {\n type: 'bundle',\n sourceMap,\n ignoredSources: getIgnoredSources(sourceMap),\n compilation,\n moduleId,\n moduleURL: fileName,\n },\n rootDirectory: compilation.options.context!,\n frame: {\n arguments: [],\n file: fileName,\n methodName: '',\n line1: loc.start.line,\n // loc is 0-based but columns in stack frames are 1-based.\n column1: (loc.start.column ?? 0) + 1,\n },\n })\n\n return {\n frame: result?.originalCodeFrame ?? '',\n line1: result?.originalStackFrame?.line1?.toString() ?? '',\n column1: result?.originalStackFrame?.column1?.toString() ?? '',\n }\n }\n } catch {}\n\n return { frame: '', line1: '', column1: '' }\n}\n\nfunction getFormattedFileName(\n fileName: string,\n module: any,\n lineNumber?: string,\n column?: string\n): string {\n if (\n module.loaders?.find((loader: any) =>\n /next-font-loader[/\\\\]index.js/.test(loader.loader)\n )\n ) {\n // Parse the query and get the path of the file where the font function was called.\n // provided by next-swc next-transform-font\n return JSON.parse(module.resourceResolveData.query.slice(1)).path\n } else {\n let formattedFileName: string = cyan(fileName)\n if (lineNumber && column) {\n formattedFileName += `:${yellow(lineNumber)}:${yellow(column)}`\n }\n\n return formattedFileName\n }\n}\n\nexport async function getNotFoundError(\n compilation: webpack.Compilation,\n input: any,\n fileName: string,\n module: any\n) {\n if (\n input.name !== 'ModuleNotFoundError' &&\n !(\n input.name === 'ModuleBuildError' &&\n /Error: Can't resolve '.+' in /.test(input.message)\n )\n ) {\n return false\n }\n\n try {\n const { frame, line1, column1 } = await getSourceFrame(\n input,\n fileName,\n compilation\n )\n\n const errorMessage = input.error.message\n .replace(/ in '.*?'/, '')\n .replace(/Can't resolve '(.*)'/, `Can't resolve '${green('$1')}'`)\n\n const importTrace = () => {\n const moduleTrace = getModuleTrace(input, compilation)\n .map(({ origin }) =>\n origin.readableIdentifier(compilation.requestShortener)\n )\n .filter(\n (name) =>\n name &&\n !/next-(app|middleware|client-pages|route|flight-(client|server|client-entry))-loader/.test(\n name\n ) &&\n !/css-loader.+\\.js/.test(name)\n )\n if (moduleTrace.length === 0) return ''\n\n return `\\nImport trace for requested module:\\n${moduleTrace.join('\\n')}`\n }\n\n let message =\n red(bold('Module not found')) +\n `: ${errorMessage}` +\n '\\n' +\n frame +\n (frame !== '' ? '\\n' : '') +\n '\\nhttps://nextjs.org/docs/messages/module-not-found\\n' +\n importTrace()\n\n const formattedFileName = getFormattedFileName(\n fileName,\n module,\n line1,\n column1\n )\n\n return new SimpleWebpackError(formattedFileName, message)\n } catch (err) {\n // Don't fail on failure to resolve sourcemaps\n return input\n }\n}\n\nexport async function getImageError(\n compilation: any,\n input: any,\n err: Error\n): Promise<SimpleWebpackError | false> {\n if (err.name !== 'InvalidImageFormatError') {\n return false\n }\n\n const moduleTrace = getModuleTrace(input, compilation)\n const { origin, module } = moduleTrace[0] || {}\n if (!origin || !module) {\n return false\n }\n const page = origin.rawRequest.replace(/^private-next-pages/, './pages')\n const importedFile = module.rawRequest\n const source = origin.originalSource().buffer().toString('utf8') as string\n let lineNumber = -1\n source.split('\\n').some((line) => {\n lineNumber++\n return line.includes(importedFile)\n })\n return new SimpleWebpackError(\n `${cyan(page)}:${yellow(lineNumber.toString())}`,\n red(bold('Error')).concat(\n `: Image import \"${importedFile}\" is not a valid image file. The image may be corrupted or an unsupported format.`\n )\n )\n}\n"],"names":["getImageError","getNotFoundError","getModuleTrace","input","compilation","visitedModules","Set","moduleTrace","current","module","has","add","origin","moduleGraph","getIssuer","push","sourceMapIgnoreListsEverything","sourceMap","sources","length","ignoreList","getSourceFrame","fileName","loc","dependencies","map","d","filter","Boolean","originalSource","undefined","result","moduleId","chunkGraph","getModuleId","createOriginalStackFrame","ignoredByDefault","source","type","ignoredSources","getIgnoredSources","moduleURL","rootDirectory","options","context","frame","arguments","file","methodName","line1","start","line","column1","column","originalCodeFrame","originalStackFrame","toString","getFormattedFileName","lineNumber","loaders","find","loader","test","JSON","parse","resourceResolveData","query","slice","path","formattedFileName","cyan","yellow","name","message","errorMessage","error","replace","green","importTrace","readableIdentifier","requestShortener","join","red","bold","SimpleWebpackError","err","page","rawRequest","importedFile","buffer","split","some","includes","concat"],"mappings":"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","ignoreList":[0]}
1
+ {"version":3,"sources":["../../../../../src/build/webpack/plugins/wellknown-errors-plugin/parseNotFoundError.ts"],"sourcesContent":["import { bold, cyan, green, red, yellow } from '../../../../lib/picocolors'\nimport { SimpleWebpackError } from './simpleWebpackError'\nimport {\n createOriginalStackFrame,\n getIgnoredSources,\n} from '../../../../server/dev/middleware-webpack'\nimport type { webpack } from 'next/dist/compiled/webpack/webpack'\nimport type { RawSourceMap } from 'next/dist/compiled/source-map08'\n\n// Based on https://github.com/webpack/webpack/blob/fcdd04a833943394bbb0a9eeb54a962a24cc7e41/lib/stats/DefaultStatsFactoryPlugin.js#L422-L431\n/*\nCopyright JS Foundation and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\nfunction getModuleTrace(input: any, compilation: any) {\n const visitedModules = new Set()\n const moduleTrace = []\n let current = input.module\n while (current) {\n if (visitedModules.has(current)) break // circular (technically impossible, but who knows)\n visitedModules.add(current)\n const origin = compilation.moduleGraph.getIssuer(current)\n if (!origin) break\n moduleTrace.push({ origin, module: current })\n current = origin\n }\n\n return moduleTrace\n}\n\nfunction sourceMapIgnoreListsEverything(\n sourceMap: RawSourceMap & { ignoreList?: number[] }\n): boolean {\n return sourceMap.sources.length === sourceMap.ignoreList?.length\n}\n\nasync function getSourceFrame(\n input: any,\n fileName: any,\n compilation: any\n): Promise<{ frame: string; line1: string; column1: string }> {\n try {\n const loc =\n input.loc || input.dependencies.map((d: any) => d.loc).filter(Boolean)[0]\n const module = input.module as webpack.Module\n const originalSource = module.originalSource()\n const sourceMap = originalSource?.map() ?? undefined\n\n if (sourceMap) {\n const moduleId = compilation.chunkGraph.getModuleId(module)\n // Skip if moduleId is undefined (Bun compatibility)\n if (moduleId === undefined || moduleId === null) {\n return { frame: '', line1: '', column1: '' }\n }\n\n const result = await createOriginalStackFrame({\n ignoredByDefault: sourceMapIgnoreListsEverything(sourceMap),\n source: {\n type: 'bundle',\n sourceMap,\n ignoredSources: getIgnoredSources(sourceMap),\n compilation,\n moduleId,\n moduleURL: fileName,\n },\n rootDirectory: compilation.options.context!,\n frame: {\n arguments: [],\n file: fileName,\n methodName: '',\n line1: loc.start.line,\n // loc is 0-based but columns in stack frames are 1-based.\n column1: (loc.start.column ?? 0) + 1,\n },\n })\n\n return {\n frame: result?.originalCodeFrame ?? '',\n line1: result?.originalStackFrame?.line1?.toString() ?? '',\n column1: result?.originalStackFrame?.column1?.toString() ?? '',\n }\n }\n } catch {}\n\n return { frame: '', line1: '', column1: '' }\n}\n\nfunction getFormattedFileName(\n fileName: string,\n module: any,\n lineNumber?: string,\n column?: string\n): string {\n if (\n module.loaders?.find((loader: any) =>\n /next-font-loader[/\\\\]index.js/.test(loader.loader)\n )\n ) {\n // Parse the query and get the path of the file where the font function was called.\n // provided by next-swc next-transform-font\n return JSON.parse(module.resourceResolveData.query.slice(1)).path\n } else {\n let formattedFileName: string = cyan(fileName)\n if (lineNumber && column) {\n formattedFileName += `:${yellow(lineNumber)}:${yellow(column)}`\n }\n\n return formattedFileName\n }\n}\n\nexport async function getNotFoundError(\n compilation: webpack.Compilation,\n input: any,\n fileName: string,\n module: any\n) {\n if (\n input.name !== 'ModuleNotFoundError' &&\n !(\n input.name === 'ModuleBuildError' &&\n /Error: Can't resolve '.+' in /.test(input.message)\n )\n ) {\n return false\n }\n\n try {\n const { frame, line1, column1 } = await getSourceFrame(\n input,\n fileName,\n compilation\n )\n\n const errorMessage = input.error.message\n .replace(/ in '.*?'/, '')\n .replace(/Can't resolve '(.*)'/, `Can't resolve '${green('$1')}'`)\n\n const importTrace = () => {\n const moduleTrace = getModuleTrace(input, compilation)\n .map(({ origin }) =>\n origin.readableIdentifier(compilation.requestShortener)\n )\n .filter(\n (name) =>\n name &&\n !/next-(app|middleware|client-pages|route|flight-(client|server|client-entry))-loader/.test(\n name\n ) &&\n !/css-loader.+\\.js/.test(name)\n )\n if (moduleTrace.length === 0) return ''\n\n return `\\nImport trace for requested module:\\n${moduleTrace.join('\\n')}`\n }\n\n let message =\n red(bold('Module not found')) +\n `: ${errorMessage}` +\n '\\n' +\n frame +\n (frame !== '' ? '\\n' : '') +\n '\\nhttps://nextjs.org/docs/messages/module-not-found\\n' +\n importTrace()\n\n const formattedFileName = getFormattedFileName(\n fileName,\n module,\n line1,\n column1\n )\n\n return new SimpleWebpackError(formattedFileName, message)\n } catch (err) {\n // Don't fail on failure to resolve sourcemaps\n return input\n }\n}\n\nexport async function getImageError(\n compilation: any,\n input: any,\n err: Error\n): Promise<SimpleWebpackError | false> {\n if (err.name !== 'InvalidImageFormatError') {\n return false\n }\n\n const moduleTrace = getModuleTrace(input, compilation)\n const { origin, module } = moduleTrace[0] || {}\n if (!origin || !module) {\n return false\n }\n const page = origin.rawRequest.replace(/^private-next-pages/, './pages')\n const importedFile = module.rawRequest\n const source = origin.originalSource().buffer().toString('utf8') as string\n let lineNumber = -1\n source.split('\\n').some((line) => {\n lineNumber++\n return line.includes(importedFile)\n })\n return new SimpleWebpackError(\n `${cyan(page)}:${yellow(lineNumber.toString())}`,\n red(bold('Error')).concat(\n `: Image import \"${importedFile}\" is not a valid image file. The image may be corrupted or an unsupported format.`\n )\n )\n}\n"],"names":["getImageError","getNotFoundError","getModuleTrace","input","compilation","visitedModules","Set","moduleTrace","current","module","has","add","origin","moduleGraph","getIssuer","push","sourceMapIgnoreListsEverything","sourceMap","sources","length","ignoreList","getSourceFrame","fileName","loc","dependencies","map","d","filter","Boolean","originalSource","undefined","result","moduleId","chunkGraph","getModuleId","frame","line1","column1","createOriginalStackFrame","ignoredByDefault","source","type","ignoredSources","getIgnoredSources","moduleURL","rootDirectory","options","context","arguments","file","methodName","start","line","column","originalCodeFrame","originalStackFrame","toString","getFormattedFileName","lineNumber","loaders","find","loader","test","JSON","parse","resourceResolveData","query","slice","path","formattedFileName","cyan","yellow","name","message","errorMessage","error","replace","green","importTrace","readableIdentifier","requestShortener","join","red","bold","SimpleWebpackError","err","page","rawRequest","importedFile","buffer","split","some","includes","concat"],"mappings":"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","ignoreList":[0]}