@openuiai/next 16.0.6 → 16.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/next +1 -1
- package/dist/build/index.js +3 -3
- package/dist/build/swc/index.js +1 -1
- package/dist/build/webpack/loaders/css-loader/src/utils.js +2 -1
- package/dist/build/webpack/loaders/css-loader/src/utils.js.map +1 -1
- package/dist/build/webpack/plugins/jsconfig-paths-plugin.js +4 -0
- package/dist/build/webpack/plugins/jsconfig-paths-plugin.js.map +1 -1
- package/dist/build/webpack/plugins/profiling-plugin.js +4 -1
- package/dist/build/webpack/plugins/profiling-plugin.js.map +1 -1
- package/dist/build/webpack/plugins/react-loadable-plugin.js +2 -0
- package/dist/build/webpack/plugins/react-loadable-plugin.js.map +1 -1
- package/dist/build/webpack/plugins/wellknown-errors-plugin/parseNotFoundError.js +8 -0
- package/dist/build/webpack/plugins/wellknown-errors-plugin/parseNotFoundError.js.map +1 -1
- package/dist/build/webpack-config.js +2 -2
- package/dist/client/app-bootstrap.js +1 -1
- package/dist/client/index.js +1 -1
- package/dist/esm/build/index.js +3 -3
- package/dist/esm/build/swc/index.js +1 -1
- package/dist/esm/build/webpack/loaders/css-loader/src/utils.js +2 -1
- package/dist/esm/build/webpack/loaders/css-loader/src/utils.js.map +1 -1
- package/dist/esm/build/webpack/plugins/jsconfig-paths-plugin.js +4 -0
- package/dist/esm/build/webpack/plugins/jsconfig-paths-plugin.js.map +1 -1
- package/dist/esm/build/webpack/plugins/profiling-plugin.js +4 -1
- package/dist/esm/build/webpack/plugins/profiling-plugin.js.map +1 -1
- package/dist/esm/build/webpack/plugins/react-loadable-plugin.js +2 -0
- package/dist/esm/build/webpack/plugins/react-loadable-plugin.js.map +1 -1
- package/dist/esm/build/webpack/plugins/wellknown-errors-plugin/parseNotFoundError.js +8 -0
- package/dist/esm/build/webpack/plugins/wellknown-errors-plugin/parseNotFoundError.js.map +1 -1
- package/dist/esm/build/webpack-config.js +2 -2
- package/dist/esm/client/app-bootstrap.js +1 -1
- package/dist/esm/client/index.js +1 -1
- package/dist/esm/server/dev/hot-reloader-webpack.js +1 -1
- package/dist/esm/server/lib/app-info-log.js +1 -1
- package/dist/esm/server/lib/start-server.js +1 -1
- package/dist/esm/shared/lib/errors/canary-only-config-error.js +1 -1
- package/dist/server/dev/hot-reloader-webpack.js +1 -1
- package/dist/server/lib/app-info-log.js +1 -1
- package/dist/server/lib/start-server.js +1 -1
- package/dist/shared/lib/errors/canary-only-config-error.js +1 -1
- package/dist/telemetry/anonymous-meta.js +1 -1
- package/dist/telemetry/events/session-stopped.js +2 -2
- package/dist/telemetry/events/version.js +2 -2
- 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.
|
|
82
|
+
}).helpCommand(false).helpOption('-h, --help', 'Displays this message.').version(`Next.js v${"16.0.7"}`, '-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',
|
package/dist/build/index.js
CHANGED
|
@@ -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.
|
|
376
|
+
version: "16.0.7"
|
|
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.
|
|
889
|
+
await (0, _builddiagnostics.recordFrameworkVersion)("16.0.7");
|
|
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.
|
|
2538
|
+
nextVersion: "16.0.7",
|
|
2539
2539
|
tracingRoot: outputFileTracingRoot,
|
|
2540
2540
|
hasNodeMiddleware,
|
|
2541
2541
|
hasInstrumentationHook,
|
package/dist/build/swc/index.js
CHANGED
|
@@ -128,7 +128,7 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
128
128
|
}
|
|
129
129
|
return newObj;
|
|
130
130
|
}
|
|
131
|
-
const nextVersion = "16.0.
|
|
131
|
+
const nextVersion = "16.0.7";
|
|
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).
|
|
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":"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","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
|
-
|
|
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":";;;;;;;;;;;;;;;IAsMsBA,aAAa;eAAbA;;IApEAC,gBAAgB;eAAhBA;;;4BAlIyB;oCACZ;mCAI5B;AAIP,6IAA6I;AAC7I;;;;;;;;;;;;;;;;;;;;;;AAsBA,GACA,SAASC,eAAeC,KAAU,EAAEC,WAAgB;IAClD,MAAMC,iBAAiB,IAAIC;IAC3B,MAAMC,cAAc,EAAE;IACtB,IAAIC,UAAUL,MAAMM,MAAM;IAC1B,MAAOD,QAAS;QACd,IAAIH,eAAeK,GAAG,CAACF,UAAU,OAAM,mDAAmD;QAC1FH,eAAeM,GAAG,CAACH;QACnB,MAAMI,SAASR,YAAYS,WAAW,CAACC,SAAS,CAACN;QACjD,IAAI,CAACI,QAAQ;QACbL,YAAYQ,IAAI,CAAC;YAAEH;YAAQH,QAAQD;QAAQ;QAC3CA,UAAUI;IACZ;IAEA,OAAOL;AACT;AAEA,SAASS,+BACPC,SAAmD;QAEfA;IAApC,OAAOA,UAAUC,OAAO,CAACC,MAAM,OAAKF,wBAAAA,UAAUG,UAAU,qBAApBH,sBAAsBE,MAAM;AAClE;AAEA,eAAeE,eACblB,KAAU,EACVmB,QAAa,EACblB,WAAgB;IAEhB,IAAI;QACF,MAAMmB,MACJpB,MAAMoB,GAAG,IAAIpB,MAAMqB,YAAY,CAACC,GAAG,CAAC,CAACC,IAAWA,EAAEH,GAAG,EAAEI,MAAM,CAACC,QAAQ,CAAC,EAAE;QAC3E,MAAMnB,UAASN,MAAMM,MAAM;QAC3B,MAAMoB,iBAAiBpB,QAAOoB,cAAc;QAC5C,MAAMZ,YAAYY,CAAAA,kCAAAA,eAAgBJ,GAAG,OAAMK;QAE3C,IAAIb,WAAW;gBA8BJc,kCAAAA,4BACEA,oCAAAA;YA9BX,MAAMC,WAAW5B,YAAY6B,UAAU,CAACC,WAAW,CAACzB;YACpD,oDAAoD;YACpD,IAAIuB,aAAaF,aAAaE,aAAa,MAAM;gBAC/C,OAAO;oBAAEG,OAAO;oBAAIC,OAAO;oBAAIC,SAAS;gBAAG;YAC7C;YAEA,MAAMN,SAAS,MAAMO,IAAAA,2CAAwB,EAAC;gBAC5CC,kBAAkBvB,+BAA+BC;gBACjDuB,QAAQ;oBACNC,MAAM;oBACNxB;oBACAyB,gBAAgBC,IAAAA,oCAAiB,EAAC1B;oBAClCb;oBACA4B;oBACAY,WAAWtB;gBACb;gBACAuB,eAAezC,YAAY0C,OAAO,CAACC,OAAO;gBAC1CZ,OAAO;oBACLa,WAAW,EAAE;oBACbC,MAAM3B;oBACN4B,YAAY;oBACZd,OAAOb,IAAI4B,KAAK,CAACC,IAAI;oBACrB,0DAA0D;oBAC1Df,SAAS,AAACd,CAAAA,IAAI4B,KAAK,CAACE,MAAM,IAAI,CAAA,IAAK;gBACrC;YACF;YAEA,OAAO;gBACLlB,OAAOJ,CAAAA,0BAAAA,OAAQuB,iBAAiB,KAAI;gBACpClB,OAAOL,CAAAA,2BAAAA,6BAAAA,OAAQwB,kBAAkB,sBAA1BxB,mCAAAA,2BAA4BK,KAAK,qBAAjCL,iCAAmCyB,QAAQ,OAAM;gBACxDnB,SAASN,CAAAA,2BAAAA,8BAAAA,OAAQwB,kBAAkB,sBAA1BxB,qCAAAA,4BAA4BM,OAAO,qBAAnCN,mCAAqCyB,QAAQ,OAAM;YAC9D;QACF;IACF,EAAE,OAAM,CAAC;IAET,OAAO;QAAErB,OAAO;QAAIC,OAAO;QAAIC,SAAS;IAAG;AAC7C;AAEA,SAASoB,qBACPnC,QAAgB,EAChBb,OAAW,EACXiD,UAAmB,EACnBL,MAAe;QAGb5C;IADF,KACEA,kBAAAA,QAAOkD,OAAO,qBAAdlD,gBAAgBmD,IAAI,CAAC,CAACC,SACpB,gCAAgCC,IAAI,CAACD,OAAOA,MAAM,IAEpD;QACA,mFAAmF;QACnF,2CAA2C;QAC3C,OAAOE,KAAKC,KAAK,CAACvD,QAAOwD,mBAAmB,CAACC,KAAK,CAACC,KAAK,CAAC,IAAIC,IAAI;IACnE,OAAO;QACL,IAAIC,oBAA4BC,IAAAA,gBAAI,EAAChD;QACrC,IAAIoC,cAAcL,QAAQ;YACxBgB,qBAAqB,CAAC,CAAC,EAAEE,IAAAA,kBAAM,EAACb,YAAY,CAAC,EAAEa,IAAAA,kBAAM,EAAClB,SAAS;QACjE;QAEA,OAAOgB;IACT;AACF;AAEO,eAAepE,iBACpBG,WAAgC,EAChCD,KAAU,EACVmB,QAAgB,EAChBb,OAAW;IAEX,IACEN,MAAMqE,IAAI,KAAK,yBACf,CACErE,CAAAA,MAAMqE,IAAI,KAAK,sBACf,gCAAgCV,IAAI,CAAC3D,MAAMsE,OAAO,CAAA,GAEpD;QACA,OAAO;IACT;IAEA,IAAI;QACF,MAAM,EAAEtC,KAAK,EAAEC,KAAK,EAAEC,OAAO,EAAE,GAAG,MAAMhB,eACtClB,OACAmB,UACAlB;QAGF,MAAMsE,eAAevE,MAAMwE,KAAK,CAACF,OAAO,CACrCG,OAAO,CAAC,aAAa,IACrBA,OAAO,CAAC,wBAAwB,CAAC,eAAe,EAAEC,IAAAA,iBAAK,EAAC,MAAM,CAAC,CAAC;QAEnE,MAAMC,cAAc;YAClB,MAAMvE,cAAcL,eAAeC,OAAOC,aACvCqB,GAAG,CAAC,CAAC,EAAEb,MAAM,EAAE,GACdA,OAAOmE,kBAAkB,CAAC3E,YAAY4E,gBAAgB,GAEvDrD,MAAM,CACL,CAAC6C,OACCA,QACA,CAAC,sFAAsFV,IAAI,CACzFU,SAEF,CAAC,mBAAmBV,IAAI,CAACU;YAE/B,IAAIjE,YAAYY,MAAM,KAAK,GAAG,OAAO;YAErC,OAAO,CAAC,sCAAsC,EAAEZ,YAAY0E,IAAI,CAAC,OAAO;QAC1E;QAEA,IAAIR,UACFS,IAAAA,eAAG,EAACC,IAAAA,gBAAI,EAAC,uBACT,CAAC,EAAE,EAAET,cAAc,GACnB,OACAvC,QACCA,CAAAA,UAAU,KAAK,OAAO,EAAC,IACxB,0DACA2C;QAEF,MAAMT,oBAAoBZ,qBACxBnC,UACAb,SACA2B,OACAC;QAGF,OAAO,IAAI+C,sCAAkB,CAACf,mBAAmBI;IACnD,EAAE,OAAOY,KAAK;QACZ,8CAA8C;QAC9C,OAAOlF;IACT;AACF;AAEO,eAAeH,cACpBI,WAAgB,EAChBD,KAAU,EACVkF,GAAU;IAEV,IAAIA,IAAIb,IAAI,KAAK,2BAA2B;QAC1C,OAAO;IACT;IAEA,MAAMjE,cAAcL,eAAeC,OAAOC;IAC1C,MAAM,EAAEQ,MAAM,EAAEH,QAAAA,OAAM,EAAE,GAAGF,WAAW,CAAC,EAAE,IAAI,CAAC;IAC9C,IAAI,CAACK,UAAU,CAACH,SAAQ;QACtB,OAAO;IACT;IACA,MAAM6E,OAAO1E,OAAO2E,UAAU,CAACX,OAAO,CAAC,uBAAuB;IAC9D,MAAMY,eAAe/E,QAAO8E,UAAU;IACtC,MAAM/C,SAAS5B,OAAOiB,cAAc,GAAG4D,MAAM,GAAGjC,QAAQ,CAAC;IACzD,IAAIE,aAAa,CAAC;IAClBlB,OAAOkD,KAAK,CAAC,MAAMC,IAAI,CAAC,CAACvC;QACvBM;QACA,OAAON,KAAKwC,QAAQ,CAACJ;IACvB;IACA,OAAO,IAAIJ,sCAAkB,CAC3B,GAAGd,IAAAA,gBAAI,EAACgB,MAAM,CAAC,EAAEf,IAAAA,kBAAM,EAACb,WAAWF,QAAQ,KAAK,EAChD0B,IAAAA,eAAG,EAACC,IAAAA,gBAAI,EAAC,UAAUU,MAAM,CACvB,CAAC,gBAAgB,EAAEL,aAAa,iFAAiF,CAAC;AAGxH","ignoreList":[0]}
|