@openuiai/next 16.0.5 → 16.0.6
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/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-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/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-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/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.6"}`))}${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.6"})`;
|
|
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.6"?.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.6"
|
|
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
|
|
@@ -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":["ADDED","BUILDING","BUILT","EntryTypes","findPagePathData","getEntries","getEntryKey","getInvalidator","onDemandEntryHandler","debug","createDebug","keys","Object","COMPILER_KEYS","COMPILER_INDEXES","treePathToEntrypoint","segmentPath","parentPath","parallelRouteKey","segment","path","startsWith","length","childSegmentPath","getNextFlightSegmentPath","convertDynamicParamTypeToSyntax","dynamicParamTypeShort","param","Error","compilerType","pageBundleType","page","pageKey","replace","getPageBundleType","pageBundlePath","PAGE_TYPES","PAGES","isMiddlewareFilename","ROOT","APP","getEntrypointsFromTree","tree","isFirst","parallelRoutes","currentSegment","Array","isArray","isPageSegment","PAGE_SEGMENT_KEY","currentPath","slice","reduce","paths","key","childTree","childPages","Symbol","entriesMap","Map","normalizeOutputPath","dir","entries","get","set","invalidators","doneCallbacks","EventEmitter","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","isInstrumentationHookFilename","includes","Date","now","tryToNormalizePagePath","normalizePagePath","err","console","error","PageNotFoundError","rootDir","extensions","pagesDir","appDir","isGlobalNotFoundEnabled","normalizedPagePath","pagePath","isInstrumentation","isInstrumentationHookFile","isMiddlewareFile","findPageFile","pageUrl","ensureLeadingSlash","removePagePathTail","normalizePathSep","posix","normalize","filename","join","UNDERSCORE_NOT_FOUND_ROUTE_ENTRY","globalNotFoundPath","notFoundPath","require","resolve","keepIndex","hotReloader","nextConfig","pagesBufferLength","hasAppDir","curInvalidator","outputPath","curEntries","compilation","compilationName","name","compiler","hooks","make","tap","getPagePathsFromEntrypoints","entrypoints","pagePaths","entrypoint","values","getRouteFromEntrypoint","done","multiStats","clientStats","serverStats","edgeServerStats","stats","entryNames","COMPILER_NAMES","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","getStaticInfoIncludingLayouts","pageFilePath","isDev","config","added","isServerComponent","rsc","RSC_MODULE_TYPES","pageRuntime","runtime","runDependingOnPageType","pageType","onClient","onServer","edgeServerEntry","onEdgeServer","serverEntry","addedValues","entriesThatShouldBeInvalidated","filter","hasNewEntry","some","routePage","normalizeAppPath","reportTrigger","invalidatePromise","Promise","all","map","reject","once","needsRebuild","rebuildErr","clearTimeout","batcher","Batcher","create","cacheKeyFn","options","JSON","stringify","schedulerFn","scheduleOnNextTick","ensurePage","isAppPageRouteDefinition","batch","onHMR","getHmrServerError","bufferedHmrServerError","addEventListener","data","send","HMR_MESSAGE_SENT_TO_BROWSER","SERVER_ERROR","errorJSON","stringifyError","parsedData","parse","toString","event","HMR_MESSAGE_SENT_TO_SERVER","PING","appDirRoute","MCP_ERROR_STATE_RESPONSE","handleErrorStateResponse","requestId","errorState","MCP_PAGE_METADATA_RESPONSE","handlePageMetadataResponse","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":["ADDED","BUILDING","BUILT","EntryTypes","findPagePathData","getEntries","getEntryKey","getInvalidator","onDemandEntryHandler","debug","createDebug","keys","Object","COMPILER_KEYS","COMPILER_INDEXES","treePathToEntrypoint","segmentPath","parentPath","parallelRouteKey","segment","path","startsWith","length","childSegmentPath","getNextFlightSegmentPath","convertDynamicParamTypeToSyntax","dynamicParamTypeShort","param","Error","compilerType","pageBundleType","page","pageKey","replace","getPageBundleType","pageBundlePath","PAGE_TYPES","PAGES","isMiddlewareFilename","ROOT","APP","getEntrypointsFromTree","tree","isFirst","parallelRoutes","currentSegment","Array","isArray","isPageSegment","PAGE_SEGMENT_KEY","currentPath","slice","reduce","paths","key","childTree","childPages","Symbol","entriesMap","Map","normalizeOutputPath","dir","entries","get","set","invalidators","doneCallbacks","EventEmitter","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","isInstrumentationHookFilename","includes","Date","now","tryToNormalizePagePath","normalizePagePath","err","console","error","PageNotFoundError","rootDir","extensions","pagesDir","appDir","isGlobalNotFoundEnabled","normalizedPagePath","pagePath","isInstrumentation","isInstrumentationHookFile","isMiddlewareFile","findPageFile","pageUrl","ensureLeadingSlash","removePagePathTail","normalizePathSep","posix","normalize","filename","join","UNDERSCORE_NOT_FOUND_ROUTE_ENTRY","globalNotFoundPath","notFoundPath","require","resolve","keepIndex","hotReloader","nextConfig","pagesBufferLength","hasAppDir","curInvalidator","outputPath","curEntries","compilation","compilationName","name","compiler","hooks","make","tap","getPagePathsFromEntrypoints","entrypoints","pagePaths","entrypoint","values","getRouteFromEntrypoint","done","multiStats","clientStats","serverStats","edgeServerStats","stats","entryNames","COMPILER_NAMES","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","getStaticInfoIncludingLayouts","pageFilePath","isDev","config","added","isServerComponent","rsc","RSC_MODULE_TYPES","pageRuntime","runtime","runDependingOnPageType","pageType","onClient","onServer","edgeServerEntry","onEdgeServer","serverEntry","addedValues","entriesThatShouldBeInvalidated","filter","hasNewEntry","some","routePage","normalizeAppPath","reportTrigger","invalidatePromise","Promise","all","map","reject","once","needsRebuild","rebuildErr","clearTimeout","batcher","Batcher","create","cacheKeyFn","options","JSON","stringify","schedulerFn","scheduleOnNextTick","ensurePage","isAppPageRouteDefinition","batch","onHMR","getHmrServerError","bufferedHmrServerError","addEventListener","data","send","HMR_MESSAGE_SENT_TO_BROWSER","SERVER_ERROR","errorJSON","stringifyError","parsedData","parse","toString","event","HMR_MESSAGE_SENT_TO_SERVER","PING","appDirRoute","MCP_ERROR_STATE_RESPONSE","handleErrorStateResponse","requestId","errorState","MCP_PAGE_METADATA_RESPONSE","handlePageMetadataResponse","segmentTrieData"],"mappings":"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","ignoreList":[0]}
|
|
@@ -88,7 +88,7 @@ function logStartInfo({ networkUrl, appUrl, envInfo, experimentalFeatures, logBu
|
|
|
88
88
|
if (parts.length > 0) {
|
|
89
89
|
versionSuffix = ` (${parts.join(', ')})`;
|
|
90
90
|
}
|
|
91
|
-
_log.bootstrap(`${(0, _picocolors.bold)((0, _picocolors.purple)(`${_log.prefixes.ready} Next.js ${"16.0.
|
|
91
|
+
_log.bootstrap(`${(0, _picocolors.bold)((0, _picocolors.purple)(`${_log.prefixes.ready} Next.js ${"16.0.6"}`))}${versionSuffix}`);
|
|
92
92
|
if (appUrl) {
|
|
93
93
|
_log.bootstrap(`- Local: ${appUrl}`);
|
|
94
94
|
}
|