@openuiai/next 16.0.5 → 16.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/next +1 -1
- package/dist/build/index.js +3 -3
- package/dist/build/swc/index.js +1 -1
- package/dist/build/webpack/loaders/css-loader/src/utils.js +2 -1
- package/dist/build/webpack/loaders/css-loader/src/utils.js.map +1 -1
- package/dist/build/webpack/loaders/next-flight-client-entry-loader.js +2 -2
- package/dist/build/webpack/loaders/next-flight-client-entry-loader.js.map +1 -1
- package/dist/build/webpack/plugins/flight-client-entry-plugin.js +4 -0
- package/dist/build/webpack/plugins/flight-client-entry-plugin.js.map +1 -1
- package/dist/build/webpack/plugins/jsconfig-paths-plugin.js +4 -0
- package/dist/build/webpack/plugins/jsconfig-paths-plugin.js.map +1 -1
- package/dist/build/webpack/plugins/profiling-plugin.js +4 -1
- package/dist/build/webpack/plugins/profiling-plugin.js.map +1 -1
- package/dist/build/webpack/plugins/react-loadable-plugin.js +2 -0
- package/dist/build/webpack/plugins/react-loadable-plugin.js.map +1 -1
- package/dist/build/webpack/plugins/wellknown-errors-plugin/parseNotFoundError.js +8 -0
- package/dist/build/webpack/plugins/wellknown-errors-plugin/parseNotFoundError.js.map +1 -1
- package/dist/build/webpack-config.js +2 -2
- package/dist/client/app-bootstrap.js +1 -1
- package/dist/client/index.js +1 -1
- package/dist/esm/build/index.js +3 -3
- package/dist/esm/build/swc/index.js +1 -1
- package/dist/esm/build/webpack/loaders/css-loader/src/utils.js +2 -1
- package/dist/esm/build/webpack/loaders/css-loader/src/utils.js.map +1 -1
- package/dist/esm/build/webpack/loaders/next-flight-client-entry-loader.js +2 -2
- package/dist/esm/build/webpack/loaders/next-flight-client-entry-loader.js.map +1 -1
- package/dist/esm/build/webpack/plugins/flight-client-entry-plugin.js +4 -0
- package/dist/esm/build/webpack/plugins/flight-client-entry-plugin.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/on-demand-entry-handler.js +2 -1
- package/dist/esm/server/dev/on-demand-entry-handler.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/on-demand-entry-handler.js +2 -1
- package/dist/server/dev/on-demand-entry-handler.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
|
@@ -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: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/build/webpack/plugins/wellknown-errors-plugin/parseNotFoundError.ts"],"sourcesContent":["import { bold, cyan, green, red, yellow } from '../../../../lib/picocolors'\nimport { SimpleWebpackError } from './simpleWebpackError'\nimport {\n createOriginalStackFrame,\n getIgnoredSources,\n} from '../../../../server/dev/middleware-webpack'\nimport type { webpack } from 'next/dist/compiled/webpack/webpack'\nimport type { RawSourceMap } from 'next/dist/compiled/source-map08'\n\n// Based on https://github.com/webpack/webpack/blob/fcdd04a833943394bbb0a9eeb54a962a24cc7e41/lib/stats/DefaultStatsFactoryPlugin.js#L422-L431\n/*\nCopyright JS Foundation and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\nfunction getModuleTrace(input: any, compilation: any) {\n const visitedModules = new Set()\n const moduleTrace = []\n let current = input.module\n while (current) {\n if (visitedModules.has(current)) break // circular (technically impossible, but who knows)\n visitedModules.add(current)\n const origin = compilation.moduleGraph.getIssuer(current)\n if (!origin) break\n moduleTrace.push({ origin, module: current })\n current = origin\n }\n\n return moduleTrace\n}\n\nfunction sourceMapIgnoreListsEverything(\n sourceMap: RawSourceMap & { ignoreList?: number[] }\n): boolean {\n return sourceMap.sources.length === sourceMap.ignoreList?.length\n}\n\nasync function getSourceFrame(\n input: any,\n fileName: any,\n compilation: any\n): Promise<{ frame: string; line1: string; column1: string }> {\n try {\n const loc =\n input.loc || input.dependencies.map((d: any) => d.loc).filter(Boolean)[0]\n const module = input.module as webpack.Module\n const originalSource = module.originalSource()\n const sourceMap = originalSource?.map() ?? undefined\n\n if (sourceMap) {\n const moduleId = compilation.chunkGraph.getModuleId(module)\n\n const result = await createOriginalStackFrame({\n ignoredByDefault: sourceMapIgnoreListsEverything(sourceMap),\n source: {\n type: 'bundle',\n sourceMap,\n ignoredSources: getIgnoredSources(sourceMap),\n compilation,\n moduleId,\n moduleURL: fileName,\n },\n rootDirectory: compilation.options.context!,\n frame: {\n arguments: [],\n file: fileName,\n methodName: '',\n line1: loc.start.line,\n // loc is 0-based but columns in stack frames are 1-based.\n column1: (loc.start.column ?? 0) + 1,\n },\n })\n\n return {\n frame: result?.originalCodeFrame ?? '',\n line1: result?.originalStackFrame?.line1?.toString() ?? '',\n column1: result?.originalStackFrame?.column1?.toString() ?? '',\n }\n }\n } catch {}\n\n return { frame: '', line1: '', column1: '' }\n}\n\nfunction getFormattedFileName(\n fileName: string,\n module: any,\n lineNumber?: string,\n column?: string\n): string {\n if (\n module.loaders?.find((loader: any) =>\n /next-font-loader[/\\\\]index.js/.test(loader.loader)\n )\n ) {\n // Parse the query and get the path of the file where the font function was called.\n // provided by next-swc next-transform-font\n return JSON.parse(module.resourceResolveData.query.slice(1)).path\n } else {\n let formattedFileName: string = cyan(fileName)\n if (lineNumber && column) {\n formattedFileName += `:${yellow(lineNumber)}:${yellow(column)}`\n }\n\n return formattedFileName\n }\n}\n\nexport async function getNotFoundError(\n compilation: webpack.Compilation,\n input: any,\n fileName: string,\n module: any\n) {\n if (\n input.name !== 'ModuleNotFoundError' &&\n !(\n input.name === 'ModuleBuildError' &&\n /Error: Can't resolve '.+' in /.test(input.message)\n )\n ) {\n return false\n }\n\n try {\n const { frame, line1, column1 } = await getSourceFrame(\n input,\n fileName,\n compilation\n )\n\n const errorMessage = input.error.message\n .replace(/ in '.*?'/, '')\n .replace(/Can't resolve '(.*)'/, `Can't resolve '${green('$1')}'`)\n\n const importTrace = () => {\n const moduleTrace = getModuleTrace(input, compilation)\n .map(({ origin }) =>\n origin.readableIdentifier(compilation.requestShortener)\n )\n .filter(\n (name) =>\n name &&\n !/next-(app|middleware|client-pages|route|flight-(client|server|client-entry))-loader/.test(\n name\n ) &&\n !/css-loader.+\\.js/.test(name)\n )\n if (moduleTrace.length === 0) return ''\n\n return `\\nImport trace for requested module:\\n${moduleTrace.join('\\n')}`\n }\n\n let message =\n red(bold('Module not found')) +\n `: ${errorMessage}` +\n '\\n' +\n frame +\n (frame !== '' ? '\\n' : '') +\n '\\nhttps://nextjs.org/docs/messages/module-not-found\\n' +\n importTrace()\n\n const formattedFileName = getFormattedFileName(\n fileName,\n module,\n line1,\n column1\n )\n\n return new SimpleWebpackError(formattedFileName, message)\n } catch (err) {\n // Don't fail on failure to resolve sourcemaps\n return input\n }\n}\n\nexport async function getImageError(\n compilation: any,\n input: any,\n err: Error\n): Promise<SimpleWebpackError | false> {\n if (err.name !== 'InvalidImageFormatError') {\n return false\n }\n\n const moduleTrace = getModuleTrace(input, compilation)\n const { origin, module } = moduleTrace[0] || {}\n if (!origin || !module) {\n return false\n }\n const page = origin.rawRequest.replace(/^private-next-pages/, './pages')\n const importedFile = module.rawRequest\n const source = origin.originalSource().buffer().toString('utf8') as string\n let lineNumber = -1\n source.split('\\n').some((line) => {\n lineNumber++\n return line.includes(importedFile)\n })\n return new SimpleWebpackError(\n `${cyan(page)}:${yellow(lineNumber.toString())}`,\n red(bold('Error')).concat(\n `: Image import \"${importedFile}\" is not a valid image file. The image may be corrupted or an unsupported format.`\n )\n )\n}\n"],"names":["bold","cyan","green","red","yellow","SimpleWebpackError","createOriginalStackFrame","getIgnoredSources","getModuleTrace","input","compilation","visitedModules","Set","moduleTrace","current","module","has","add","origin","moduleGraph","getIssuer","push","sourceMapIgnoreListsEverything","sourceMap","sources","length","ignoreList","getSourceFrame","fileName","loc","dependencies","map","d","filter","Boolean","originalSource","undefined","result","moduleId","chunkGraph","getModuleId","ignoredByDefault","source","type","ignoredSources","moduleURL","rootDirectory","options","context","frame","arguments","file","methodName","line1","start","line","column1","column","originalCodeFrame","originalStackFrame","toString","getFormattedFileName","lineNumber","loaders","find","loader","test","JSON","parse","resourceResolveData","query","slice","path","formattedFileName","getNotFoundError","name","message","errorMessage","error","replace","importTrace","readableIdentifier","requestShortener","join","err","getImageError","page","rawRequest","importedFile","buffer","split","some","includes","concat"],"mappings":"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","ignoreList":[0]}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/build/webpack/plugins/wellknown-errors-plugin/parseNotFoundError.ts"],"sourcesContent":["import { bold, cyan, green, red, yellow } from '../../../../lib/picocolors'\nimport { SimpleWebpackError } from './simpleWebpackError'\nimport {\n createOriginalStackFrame,\n getIgnoredSources,\n} from '../../../../server/dev/middleware-webpack'\nimport type { webpack } from 'next/dist/compiled/webpack/webpack'\nimport type { RawSourceMap } from 'next/dist/compiled/source-map08'\n\n// Based on https://github.com/webpack/webpack/blob/fcdd04a833943394bbb0a9eeb54a962a24cc7e41/lib/stats/DefaultStatsFactoryPlugin.js#L422-L431\n/*\nCopyright JS Foundation and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\nfunction getModuleTrace(input: any, compilation: any) {\n const visitedModules = new Set()\n const moduleTrace = []\n let current = input.module\n while (current) {\n if (visitedModules.has(current)) break // circular (technically impossible, but who knows)\n visitedModules.add(current)\n const origin = compilation.moduleGraph.getIssuer(current)\n if (!origin) break\n moduleTrace.push({ origin, module: current })\n current = origin\n }\n\n return moduleTrace\n}\n\nfunction sourceMapIgnoreListsEverything(\n sourceMap: RawSourceMap & { ignoreList?: number[] }\n): boolean {\n return sourceMap.sources.length === sourceMap.ignoreList?.length\n}\n\nasync function getSourceFrame(\n input: any,\n fileName: any,\n compilation: any\n): Promise<{ frame: string; line1: string; column1: string }> {\n try {\n const loc =\n input.loc || input.dependencies.map((d: any) => d.loc).filter(Boolean)[0]\n const module = input.module as webpack.Module\n const originalSource = module.originalSource()\n const sourceMap = originalSource?.map() ?? undefined\n\n if (sourceMap) {\n const moduleId = compilation.chunkGraph.getModuleId(module)\n // Skip if moduleId is undefined (Bun compatibility)\n if (moduleId === undefined || moduleId === null) {\n return { frame: '', line1: '', column1: '' }\n }\n\n const result = await createOriginalStackFrame({\n ignoredByDefault: sourceMapIgnoreListsEverything(sourceMap),\n source: {\n type: 'bundle',\n sourceMap,\n ignoredSources: getIgnoredSources(sourceMap),\n compilation,\n moduleId,\n moduleURL: fileName,\n },\n rootDirectory: compilation.options.context!,\n frame: {\n arguments: [],\n file: fileName,\n methodName: '',\n line1: loc.start.line,\n // loc is 0-based but columns in stack frames are 1-based.\n column1: (loc.start.column ?? 0) + 1,\n },\n })\n\n return {\n frame: result?.originalCodeFrame ?? '',\n line1: result?.originalStackFrame?.line1?.toString() ?? '',\n column1: result?.originalStackFrame?.column1?.toString() ?? '',\n }\n }\n } catch {}\n\n return { frame: '', line1: '', column1: '' }\n}\n\nfunction getFormattedFileName(\n fileName: string,\n module: any,\n lineNumber?: string,\n column?: string\n): string {\n if (\n module.loaders?.find((loader: any) =>\n /next-font-loader[/\\\\]index.js/.test(loader.loader)\n )\n ) {\n // Parse the query and get the path of the file where the font function was called.\n // provided by next-swc next-transform-font\n return JSON.parse(module.resourceResolveData.query.slice(1)).path\n } else {\n let formattedFileName: string = cyan(fileName)\n if (lineNumber && column) {\n formattedFileName += `:${yellow(lineNumber)}:${yellow(column)}`\n }\n\n return formattedFileName\n }\n}\n\nexport async function getNotFoundError(\n compilation: webpack.Compilation,\n input: any,\n fileName: string,\n module: any\n) {\n if (\n input.name !== 'ModuleNotFoundError' &&\n !(\n input.name === 'ModuleBuildError' &&\n /Error: Can't resolve '.+' in /.test(input.message)\n )\n ) {\n return false\n }\n\n try {\n const { frame, line1, column1 } = await getSourceFrame(\n input,\n fileName,\n compilation\n )\n\n const errorMessage = input.error.message\n .replace(/ in '.*?'/, '')\n .replace(/Can't resolve '(.*)'/, `Can't resolve '${green('$1')}'`)\n\n const importTrace = () => {\n const moduleTrace = getModuleTrace(input, compilation)\n .map(({ origin }) =>\n origin.readableIdentifier(compilation.requestShortener)\n )\n .filter(\n (name) =>\n name &&\n !/next-(app|middleware|client-pages|route|flight-(client|server|client-entry))-loader/.test(\n name\n ) &&\n !/css-loader.+\\.js/.test(name)\n )\n if (moduleTrace.length === 0) return ''\n\n return `\\nImport trace for requested module:\\n${moduleTrace.join('\\n')}`\n }\n\n let message =\n red(bold('Module not found')) +\n `: ${errorMessage}` +\n '\\n' +\n frame +\n (frame !== '' ? '\\n' : '') +\n '\\nhttps://nextjs.org/docs/messages/module-not-found\\n' +\n importTrace()\n\n const formattedFileName = getFormattedFileName(\n fileName,\n module,\n line1,\n column1\n )\n\n return new SimpleWebpackError(formattedFileName, message)\n } catch (err) {\n // Don't fail on failure to resolve sourcemaps\n return input\n }\n}\n\nexport async function getImageError(\n compilation: any,\n input: any,\n err: Error\n): Promise<SimpleWebpackError | false> {\n if (err.name !== 'InvalidImageFormatError') {\n return false\n }\n\n const moduleTrace = getModuleTrace(input, compilation)\n const { origin, module } = moduleTrace[0] || {}\n if (!origin || !module) {\n return false\n }\n const page = origin.rawRequest.replace(/^private-next-pages/, './pages')\n const importedFile = module.rawRequest\n const source = origin.originalSource().buffer().toString('utf8') as string\n let lineNumber = -1\n source.split('\\n').some((line) => {\n lineNumber++\n return line.includes(importedFile)\n })\n return new SimpleWebpackError(\n `${cyan(page)}:${yellow(lineNumber.toString())}`,\n red(bold('Error')).concat(\n `: Image import \"${importedFile}\" is not a valid image file. The image may be corrupted or an unsupported format.`\n )\n )\n}\n"],"names":["bold","cyan","green","red","yellow","SimpleWebpackError","createOriginalStackFrame","getIgnoredSources","getModuleTrace","input","compilation","visitedModules","Set","moduleTrace","current","module","has","add","origin","moduleGraph","getIssuer","push","sourceMapIgnoreListsEverything","sourceMap","sources","length","ignoreList","getSourceFrame","fileName","loc","dependencies","map","d","filter","Boolean","originalSource","undefined","result","moduleId","chunkGraph","getModuleId","frame","line1","column1","ignoredByDefault","source","type","ignoredSources","moduleURL","rootDirectory","options","context","arguments","file","methodName","start","line","column","originalCodeFrame","originalStackFrame","toString","getFormattedFileName","lineNumber","loaders","find","loader","test","JSON","parse","resourceResolveData","query","slice","path","formattedFileName","getNotFoundError","name","message","errorMessage","error","replace","importTrace","readableIdentifier","requestShortener","join","err","getImageError","page","rawRequest","importedFile","buffer","split","some","includes","concat"],"mappings":"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","ignoreList":[0]}
|
|
@@ -1610,7 +1610,7 @@ export default async function getBaseWebpackConfig(dir, { buildId, encryptionKey
|
|
|
1610
1610
|
isClient && new CopyFilePlugin({
|
|
1611
1611
|
// file path to build output of `@next/polyfill-nomodule`
|
|
1612
1612
|
filePath: require.resolve('./polyfills/polyfill-nomodule'),
|
|
1613
|
-
cacheKey: "16.0.
|
|
1613
|
+
cacheKey: "16.0.7",
|
|
1614
1614
|
name: `static/chunks/polyfills${dev ? '' : '-[hash]'}.js`,
|
|
1615
1615
|
minimize: false,
|
|
1616
1616
|
info: {
|
|
@@ -1801,7 +1801,7 @@ export default async function getBaseWebpackConfig(dir, { buildId, encryptionKey
|
|
|
1801
1801
|
// - Next.js location on disk (some loaders use absolute paths and some resolve options depend on absolute paths)
|
|
1802
1802
|
// - Next.js version
|
|
1803
1803
|
// - next.config.js keys that affect compilation
|
|
1804
|
-
version: `${__dirname}|${"16.0.
|
|
1804
|
+
version: `${__dirname}|${"16.0.7"}|${configVars}`,
|
|
1805
1805
|
cacheDirectory: path.join(distDir, 'cache', 'webpack'),
|
|
1806
1806
|
// For production builds, it's more efficient to compress all cache files together instead of compression each one individually.
|
|
1807
1807
|
// So we disable compression here and allow the build runner to take care of compressing the cache as a whole.
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* - next/script with `beforeInteractive` strategy
|
|
6
6
|
*/ import { getAssetPrefix } from './asset-prefix';
|
|
7
7
|
import { setAttributesFromProps } from './set-attributes-from-props';
|
|
8
|
-
const version = "16.0.
|
|
8
|
+
const version = "16.0.7";
|
|
9
9
|
window.next = {
|
|
10
10
|
version,
|
|
11
11
|
appDir: true
|
package/dist/esm/client/index.js
CHANGED
|
@@ -25,7 +25,7 @@ import { SearchParamsContext, PathParamsContext } from '../shared/lib/hooks-clie
|
|
|
25
25
|
import { onRecoverableError } from './react-client-callbacks/on-recoverable-error';
|
|
26
26
|
import tracer from './tracing/tracer';
|
|
27
27
|
import { isNextRouterError } from './components/is-next-router-error';
|
|
28
|
-
export const version = "16.0.
|
|
28
|
+
export const version = "16.0.7";
|
|
29
29
|
export let router;
|
|
30
30
|
export const emitter = mitt();
|
|
31
31
|
const looseToArray = (input)=>[].slice.call(input);
|
|
@@ -163,7 +163,7 @@ export default class HotReloaderWebpack {
|
|
|
163
163
|
this.previewProps = previewProps;
|
|
164
164
|
this.rewrites = rewrites;
|
|
165
165
|
this.hotReloaderSpan = trace('hot-reloader', undefined, {
|
|
166
|
-
version: "16.0.
|
|
166
|
+
version: "16.0.7"
|
|
167
167
|
});
|
|
168
168
|
// Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
|
|
169
169
|
// of the current `next dev` invocation.
|
|
@@ -369,7 +369,8 @@ export function onDemandEntryHandler({ hotReloader, maxInactiveAge, multiCompile
|
|
|
369
369
|
continue;
|
|
370
370
|
}
|
|
371
371
|
entry.status = BUILT;
|
|
372
|
-
|
|
372
|
+
// Pass null as error argument to match listener signature (fixes Bun compatibility)
|
|
373
|
+
doneCallbacks.emit(name, null);
|
|
373
374
|
}
|
|
374
375
|
(_getInvalidator = getInvalidator(multiCompiler.outputPath)) == null ? void 0 : _getInvalidator.doneBuilding([
|
|
375
376
|
...COMPILER_KEYS
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/server/dev/on-demand-entry-handler.ts"],"sourcesContent":["import type ws from 'next/dist/compiled/ws'\nimport type { webpack } from 'next/dist/compiled/webpack/webpack'\nimport type { NextConfigComplete } from '../config-shared'\nimport type {\n DynamicParamTypesShort,\n FlightRouterState,\n FlightSegmentPath,\n} from '../../shared/lib/app-router-types'\nimport type { CompilerNameValues } from '../../shared/lib/constants'\nimport type { RouteDefinition } from '../route-definitions/route-definition'\nimport type HotReloaderWebpack from './hot-reloader-webpack'\n\nimport createDebug from 'next/dist/compiled/debug'\nimport { EventEmitter } from 'events'\nimport { findPageFile } from '../lib/find-page-file'\nimport { runDependingOnPageType } from '../../build/entries'\nimport { getStaticInfoIncludingLayouts } from '../../build/get-static-info-including-layouts'\nimport { join, posix } from 'path'\nimport { normalizePathSep } from '../../shared/lib/page-path/normalize-path-sep'\nimport { normalizePagePath } from '../../shared/lib/page-path/normalize-page-path'\nimport { ensureLeadingSlash } from '../../shared/lib/page-path/ensure-leading-slash'\nimport { removePagePathTail } from '../../shared/lib/page-path/remove-page-path-tail'\nimport { reportTrigger } from '../../build/output'\nimport getRouteFromEntrypoint from '../get-route-from-entrypoint'\nimport {\n isInstrumentationHookFile,\n isInstrumentationHookFilename,\n isMiddlewareFile,\n isMiddlewareFilename,\n} from '../../build/utils'\nimport { PageNotFoundError, stringifyError } from '../../shared/lib/utils'\nimport {\n COMPILER_INDEXES,\n COMPILER_NAMES,\n RSC_MODULE_TYPES,\n UNDERSCORE_NOT_FOUND_ROUTE_ENTRY,\n} from '../../shared/lib/constants'\nimport { PAGE_SEGMENT_KEY } from '../../shared/lib/segment'\nimport {\n HMR_MESSAGE_SENT_TO_BROWSER,\n HMR_MESSAGE_SENT_TO_SERVER,\n} from './hot-reloader-types'\nimport { isAppPageRouteDefinition } from '../route-definitions/app-page-route-definition'\nimport { scheduleOnNextTick } from '../../lib/scheduler'\nimport { Batcher } from '../../lib/batcher'\nimport { normalizeAppPath } from '../../shared/lib/router/utils/app-paths'\nimport { PAGE_TYPES } from '../../lib/page-types'\nimport { getNextFlightSegmentPath } from '../../client/flight-data-helpers'\nimport { handleErrorStateResponse } from '../mcp/tools/get-errors'\nimport { handlePageMetadataResponse } from '../mcp/tools/get-page-metadata'\n\nconst debug = createDebug('next:on-demand-entry-handler')\n\n/**\n * Returns object keys with type inferred from the object key\n */\nconst keys = Object.keys as <T>(o: T) => Extract<keyof T, string>[]\n\nconst COMPILER_KEYS = keys(COMPILER_INDEXES)\n\nfunction treePathToEntrypoint(\n segmentPath: FlightSegmentPath,\n parentPath?: string\n): string {\n const [parallelRouteKey, segment] = segmentPath\n\n // TODO-APP: modify this path to cover parallelRouteKey convention\n const path =\n (parentPath ? parentPath + '/' : '') +\n (parallelRouteKey !== 'children' && !segment.startsWith('@')\n ? `@${parallelRouteKey}/`\n : '') +\n (segment === '' ? 'page' : segment)\n\n // Last segment\n if (segmentPath.length === 2) {\n return path\n }\n\n const childSegmentPath = getNextFlightSegmentPath(segmentPath)\n return treePathToEntrypoint(childSegmentPath, path)\n}\n\nfunction convertDynamicParamTypeToSyntax(\n dynamicParamTypeShort: DynamicParamTypesShort,\n param: string\n) {\n switch (dynamicParamTypeShort) {\n case 'c':\n case 'ci':\n return `[...${param}]`\n case 'oc':\n return `[[...${param}]]`\n case 'd':\n case 'di':\n return `[${param}]`\n default:\n throw new Error('Unknown dynamic param type')\n }\n}\n\n/**\n * format: {compiler type}@{page type}@{page path}\n * e.g. client@pages@/index\n * e.g. server@app@app/page\n *\n * This guarantees the uniqueness for each page, to avoid conflicts between app/ and pages/\n */\n\nexport function getEntryKey(\n compilerType: CompilerNameValues,\n pageBundleType: PAGE_TYPES,\n page: string\n) {\n // TODO: handle the /children slot better\n // this is a quick hack to handle when children is provided as children/page instead of /page\n const pageKey = page.replace(/(@[^/]+)\\/children/g, '$1')\n return `${compilerType}@${pageBundleType}@${pageKey}`\n}\n\nfunction getPageBundleType(pageBundlePath: string): PAGE_TYPES {\n // Handle special case for /_error\n if (pageBundlePath === '/_error') return PAGE_TYPES.PAGES\n if (isMiddlewareFilename(pageBundlePath)) return PAGE_TYPES.ROOT\n return pageBundlePath.startsWith('pages/')\n ? PAGE_TYPES.PAGES\n : pageBundlePath.startsWith('app/')\n ? PAGE_TYPES.APP\n : PAGE_TYPES.ROOT\n}\n\nfunction getEntrypointsFromTree(\n tree: FlightRouterState,\n isFirst: boolean,\n parentPath: string[] = []\n) {\n const [segment, parallelRoutes] = tree\n\n const currentSegment = Array.isArray(segment)\n ? convertDynamicParamTypeToSyntax(segment[2], segment[0])\n : segment\n\n const isPageSegment = currentSegment.startsWith(PAGE_SEGMENT_KEY)\n\n const currentPath = [...parentPath, isPageSegment ? '' : currentSegment]\n\n if (!isFirst && isPageSegment) {\n // TODO get rid of '' at the start of tree\n return [treePathToEntrypoint(currentPath.slice(1))]\n }\n\n return Object.keys(parallelRoutes).reduce(\n (paths: string[], key: string): string[] => {\n const childTree = parallelRoutes[key]\n const childPages = getEntrypointsFromTree(childTree, false, [\n ...currentPath,\n key,\n ])\n return [...paths, ...childPages]\n },\n []\n )\n}\n\nexport const ADDED = Symbol('added')\nexport const BUILDING = Symbol('building')\nexport const BUILT = Symbol('built')\n\ninterface EntryType {\n /**\n * Tells if a page is scheduled to be disposed.\n */\n dispose?: boolean\n /**\n * Timestamp with the last time the page was active.\n */\n lastActiveTime?: number\n /**\n * Page build status.\n */\n status?: typeof ADDED | typeof BUILDING | typeof BUILT\n\n /**\n * Path to the page file relative to the dist folder with no extension.\n * For example: `pages/about/index`\n */\n bundlePath: string\n\n /**\n * Webpack request to create a dependency for.\n */\n request: string\n}\n\n// Shadowing check in ESLint does not account for enum\nexport const enum EntryTypes {\n ENTRY,\n CHILD_ENTRY,\n}\ninterface Entry extends EntryType {\n type: EntryTypes.ENTRY\n /**\n * The absolute page to the page file. Used for detecting if the file was removed. For example:\n * `/Users/Rick/project/pages/about/index.js`\n */\n absolutePagePath: string\n /**\n * All parallel pages that match the same entry, for example:\n * ['/parallel/@bar/nested/@a/page', '/parallel/@bar/nested/@b/page', '/parallel/@foo/nested/@a/page', '/parallel/@foo/nested/@b/page']\n */\n appPaths: ReadonlyArray<string> | null\n}\n\ninterface ChildEntry extends EntryType {\n type: EntryTypes.CHILD_ENTRY\n /**\n * Which parent entries use this childEntry.\n */\n parentEntries: Set<string>\n /**\n * The absolute page to the entry file. Used for detecting if the file was removed. For example:\n * `/Users/Rick/project/app/about/layout.js`\n */\n absoluteEntryFilePath?: string\n}\n\nconst entriesMap: Map<\n string,\n {\n /**\n * The key composed of the compiler name and the page. For example:\n * `edge-server/about`\n */\n [entryName: string]: Entry | ChildEntry\n }\n> = new Map()\n\n// remove /server from end of output for server compiler\nconst normalizeOutputPath = (dir: string) => dir.replace(/[/\\\\]server$/, '')\n\nexport const getEntries = (\n dir: string\n): NonNullable<ReturnType<(typeof entriesMap)['get']>> => {\n dir = normalizeOutputPath(dir)\n const entries = entriesMap.get(dir) || {}\n entriesMap.set(dir, entries)\n return entries\n}\n\nconst invalidators: Map<string, Invalidator> = new Map()\n\nexport const getInvalidator = (dir: string) => {\n dir = normalizeOutputPath(dir)\n return invalidators.get(dir)\n}\n\nconst doneCallbacks: EventEmitter = new EventEmitter()\nconst lastClientAccessPages = ['']\nconst lastServerAccessPagesForAppDir = ['']\n\ntype BuildingTracker = Set<CompilerNameValues>\ntype RebuildTracker = Set<CompilerNameValues>\n\n// Make sure only one invalidation happens at a time\n// Otherwise, webpack hash gets changed and it'll force the client to reload.\nclass Invalidator {\n private multiCompiler: webpack.MultiCompiler\n\n private building: BuildingTracker = new Set()\n private rebuildAgain: RebuildTracker = new Set()\n\n constructor(multiCompiler: webpack.MultiCompiler) {\n this.multiCompiler = multiCompiler\n }\n\n public shouldRebuildAll() {\n return this.rebuildAgain.size > 0\n }\n\n invalidate(compilerKeys: typeof COMPILER_KEYS = COMPILER_KEYS): void {\n for (const key of compilerKeys) {\n // If there's a current build is processing, we won't abort it by invalidating.\n // (If aborted, it'll cause a client side hard reload)\n // But let it to invalidate just after the completion.\n // So, it can re-build the queued pages at once.\n\n if (this.building.has(key)) {\n this.rebuildAgain.add(key)\n continue\n }\n\n this.building.add(key)\n this.multiCompiler.compilers[COMPILER_INDEXES[key]].watching?.invalidate()\n }\n }\n\n public startBuilding(compilerKey: keyof typeof COMPILER_INDEXES) {\n this.building.add(compilerKey)\n }\n\n public doneBuilding(compilerKeys: typeof COMPILER_KEYS = []) {\n const rebuild: typeof COMPILER_KEYS = []\n for (const key of compilerKeys) {\n this.building.delete(key)\n\n if (this.rebuildAgain.has(key)) {\n rebuild.push(key)\n this.rebuildAgain.delete(key)\n }\n }\n\n if (rebuild.length > 0) {\n this.invalidate(rebuild)\n }\n }\n\n public willRebuild(compilerKey: keyof typeof COMPILER_INDEXES) {\n return this.rebuildAgain.has(compilerKey)\n }\n}\n\nfunction disposeInactiveEntries(\n entries: NonNullable<ReturnType<(typeof entriesMap)['get']>>,\n maxInactiveAge: number\n) {\n Object.keys(entries).forEach((entryKey) => {\n const entryData = entries[entryKey]\n const { lastActiveTime, status, dispose, bundlePath } = entryData\n\n // TODO-APP: implement disposing of CHILD_ENTRY\n if (entryData.type === EntryTypes.CHILD_ENTRY) {\n return\n }\n\n // For the root middleware and the instrumentation hook files,\n // we don't dispose them periodically as it's needed for every request.\n if (\n isMiddlewareFilename(bundlePath) ||\n isInstrumentationHookFilename(bundlePath)\n ) {\n return\n }\n\n if (dispose)\n // Skip pages already scheduled for disposing\n return\n\n // This means this entry is currently building or just added\n // We don't need to dispose those entries.\n if (status !== BUILT) return\n\n // We should not build the last accessed page even we didn't get any pings\n // Sometimes, it's possible our XHR ping to wait before completing other requests.\n // In that case, we should not dispose the current viewing page\n if (\n lastClientAccessPages.includes(entryKey) ||\n lastServerAccessPagesForAppDir.includes(entryKey)\n )\n return\n\n if (lastActiveTime && Date.now() - lastActiveTime > maxInactiveAge) {\n entries[entryKey].dispose = true\n }\n })\n}\n\n// Normalize both app paths and page paths\nfunction tryToNormalizePagePath(page: string) {\n try {\n return normalizePagePath(page)\n } catch (err) {\n console.error(err)\n throw new PageNotFoundError(page)\n }\n}\n\ninterface PagePathData {\n filename: string\n bundlePath: string\n page: string\n}\n\n/**\n * Attempts to find a page file path from the given pages absolute directory,\n * a page and allowed extensions. If the page can't be found it will throw an\n * error. It defaults the `/_error` page to Next.js internal error page.\n *\n * @param rootDir Absolute path to the project root.\n * @param page The page normalized (it will be denormalized).\n * @param extensions Array of page extensions.\n * @param pagesDir Absolute path to the pages folder with trailing `/pages`.\n * @param appDir Absolute path to the app folder with trailing `/app`.\n */\nexport async function findPagePathData(\n rootDir: string,\n page: string,\n extensions: string[],\n pagesDir: string | undefined,\n appDir: string | undefined,\n isGlobalNotFoundEnabled: boolean\n): Promise<PagePathData> {\n const normalizedPagePath = tryToNormalizePagePath(page)\n let pagePath: string | null = null\n\n const isInstrumentation = isInstrumentationHookFile(normalizedPagePath)\n if (isMiddlewareFile(normalizedPagePath) || isInstrumentation) {\n pagePath = await findPageFile(\n rootDir,\n normalizedPagePath,\n extensions,\n false\n )\n\n if (!pagePath) {\n throw new PageNotFoundError(normalizedPagePath)\n }\n\n const pageUrl = ensureLeadingSlash(\n removePagePathTail(normalizePathSep(pagePath), {\n extensions,\n })\n )\n\n let bundlePath = normalizedPagePath\n let pageKey = posix.normalize(pageUrl)\n\n if (isInstrumentation || isMiddlewareFile(normalizedPagePath)) {\n bundlePath = bundlePath.replace('/src', '')\n pageKey = page.replace('/src', '')\n }\n\n return {\n filename: join(rootDir, pagePath),\n bundlePath: bundlePath.slice(1),\n page: pageKey,\n }\n }\n\n // Check appDir first falling back to pagesDir\n if (appDir) {\n if (page === UNDERSCORE_NOT_FOUND_ROUTE_ENTRY) {\n // Load `global-not-found` when global-not-found is enabled.\n // Prefer to load it when both `global-not-found` and root `not-found` present.\n if (isGlobalNotFoundEnabled) {\n const globalNotFoundPath = await findPageFile(\n appDir,\n 'global-not-found',\n extensions,\n true\n )\n if (globalNotFoundPath) {\n return {\n filename: join(appDir, globalNotFoundPath),\n bundlePath: `app${UNDERSCORE_NOT_FOUND_ROUTE_ENTRY}`,\n page: UNDERSCORE_NOT_FOUND_ROUTE_ENTRY,\n }\n }\n } else {\n // Then if global-not-found.js doesn't exist then load not-found.js\n const notFoundPath = await findPageFile(\n appDir,\n 'not-found',\n extensions,\n true\n )\n if (notFoundPath) {\n return {\n filename: join(appDir, notFoundPath),\n bundlePath: `app${UNDERSCORE_NOT_FOUND_ROUTE_ENTRY}`,\n page: UNDERSCORE_NOT_FOUND_ROUTE_ENTRY,\n }\n }\n }\n\n // If they're not presented, then fallback to global-not-found\n return {\n filename: require.resolve(\n 'next/dist/client/components/builtin/global-not-found'\n ),\n bundlePath: `app${UNDERSCORE_NOT_FOUND_ROUTE_ENTRY}`,\n page: UNDERSCORE_NOT_FOUND_ROUTE_ENTRY,\n }\n }\n pagePath = await findPageFile(appDir, normalizedPagePath, extensions, true)\n if (pagePath) {\n const pageUrl = ensureLeadingSlash(\n removePagePathTail(normalizePathSep(pagePath), {\n keepIndex: true,\n extensions,\n })\n )\n\n return {\n filename: join(appDir, pagePath),\n bundlePath: posix.join('app', pageUrl),\n page: posix.normalize(pageUrl),\n }\n }\n }\n\n if (!pagePath && pagesDir) {\n pagePath = await findPageFile(\n pagesDir,\n normalizedPagePath,\n extensions,\n false\n )\n }\n\n if (pagePath !== null && pagesDir) {\n const pageUrl = ensureLeadingSlash(\n removePagePathTail(normalizePathSep(pagePath), {\n extensions,\n })\n )\n\n return {\n filename: join(pagesDir, pagePath),\n bundlePath: posix.join('pages', normalizePagePath(pageUrl)),\n page: posix.normalize(pageUrl),\n }\n }\n\n if (page === '/_error') {\n return {\n filename: require.resolve('next/dist/pages/_error'),\n bundlePath: page,\n page: normalizePathSep(page),\n }\n } else {\n throw new PageNotFoundError(normalizedPagePath)\n }\n}\n\nexport function onDemandEntryHandler({\n hotReloader,\n maxInactiveAge,\n multiCompiler,\n nextConfig,\n pagesBufferLength,\n pagesDir,\n rootDir,\n appDir,\n}: {\n hotReloader: HotReloaderWebpack\n maxInactiveAge: number\n multiCompiler: webpack.MultiCompiler\n nextConfig: NextConfigComplete\n pagesBufferLength: number\n pagesDir?: string\n rootDir: string\n appDir?: string\n}) {\n const hasAppDir = !!appDir\n let curInvalidator: Invalidator = getInvalidator(\n multiCompiler.outputPath\n ) as any\n const curEntries = getEntries(multiCompiler.outputPath) as any\n\n if (!curInvalidator) {\n curInvalidator = new Invalidator(multiCompiler)\n invalidators.set(multiCompiler.outputPath, curInvalidator)\n }\n\n const startBuilding = (compilation: webpack.Compilation) => {\n const compilationName = compilation.name as any as CompilerNameValues\n curInvalidator.startBuilding(compilationName)\n }\n for (const compiler of multiCompiler.compilers) {\n compiler.hooks.make.tap('NextJsOnDemandEntries', startBuilding)\n }\n\n function getPagePathsFromEntrypoints(\n type: CompilerNameValues,\n entrypoints: Map<string, { name?: string | null }>\n ) {\n const pagePaths: string[] = []\n for (const entrypoint of entrypoints.values()) {\n const page = getRouteFromEntrypoint(entrypoint.name!, hasAppDir)\n\n if (page) {\n const pageBundleType = entrypoint.name?.startsWith('app/')\n ? PAGE_TYPES.APP\n : PAGE_TYPES.PAGES\n pagePaths.push(getEntryKey(type, pageBundleType, page))\n } else if (\n isMiddlewareFilename(entrypoint.name) ||\n isInstrumentationHookFilename(entrypoint.name)\n ) {\n pagePaths.push(\n getEntryKey(type, PAGE_TYPES.ROOT, `/${entrypoint.name}`)\n )\n }\n }\n return pagePaths\n }\n\n for (const compiler of multiCompiler.compilers) {\n compiler.hooks.done.tap('NextJsOnDemandEntries', () =>\n getInvalidator(compiler.outputPath)?.doneBuilding([\n compiler.name as keyof typeof COMPILER_INDEXES,\n ])\n )\n }\n\n multiCompiler.hooks.done.tap('NextJsOnDemandEntries', (multiStats) => {\n const [clientStats, serverStats, edgeServerStats] = multiStats.stats\n const entryNames = [\n ...getPagePathsFromEntrypoints(\n COMPILER_NAMES.client,\n clientStats.compilation.entrypoints\n ),\n ...getPagePathsFromEntrypoints(\n COMPILER_NAMES.server,\n serverStats.compilation.entrypoints\n ),\n ...(edgeServerStats\n ? getPagePathsFromEntrypoints(\n COMPILER_NAMES.edgeServer,\n edgeServerStats.compilation.entrypoints\n )\n : []),\n ]\n\n for (const name of entryNames) {\n const entry = curEntries[name]\n if (!entry) {\n continue\n }\n\n if (entry.status !== BUILDING) {\n continue\n }\n\n entry.status = BUILT\n doneCallbacks.emit(name)\n }\n\n getInvalidator(multiCompiler.outputPath)?.doneBuilding([...COMPILER_KEYS])\n })\n\n const pingIntervalTime = Math.max(1000, Math.min(5000, maxInactiveAge))\n\n setInterval(function () {\n disposeInactiveEntries(curEntries, maxInactiveAge)\n }, pingIntervalTime + 1000).unref()\n\n function handleAppDirPing(tree: FlightRouterState): void {\n const pages = getEntrypointsFromTree(tree, true)\n\n for (const page of pages) {\n for (const compilerType of [\n COMPILER_NAMES.client,\n COMPILER_NAMES.server,\n COMPILER_NAMES.edgeServer,\n ]) {\n const entryKey = getEntryKey(compilerType, PAGE_TYPES.APP, `/${page}`)\n const entryInfo = curEntries[entryKey]\n\n // If there's no entry, it may have been invalidated and needs to be re-built.\n if (!entryInfo) {\n // if (page !== lastEntry) client pings, but there's no entry for page\n continue\n }\n\n // We don't need to maintain active state of anything other than BUILT entries\n if (entryInfo.status !== BUILT) continue\n\n // If there's an entryInfo\n if (!lastServerAccessPagesForAppDir.includes(entryKey)) {\n lastServerAccessPagesForAppDir.unshift(entryKey)\n\n // Maintain the buffer max length\n // TODO: verify that the current pageKey is not at the end of the array as multiple entrypoints can exist\n if (lastServerAccessPagesForAppDir.length > pagesBufferLength) {\n lastServerAccessPagesForAppDir.pop()\n }\n }\n entryInfo.lastActiveTime = Date.now()\n entryInfo.dispose = false\n }\n }\n }\n\n function handlePing(pg: string): void {\n const page = normalizePathSep(pg)\n for (const compilerType of [\n COMPILER_NAMES.client,\n COMPILER_NAMES.server,\n COMPILER_NAMES.edgeServer,\n ]) {\n const entryKey = getEntryKey(compilerType, PAGE_TYPES.PAGES, page)\n const entryInfo = curEntries[entryKey]\n\n // If there's no entry, it may have been invalidated and needs to be re-built.\n if (!entryInfo) {\n // if (page !== lastEntry) client pings, but there's no entry for page\n if (compilerType === COMPILER_NAMES.client) {\n return\n }\n continue\n }\n\n // We don't need to maintain active state of anything other than BUILT entries\n if (entryInfo.status !== BUILT) continue\n\n // If there's an entryInfo\n if (!lastClientAccessPages.includes(entryKey)) {\n lastClientAccessPages.unshift(entryKey)\n\n // Maintain the buffer max length\n if (lastClientAccessPages.length > pagesBufferLength) {\n lastClientAccessPages.pop()\n }\n }\n entryInfo.lastActiveTime = Date.now()\n entryInfo.dispose = false\n }\n return\n }\n\n async function ensurePageImpl({\n page,\n appPaths,\n definition,\n isApp,\n url,\n }: {\n page: string\n appPaths: ReadonlyArray<string> | null\n definition: RouteDefinition | undefined\n isApp: boolean | undefined\n url?: string\n }): Promise<void> {\n const stalledTime = 60\n const stalledEnsureTimeout = setTimeout(() => {\n debug(\n `Ensuring ${page} has taken longer than ${stalledTime}s, if this continues to stall this may be a bug`\n )\n }, stalledTime * 1000)\n\n try {\n let route: Pick<RouteDefinition, 'filename' | 'bundlePath' | 'page'>\n if (definition) {\n route = definition\n } else {\n route = await findPagePathData(\n rootDir,\n page,\n nextConfig.pageExtensions,\n pagesDir,\n appDir,\n !!nextConfig.experimental.globalNotFound\n )\n }\n\n const isInsideAppDir = !!appDir && route.filename.startsWith(appDir)\n\n if (typeof isApp === 'boolean' && isApp !== isInsideAppDir) {\n Error.stackTraceLimit = 15\n throw new Error(\n `Ensure bailed, found path \"${\n route.page\n }\" does not match ensure type (${isApp ? 'app' : 'pages'})`\n )\n }\n\n const pageBundleType = getPageBundleType(route.bundlePath)\n const addEntry = (\n compilerType: CompilerNameValues\n ): {\n entryKey: string\n newEntry: boolean\n shouldInvalidate: boolean\n } => {\n const entryKey = getEntryKey(compilerType, pageBundleType, route.page)\n if (\n curEntries[entryKey] &&\n // there can be an overlap in the entryKey for the instrumentation hook file and a page named the same\n // this is a quick fix to support this scenario by overwriting the instrumentation hook entry, since we only use it one time\n // any changes to the instrumentation hook file will require a restart of the dev server anyway\n !isInstrumentationHookFilename(curEntries[entryKey].bundlePath)\n ) {\n curEntries[entryKey].dispose = false\n curEntries[entryKey].lastActiveTime = Date.now()\n if (curEntries[entryKey].status === BUILT) {\n return {\n entryKey,\n newEntry: false,\n shouldInvalidate: false,\n }\n }\n\n return {\n entryKey,\n newEntry: false,\n shouldInvalidate: true,\n }\n }\n\n curEntries[entryKey] = {\n type: EntryTypes.ENTRY,\n appPaths,\n absolutePagePath: route.filename,\n request: route.filename,\n bundlePath: route.bundlePath,\n dispose: false,\n lastActiveTime: Date.now(),\n status: ADDED,\n }\n return {\n entryKey: entryKey,\n newEntry: true,\n shouldInvalidate: true,\n }\n }\n\n const staticInfo = await getStaticInfoIncludingLayouts({\n page,\n pageFilePath: route.filename,\n isInsideAppDir,\n pageExtensions: nextConfig.pageExtensions,\n isDev: true,\n config: nextConfig,\n appDir,\n })\n\n const added = new Map<CompilerNameValues, ReturnType<typeof addEntry>>()\n const isServerComponent =\n isInsideAppDir && staticInfo.rsc !== RSC_MODULE_TYPES.client\n\n let pageRuntime = staticInfo.runtime\n\n runDependingOnPageType({\n page: route.page,\n pageRuntime,\n pageType: pageBundleType,\n onClient: () => {\n // Skip adding the client entry for app / Server Components.\n if (isServerComponent || isInsideAppDir) {\n return\n }\n added.set(COMPILER_NAMES.client, addEntry(COMPILER_NAMES.client))\n },\n onServer: () => {\n added.set(COMPILER_NAMES.server, addEntry(COMPILER_NAMES.server))\n const edgeServerEntry = getEntryKey(\n COMPILER_NAMES.edgeServer,\n pageBundleType,\n route.page\n )\n if (\n curEntries[edgeServerEntry] &&\n !isInstrumentationHookFile(route.page)\n ) {\n // Runtime switched from edge to server\n delete curEntries[edgeServerEntry]\n }\n },\n onEdgeServer: () => {\n added.set(\n COMPILER_NAMES.edgeServer,\n addEntry(COMPILER_NAMES.edgeServer)\n )\n const serverEntry = getEntryKey(\n COMPILER_NAMES.server,\n pageBundleType,\n route.page\n )\n if (\n curEntries[serverEntry] &&\n !isInstrumentationHookFile(route.page)\n ) {\n // Runtime switched from server to edge\n delete curEntries[serverEntry]\n }\n },\n })\n\n const addedValues = [...added.values()]\n const entriesThatShouldBeInvalidated = [...added.entries()].filter(\n ([, entry]) => entry.shouldInvalidate\n )\n const hasNewEntry = addedValues.some((entry) => entry.newEntry)\n\n if (hasNewEntry) {\n const routePage = isApp ? route.page : normalizeAppPath(route.page)\n // If proxy file, remove the leading slash from \"/proxy\" to \"proxy\".\n reportTrigger(\n isMiddlewareFile(routePage) ? routePage.slice(1) : routePage,\n url\n )\n }\n\n if (entriesThatShouldBeInvalidated.length > 0) {\n const invalidatePromise = Promise.all(\n entriesThatShouldBeInvalidated.map(([compilerKey, { entryKey }]) => {\n return new Promise<void>((resolve, reject) => {\n doneCallbacks.once(entryKey, (err: Error) => {\n if (err) {\n return reject(err)\n }\n\n // If the invalidation also triggers a rebuild, we need to\n // wait for that additional build to prevent race conditions.\n const needsRebuild = curInvalidator.willRebuild(compilerKey)\n if (needsRebuild) {\n doneCallbacks.once(entryKey, (rebuildErr: Error) => {\n if (rebuildErr) {\n return reject(rebuildErr)\n }\n resolve()\n })\n } else {\n resolve()\n }\n })\n })\n })\n )\n\n curInvalidator.invalidate([...added.keys()])\n await invalidatePromise\n }\n } finally {\n clearTimeout(stalledEnsureTimeout)\n }\n }\n\n type EnsurePageOptions = {\n page: string\n appPaths?: ReadonlyArray<string> | null\n definition?: RouteDefinition\n isApp?: boolean\n url?: string\n }\n\n // Make sure that we won't have multiple invalidations ongoing concurrently.\n const batcher = Batcher.create<EnsurePageOptions, void, string>({\n // The cache key here is composed of the elements that affect the\n // compilation, namely, the page, whether it's client only, and whether\n // it's an app page. This ensures that we don't have multiple compilations\n // for the same page happening concurrently.\n //\n // We don't include the whole match because it contains match specific\n // parameters (like route params) that would just bust this cache. Any\n // details that would possibly bust the cache should be listed here.\n cacheKeyFn: (options) => JSON.stringify(options),\n // Schedule the invocation of the ensurePageImpl function on the next tick.\n schedulerFn: scheduleOnNextTick,\n })\n\n return {\n async ensurePage({\n page,\n appPaths = null,\n definition,\n isApp,\n url,\n }: EnsurePageOptions) {\n // If the route is actually an app page route, then we should have access\n // to the app route definition, and therefore, the appPaths from it.\n if (!appPaths && definition && isAppPageRouteDefinition(definition)) {\n appPaths = definition.appPaths\n }\n\n // Wrap the invocation of the ensurePageImpl function in the pending\n // wrapper, which will ensure that we don't have multiple compilations\n // for the same page happening concurrently.\n return batcher.batch({ page, appPaths, definition, isApp }, async () => {\n await ensurePageImpl({\n page,\n appPaths,\n definition,\n isApp,\n url,\n })\n })\n },\n onHMR(client: ws, getHmrServerError: () => Error | null) {\n let bufferedHmrServerError: Error | null = null\n\n client.addEventListener('close', () => {\n bufferedHmrServerError = null\n })\n client.addEventListener('message', ({ data }) => {\n try {\n const error = getHmrServerError()\n\n // New error occurred: buffered error is flushed and new error occurred\n if (!bufferedHmrServerError && error) {\n hotReloader.send({\n type: HMR_MESSAGE_SENT_TO_BROWSER.SERVER_ERROR,\n errorJSON: stringifyError(error),\n })\n bufferedHmrServerError = null\n }\n\n const parsedData = JSON.parse(\n typeof data !== 'string' ? data.toString() : data\n )\n\n if (parsedData.event === HMR_MESSAGE_SENT_TO_SERVER.PING) {\n if (parsedData.appDirRoute) {\n handleAppDirPing(parsedData.tree)\n } else {\n handlePing(parsedData.page)\n }\n } else if (\n parsedData.event ===\n HMR_MESSAGE_SENT_TO_SERVER.MCP_ERROR_STATE_RESPONSE\n ) {\n handleErrorStateResponse(\n parsedData.requestId,\n parsedData.errorState,\n parsedData.url\n )\n } else if (\n parsedData.event ===\n HMR_MESSAGE_SENT_TO_SERVER.MCP_PAGE_METADATA_RESPONSE\n ) {\n handlePageMetadataResponse(\n parsedData.requestId,\n parsedData.segmentTrieData,\n parsedData.url\n )\n }\n } catch {}\n })\n },\n }\n}\n"],"names":["createDebug","EventEmitter","findPageFile","runDependingOnPageType","getStaticInfoIncludingLayouts","join","posix","normalizePathSep","normalizePagePath","ensureLeadingSlash","removePagePathTail","reportTrigger","getRouteFromEntrypoint","isInstrumentationHookFile","isInstrumentationHookFilename","isMiddlewareFile","isMiddlewareFilename","PageNotFoundError","stringifyError","COMPILER_INDEXES","COMPILER_NAMES","RSC_MODULE_TYPES","UNDERSCORE_NOT_FOUND_ROUTE_ENTRY","PAGE_SEGMENT_KEY","HMR_MESSAGE_SENT_TO_BROWSER","HMR_MESSAGE_SENT_TO_SERVER","isAppPageRouteDefinition","scheduleOnNextTick","Batcher","normalizeAppPath","PAGE_TYPES","getNextFlightSegmentPath","handleErrorStateResponse","handlePageMetadataResponse","debug","keys","Object","COMPILER_KEYS","treePathToEntrypoint","segmentPath","parentPath","parallelRouteKey","segment","path","startsWith","length","childSegmentPath","convertDynamicParamTypeToSyntax","dynamicParamTypeShort","param","Error","getEntryKey","compilerType","pageBundleType","page","pageKey","replace","getPageBundleType","pageBundlePath","PAGES","ROOT","APP","getEntrypointsFromTree","tree","isFirst","parallelRoutes","currentSegment","Array","isArray","isPageSegment","currentPath","slice","reduce","paths","key","childTree","childPages","ADDED","Symbol","BUILDING","BUILT","EntryTypes","entriesMap","Map","normalizeOutputPath","dir","getEntries","entries","get","set","invalidators","getInvalidator","doneCallbacks","lastClientAccessPages","lastServerAccessPagesForAppDir","Invalidator","constructor","multiCompiler","building","Set","rebuildAgain","shouldRebuildAll","size","invalidate","compilerKeys","has","add","compilers","watching","startBuilding","compilerKey","doneBuilding","rebuild","delete","push","willRebuild","disposeInactiveEntries","maxInactiveAge","forEach","entryKey","entryData","lastActiveTime","status","dispose","bundlePath","type","includes","Date","now","tryToNormalizePagePath","err","console","error","findPagePathData","rootDir","extensions","pagesDir","appDir","isGlobalNotFoundEnabled","normalizedPagePath","pagePath","isInstrumentation","pageUrl","normalize","filename","globalNotFoundPath","notFoundPath","require","resolve","keepIndex","onDemandEntryHandler","hotReloader","nextConfig","pagesBufferLength","hasAppDir","curInvalidator","outputPath","curEntries","compilation","compilationName","name","compiler","hooks","make","tap","getPagePathsFromEntrypoints","entrypoints","pagePaths","entrypoint","values","done","multiStats","clientStats","serverStats","edgeServerStats","stats","entryNames","client","server","edgeServer","entry","emit","pingIntervalTime","Math","max","min","setInterval","unref","handleAppDirPing","pages","entryInfo","unshift","pop","handlePing","pg","ensurePageImpl","appPaths","definition","isApp","url","stalledTime","stalledEnsureTimeout","setTimeout","route","pageExtensions","experimental","globalNotFound","isInsideAppDir","stackTraceLimit","addEntry","newEntry","shouldInvalidate","absolutePagePath","request","staticInfo","pageFilePath","isDev","config","added","isServerComponent","rsc","pageRuntime","runtime","pageType","onClient","onServer","edgeServerEntry","onEdgeServer","serverEntry","addedValues","entriesThatShouldBeInvalidated","filter","hasNewEntry","some","routePage","invalidatePromise","Promise","all","map","reject","once","needsRebuild","rebuildErr","clearTimeout","batcher","create","cacheKeyFn","options","JSON","stringify","schedulerFn","ensurePage","batch","onHMR","getHmrServerError","bufferedHmrServerError","addEventListener","data","send","SERVER_ERROR","errorJSON","parsedData","parse","toString","event","PING","appDirRoute","MCP_ERROR_STATE_RESPONSE","requestId","errorState","MCP_PAGE_METADATA_RESPONSE","segmentTrieData"],"mappings":"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","ignoreList":[0]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/server/dev/on-demand-entry-handler.ts"],"sourcesContent":["import type ws from 'next/dist/compiled/ws'\nimport type { webpack } from 'next/dist/compiled/webpack/webpack'\nimport type { NextConfigComplete } from '../config-shared'\nimport type {\n DynamicParamTypesShort,\n FlightRouterState,\n FlightSegmentPath,\n} from '../../shared/lib/app-router-types'\nimport type { CompilerNameValues } from '../../shared/lib/constants'\nimport type { RouteDefinition } from '../route-definitions/route-definition'\nimport type HotReloaderWebpack from './hot-reloader-webpack'\n\nimport createDebug from 'next/dist/compiled/debug'\nimport { EventEmitter } from 'events'\nimport { findPageFile } from '../lib/find-page-file'\nimport { runDependingOnPageType } from '../../build/entries'\nimport { getStaticInfoIncludingLayouts } from '../../build/get-static-info-including-layouts'\nimport { join, posix } from 'path'\nimport { normalizePathSep } from '../../shared/lib/page-path/normalize-path-sep'\nimport { normalizePagePath } from '../../shared/lib/page-path/normalize-page-path'\nimport { ensureLeadingSlash } from '../../shared/lib/page-path/ensure-leading-slash'\nimport { removePagePathTail } from '../../shared/lib/page-path/remove-page-path-tail'\nimport { reportTrigger } from '../../build/output'\nimport getRouteFromEntrypoint from '../get-route-from-entrypoint'\nimport {\n isInstrumentationHookFile,\n isInstrumentationHookFilename,\n isMiddlewareFile,\n isMiddlewareFilename,\n} from '../../build/utils'\nimport { PageNotFoundError, stringifyError } from '../../shared/lib/utils'\nimport {\n COMPILER_INDEXES,\n COMPILER_NAMES,\n RSC_MODULE_TYPES,\n UNDERSCORE_NOT_FOUND_ROUTE_ENTRY,\n} from '../../shared/lib/constants'\nimport { PAGE_SEGMENT_KEY } from '../../shared/lib/segment'\nimport {\n HMR_MESSAGE_SENT_TO_BROWSER,\n HMR_MESSAGE_SENT_TO_SERVER,\n} from './hot-reloader-types'\nimport { isAppPageRouteDefinition } from '../route-definitions/app-page-route-definition'\nimport { scheduleOnNextTick } from '../../lib/scheduler'\nimport { Batcher } from '../../lib/batcher'\nimport { normalizeAppPath } from '../../shared/lib/router/utils/app-paths'\nimport { PAGE_TYPES } from '../../lib/page-types'\nimport { getNextFlightSegmentPath } from '../../client/flight-data-helpers'\nimport { handleErrorStateResponse } from '../mcp/tools/get-errors'\nimport { handlePageMetadataResponse } from '../mcp/tools/get-page-metadata'\n\nconst debug = createDebug('next:on-demand-entry-handler')\n\n/**\n * Returns object keys with type inferred from the object key\n */\nconst keys = Object.keys as <T>(o: T) => Extract<keyof T, string>[]\n\nconst COMPILER_KEYS = keys(COMPILER_INDEXES)\n\nfunction treePathToEntrypoint(\n segmentPath: FlightSegmentPath,\n parentPath?: string\n): string {\n const [parallelRouteKey, segment] = segmentPath\n\n // TODO-APP: modify this path to cover parallelRouteKey convention\n const path =\n (parentPath ? parentPath + '/' : '') +\n (parallelRouteKey !== 'children' && !segment.startsWith('@')\n ? `@${parallelRouteKey}/`\n : '') +\n (segment === '' ? 'page' : segment)\n\n // Last segment\n if (segmentPath.length === 2) {\n return path\n }\n\n const childSegmentPath = getNextFlightSegmentPath(segmentPath)\n return treePathToEntrypoint(childSegmentPath, path)\n}\n\nfunction convertDynamicParamTypeToSyntax(\n dynamicParamTypeShort: DynamicParamTypesShort,\n param: string\n) {\n switch (dynamicParamTypeShort) {\n case 'c':\n case 'ci':\n return `[...${param}]`\n case 'oc':\n return `[[...${param}]]`\n case 'd':\n case 'di':\n return `[${param}]`\n default:\n throw new Error('Unknown dynamic param type')\n }\n}\n\n/**\n * format: {compiler type}@{page type}@{page path}\n * e.g. client@pages@/index\n * e.g. server@app@app/page\n *\n * This guarantees the uniqueness for each page, to avoid conflicts between app/ and pages/\n */\n\nexport function getEntryKey(\n compilerType: CompilerNameValues,\n pageBundleType: PAGE_TYPES,\n page: string\n) {\n // TODO: handle the /children slot better\n // this is a quick hack to handle when children is provided as children/page instead of /page\n const pageKey = page.replace(/(@[^/]+)\\/children/g, '$1')\n return `${compilerType}@${pageBundleType}@${pageKey}`\n}\n\nfunction getPageBundleType(pageBundlePath: string): PAGE_TYPES {\n // Handle special case for /_error\n if (pageBundlePath === '/_error') return PAGE_TYPES.PAGES\n if (isMiddlewareFilename(pageBundlePath)) return PAGE_TYPES.ROOT\n return pageBundlePath.startsWith('pages/')\n ? PAGE_TYPES.PAGES\n : pageBundlePath.startsWith('app/')\n ? PAGE_TYPES.APP\n : PAGE_TYPES.ROOT\n}\n\nfunction getEntrypointsFromTree(\n tree: FlightRouterState,\n isFirst: boolean,\n parentPath: string[] = []\n) {\n const [segment, parallelRoutes] = tree\n\n const currentSegment = Array.isArray(segment)\n ? convertDynamicParamTypeToSyntax(segment[2], segment[0])\n : segment\n\n const isPageSegment = currentSegment.startsWith(PAGE_SEGMENT_KEY)\n\n const currentPath = [...parentPath, isPageSegment ? '' : currentSegment]\n\n if (!isFirst && isPageSegment) {\n // TODO get rid of '' at the start of tree\n return [treePathToEntrypoint(currentPath.slice(1))]\n }\n\n return Object.keys(parallelRoutes).reduce(\n (paths: string[], key: string): string[] => {\n const childTree = parallelRoutes[key]\n const childPages = getEntrypointsFromTree(childTree, false, [\n ...currentPath,\n key,\n ])\n return [...paths, ...childPages]\n },\n []\n )\n}\n\nexport const ADDED = Symbol('added')\nexport const BUILDING = Symbol('building')\nexport const BUILT = Symbol('built')\n\ninterface EntryType {\n /**\n * Tells if a page is scheduled to be disposed.\n */\n dispose?: boolean\n /**\n * Timestamp with the last time the page was active.\n */\n lastActiveTime?: number\n /**\n * Page build status.\n */\n status?: typeof ADDED | typeof BUILDING | typeof BUILT\n\n /**\n * Path to the page file relative to the dist folder with no extension.\n * For example: `pages/about/index`\n */\n bundlePath: string\n\n /**\n * Webpack request to create a dependency for.\n */\n request: string\n}\n\n// Shadowing check in ESLint does not account for enum\nexport const enum EntryTypes {\n ENTRY,\n CHILD_ENTRY,\n}\ninterface Entry extends EntryType {\n type: EntryTypes.ENTRY\n /**\n * The absolute page to the page file. Used for detecting if the file was removed. For example:\n * `/Users/Rick/project/pages/about/index.js`\n */\n absolutePagePath: string\n /**\n * All parallel pages that match the same entry, for example:\n * ['/parallel/@bar/nested/@a/page', '/parallel/@bar/nested/@b/page', '/parallel/@foo/nested/@a/page', '/parallel/@foo/nested/@b/page']\n */\n appPaths: ReadonlyArray<string> | null\n}\n\ninterface ChildEntry extends EntryType {\n type: EntryTypes.CHILD_ENTRY\n /**\n * Which parent entries use this childEntry.\n */\n parentEntries: Set<string>\n /**\n * The absolute page to the entry file. Used for detecting if the file was removed. For example:\n * `/Users/Rick/project/app/about/layout.js`\n */\n absoluteEntryFilePath?: string\n}\n\nconst entriesMap: Map<\n string,\n {\n /**\n * The key composed of the compiler name and the page. For example:\n * `edge-server/about`\n */\n [entryName: string]: Entry | ChildEntry\n }\n> = new Map()\n\n// remove /server from end of output for server compiler\nconst normalizeOutputPath = (dir: string) => dir.replace(/[/\\\\]server$/, '')\n\nexport const getEntries = (\n dir: string\n): NonNullable<ReturnType<(typeof entriesMap)['get']>> => {\n dir = normalizeOutputPath(dir)\n const entries = entriesMap.get(dir) || {}\n entriesMap.set(dir, entries)\n return entries\n}\n\nconst invalidators: Map<string, Invalidator> = new Map()\n\nexport const getInvalidator = (dir: string) => {\n dir = normalizeOutputPath(dir)\n return invalidators.get(dir)\n}\n\nconst doneCallbacks: EventEmitter = new EventEmitter()\nconst lastClientAccessPages = ['']\nconst lastServerAccessPagesForAppDir = ['']\n\ntype BuildingTracker = Set<CompilerNameValues>\ntype RebuildTracker = Set<CompilerNameValues>\n\n// Make sure only one invalidation happens at a time\n// Otherwise, webpack hash gets changed and it'll force the client to reload.\nclass Invalidator {\n private multiCompiler: webpack.MultiCompiler\n\n private building: BuildingTracker = new Set()\n private rebuildAgain: RebuildTracker = new Set()\n\n constructor(multiCompiler: webpack.MultiCompiler) {\n this.multiCompiler = multiCompiler\n }\n\n public shouldRebuildAll() {\n return this.rebuildAgain.size > 0\n }\n\n invalidate(compilerKeys: typeof COMPILER_KEYS = COMPILER_KEYS): void {\n for (const key of compilerKeys) {\n // If there's a current build is processing, we won't abort it by invalidating.\n // (If aborted, it'll cause a client side hard reload)\n // But let it to invalidate just after the completion.\n // So, it can re-build the queued pages at once.\n\n if (this.building.has(key)) {\n this.rebuildAgain.add(key)\n continue\n }\n\n this.building.add(key)\n this.multiCompiler.compilers[COMPILER_INDEXES[key]].watching?.invalidate()\n }\n }\n\n public startBuilding(compilerKey: keyof typeof COMPILER_INDEXES) {\n this.building.add(compilerKey)\n }\n\n public doneBuilding(compilerKeys: typeof COMPILER_KEYS = []) {\n const rebuild: typeof COMPILER_KEYS = []\n for (const key of compilerKeys) {\n this.building.delete(key)\n\n if (this.rebuildAgain.has(key)) {\n rebuild.push(key)\n this.rebuildAgain.delete(key)\n }\n }\n\n if (rebuild.length > 0) {\n this.invalidate(rebuild)\n }\n }\n\n public willRebuild(compilerKey: keyof typeof COMPILER_INDEXES) {\n return this.rebuildAgain.has(compilerKey)\n }\n}\n\nfunction disposeInactiveEntries(\n entries: NonNullable<ReturnType<(typeof entriesMap)['get']>>,\n maxInactiveAge: number\n) {\n Object.keys(entries).forEach((entryKey) => {\n const entryData = entries[entryKey]\n const { lastActiveTime, status, dispose, bundlePath } = entryData\n\n // TODO-APP: implement disposing of CHILD_ENTRY\n if (entryData.type === EntryTypes.CHILD_ENTRY) {\n return\n }\n\n // For the root middleware and the instrumentation hook files,\n // we don't dispose them periodically as it's needed for every request.\n if (\n isMiddlewareFilename(bundlePath) ||\n isInstrumentationHookFilename(bundlePath)\n ) {\n return\n }\n\n if (dispose)\n // Skip pages already scheduled for disposing\n return\n\n // This means this entry is currently building or just added\n // We don't need to dispose those entries.\n if (status !== BUILT) return\n\n // We should not build the last accessed page even we didn't get any pings\n // Sometimes, it's possible our XHR ping to wait before completing other requests.\n // In that case, we should not dispose the current viewing page\n if (\n lastClientAccessPages.includes(entryKey) ||\n lastServerAccessPagesForAppDir.includes(entryKey)\n )\n return\n\n if (lastActiveTime && Date.now() - lastActiveTime > maxInactiveAge) {\n entries[entryKey].dispose = true\n }\n })\n}\n\n// Normalize both app paths and page paths\nfunction tryToNormalizePagePath(page: string) {\n try {\n return normalizePagePath(page)\n } catch (err) {\n console.error(err)\n throw new PageNotFoundError(page)\n }\n}\n\ninterface PagePathData {\n filename: string\n bundlePath: string\n page: string\n}\n\n/**\n * Attempts to find a page file path from the given pages absolute directory,\n * a page and allowed extensions. If the page can't be found it will throw an\n * error. It defaults the `/_error` page to Next.js internal error page.\n *\n * @param rootDir Absolute path to the project root.\n * @param page The page normalized (it will be denormalized).\n * @param extensions Array of page extensions.\n * @param pagesDir Absolute path to the pages folder with trailing `/pages`.\n * @param appDir Absolute path to the app folder with trailing `/app`.\n */\nexport async function findPagePathData(\n rootDir: string,\n page: string,\n extensions: string[],\n pagesDir: string | undefined,\n appDir: string | undefined,\n isGlobalNotFoundEnabled: boolean\n): Promise<PagePathData> {\n const normalizedPagePath = tryToNormalizePagePath(page)\n let pagePath: string | null = null\n\n const isInstrumentation = isInstrumentationHookFile(normalizedPagePath)\n if (isMiddlewareFile(normalizedPagePath) || isInstrumentation) {\n pagePath = await findPageFile(\n rootDir,\n normalizedPagePath,\n extensions,\n false\n )\n\n if (!pagePath) {\n throw new PageNotFoundError(normalizedPagePath)\n }\n\n const pageUrl = ensureLeadingSlash(\n removePagePathTail(normalizePathSep(pagePath), {\n extensions,\n })\n )\n\n let bundlePath = normalizedPagePath\n let pageKey = posix.normalize(pageUrl)\n\n if (isInstrumentation || isMiddlewareFile(normalizedPagePath)) {\n bundlePath = bundlePath.replace('/src', '')\n pageKey = page.replace('/src', '')\n }\n\n return {\n filename: join(rootDir, pagePath),\n bundlePath: bundlePath.slice(1),\n page: pageKey,\n }\n }\n\n // Check appDir first falling back to pagesDir\n if (appDir) {\n if (page === UNDERSCORE_NOT_FOUND_ROUTE_ENTRY) {\n // Load `global-not-found` when global-not-found is enabled.\n // Prefer to load it when both `global-not-found` and root `not-found` present.\n if (isGlobalNotFoundEnabled) {\n const globalNotFoundPath = await findPageFile(\n appDir,\n 'global-not-found',\n extensions,\n true\n )\n if (globalNotFoundPath) {\n return {\n filename: join(appDir, globalNotFoundPath),\n bundlePath: `app${UNDERSCORE_NOT_FOUND_ROUTE_ENTRY}`,\n page: UNDERSCORE_NOT_FOUND_ROUTE_ENTRY,\n }\n }\n } else {\n // Then if global-not-found.js doesn't exist then load not-found.js\n const notFoundPath = await findPageFile(\n appDir,\n 'not-found',\n extensions,\n true\n )\n if (notFoundPath) {\n return {\n filename: join(appDir, notFoundPath),\n bundlePath: `app${UNDERSCORE_NOT_FOUND_ROUTE_ENTRY}`,\n page: UNDERSCORE_NOT_FOUND_ROUTE_ENTRY,\n }\n }\n }\n\n // If they're not presented, then fallback to global-not-found\n return {\n filename: require.resolve(\n 'next/dist/client/components/builtin/global-not-found'\n ),\n bundlePath: `app${UNDERSCORE_NOT_FOUND_ROUTE_ENTRY}`,\n page: UNDERSCORE_NOT_FOUND_ROUTE_ENTRY,\n }\n }\n pagePath = await findPageFile(appDir, normalizedPagePath, extensions, true)\n if (pagePath) {\n const pageUrl = ensureLeadingSlash(\n removePagePathTail(normalizePathSep(pagePath), {\n keepIndex: true,\n extensions,\n })\n )\n\n return {\n filename: join(appDir, pagePath),\n bundlePath: posix.join('app', pageUrl),\n page: posix.normalize(pageUrl),\n }\n }\n }\n\n if (!pagePath && pagesDir) {\n pagePath = await findPageFile(\n pagesDir,\n normalizedPagePath,\n extensions,\n false\n )\n }\n\n if (pagePath !== null && pagesDir) {\n const pageUrl = ensureLeadingSlash(\n removePagePathTail(normalizePathSep(pagePath), {\n extensions,\n })\n )\n\n return {\n filename: join(pagesDir, pagePath),\n bundlePath: posix.join('pages', normalizePagePath(pageUrl)),\n page: posix.normalize(pageUrl),\n }\n }\n\n if (page === '/_error') {\n return {\n filename: require.resolve('next/dist/pages/_error'),\n bundlePath: page,\n page: normalizePathSep(page),\n }\n } else {\n throw new PageNotFoundError(normalizedPagePath)\n }\n}\n\nexport function onDemandEntryHandler({\n hotReloader,\n maxInactiveAge,\n multiCompiler,\n nextConfig,\n pagesBufferLength,\n pagesDir,\n rootDir,\n appDir,\n}: {\n hotReloader: HotReloaderWebpack\n maxInactiveAge: number\n multiCompiler: webpack.MultiCompiler\n nextConfig: NextConfigComplete\n pagesBufferLength: number\n pagesDir?: string\n rootDir: string\n appDir?: string\n}) {\n const hasAppDir = !!appDir\n let curInvalidator: Invalidator = getInvalidator(\n multiCompiler.outputPath\n ) as any\n const curEntries = getEntries(multiCompiler.outputPath) as any\n\n if (!curInvalidator) {\n curInvalidator = new Invalidator(multiCompiler)\n invalidators.set(multiCompiler.outputPath, curInvalidator)\n }\n\n const startBuilding = (compilation: webpack.Compilation) => {\n const compilationName = compilation.name as any as CompilerNameValues\n curInvalidator.startBuilding(compilationName)\n }\n for (const compiler of multiCompiler.compilers) {\n compiler.hooks.make.tap('NextJsOnDemandEntries', startBuilding)\n }\n\n function getPagePathsFromEntrypoints(\n type: CompilerNameValues,\n entrypoints: Map<string, { name?: string | null }>\n ) {\n const pagePaths: string[] = []\n for (const entrypoint of entrypoints.values()) {\n const page = getRouteFromEntrypoint(entrypoint.name!, hasAppDir)\n\n if (page) {\n const pageBundleType = entrypoint.name?.startsWith('app/')\n ? PAGE_TYPES.APP\n : PAGE_TYPES.PAGES\n pagePaths.push(getEntryKey(type, pageBundleType, page))\n } else if (\n isMiddlewareFilename(entrypoint.name) ||\n isInstrumentationHookFilename(entrypoint.name)\n ) {\n pagePaths.push(\n getEntryKey(type, PAGE_TYPES.ROOT, `/${entrypoint.name}`)\n )\n }\n }\n return pagePaths\n }\n\n for (const compiler of multiCompiler.compilers) {\n compiler.hooks.done.tap('NextJsOnDemandEntries', () =>\n getInvalidator(compiler.outputPath)?.doneBuilding([\n compiler.name as keyof typeof COMPILER_INDEXES,\n ])\n )\n }\n\n multiCompiler.hooks.done.tap('NextJsOnDemandEntries', (multiStats) => {\n const [clientStats, serverStats, edgeServerStats] = multiStats.stats\n const entryNames = [\n ...getPagePathsFromEntrypoints(\n COMPILER_NAMES.client,\n clientStats.compilation.entrypoints\n ),\n ...getPagePathsFromEntrypoints(\n COMPILER_NAMES.server,\n serverStats.compilation.entrypoints\n ),\n ...(edgeServerStats\n ? getPagePathsFromEntrypoints(\n COMPILER_NAMES.edgeServer,\n edgeServerStats.compilation.entrypoints\n )\n : []),\n ]\n\n for (const name of entryNames) {\n const entry = curEntries[name]\n if (!entry) {\n continue\n }\n\n if (entry.status !== BUILDING) {\n continue\n }\n\n entry.status = BUILT\n // Pass null as error argument to match listener signature (fixes Bun compatibility)\n doneCallbacks.emit(name, null)\n }\n\n getInvalidator(multiCompiler.outputPath)?.doneBuilding([...COMPILER_KEYS])\n })\n\n const pingIntervalTime = Math.max(1000, Math.min(5000, maxInactiveAge))\n\n setInterval(function () {\n disposeInactiveEntries(curEntries, maxInactiveAge)\n }, pingIntervalTime + 1000).unref()\n\n function handleAppDirPing(tree: FlightRouterState): void {\n const pages = getEntrypointsFromTree(tree, true)\n\n for (const page of pages) {\n for (const compilerType of [\n COMPILER_NAMES.client,\n COMPILER_NAMES.server,\n COMPILER_NAMES.edgeServer,\n ]) {\n const entryKey = getEntryKey(compilerType, PAGE_TYPES.APP, `/${page}`)\n const entryInfo = curEntries[entryKey]\n\n // If there's no entry, it may have been invalidated and needs to be re-built.\n if (!entryInfo) {\n // if (page !== lastEntry) client pings, but there's no entry for page\n continue\n }\n\n // We don't need to maintain active state of anything other than BUILT entries\n if (entryInfo.status !== BUILT) continue\n\n // If there's an entryInfo\n if (!lastServerAccessPagesForAppDir.includes(entryKey)) {\n lastServerAccessPagesForAppDir.unshift(entryKey)\n\n // Maintain the buffer max length\n // TODO: verify that the current pageKey is not at the end of the array as multiple entrypoints can exist\n if (lastServerAccessPagesForAppDir.length > pagesBufferLength) {\n lastServerAccessPagesForAppDir.pop()\n }\n }\n entryInfo.lastActiveTime = Date.now()\n entryInfo.dispose = false\n }\n }\n }\n\n function handlePing(pg: string): void {\n const page = normalizePathSep(pg)\n for (const compilerType of [\n COMPILER_NAMES.client,\n COMPILER_NAMES.server,\n COMPILER_NAMES.edgeServer,\n ]) {\n const entryKey = getEntryKey(compilerType, PAGE_TYPES.PAGES, page)\n const entryInfo = curEntries[entryKey]\n\n // If there's no entry, it may have been invalidated and needs to be re-built.\n if (!entryInfo) {\n // if (page !== lastEntry) client pings, but there's no entry for page\n if (compilerType === COMPILER_NAMES.client) {\n return\n }\n continue\n }\n\n // We don't need to maintain active state of anything other than BUILT entries\n if (entryInfo.status !== BUILT) continue\n\n // If there's an entryInfo\n if (!lastClientAccessPages.includes(entryKey)) {\n lastClientAccessPages.unshift(entryKey)\n\n // Maintain the buffer max length\n if (lastClientAccessPages.length > pagesBufferLength) {\n lastClientAccessPages.pop()\n }\n }\n entryInfo.lastActiveTime = Date.now()\n entryInfo.dispose = false\n }\n return\n }\n\n async function ensurePageImpl({\n page,\n appPaths,\n definition,\n isApp,\n url,\n }: {\n page: string\n appPaths: ReadonlyArray<string> | null\n definition: RouteDefinition | undefined\n isApp: boolean | undefined\n url?: string\n }): Promise<void> {\n const stalledTime = 60\n const stalledEnsureTimeout = setTimeout(() => {\n debug(\n `Ensuring ${page} has taken longer than ${stalledTime}s, if this continues to stall this may be a bug`\n )\n }, stalledTime * 1000)\n\n try {\n let route: Pick<RouteDefinition, 'filename' | 'bundlePath' | 'page'>\n if (definition) {\n route = definition\n } else {\n route = await findPagePathData(\n rootDir,\n page,\n nextConfig.pageExtensions,\n pagesDir,\n appDir,\n !!nextConfig.experimental.globalNotFound\n )\n }\n\n const isInsideAppDir = !!appDir && route.filename.startsWith(appDir)\n\n if (typeof isApp === 'boolean' && isApp !== isInsideAppDir) {\n Error.stackTraceLimit = 15\n throw new Error(\n `Ensure bailed, found path \"${\n route.page\n }\" does not match ensure type (${isApp ? 'app' : 'pages'})`\n )\n }\n\n const pageBundleType = getPageBundleType(route.bundlePath)\n const addEntry = (\n compilerType: CompilerNameValues\n ): {\n entryKey: string\n newEntry: boolean\n shouldInvalidate: boolean\n } => {\n const entryKey = getEntryKey(compilerType, pageBundleType, route.page)\n if (\n curEntries[entryKey] &&\n // there can be an overlap in the entryKey for the instrumentation hook file and a page named the same\n // this is a quick fix to support this scenario by overwriting the instrumentation hook entry, since we only use it one time\n // any changes to the instrumentation hook file will require a restart of the dev server anyway\n !isInstrumentationHookFilename(curEntries[entryKey].bundlePath)\n ) {\n curEntries[entryKey].dispose = false\n curEntries[entryKey].lastActiveTime = Date.now()\n if (curEntries[entryKey].status === BUILT) {\n return {\n entryKey,\n newEntry: false,\n shouldInvalidate: false,\n }\n }\n\n return {\n entryKey,\n newEntry: false,\n shouldInvalidate: true,\n }\n }\n\n curEntries[entryKey] = {\n type: EntryTypes.ENTRY,\n appPaths,\n absolutePagePath: route.filename,\n request: route.filename,\n bundlePath: route.bundlePath,\n dispose: false,\n lastActiveTime: Date.now(),\n status: ADDED,\n }\n return {\n entryKey: entryKey,\n newEntry: true,\n shouldInvalidate: true,\n }\n }\n\n const staticInfo = await getStaticInfoIncludingLayouts({\n page,\n pageFilePath: route.filename,\n isInsideAppDir,\n pageExtensions: nextConfig.pageExtensions,\n isDev: true,\n config: nextConfig,\n appDir,\n })\n\n const added = new Map<CompilerNameValues, ReturnType<typeof addEntry>>()\n const isServerComponent =\n isInsideAppDir && staticInfo.rsc !== RSC_MODULE_TYPES.client\n\n let pageRuntime = staticInfo.runtime\n\n runDependingOnPageType({\n page: route.page,\n pageRuntime,\n pageType: pageBundleType,\n onClient: () => {\n // Skip adding the client entry for app / Server Components.\n if (isServerComponent || isInsideAppDir) {\n return\n }\n added.set(COMPILER_NAMES.client, addEntry(COMPILER_NAMES.client))\n },\n onServer: () => {\n added.set(COMPILER_NAMES.server, addEntry(COMPILER_NAMES.server))\n const edgeServerEntry = getEntryKey(\n COMPILER_NAMES.edgeServer,\n pageBundleType,\n route.page\n )\n if (\n curEntries[edgeServerEntry] &&\n !isInstrumentationHookFile(route.page)\n ) {\n // Runtime switched from edge to server\n delete curEntries[edgeServerEntry]\n }\n },\n onEdgeServer: () => {\n added.set(\n COMPILER_NAMES.edgeServer,\n addEntry(COMPILER_NAMES.edgeServer)\n )\n const serverEntry = getEntryKey(\n COMPILER_NAMES.server,\n pageBundleType,\n route.page\n )\n if (\n curEntries[serverEntry] &&\n !isInstrumentationHookFile(route.page)\n ) {\n // Runtime switched from server to edge\n delete curEntries[serverEntry]\n }\n },\n })\n\n const addedValues = [...added.values()]\n const entriesThatShouldBeInvalidated = [...added.entries()].filter(\n ([, entry]) => entry.shouldInvalidate\n )\n const hasNewEntry = addedValues.some((entry) => entry.newEntry)\n\n if (hasNewEntry) {\n const routePage = isApp ? route.page : normalizeAppPath(route.page)\n // If proxy file, remove the leading slash from \"/proxy\" to \"proxy\".\n reportTrigger(\n isMiddlewareFile(routePage) ? routePage.slice(1) : routePage,\n url\n )\n }\n\n if (entriesThatShouldBeInvalidated.length > 0) {\n const invalidatePromise = Promise.all(\n entriesThatShouldBeInvalidated.map(([compilerKey, { entryKey }]) => {\n return new Promise<void>((resolve, reject) => {\n doneCallbacks.once(entryKey, (err: Error) => {\n if (err) {\n return reject(err)\n }\n\n // If the invalidation also triggers a rebuild, we need to\n // wait for that additional build to prevent race conditions.\n const needsRebuild = curInvalidator.willRebuild(compilerKey)\n if (needsRebuild) {\n doneCallbacks.once(entryKey, (rebuildErr: Error) => {\n if (rebuildErr) {\n return reject(rebuildErr)\n }\n resolve()\n })\n } else {\n resolve()\n }\n })\n })\n })\n )\n\n curInvalidator.invalidate([...added.keys()])\n await invalidatePromise\n }\n } finally {\n clearTimeout(stalledEnsureTimeout)\n }\n }\n\n type EnsurePageOptions = {\n page: string\n appPaths?: ReadonlyArray<string> | null\n definition?: RouteDefinition\n isApp?: boolean\n url?: string\n }\n\n // Make sure that we won't have multiple invalidations ongoing concurrently.\n const batcher = Batcher.create<EnsurePageOptions, void, string>({\n // The cache key here is composed of the elements that affect the\n // compilation, namely, the page, whether it's client only, and whether\n // it's an app page. This ensures that we don't have multiple compilations\n // for the same page happening concurrently.\n //\n // We don't include the whole match because it contains match specific\n // parameters (like route params) that would just bust this cache. Any\n // details that would possibly bust the cache should be listed here.\n cacheKeyFn: (options) => JSON.stringify(options),\n // Schedule the invocation of the ensurePageImpl function on the next tick.\n schedulerFn: scheduleOnNextTick,\n })\n\n return {\n async ensurePage({\n page,\n appPaths = null,\n definition,\n isApp,\n url,\n }: EnsurePageOptions) {\n // If the route is actually an app page route, then we should have access\n // to the app route definition, and therefore, the appPaths from it.\n if (!appPaths && definition && isAppPageRouteDefinition(definition)) {\n appPaths = definition.appPaths\n }\n\n // Wrap the invocation of the ensurePageImpl function in the pending\n // wrapper, which will ensure that we don't have multiple compilations\n // for the same page happening concurrently.\n return batcher.batch({ page, appPaths, definition, isApp }, async () => {\n await ensurePageImpl({\n page,\n appPaths,\n definition,\n isApp,\n url,\n })\n })\n },\n onHMR(client: ws, getHmrServerError: () => Error | null) {\n let bufferedHmrServerError: Error | null = null\n\n client.addEventListener('close', () => {\n bufferedHmrServerError = null\n })\n client.addEventListener('message', ({ data }) => {\n try {\n const error = getHmrServerError()\n\n // New error occurred: buffered error is flushed and new error occurred\n if (!bufferedHmrServerError && error) {\n hotReloader.send({\n type: HMR_MESSAGE_SENT_TO_BROWSER.SERVER_ERROR,\n errorJSON: stringifyError(error),\n })\n bufferedHmrServerError = null\n }\n\n const parsedData = JSON.parse(\n typeof data !== 'string' ? data.toString() : data\n )\n\n if (parsedData.event === HMR_MESSAGE_SENT_TO_SERVER.PING) {\n if (parsedData.appDirRoute) {\n handleAppDirPing(parsedData.tree)\n } else {\n handlePing(parsedData.page)\n }\n } else if (\n parsedData.event ===\n HMR_MESSAGE_SENT_TO_SERVER.MCP_ERROR_STATE_RESPONSE\n ) {\n handleErrorStateResponse(\n parsedData.requestId,\n parsedData.errorState,\n parsedData.url\n )\n } else if (\n parsedData.event ===\n HMR_MESSAGE_SENT_TO_SERVER.MCP_PAGE_METADATA_RESPONSE\n ) {\n handlePageMetadataResponse(\n parsedData.requestId,\n parsedData.segmentTrieData,\n parsedData.url\n )\n }\n } catch {}\n })\n },\n }\n}\n"],"names":["createDebug","EventEmitter","findPageFile","runDependingOnPageType","getStaticInfoIncludingLayouts","join","posix","normalizePathSep","normalizePagePath","ensureLeadingSlash","removePagePathTail","reportTrigger","getRouteFromEntrypoint","isInstrumentationHookFile","isInstrumentationHookFilename","isMiddlewareFile","isMiddlewareFilename","PageNotFoundError","stringifyError","COMPILER_INDEXES","COMPILER_NAMES","RSC_MODULE_TYPES","UNDERSCORE_NOT_FOUND_ROUTE_ENTRY","PAGE_SEGMENT_KEY","HMR_MESSAGE_SENT_TO_BROWSER","HMR_MESSAGE_SENT_TO_SERVER","isAppPageRouteDefinition","scheduleOnNextTick","Batcher","normalizeAppPath","PAGE_TYPES","getNextFlightSegmentPath","handleErrorStateResponse","handlePageMetadataResponse","debug","keys","Object","COMPILER_KEYS","treePathToEntrypoint","segmentPath","parentPath","parallelRouteKey","segment","path","startsWith","length","childSegmentPath","convertDynamicParamTypeToSyntax","dynamicParamTypeShort","param","Error","getEntryKey","compilerType","pageBundleType","page","pageKey","replace","getPageBundleType","pageBundlePath","PAGES","ROOT","APP","getEntrypointsFromTree","tree","isFirst","parallelRoutes","currentSegment","Array","isArray","isPageSegment","currentPath","slice","reduce","paths","key","childTree","childPages","ADDED","Symbol","BUILDING","BUILT","EntryTypes","entriesMap","Map","normalizeOutputPath","dir","getEntries","entries","get","set","invalidators","getInvalidator","doneCallbacks","lastClientAccessPages","lastServerAccessPagesForAppDir","Invalidator","constructor","multiCompiler","building","Set","rebuildAgain","shouldRebuildAll","size","invalidate","compilerKeys","has","add","compilers","watching","startBuilding","compilerKey","doneBuilding","rebuild","delete","push","willRebuild","disposeInactiveEntries","maxInactiveAge","forEach","entryKey","entryData","lastActiveTime","status","dispose","bundlePath","type","includes","Date","now","tryToNormalizePagePath","err","console","error","findPagePathData","rootDir","extensions","pagesDir","appDir","isGlobalNotFoundEnabled","normalizedPagePath","pagePath","isInstrumentation","pageUrl","normalize","filename","globalNotFoundPath","notFoundPath","require","resolve","keepIndex","onDemandEntryHandler","hotReloader","nextConfig","pagesBufferLength","hasAppDir","curInvalidator","outputPath","curEntries","compilation","compilationName","name","compiler","hooks","make","tap","getPagePathsFromEntrypoints","entrypoints","pagePaths","entrypoint","values","done","multiStats","clientStats","serverStats","edgeServerStats","stats","entryNames","client","server","edgeServer","entry","emit","pingIntervalTime","Math","max","min","setInterval","unref","handleAppDirPing","pages","entryInfo","unshift","pop","handlePing","pg","ensurePageImpl","appPaths","definition","isApp","url","stalledTime","stalledEnsureTimeout","setTimeout","route","pageExtensions","experimental","globalNotFound","isInsideAppDir","stackTraceLimit","addEntry","newEntry","shouldInvalidate","absolutePagePath","request","staticInfo","pageFilePath","isDev","config","added","isServerComponent","rsc","pageRuntime","runtime","pageType","onClient","onServer","edgeServerEntry","onEdgeServer","serverEntry","addedValues","entriesThatShouldBeInvalidated","filter","hasNewEntry","some","routePage","invalidatePromise","Promise","all","map","reject","once","needsRebuild","rebuildErr","clearTimeout","batcher","create","cacheKeyFn","options","JSON","stringify","schedulerFn","ensurePage","batch","onHMR","getHmrServerError","bufferedHmrServerError","addEventListener","data","send","SERVER_ERROR","errorJSON","parsedData","parse","toString","event","PING","appDirRoute","MCP_ERROR_STATE_RESPONSE","requestId","errorState","MCP_PAGE_METADATA_RESPONSE","segmentTrieData"],"mappings":"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","ignoreList":[0]}
|
|
@@ -20,7 +20,7 @@ export function logStartInfo({ networkUrl, appUrl, envInfo, experimentalFeatures
|
|
|
20
20
|
if (parts.length > 0) {
|
|
21
21
|
versionSuffix = ` (${parts.join(', ')})`;
|
|
22
22
|
}
|
|
23
|
-
Log.bootstrap(`${bold(purple(`${Log.prefixes.ready} Next.js ${"16.0.
|
|
23
|
+
Log.bootstrap(`${bold(purple(`${Log.prefixes.ready} Next.js ${"16.0.7"}`))}${versionSuffix}`);
|
|
24
24
|
if (appUrl) {
|
|
25
25
|
Log.bootstrap(`- Local: ${appUrl}`);
|
|
26
26
|
}
|
|
@@ -110,7 +110,7 @@ export async function getRequestHandlers({ dir, port, isDev, onDevServerCleanup,
|
|
|
110
110
|
export async function startServer(serverOptions) {
|
|
111
111
|
const { dir, isDev, hostname, minimalMode, allowRetry, keepAliveTimeout, selfSignedCertificate } = serverOptions;
|
|
112
112
|
let { port } = serverOptions;
|
|
113
|
-
process.title = `next-server (v${"16.0.
|
|
113
|
+
process.title = `next-server (v${"16.0.7"})`;
|
|
114
114
|
let handlersReady = ()=>{};
|
|
115
115
|
let handlersError = ()=>{};
|
|
116
116
|
let handlersPromise = new Promise((resolve, reject)=>{
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export function isStableBuild() {
|
|
2
|
-
return !"16.0.
|
|
2
|
+
return !"16.0.7"?.includes('canary') && !process.env.__NEXT_TEST_MODE && !process.env.NEXT_PRIVATE_LOCAL_DEV;
|
|
3
3
|
}
|
|
4
4
|
export class CanaryOnlyConfigError extends Error {
|
|
5
5
|
constructor(arg){
|
|
@@ -231,7 +231,7 @@ class HotReloaderWebpack {
|
|
|
231
231
|
this.previewProps = previewProps;
|
|
232
232
|
this.rewrites = rewrites;
|
|
233
233
|
this.hotReloaderSpan = (0, _trace.trace)('hot-reloader', undefined, {
|
|
234
|
-
version: "16.0.
|
|
234
|
+
version: "16.0.7"
|
|
235
235
|
});
|
|
236
236
|
// Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
|
|
237
237
|
// of the current `next dev` invocation.
|
|
@@ -407,7 +407,8 @@ function onDemandEntryHandler({ hotReloader, maxInactiveAge, multiCompiler, next
|
|
|
407
407
|
continue;
|
|
408
408
|
}
|
|
409
409
|
entry.status = BUILT;
|
|
410
|
-
|
|
410
|
+
// Pass null as error argument to match listener signature (fixes Bun compatibility)
|
|
411
|
+
doneCallbacks.emit(name, null);
|
|
411
412
|
}
|
|
412
413
|
(_getInvalidator = getInvalidator(multiCompiler.outputPath)) == null ? void 0 : _getInvalidator.doneBuilding([
|
|
413
414
|
...COMPILER_KEYS
|