{"version":3,"sources":["../../../src/server/dev/turbopack-utils.ts"],"sourcesContent":["import type {\n ServerFields,\n SetupOpts,\n} from '../lib/router-utils/setup-dev-bundler'\nimport type {\n Issue,\n TurbopackResult,\n Endpoint,\n RawEntrypoints,\n Update as TurbopackUpdate,\n WrittenEndpoint,\n} from '../../build/swc/types'\nimport {\n type HmrMessageSentToBrowser,\n HMR_MESSAGE_SENT_TO_BROWSER,\n} from './hot-reloader-types'\nimport * as Log from '../../build/output/log'\nimport type { PropagateToWorkersField } from '../lib/router-utils/types'\nimport type { TurbopackManifestLoader } from '../../shared/lib/turbopack/manifest-loader'\nimport type { AppRoute, Entrypoints, PageRoute } from '../../build/swc/types'\nimport {\n type EntryKey,\n getEntryKey,\n splitEntryKey,\n} from '../../shared/lib/turbopack/entry-key'\nimport type ws from 'next/dist/compiled/ws'\nimport { isMetadataRoute } from '../../lib/metadata/is-metadata-route'\nimport type { CustomRoutes } from '../../lib/load-custom-routes'\nimport {\n formatIssue,\n getIssueKey,\n isRelevantWarning,\n processIssues,\n renderStyledStringToErrorAnsi,\n type EntryIssuesMap,\n type TopLevelIssuesMap,\n} from '../../shared/lib/turbopack/utils'\nimport { MIDDLEWARE_FILENAME, PROXY_FILENAME } from '../../lib/constants'\n\nconst onceErrorSet = new Set()\n/**\n * Check if given issue is a warning to be display only once.\n * This mimics behavior of get-page-static-info's warnOnce.\n * @param issue\n * @returns\n */\nfunction shouldEmitOnceWarning(issue: Issue): boolean {\n const { severity, title, stage } = issue\n if (severity === 'warning' && title.value === 'Invalid page configuration') {\n if (onceErrorSet.has(issue)) {\n return false\n }\n onceErrorSet.add(issue)\n }\n if (\n severity === 'warning' &&\n stage === 'config' &&\n renderStyledStringToErrorAnsi(issue.title).includes(\"can't be external\")\n ) {\n if (onceErrorSet.has(issue)) {\n return false\n }\n onceErrorSet.add(issue)\n }\n\n return true\n}\n\n/// Print out an issue to the console which should not block\n/// the build by throwing out or blocking error overlay.\nexport function printNonFatalIssue(issue: Issue) {\n if (isRelevantWarning(issue) && shouldEmitOnceWarning(issue)) {\n Log.warn(formatIssue(issue))\n }\n}\n\nexport function processTopLevelIssues(\n currentTopLevelIssues: TopLevelIssuesMap,\n result: TurbopackResult\n) {\n currentTopLevelIssues.clear()\n\n for (const issue of result.issues) {\n const issueKey = getIssueKey(issue)\n currentTopLevelIssues.set(issueKey, issue)\n }\n}\n\nconst MILLISECONDS_IN_NANOSECOND = BigInt(1_000_000)\n\nexport function msToNs(ms: number): bigint {\n return BigInt(Math.floor(ms)) * MILLISECONDS_IN_NANOSECOND\n}\n\nexport type ChangeSubscriptions = Map<\n EntryKey,\n Promise>\n>\n\nexport type HandleWrittenEndpoint = (\n key: EntryKey,\n result: TurbopackResult,\n forceDeleteCache: boolean\n) => boolean\n\nexport type StartChangeSubscription = (\n key: EntryKey,\n includeIssues: boolean,\n endpoint: Endpoint,\n createMessage: (\n change: TurbopackResult,\n hash: string\n ) => Promise | HmrMessageSentToBrowser | void,\n onError?: (\n e: Error\n ) => Promise | HmrMessageSentToBrowser | void\n) => Promise\n\nexport type StopChangeSubscription = (key: EntryKey) => Promise\n\nexport type SendHmr = (id: string, message: HmrMessageSentToBrowser) => void\n\nexport type StartBuilding = (\n id: string,\n requestUrl: string | undefined,\n forceRebuild: boolean\n) => () => void\n\nexport type ReadyIds = Set\n\nexport type ClientState = {\n clientIssues: EntryIssuesMap\n messages: Map\n turbopackUpdates: TurbopackUpdate[]\n subscriptions: Map>\n}\n\nexport type ClientStateMap = WeakMap\n\n// hooks only used by the dev server.\ntype HandleRouteTypeHooks = {\n handleWrittenEndpoint: HandleWrittenEndpoint\n subscribeToChanges: StartChangeSubscription\n}\n\nexport async function handleRouteType({\n dev,\n page,\n pathname,\n route,\n currentEntryIssues,\n entrypoints,\n manifestLoader,\n readyIds,\n devRewrites,\n productionRewrites,\n hooks,\n logErrors,\n}: {\n dev: boolean\n page: string\n pathname: string\n route: PageRoute | AppRoute\n\n currentEntryIssues: EntryIssuesMap\n entrypoints: Entrypoints\n manifestLoader: TurbopackManifestLoader\n devRewrites: SetupOpts['fsChecker']['rewrites'] | undefined\n productionRewrites: CustomRoutes['rewrites'] | undefined\n logErrors: boolean\n\n readyIds?: ReadyIds // dev\n\n hooks?: HandleRouteTypeHooks // dev\n}) {\n const shouldCreateWebpackStats = process.env.TURBOPACK_STATS != null\n\n switch (route.type) {\n case 'page': {\n const clientKey = getEntryKey('pages', 'client', page)\n const serverKey = getEntryKey('pages', 'server', page)\n\n try {\n // In the best case scenario, Turbopack chunks document, app, page separately in that order,\n // so it can happen that the chunks of document change, but the chunks of app and page\n // don't. We still need to reload the page chunks in that case though, otherwise the version\n // of the document or app component export from the pages template is stale.\n let documentOrAppChanged = false\n if (entrypoints.global.app) {\n const key = getEntryKey('pages', 'server', '_app')\n\n const writtenEndpoint = await entrypoints.global.app.writeToDisk()\n documentOrAppChanged ||=\n hooks?.handleWrittenEndpoint(key, writtenEndpoint, false) ?? false\n processIssues(\n currentEntryIssues,\n key,\n writtenEndpoint,\n false,\n logErrors\n )\n }\n await manifestLoader.loadBuildManifest('_app')\n await manifestLoader.loadPagesManifest('_app')\n\n if (entrypoints.global.document) {\n const key = getEntryKey('pages', 'server', '_document')\n\n const writtenEndpoint =\n await entrypoints.global.document.writeToDisk()\n documentOrAppChanged ||=\n hooks?.handleWrittenEndpoint(key, writtenEndpoint, false) ?? false\n processIssues(\n currentEntryIssues,\n key,\n writtenEndpoint,\n false,\n logErrors\n )\n }\n await manifestLoader.loadPagesManifest('_document')\n\n const writtenEndpoint = await route.htmlEndpoint.writeToDisk()\n hooks?.handleWrittenEndpoint(\n serverKey,\n writtenEndpoint,\n documentOrAppChanged\n )\n\n const type = writtenEndpoint?.type\n\n await manifestLoader.loadClientBuildManifest(page)\n await manifestLoader.loadBuildManifest(page)\n await manifestLoader.loadPagesManifest(page)\n if (type === 'edge') {\n await manifestLoader.loadMiddlewareManifest(page, 'pages')\n } else {\n manifestLoader.deleteMiddlewareManifest(serverKey)\n }\n await manifestLoader.loadFontManifest('/_app', 'pages')\n await manifestLoader.loadFontManifest(page, 'pages')\n\n if (shouldCreateWebpackStats) {\n await manifestLoader.loadWebpackStats(page, 'pages')\n }\n\n manifestLoader.writeManifests({\n devRewrites,\n productionRewrites,\n entrypoints,\n })\n\n processIssues(\n currentEntryIssues,\n serverKey,\n writtenEndpoint,\n false,\n logErrors\n )\n } finally {\n if (dev) {\n // TODO subscriptions should only be caused by the WebSocket connections\n // otherwise we don't known when to unsubscribe and this leaking\n hooks?.subscribeToChanges(\n serverKey,\n false,\n route.dataEndpoint,\n () => {\n // Report the next compilation again\n readyIds?.delete(pathname)\n return {\n type: HMR_MESSAGE_SENT_TO_BROWSER.SERVER_ONLY_CHANGES,\n pages: [page],\n }\n },\n (e) => {\n return {\n type: HMR_MESSAGE_SENT_TO_BROWSER.RELOAD_PAGE,\n data: `error in ${page} data subscription: ${e}`,\n }\n }\n )\n hooks?.subscribeToChanges(\n clientKey,\n false,\n route.htmlEndpoint,\n () => {\n return {\n type: HMR_MESSAGE_SENT_TO_BROWSER.CLIENT_CHANGES,\n }\n },\n (e) => {\n return {\n type: HMR_MESSAGE_SENT_TO_BROWSER.RELOAD_PAGE,\n data: `error in ${page} html subscription: ${e}`,\n }\n }\n )\n if (entrypoints.global.document) {\n hooks?.subscribeToChanges(\n getEntryKey('pages', 'server', '_document'),\n false,\n entrypoints.global.document,\n () => {\n return {\n type: HMR_MESSAGE_SENT_TO_BROWSER.RELOAD_PAGE,\n data: '_document has changed (page route)',\n }\n },\n (e) => {\n return {\n type: HMR_MESSAGE_SENT_TO_BROWSER.RELOAD_PAGE,\n data: `error in _document subscription (page route): ${e}`,\n }\n }\n )\n }\n }\n }\n\n break\n }\n case 'page-api': {\n const key = getEntryKey('pages', 'server', page)\n\n const writtenEndpoint = await route.endpoint.writeToDisk()\n hooks?.handleWrittenEndpoint(key, writtenEndpoint, false)\n\n const type = writtenEndpoint.type\n\n await manifestLoader.loadPagesManifest(page)\n if (type === 'edge') {\n await manifestLoader.loadMiddlewareManifest(page, 'pages')\n } else {\n manifestLoader.deleteMiddlewareManifest(key)\n }\n\n manifestLoader.writeManifests({\n devRewrites,\n productionRewrites,\n entrypoints,\n })\n\n processIssues(currentEntryIssues, key, writtenEndpoint, true, logErrors)\n\n break\n }\n case 'app-page': {\n const key = getEntryKey('app', 'server', page)\n\n const writtenEndpoint = await route.htmlEndpoint.writeToDisk()\n hooks?.handleWrittenEndpoint(key, writtenEndpoint, false)\n\n if (dev) {\n // TODO subscriptions should only be caused by the WebSocket connections\n // otherwise we don't known when to unsubscribe and this leaking\n hooks?.subscribeToChanges(\n key,\n true,\n route.rscEndpoint,\n (change, hash) => {\n if (change.issues.some((issue) => issue.severity === 'error')) {\n // Ignore any updates that has errors\n // There will be another update without errors eventually\n return\n }\n // Report the next compilation again\n readyIds?.delete(pathname)\n return {\n type: HMR_MESSAGE_SENT_TO_BROWSER.SERVER_COMPONENT_CHANGES,\n hash,\n }\n },\n (e) => {\n return {\n type: HMR_MESSAGE_SENT_TO_BROWSER.RELOAD_PAGE,\n data: `error in ${page} app-page subscription: ${e}`,\n }\n }\n )\n }\n\n const type = writtenEndpoint.type\n\n if (type === 'edge') {\n manifestLoader.loadMiddlewareManifest(page, 'app')\n } else {\n manifestLoader.deleteMiddlewareManifest(key)\n }\n\n manifestLoader.loadBuildManifest(page, 'app')\n manifestLoader.loadAppPathsManifest(page)\n manifestLoader.loadActionManifest(page)\n manifestLoader.loadFontManifest(page, 'app')\n\n if (shouldCreateWebpackStats) {\n manifestLoader.loadWebpackStats(page, 'app')\n }\n\n manifestLoader.writeManifests({\n devRewrites,\n productionRewrites,\n entrypoints,\n })\n\n processIssues(currentEntryIssues, key, writtenEndpoint, dev, logErrors)\n\n break\n }\n case 'app-route': {\n const key = getEntryKey('app', 'server', page)\n\n const writtenEndpoint = await route.endpoint.writeToDisk()\n hooks?.handleWrittenEndpoint(key, writtenEndpoint, false)\n\n const type = writtenEndpoint.type\n\n manifestLoader.loadAppPathsManifest(page)\n\n if (type === 'edge') {\n manifestLoader.loadMiddlewareManifest(page, 'app')\n } else {\n manifestLoader.deleteMiddlewareManifest(key)\n }\n\n manifestLoader.writeManifests({\n devRewrites,\n productionRewrites,\n entrypoints,\n })\n processIssues(currentEntryIssues, key, writtenEndpoint, true, logErrors)\n\n break\n }\n default: {\n throw new Error(`unknown route type ${(route as any).type} for ${page}`)\n }\n }\n}\n\n/**\n * Maintains a mapping between entrypoins and the corresponding client asset paths.\n */\nexport class AssetMapper {\n private entryMap: Map> = new Map()\n private assetMap: Map> = new Map()\n\n /**\n * Overrides asset paths for a key and updates the mapping from path to key.\n *\n * @param key\n * @param assetPaths asset paths relative to the .next directory\n */\n setPathsForKey(key: EntryKey, assetPaths: string[]): void {\n this.delete(key)\n\n const newAssetPaths = new Set(assetPaths)\n this.entryMap.set(key, newAssetPaths)\n\n for (const assetPath of newAssetPaths) {\n let assetPathKeys = this.assetMap.get(assetPath)\n if (!assetPathKeys) {\n assetPathKeys = new Set()\n this.assetMap.set(assetPath, assetPathKeys)\n }\n\n assetPathKeys!.add(key)\n }\n }\n\n /**\n * Deletes the key and any asset only referenced by this key.\n *\n * @param key\n */\n delete(key: EntryKey) {\n for (const assetPath of this.getAssetPathsByKey(key)) {\n const assetPathKeys = this.assetMap.get(assetPath)\n\n assetPathKeys?.delete(key)\n\n if (!assetPathKeys?.size) {\n this.assetMap.delete(assetPath)\n }\n }\n\n this.entryMap.delete(key)\n }\n\n getAssetPathsByKey(key: EntryKey): string[] {\n return Array.from(this.entryMap.get(key) ?? [])\n }\n\n getKeysByAsset(path: string): EntryKey[] {\n return Array.from(this.assetMap.get(path) ?? [])\n }\n\n keys(): IterableIterator {\n return this.entryMap.keys()\n }\n}\n\nexport function hasEntrypointForKey(\n entrypoints: Entrypoints,\n key: EntryKey,\n assetMapper: AssetMapper | undefined\n): boolean {\n const { type, page } = splitEntryKey(key)\n\n switch (type) {\n case 'app':\n return entrypoints.app.has(page)\n case 'pages':\n switch (page) {\n case '_app':\n return entrypoints.global.app != null\n case '_document':\n return entrypoints.global.document != null\n case '_error':\n return entrypoints.global.error != null\n default:\n return entrypoints.page.has(page)\n }\n case 'root':\n switch (page) {\n case 'middleware':\n return entrypoints.global.middleware != null\n case 'instrumentation':\n return entrypoints.global.instrumentation != null\n default:\n return false\n }\n case 'assets':\n if (!assetMapper) {\n return false\n }\n\n return assetMapper\n .getKeysByAsset(page)\n .some((pageKey) =>\n hasEntrypointForKey(entrypoints, pageKey, assetMapper)\n )\n default: {\n // validation that we covered all cases, this should never run.\n const _: never = type\n return false\n }\n }\n}\n\n// hooks only used by the dev server.\ntype HandleEntrypointsHooks = {\n handleWrittenEndpoint: HandleWrittenEndpoint\n propagateServerField: (\n field: PropagateToWorkersField,\n args: any\n ) => Promise\n sendHmr: SendHmr\n startBuilding: StartBuilding\n subscribeToChanges: StartChangeSubscription\n unsubscribeFromChanges: StopChangeSubscription\n unsubscribeFromHmrEvents: (client: ws, id: string) => void\n}\n\ntype HandleEntrypointsDevOpts = {\n assetMapper: AssetMapper\n changeSubscriptions: ChangeSubscriptions\n clients: Array\n clientStates: ClientStateMap\n serverFields: ServerFields\n\n hooks: HandleEntrypointsHooks\n}\n\nexport async function handleEntrypoints({\n entrypoints,\n\n currentEntrypoints,\n\n currentEntryIssues,\n manifestLoader,\n devRewrites,\n logErrors,\n dev,\n}: {\n entrypoints: TurbopackResult\n\n currentEntrypoints: Entrypoints\n\n currentEntryIssues: EntryIssuesMap\n manifestLoader: TurbopackManifestLoader\n devRewrites: SetupOpts['fsChecker']['rewrites'] | undefined\n productionRewrites: CustomRoutes['rewrites'] | undefined\n logErrors: boolean\n\n dev: HandleEntrypointsDevOpts\n}) {\n currentEntrypoints.global.app = entrypoints.pagesAppEndpoint\n currentEntrypoints.global.document = entrypoints.pagesDocumentEndpoint\n currentEntrypoints.global.error = entrypoints.pagesErrorEndpoint\n\n currentEntrypoints.global.instrumentation = entrypoints.instrumentation\n\n currentEntrypoints.page.clear()\n currentEntrypoints.app.clear()\n\n for (const [pathname, route] of entrypoints.routes) {\n switch (route.type) {\n case 'page':\n case 'page-api':\n currentEntrypoints.page.set(pathname, route)\n break\n case 'app-page': {\n route.pages.forEach((page) => {\n currentEntrypoints.app.set(page.originalName, {\n type: 'app-page',\n ...page,\n })\n })\n break\n }\n case 'app-route': {\n currentEntrypoints.app.set(route.originalName, route)\n break\n }\n case 'conflict':\n Log.info(`skipping ${pathname} (${route.type})`)\n break\n default:\n route satisfies never\n }\n }\n\n if (dev) {\n await handleEntrypointsDevCleanup({\n currentEntryIssues,\n currentEntrypoints,\n\n ...dev,\n })\n }\n\n const { middleware, instrumentation } = entrypoints\n\n // We check for explicit true/false, since it's initialized to\n // undefined during the first loop (middlewareChanges event is\n // unnecessary during the first serve)\n if (currentEntrypoints.global.middleware && !middleware) {\n const key = getEntryKey('root', 'server', 'middleware')\n // Went from middleware to no middleware\n await dev?.hooks.unsubscribeFromChanges(key)\n currentEntryIssues.delete(key)\n dev.hooks.sendHmr('middleware', {\n type: HMR_MESSAGE_SENT_TO_BROWSER.MIDDLEWARE_CHANGES,\n })\n } else if (!currentEntrypoints.global.middleware && middleware) {\n // Went from no middleware to middleware\n dev.hooks.sendHmr('middleware', {\n type: HMR_MESSAGE_SENT_TO_BROWSER.MIDDLEWARE_CHANGES,\n })\n }\n\n currentEntrypoints.global.middleware = middleware\n\n if (instrumentation) {\n const processInstrumentation = async (\n name: string,\n prop: 'nodeJs' | 'edge'\n ) => {\n const prettyName = {\n nodeJs: 'Node.js',\n edge: 'Edge',\n }\n const finishBuilding = dev.hooks.startBuilding(\n `instrumentation ${prettyName[prop]}`,\n undefined,\n true\n )\n const key = getEntryKey('root', 'server', name)\n\n const writtenEndpoint = await instrumentation[prop].writeToDisk()\n dev.hooks.handleWrittenEndpoint(key, writtenEndpoint, false)\n processIssues(currentEntryIssues, key, writtenEndpoint, false, logErrors)\n finishBuilding()\n }\n await processInstrumentation('instrumentation.nodeJs', 'nodeJs')\n await processInstrumentation('instrumentation.edge', 'edge')\n await manifestLoader.loadMiddlewareManifest(\n 'instrumentation',\n 'instrumentation'\n )\n manifestLoader.writeManifests({\n devRewrites,\n productionRewrites: undefined,\n entrypoints: currentEntrypoints,\n })\n\n dev.serverFields.actualInstrumentationHookFile = '/instrumentation'\n await dev.hooks.propagateServerField(\n 'actualInstrumentationHookFile',\n dev.serverFields.actualInstrumentationHookFile\n )\n } else {\n dev.serverFields.actualInstrumentationHookFile = undefined\n await dev.hooks.propagateServerField(\n 'actualInstrumentationHookFile',\n dev.serverFields.actualInstrumentationHookFile\n )\n }\n\n if (middleware) {\n const key = getEntryKey('root', 'server', 'middleware')\n\n const endpoint = middleware.endpoint\n const triggerName = middleware.isProxy\n ? PROXY_FILENAME\n : MIDDLEWARE_FILENAME\n\n async function processMiddleware() {\n const finishBuilding = dev.hooks.startBuilding(\n triggerName,\n undefined,\n true\n )\n const writtenEndpoint = await endpoint.writeToDisk()\n dev.hooks.handleWrittenEndpoint(key, writtenEndpoint, false)\n processIssues(currentEntryIssues, key, writtenEndpoint, false, logErrors)\n await manifestLoader.loadMiddlewareManifest('middleware', 'middleware')\n const middlewareConfig =\n manifestLoader.getMiddlewareManifest(key)?.middleware['/']\n\n if (dev && middlewareConfig) {\n dev.serverFields.middleware = {\n match: null as any,\n page: '/',\n matchers: middlewareConfig.matchers,\n }\n }\n finishBuilding()\n }\n await processMiddleware()\n\n if (dev) {\n dev?.hooks.subscribeToChanges(\n key,\n false,\n endpoint,\n async () => {\n const finishBuilding = dev.hooks.startBuilding(\n triggerName,\n undefined,\n true\n )\n await processMiddleware()\n await dev.hooks.propagateServerField(\n 'actualMiddlewareFile',\n dev.serverFields.actualMiddlewareFile\n )\n await dev.hooks.propagateServerField(\n 'middleware',\n dev.serverFields.middleware\n )\n manifestLoader.writeManifests({\n devRewrites,\n productionRewrites: undefined,\n entrypoints: currentEntrypoints,\n })\n\n finishBuilding?.()\n return {\n type: HMR_MESSAGE_SENT_TO_BROWSER.MIDDLEWARE_CHANGES,\n }\n },\n () => {\n return {\n type: HMR_MESSAGE_SENT_TO_BROWSER.MIDDLEWARE_CHANGES,\n }\n }\n )\n }\n } else {\n manifestLoader.deleteMiddlewareManifest(\n getEntryKey('root', 'server', 'middleware')\n )\n dev.serverFields.actualMiddlewareFile = undefined\n dev.serverFields.middleware = undefined\n }\n\n await dev.hooks.propagateServerField(\n 'actualMiddlewareFile',\n dev.serverFields.actualMiddlewareFile\n )\n await dev.hooks.propagateServerField(\n 'middleware',\n dev.serverFields.middleware\n )\n}\n\nasync function handleEntrypointsDevCleanup({\n currentEntryIssues,\n currentEntrypoints,\n\n assetMapper,\n changeSubscriptions,\n clients,\n clientStates,\n\n hooks,\n}: {\n currentEntrypoints: Entrypoints\n currentEntryIssues: EntryIssuesMap\n} & HandleEntrypointsDevOpts) {\n // this needs to be first as `hasEntrypointForKey` uses the `assetMapper`\n for (const key of assetMapper.keys()) {\n if (!hasEntrypointForKey(currentEntrypoints, key, assetMapper)) {\n assetMapper.delete(key)\n }\n }\n\n for (const key of changeSubscriptions.keys()) {\n // middleware is handled separately\n if (!hasEntrypointForKey(currentEntrypoints, key, assetMapper)) {\n await hooks.unsubscribeFromChanges(key)\n }\n }\n\n for (const [key] of currentEntryIssues) {\n if (!hasEntrypointForKey(currentEntrypoints, key, assetMapper)) {\n currentEntryIssues.delete(key)\n }\n }\n\n for (const client of clients) {\n const state = clientStates.get(client)\n if (!state) {\n continue\n }\n\n for (const key of state.clientIssues.keys()) {\n if (!hasEntrypointForKey(currentEntrypoints, key, assetMapper)) {\n state.clientIssues.delete(key)\n }\n }\n\n for (const id of state.subscriptions.keys()) {\n if (\n !hasEntrypointForKey(\n currentEntrypoints,\n getEntryKey('assets', 'client', id),\n assetMapper\n )\n ) {\n hooks.unsubscribeFromHmrEvents(client, id)\n }\n }\n }\n}\n\nexport async function handlePagesErrorRoute({\n currentEntryIssues,\n entrypoints,\n manifestLoader,\n devRewrites,\n productionRewrites,\n logErrors,\n hooks,\n}: {\n currentEntryIssues: EntryIssuesMap\n entrypoints: Entrypoints\n manifestLoader: TurbopackManifestLoader\n devRewrites: SetupOpts['fsChecker']['rewrites'] | undefined\n productionRewrites: CustomRoutes['rewrites'] | undefined\n logErrors: boolean\n hooks: HandleRouteTypeHooks\n}) {\n if (entrypoints.global.app) {\n const key = getEntryKey('pages', 'server', '_app')\n\n const writtenEndpoint = await entrypoints.global.app.writeToDisk()\n hooks.handleWrittenEndpoint(key, writtenEndpoint, false)\n hooks.subscribeToChanges(\n key,\n false,\n entrypoints.global.app,\n () => {\n // There's a special case for this in `../client/page-bootstrap.ts`.\n // https://github.com/vercel/next.js/blob/08d7a7e5189a835f5dcb82af026174e587575c0e/packages/next/src/client/page-bootstrap.ts#L69-L71\n return {\n type: HMR_MESSAGE_SENT_TO_BROWSER.CLIENT_CHANGES,\n }\n },\n () => {\n return {\n type: HMR_MESSAGE_SENT_TO_BROWSER.RELOAD_PAGE,\n data: '_app has changed (error route)',\n }\n }\n )\n processIssues(currentEntryIssues, key, writtenEndpoint, false, logErrors)\n }\n await manifestLoader.loadBuildManifest('_app')\n await manifestLoader.loadPagesManifest('_app')\n await manifestLoader.loadFontManifest('_app')\n\n if (entrypoints.global.document) {\n const key = getEntryKey('pages', 'server', '_document')\n\n const writtenEndpoint = await entrypoints.global.document.writeToDisk()\n hooks.handleWrittenEndpoint(key, writtenEndpoint, false)\n hooks.subscribeToChanges(\n key,\n false,\n entrypoints.global.document,\n () => {\n return {\n type: HMR_MESSAGE_SENT_TO_BROWSER.RELOAD_PAGE,\n data: '_document has changed (error route)',\n }\n },\n (e) => {\n return {\n type: HMR_MESSAGE_SENT_TO_BROWSER.RELOAD_PAGE,\n data: `error in _document subscription (error route): ${e}`,\n }\n }\n )\n processIssues(currentEntryIssues, key, writtenEndpoint, false, logErrors)\n }\n await manifestLoader.loadPagesManifest('_document')\n\n if (entrypoints.global.error) {\n const key = getEntryKey('pages', 'server', '_error')\n\n const writtenEndpoint = await entrypoints.global.error.writeToDisk()\n hooks.handleWrittenEndpoint(key, writtenEndpoint, false)\n hooks.subscribeToChanges(\n key,\n false,\n entrypoints.global.error,\n () => {\n // There's a special case for this in `../client/page-bootstrap.ts`.\n // https://github.com/vercel/next.js/blob/08d7a7e5189a835f5dcb82af026174e587575c0e/packages/next/src/client/page-bootstrap.ts#L69-L71\n return {\n type: HMR_MESSAGE_SENT_TO_BROWSER.CLIENT_CHANGES,\n }\n },\n (e) => {\n return {\n type: HMR_MESSAGE_SENT_TO_BROWSER.RELOAD_PAGE,\n data: `error in _error subscription: ${e}`,\n }\n }\n )\n processIssues(currentEntryIssues, key, writtenEndpoint, false, logErrors)\n }\n await manifestLoader.loadClientBuildManifest('_error')\n await manifestLoader.loadBuildManifest('_error')\n await manifestLoader.loadPagesManifest('_error')\n await manifestLoader.loadFontManifest('_error')\n\n manifestLoader.writeManifests({\n devRewrites,\n productionRewrites,\n entrypoints,\n })\n}\n\nexport function removeRouteSuffix(route: string): string {\n return route.replace(/\\/route$/, '')\n}\n\nexport function addRouteSuffix(route: string): string {\n return route + '/route'\n}\n\nexport function addMetadataIdToRoute(route: string): string {\n return route + '/[__metadata_id__]'\n}\n\n// Since turbopack will create app pages/route entries based on the structure,\n// which means the entry keys are based on file names.\n// But for special metadata conventions we'll change the page/pathname to a different path.\n// So we need this helper to map the new path back to original turbopack entry key.\nexport function normalizedPageToTurbopackStructureRoute(\n route: string,\n ext: string | false\n): string {\n let entrypointKey = route\n if (isMetadataRoute(entrypointKey)) {\n entrypointKey = entrypointKey.endsWith('/route')\n ? entrypointKey.slice(0, -'/route'.length)\n : entrypointKey\n\n if (ext) {\n if (entrypointKey.endsWith('/[__metadata_id__]')) {\n entrypointKey = entrypointKey.slice(0, -'/[__metadata_id__]'.length)\n }\n if (entrypointKey.endsWith('/sitemap.xml') && ext !== '.xml') {\n // For dynamic sitemap route, remove the extension\n entrypointKey = entrypointKey.slice(0, -'.xml'.length)\n }\n }\n entrypointKey = entrypointKey + '/route'\n }\n return entrypointKey\n}\n"],"names":["AssetMapper","addMetadataIdToRoute","addRouteSuffix","handleEntrypoints","handlePagesErrorRoute","handleRouteType","hasEntrypointForKey","msToNs","normalizedPageToTurbopackStructureRoute","printNonFatalIssue","processTopLevelIssues","removeRouteSuffix","onceErrorSet","Set","shouldEmitOnceWarning","issue","severity","title","stage","value","has","add","renderStyledStringToErrorAnsi","includes","isRelevantWarning","Log","warn","formatIssue","currentTopLevelIssues","result","clear","issues","issueKey","getIssueKey","set","MILLISECONDS_IN_NANOSECOND","BigInt","ms","Math","floor","dev","page","pathname","route","currentEntryIssues","entrypoints","manifestLoader","readyIds","devRewrites","productionRewrites","hooks","logErrors","shouldCreateWebpackStats","process","env","TURBOPACK_STATS","type","clientKey","getEntryKey","serverKey","documentOrAppChanged","global","app","key","writtenEndpoint","writeToDisk","handleWrittenEndpoint","processIssues","loadBuildManifest","loadPagesManifest","document","htmlEndpoint","loadClientBuildManifest","loadMiddlewareManifest","deleteMiddlewareManifest","loadFontManifest","loadWebpackStats","writeManifests","subscribeToChanges","dataEndpoint","delete","HMR_MESSAGE_SENT_TO_BROWSER","SERVER_ONLY_CHANGES","pages","e","RELOAD_PAGE","data","CLIENT_CHANGES","endpoint","rscEndpoint","change","hash","some","SERVER_COMPONENT_CHANGES","loadAppPathsManifest","loadActionManifest","Error","setPathsForKey","assetPaths","newAssetPaths","entryMap","assetPath","assetPathKeys","assetMap","get","getAssetPathsByKey","size","Array","from","getKeysByAsset","path","keys","Map","assetMapper","splitEntryKey","error","middleware","instrumentation","pageKey","_","currentEntrypoints","pagesAppEndpoint","pagesDocumentEndpoint","pagesErrorEndpoint","routes","forEach","originalName","info","handleEntrypointsDevCleanup","unsubscribeFromChanges","sendHmr","MIDDLEWARE_CHANGES","processInstrumentation","name","prop","prettyName","nodeJs","edge","finishBuilding","startBuilding","undefined","serverFields","actualInstrumentationHookFile","propagateServerField","triggerName","isProxy","PROXY_FILENAME","MIDDLEWARE_FILENAME","processMiddleware","middlewareConfig","getMiddlewareManifest","match","matchers","actualMiddlewareFile","changeSubscriptions","clients","clientStates","client","state","clientIssues","id","subscriptions","unsubscribeFromHmrEvents","replace","ext","entrypointKey","isMetadataRoute","endsWith","slice","length"],"mappings":"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","ignoreList":[0]}