@openuiai/next 16.0.6 → 16.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-plugin.js +2 -0
- 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/dev/middleware-webpack.js +10 -3
- package/dist/esm/server/dev/middleware-webpack.js.map +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/dev/middleware-webpack.js +10 -3
- package/dist/server/dev/middleware-webpack.js.map +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
|
@@ -1713,7 +1713,7 @@ async function getBaseWebpackConfig(dir, { buildId, encryptionKey, config, compi
|
|
|
1713
1713
|
isClient && new _copyfileplugin.CopyFilePlugin({
|
|
1714
1714
|
// file path to build output of `@next/polyfill-nomodule`
|
|
1715
1715
|
filePath: require.resolve('./polyfills/polyfill-nomodule'),
|
|
1716
|
-
cacheKey: "16.0.
|
|
1716
|
+
cacheKey: "16.0.8",
|
|
1717
1717
|
name: `static/chunks/polyfills${dev ? '' : '-[hash]'}.js`,
|
|
1718
1718
|
minimize: false,
|
|
1719
1719
|
info: {
|
|
@@ -1904,7 +1904,7 @@ async function getBaseWebpackConfig(dir, { buildId, encryptionKey, config, compi
|
|
|
1904
1904
|
// - Next.js location on disk (some loaders use absolute paths and some resolve options depend on absolute paths)
|
|
1905
1905
|
// - Next.js version
|
|
1906
1906
|
// - next.config.js keys that affect compilation
|
|
1907
|
-
version: `${__dirname}|${"16.0.
|
|
1907
|
+
version: `${__dirname}|${"16.0.8"}|${configVars}`,
|
|
1908
1908
|
cacheDirectory: _path.default.join(distDir, 'cache', 'webpack'),
|
|
1909
1909
|
// For production builds, it's more efficient to compress all cache files together instead of compression each one individually.
|
|
1910
1910
|
// So we disable compression here and allow the build runner to take care of compressing the cache as a whole.
|
|
@@ -15,7 +15,7 @@ Object.defineProperty(exports, "appBootstrap", {
|
|
|
15
15
|
});
|
|
16
16
|
const _assetprefix = require("./asset-prefix");
|
|
17
17
|
const _setattributesfromprops = require("./set-attributes-from-props");
|
|
18
|
-
const version = "16.0.
|
|
18
|
+
const version = "16.0.8";
|
|
19
19
|
window.next = {
|
|
20
20
|
version,
|
|
21
21
|
appDir: true
|
package/dist/client/index.js
CHANGED
|
@@ -60,7 +60,7 @@ const _hooksclientcontextsharedruntime = require("../shared/lib/hooks-client-con
|
|
|
60
60
|
const _onrecoverableerror = require("./react-client-callbacks/on-recoverable-error");
|
|
61
61
|
const _tracer = /*#__PURE__*/ _interop_require_default._(require("./tracing/tracer"));
|
|
62
62
|
const _isnextroutererror = require("./components/is-next-router-error");
|
|
63
|
-
const version = "16.0.
|
|
63
|
+
const version = "16.0.8";
|
|
64
64
|
let router;
|
|
65
65
|
const emitter = (0, _mitt.default)();
|
|
66
66
|
const looseToArray = (input)=>[].slice.call(input);
|
|
@@ -272,6 +272,8 @@ class ReactFlightWebpackPlugin {
|
|
|
272
272
|
chunk = compilation.chunkGraph.getChunkModulesIterable(chunk);
|
|
273
273
|
Array.from(chunk).forEach(function (module) {
|
|
274
274
|
const moduleId = compilation.chunkGraph.getModuleId(module);
|
|
275
|
+
// Bun compatibility: skip if moduleId is undefined
|
|
276
|
+
if (moduleId === undefined || moduleId === null) return;
|
|
275
277
|
recordModule(moduleId, module);
|
|
276
278
|
module.modules &&
|
|
277
279
|
module.modules.forEach((concatenatedMod) => {
|
package/dist/esm/build/index.js
CHANGED
|
@@ -305,7 +305,7 @@ export default async function build(dir, reactProductionProfiling = false, debug
|
|
|
305
305
|
try {
|
|
306
306
|
const nextBuildSpan = trace('next-build', undefined, {
|
|
307
307
|
buildMode: experimentalBuildMode,
|
|
308
|
-
version: "16.0.
|
|
308
|
+
version: "16.0.8"
|
|
309
309
|
});
|
|
310
310
|
NextBuildContext.nextBuildSpan = nextBuildSpan;
|
|
311
311
|
NextBuildContext.dir = dir;
|
|
@@ -818,7 +818,7 @@ export default async function build(dir, reactProductionProfiling = false, debug
|
|
|
818
818
|
// Files outside of the distDir can be "type": "module"
|
|
819
819
|
await writeFileUtf8(path.join(distDir, 'package.json'), '{"type": "commonjs"}');
|
|
820
820
|
// These are written to distDir, so they need to come after creating and cleaning distDr.
|
|
821
|
-
await recordFrameworkVersion("16.0.
|
|
821
|
+
await recordFrameworkVersion("16.0.8");
|
|
822
822
|
await updateBuildDiagnostics({
|
|
823
823
|
buildStage: 'start'
|
|
824
824
|
});
|
|
@@ -2467,7 +2467,7 @@ export default async function build(dir, reactProductionProfiling = false, debug
|
|
|
2467
2467
|
configOutDir: path.join(dir, configOutDir),
|
|
2468
2468
|
staticPages,
|
|
2469
2469
|
serverPropsPages,
|
|
2470
|
-
nextVersion: "16.0.
|
|
2470
|
+
nextVersion: "16.0.8",
|
|
2471
2471
|
tracingRoot: outputFileTracingRoot,
|
|
2472
2472
|
hasNodeMiddleware,
|
|
2473
2473
|
hasInstrumentationHook,
|
|
@@ -8,7 +8,7 @@ import { eventSwcLoadFailure } from '../../telemetry/events/swc-load-failure';
|
|
|
8
8
|
import { patchIncorrectLockfile } from '../../lib/patch-incorrect-lockfile';
|
|
9
9
|
import { downloadNativeNextSwc, downloadWasmSwc } from '../../lib/download-swc';
|
|
10
10
|
import { getDefineEnv } from '../define-env';
|
|
11
|
-
const nextVersion = "16.0.
|
|
11
|
+
const nextVersion = "16.0.8";
|
|
12
12
|
const ArchName = arch();
|
|
13
13
|
const PlatformName = platform();
|
|
14
14
|
function infoLog(...args) {
|
|
@@ -168,7 +168,8 @@ function getPreRequester({ loaders, loaderIndex }) {
|
|
|
168
168
|
if (number === false) {
|
|
169
169
|
cache[number] = '';
|
|
170
170
|
} else {
|
|
171
|
-
const loadersRequest = loaders.slice(loaderIndex, loaderIndex + 1 + (typeof number !== 'number' ? 0 : number)).map((x)=>x.request).
|
|
171
|
+
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)
|
|
172
|
+
.join('!');
|
|
172
173
|
cache[number] = `-!${loadersRequest}!`;
|
|
173
174
|
}
|
|
174
175
|
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":["fileURLToPath","path","urlToRequest","modulesValues","localByDefault","extractImports","modulesScope","camelCase","normalizePath","whitespace","unescapeRegExp","RegExp","matchNativeWin32Path","unescape","str","replace","_","escaped","escapedWhitespace","high","String","fromCharCode","fixedEncodeURIComponent","c","charCodeAt","toString","normalizeUrl","url","isStringValue","normalizedUrl","test","decodeURIComponent","error","isDataUrl","decodeURI","requestify","rootContext","charAt","getFilter","filter","resourcePath","args","shouldUseImportPlugin","options","modules","exportOnlyLocals","import","shouldUseURLPlugin","shouldUseModulesPlugins","compileType","shouldUseIcssPlugin","icss","Boolean","getModulesPlugins","loaderContext","meta","mode","getLocalIdent","localIdentName","localIdentContext","localIdentHashPrefix","localIdentRegExp","plugins","generateScopedName","exportName","context","hashPrefix","regExp","exportGlobals","emitError","IS_NATIVE_WIN32_PATH","ABSOLUTE_SCHEME","getURLType","source","normalizeSourceMap","map","newMap","JSON","parse","file","sourceRoot","sources","startsWith","sourceType","absoluteSource","resolve","relative","dirname","getPreRequester","loaders","loaderIndex","cache","Object","create","number","loadersRequest","slice","x","request","join","getImportCode","imports","code","item","importName","esModule","namedExport","normalizeSourceMapForRuntime","resultMap","toJSON","resourceDirname","contextifyPath","stringify","getModuleCode","result","api","replacements","sourceMapValue","sourceMap","css","beforeCode","media","dedupe","replacementName","localName","hash","needQuotes","getUrlOptions","preparedOptions","length","dashesCamelCase","_match","firstLetter","toUpperCase","getExportCode","exports","localsCode","addExportToLocalsCode","name","value","exportLocalsConvention","modifiedName","resolveRequests","possibleRequests","then","catch","tailPossibleRequests","isUrlRequestable","sort","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":["fileURLToPath","path","urlToRequest","modulesValues","localByDefault","extractImports","modulesScope","camelCase","normalizePath","whitespace","unescapeRegExp","RegExp","matchNativeWin32Path","unescape","str","replace","_","escaped","escapedWhitespace","high","String","fromCharCode","fixedEncodeURIComponent","c","charCodeAt","toString","normalizeUrl","url","isStringValue","normalizedUrl","test","decodeURIComponent","error","isDataUrl","decodeURI","requestify","rootContext","charAt","getFilter","filter","resourcePath","args","shouldUseImportPlugin","options","modules","exportOnlyLocals","import","shouldUseURLPlugin","shouldUseModulesPlugins","compileType","shouldUseIcssPlugin","icss","Boolean","getModulesPlugins","loaderContext","meta","mode","getLocalIdent","localIdentName","localIdentContext","localIdentHashPrefix","localIdentRegExp","plugins","generateScopedName","exportName","context","hashPrefix","regExp","exportGlobals","emitError","IS_NATIVE_WIN32_PATH","ABSOLUTE_SCHEME","getURLType","source","normalizeSourceMap","map","newMap","JSON","parse","file","sourceRoot","sources","startsWith","sourceType","absoluteSource","resolve","relative","dirname","getPreRequester","loaders","loaderIndex","cache","Object","create","number","loadersRequest","slice","x","request","r","join","getImportCode","imports","code","item","importName","esModule","namedExport","normalizeSourceMapForRuntime","resultMap","toJSON","resourceDirname","contextifyPath","stringify","getModuleCode","result","api","replacements","sourceMapValue","sourceMap","css","beforeCode","media","dedupe","replacementName","localName","hash","needQuotes","getUrlOptions","preparedOptions","length","dashesCamelCase","_match","firstLetter","toUpperCase","getExportCode","exports","localsCode","addExportToLocalsCode","name","value","exportLocalsConvention","modifiedName","resolveRequests","possibleRequests","then","catch","tailPossibleRequests","isUrlRequestable","sort","a","b","index"],"mappings":"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","ignoreList":[0]}
|
|
@@ -125,6 +125,10 @@ export class JsConfigPathsPlugin {
|
|
|
125
125
|
return callback();
|
|
126
126
|
}
|
|
127
127
|
const moduleName = request.request;
|
|
128
|
+
// Skip if moduleName is undefined (Bun compatibility)
|
|
129
|
+
if (!moduleName || typeof moduleName !== 'string') {
|
|
130
|
+
return callback();
|
|
131
|
+
}
|
|
128
132
|
// Exclude node_modules from paths support (speeds up resolving)
|
|
129
133
|
if (request.path.match(NODE_MODULES_REGEX)) {
|
|
130
134
|
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":["path","debug","log","asterisk","hasZeroOrOneAsteriskCharacter","str","seenAsterisk","i","length","charCodeAt","pathIsRelative","testPath","test","tryParsePattern","pattern","indexOfStar","indexOf","undefined","prefix","slice","suffix","isPatternMatch","candidate","startsWith","endsWith","findBestPatternMatch","values","getPattern","matchedValue","longestMatchPrefixLength","v","matchPatternOrExact","patternStrings","patterns","patternString","push","_","isString","text","matchedText","substring","patternText","forEachBail","array","iterator","callback","next","loop","err","result","NODE_MODULES_REGEX","JsConfigPathsPlugin","constructor","paths","resolvedBaseUrl","jsConfigPlugin","apply","resolver","target","ensureHook","getHook","tapAsync","request","resolveContext","pathsKeys","Object","keys","moduleName","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":["path","debug","log","asterisk","hasZeroOrOneAsteriskCharacter","str","seenAsterisk","i","length","charCodeAt","pathIsRelative","testPath","test","tryParsePattern","pattern","indexOfStar","indexOf","undefined","prefix","slice","suffix","isPatternMatch","candidate","startsWith","endsWith","findBestPatternMatch","values","getPattern","matchedValue","longestMatchPrefixLength","v","matchPatternOrExact","patternStrings","patterns","patternString","push","_","isString","text","matchedText","substring","patternText","forEachBail","array","iterator","callback","next","loop","err","result","NODE_MODULES_REGEX","JsConfigPathsPlugin","constructor","paths","resolvedBaseUrl","jsConfigPlugin","apply","resolver","target","ensureHook","getHook","tapAsync","request","resolveContext","pathsKeys","Object","keys","moduleName","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]}
|
|
@@ -177,7 +177,10 @@ export class ProfilingPlugin {
|
|
|
177
177
|
return;
|
|
178
178
|
}
|
|
179
179
|
const addEntrySpan = parentSpan.traceChild('add-entry');
|
|
180
|
-
|
|
180
|
+
// Only set request attribute if it's defined (Bun compatibility)
|
|
181
|
+
if (entry.request) {
|
|
182
|
+
addEntrySpan.setAttribute('request', entry.request);
|
|
183
|
+
}
|
|
181
184
|
spans.set(entry, addEntrySpan);
|
|
182
185
|
});
|
|
183
186
|
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":["NormalModule","path","pluginName","spans","WeakMap","moduleSpansByCompilation","makeSpanByCompilation","sealSpanByCompilation","webpackInvalidSpans","TRACE_LABELS_SEAL","inTraceLabelsSeal","label","some","l","startsWith","ProfilingPlugin","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","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","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":["NormalModule","path","pluginName","spans","WeakMap","moduleSpansByCompilation","makeSpanByCompilation","sealSpanByCompilation","webpackInvalidSpans","TRACE_LABELS_SEAL","inTraceLabelsSeal","label","some","l","startsWith","ProfilingPlugin","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","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","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]}
|
|
@@ -64,6 +64,8 @@ function buildManifest(_compiler, compilation, projectSrcDir, dev, shouldCreateD
|
|
|
64
64
|
// We construct a "unique" key from origin module and request
|
|
65
65
|
// It's not perfect unique, but that will be fine for us.
|
|
66
66
|
// We also need to construct the same in the babel plugin.
|
|
67
|
+
// Skip if dependency.request is undefined (Bun compatibility)
|
|
68
|
+
if (!dependency.request) return;
|
|
67
69
|
const key = `${path.relative(projectSrcDir, originRequest)} -> ${dependency.request}`;
|
|
68
70
|
// Capture all files that need to be loaded.
|
|
69
71
|
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":["path","webpack","sources","DYNAMIC_CSS_MANIFEST","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","relative","request","files","file","add","chunk","chunks","endsWith","match","id","Array","from","modules","Object","keys","sort","reduce","a","c","ReactLoadablePlugin","constructor","opts","filename","pagesOrAppDir","pagesDir","appDir","isPagesDir","Boolean","runtimeAsset","createAssets","compiler","dirname","undefined","emitAsset","RawSource","JSON","stringify","apply","hooks","make","tap","processAssets","name","stage","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":["path","webpack","sources","DYNAMIC_CSS_MANIFEST","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","relative","files","file","add","chunk","chunks","endsWith","match","id","Array","from","modules","Object","keys","sort","reduce","a","c","ReactLoadablePlugin","constructor","opts","filename","pagesOrAppDir","pagesDir","appDir","isPagesDir","Boolean","runtimeAsset","createAssets","compiler","dirname","undefined","emitAsset","RawSource","JSON","stringify","apply","hooks","make","tap","processAssets","name","stage","Compilation","PROCESS_ASSETS_STAGE_ADDITIONS"],"mappings":"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","ignoreList":[0]}
|
|
@@ -54,6 +54,14 @@ async function getSourceFrame(input, fileName, compilation) {
|
|
|
54
54
|
if (sourceMap) {
|
|
55
55
|
var _result_originalStackFrame_line1, _result_originalStackFrame, _result_originalStackFrame_column1, _result_originalStackFrame1;
|
|
56
56
|
const moduleId = compilation.chunkGraph.getModuleId(module);
|
|
57
|
+
// Skip if moduleId is undefined (Bun compatibility)
|
|
58
|
+
if (moduleId === undefined || moduleId === null) {
|
|
59
|
+
return {
|
|
60
|
+
frame: '',
|
|
61
|
+
line1: '',
|
|
62
|
+
column1: ''
|
|
63
|
+
};
|
|
64
|
+
}
|
|
57
65
|
const result = await createOriginalStackFrame({
|
|
58
66
|
ignoredByDefault: sourceMapIgnoreListsEverything(sourceMap),
|
|
59
67
|
source: {
|