next 15.6.0-canary.33 → 15.6.0-canary.34
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-config.js +2 -2
- package/dist/client/app-bootstrap.js +1 -1
- package/dist/client/index.js +1 -1
- package/dist/compiled/next-server/pages-api.runtime.dev.js +1 -1
- package/dist/compiled/next-server/pages-api.runtime.dev.js.map +1 -1
- package/dist/compiled/next-server/pages.runtime.dev.js +1 -1
- package/dist/compiled/next-server/pages.runtime.dev.js.map +1 -1
- package/dist/esm/build/index.js +3 -3
- package/dist/esm/build/swc/index.js +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-turbopack.js +1 -1
- package/dist/esm/server/dev/hot-reloader-webpack.js +1 -1
- package/dist/esm/server/lib/app-info-log.js +1 -1
- package/dist/esm/server/lib/start-server.js +1 -1
- package/dist/esm/shared/lib/canary-only.js +1 -1
- package/dist/esm/shared/lib/turbopack/manifest-loader.js +131 -46
- package/dist/esm/shared/lib/turbopack/manifest-loader.js.map +1 -1
- package/dist/server/dev/hot-reloader-turbopack.js +1 -1
- package/dist/server/dev/hot-reloader-webpack.js +1 -1
- package/dist/server/lib/app-info-log.js +1 -1
- package/dist/server/lib/start-server.js +1 -1
- package/dist/shared/lib/canary-only.js +1 -1
- package/dist/shared/lib/turbopack/manifest-loader.d.ts +4 -3
- package/dist/shared/lib/turbopack/manifest-loader.js +131 -46
- package/dist/shared/lib/turbopack/manifest-loader.js.map +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 +15 -15
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/shared/lib/turbopack/manifest-loader.ts"],"sourcesContent":["import type {\n EdgeFunctionDefinition,\n MiddlewareManifest,\n} from '../../../build/webpack/plugins/middleware-plugin'\nimport type {\n StatsAsset,\n StatsChunk,\n StatsChunkGroup,\n StatsModule,\n StatsCompilation as WebpackStats,\n} from 'webpack'\nimport type { BuildManifest } from '../../../server/get-page-files'\nimport type { PagesManifest } from '../../../build/webpack/plugins/pages-manifest-plugin'\nimport type { ActionManifest } from '../../../build/webpack/plugins/flight-client-entry-plugin'\nimport type { NextFontManifest } from '../../../build/webpack/plugins/next-font-manifest-plugin'\nimport type { REACT_LOADABLE_MANIFEST } from '../constants'\nimport {\n APP_PATHS_MANIFEST,\n BUILD_MANIFEST,\n INTERCEPTION_ROUTE_REWRITE_MANIFEST,\n MIDDLEWARE_BUILD_MANIFEST,\n MIDDLEWARE_MANIFEST,\n NEXT_FONT_MANIFEST,\n PAGES_MANIFEST,\n SERVER_REFERENCE_MANIFEST,\n TURBOPACK_CLIENT_BUILD_MANIFEST,\n TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST,\n WEBPACK_STATS,\n} from '../constants'\nimport { join, posix } from 'path'\nimport { readFileSync } from 'fs'\nimport type { SetupOpts } from '../../../server/lib/router-utils/setup-dev-bundler'\nimport { deleteCache } from '../../../server/dev/require-cache'\nimport { writeFileAtomic } from '../../../lib/fs/write-atomic'\nimport { isInterceptionRouteRewrite } from '../../../lib/generate-interception-routes-rewrites'\nimport getAssetPathFromRoute from '../router/utils/get-asset-path-from-route'\nimport { getEntryKey, type EntryKey } from './entry-key'\nimport type { CustomRoutes } from '../../../lib/load-custom-routes'\nimport { getSortedRoutes } from '../router/utils'\nimport { existsSync } from 'fs'\nimport {\n addMetadataIdToRoute,\n addRouteSuffix,\n removeRouteSuffix,\n} from '../../../server/dev/turbopack-utils'\nimport { tryToParsePath } from '../../../lib/try-to-parse-path'\nimport { safePathToRegexp } from '../router/utils/route-match-utils'\nimport type { Entrypoints } from '../../../build/swc/types'\nimport {\n normalizeRewritesForBuildManifest,\n type ClientBuildManifest,\n srcEmptySsgManifest,\n processRoute,\n createEdgeRuntimeManifest,\n} from '../../../build/webpack/plugins/build-manifest-plugin-utils'\n\ninterface InstrumentationDefinition {\n files: string[]\n name: 'instrumentation'\n}\n\ntype TurbopackMiddlewareManifest = MiddlewareManifest & {\n instrumentation?: InstrumentationDefinition\n}\n\ntype ManifestName =\n | typeof MIDDLEWARE_MANIFEST\n | typeof BUILD_MANIFEST\n | typeof PAGES_MANIFEST\n | typeof WEBPACK_STATS\n | typeof APP_PATHS_MANIFEST\n | `${typeof SERVER_REFERENCE_MANIFEST}.json`\n | `${typeof NEXT_FONT_MANIFEST}.json`\n | typeof REACT_LOADABLE_MANIFEST\n | typeof TURBOPACK_CLIENT_BUILD_MANIFEST\n\nconst getManifestPath = (\n page: string,\n distDir: string,\n name: ManifestName,\n type: string,\n firstCall: boolean\n) => {\n let manifestPath = posix.join(\n distDir,\n `server`,\n type,\n type === 'middleware' || type === 'instrumentation'\n ? ''\n : type === 'app'\n ? page\n : getAssetPathFromRoute(page),\n name\n )\n\n if (firstCall) {\n const isSitemapRoute = /[\\\\/]sitemap(.xml)?\\/route$/.test(page)\n // Check the ambiguity of /sitemap and /sitemap.xml\n if (isSitemapRoute && !existsSync(manifestPath)) {\n manifestPath = getManifestPath(\n page.replace(/\\/sitemap\\/route$/, '/sitemap.xml/route'),\n distDir,\n name,\n type,\n false\n )\n }\n // existsSync is faster than using the async version\n if (!existsSync(manifestPath) && page.endsWith('/route')) {\n // TODO: Improve implementation of metadata routes, currently it requires this extra check for the variants of the files that can be written.\n let metadataPage = addRouteSuffix(\n addMetadataIdToRoute(removeRouteSuffix(page))\n )\n manifestPath = getManifestPath(metadataPage, distDir, name, type, false)\n }\n }\n\n return manifestPath\n}\n\nfunction readPartialManifest<T>(\n distDir: string,\n name: ManifestName,\n pageName: string,\n type: 'pages' | 'app' | 'middleware' | 'instrumentation' = 'pages'\n): T {\n const page = pageName\n const manifestPath = getManifestPath(page, distDir, name, type, true)\n return JSON.parse(readFileSync(posix.join(manifestPath), 'utf-8')) as T\n}\n\nexport class TurbopackManifestLoader {\n private actionManifests: Map<EntryKey, ActionManifest> = new Map()\n private appPathsManifests: Map<EntryKey, PagesManifest> = new Map()\n private buildManifests: Map<EntryKey, BuildManifest> = new Map()\n private clientBuildManifests: Map<EntryKey, ClientBuildManifest> = new Map()\n private fontManifests: Map<EntryKey, NextFontManifest> = new Map()\n private middlewareManifests: Map<EntryKey, TurbopackMiddlewareManifest> =\n new Map()\n private pagesManifests: Map<string, PagesManifest> = new Map()\n private webpackStats: Map<EntryKey, WebpackStats> = new Map()\n private encryptionKey: string\n\n private readonly distDir: string\n private readonly buildId: string\n\n constructor({\n distDir,\n buildId,\n encryptionKey,\n }: {\n buildId: string\n distDir: string\n encryptionKey: string\n }) {\n this.distDir = distDir\n this.buildId = buildId\n this.encryptionKey = encryptionKey\n }\n\n delete(key: EntryKey) {\n this.actionManifests.delete(key)\n this.appPathsManifests.delete(key)\n this.buildManifests.delete(key)\n this.clientBuildManifests.delete(key)\n this.fontManifests.delete(key)\n this.middlewareManifests.delete(key)\n this.pagesManifests.delete(key)\n this.webpackStats.delete(key)\n }\n\n loadActionManifest(pageName: string): void {\n this.actionManifests.set(\n getEntryKey('app', 'server', pageName),\n readPartialManifest(\n this.distDir,\n `${SERVER_REFERENCE_MANIFEST}.json`,\n pageName,\n 'app'\n )\n )\n }\n\n private mergeActionManifests(manifests: Iterable<ActionManifest>) {\n type ActionEntries = ActionManifest['edge' | 'node']\n const manifest: ActionManifest = {\n node: {},\n edge: {},\n encryptionKey: this.encryptionKey,\n }\n\n function mergeActionIds(\n actionEntries: ActionEntries,\n other: ActionEntries\n ): void {\n for (const key in other) {\n const action = (actionEntries[key] ??= {\n workers: {},\n layer: {},\n })\n action.filename = other[key].filename\n action.exportedName = other[key].exportedName\n Object.assign(action.workers, other[key].workers)\n Object.assign(action.layer, other[key].layer)\n }\n }\n\n for (const m of manifests) {\n mergeActionIds(manifest.node, m.node)\n mergeActionIds(manifest.edge, m.edge)\n }\n for (const key in manifest.node) {\n const entry = manifest.node[key]\n entry.workers = sortObjectByKey(entry.workers)\n entry.layer = sortObjectByKey(entry.layer)\n }\n for (const key in manifest.edge) {\n const entry = manifest.edge[key]\n entry.workers = sortObjectByKey(entry.workers)\n entry.layer = sortObjectByKey(entry.layer)\n }\n\n return manifest\n }\n\n private writeActionManifest(): void {\n const actionManifest = this.mergeActionManifests(\n this.actionManifests.values()\n )\n const actionManifestJsonPath = join(\n this.distDir,\n 'server',\n `${SERVER_REFERENCE_MANIFEST}.json`\n )\n const actionManifestJsPath = join(\n this.distDir,\n 'server',\n `${SERVER_REFERENCE_MANIFEST}.js`\n )\n const json = JSON.stringify(actionManifest, null, 2)\n deleteCache(actionManifestJsonPath)\n deleteCache(actionManifestJsPath)\n writeFileAtomic(actionManifestJsonPath, json)\n writeFileAtomic(\n actionManifestJsPath,\n `self.__RSC_SERVER_MANIFEST=${JSON.stringify(json)}`\n )\n }\n\n loadAppPathsManifest(pageName: string): void {\n this.appPathsManifests.set(\n getEntryKey('app', 'server', pageName),\n readPartialManifest(this.distDir, APP_PATHS_MANIFEST, pageName, 'app')\n )\n }\n\n private writeAppPathsManifest(): void {\n const appPathsManifest = this.mergePagesManifests(\n this.appPathsManifests.values()\n )\n const appPathsManifestPath = join(\n this.distDir,\n 'server',\n APP_PATHS_MANIFEST\n )\n deleteCache(appPathsManifestPath)\n writeFileAtomic(\n appPathsManifestPath,\n JSON.stringify(appPathsManifest, null, 2)\n )\n }\n\n private writeWebpackStats(): void {\n const webpackStats = this.mergeWebpackStats(this.webpackStats.values())\n const path = join(this.distDir, 'server', WEBPACK_STATS)\n deleteCache(path)\n writeFileAtomic(path, JSON.stringify(webpackStats, null, 2))\n }\n\n loadBuildManifest(pageName: string, type: 'app' | 'pages' = 'pages'): void {\n this.buildManifests.set(\n getEntryKey(type, 'server', pageName),\n readPartialManifest(this.distDir, BUILD_MANIFEST, pageName, type)\n )\n }\n\n loadClientBuildManifest(\n pageName: string,\n type: 'app' | 'pages' = 'pages'\n ): void {\n this.clientBuildManifests.set(\n getEntryKey(type, 'server', pageName),\n readPartialManifest(\n this.distDir,\n TURBOPACK_CLIENT_BUILD_MANIFEST,\n pageName,\n type\n )\n )\n }\n\n loadWebpackStats(pageName: string, type: 'app' | 'pages' = 'pages'): void {\n this.webpackStats.set(\n getEntryKey(type, 'client', pageName),\n readPartialManifest(this.distDir, WEBPACK_STATS, pageName, type)\n )\n }\n\n private mergeWebpackStats(statsFiles: Iterable<WebpackStats>): WebpackStats {\n const entrypoints: Record<string, StatsChunkGroup> = {}\n const assets: Map<string, StatsAsset> = new Map()\n const chunks: Map<string | number, StatsChunk> = new Map()\n const modules: Map<string | number, StatsModule> = new Map()\n\n for (const statsFile of statsFiles) {\n if (statsFile.entrypoints) {\n for (const [k, v] of Object.entries(statsFile.entrypoints)) {\n if (!entrypoints[k]) {\n entrypoints[k] = v\n }\n }\n }\n\n if (statsFile.assets) {\n for (const asset of statsFile.assets) {\n if (!assets.has(asset.name)) {\n assets.set(asset.name, asset)\n }\n }\n }\n\n if (statsFile.chunks) {\n for (const chunk of statsFile.chunks) {\n if (!chunks.has(chunk.id!)) {\n chunks.set(chunk.id!, chunk)\n }\n }\n }\n\n if (statsFile.modules) {\n for (const module of statsFile.modules) {\n const id = module.id\n if (id != null) {\n // Merge the chunk list for the module. This can vary across endpoints.\n const existing = modules.get(id)\n if (existing == null) {\n modules.set(id, module)\n } else if (module.chunks != null && existing.chunks != null) {\n for (const chunk of module.chunks) {\n if (!existing.chunks.includes(chunk)) {\n existing.chunks.push(chunk)\n }\n }\n }\n }\n }\n }\n }\n\n return {\n version: 'Turbopack',\n entrypoints,\n assets: [...assets.values()],\n chunks: [...chunks.values()],\n modules: [...modules.values()],\n }\n }\n\n private mergeBuildManifests(manifests: Iterable<BuildManifest>) {\n const manifest: Partial<BuildManifest> & Pick<BuildManifest, 'pages'> = {\n pages: {\n '/_app': [],\n },\n // Something in next.js depends on these to exist even for app dir rendering\n devFiles: [],\n ampDevFiles: [],\n polyfillFiles: [],\n lowPriorityFiles: [\n `static/${this.buildId}/_ssgManifest.js`,\n `static/${this.buildId}/_buildManifest.js`,\n ],\n rootMainFiles: [],\n ampFirstPages: [],\n }\n for (const m of manifests) {\n Object.assign(manifest.pages, m.pages)\n if (m.rootMainFiles.length) manifest.rootMainFiles = m.rootMainFiles\n // polyfillFiles should always be the same, so we can overwrite instead of actually merging\n if (m.polyfillFiles.length) manifest.polyfillFiles = m.polyfillFiles\n }\n manifest.pages = sortObjectByKey(manifest.pages) as BuildManifest['pages']\n return manifest\n }\n\n private mergeClientBuildManifests(\n rewrites: CustomRoutes['rewrites'],\n manifests: Iterable<ClientBuildManifest>,\n sortedPageKeys: string[]\n ): ClientBuildManifest {\n const manifest = {\n __rewrites: normalizeRewritesForBuildManifest(rewrites) as any,\n sortedPages: sortedPageKeys,\n }\n for (const m of manifests) {\n Object.assign(manifest, m)\n }\n return sortObjectByKey(manifest)\n }\n\n private writeBuildManifest(\n entrypoints: Entrypoints,\n devRewrites: SetupOpts['fsChecker']['rewrites'] | undefined,\n productionRewrites: CustomRoutes['rewrites'] | undefined\n ): void {\n const rewrites = productionRewrites ?? {\n ...devRewrites,\n beforeFiles: (devRewrites?.beforeFiles ?? []).map(processRoute),\n afterFiles: (devRewrites?.afterFiles ?? []).map(processRoute),\n fallback: (devRewrites?.fallback ?? []).map(processRoute),\n }\n const buildManifest = this.mergeBuildManifests(this.buildManifests.values())\n const buildManifestPath = join(this.distDir, BUILD_MANIFEST)\n const middlewareBuildManifestPath = join(\n this.distDir,\n 'server',\n `${MIDDLEWARE_BUILD_MANIFEST}.js`\n )\n const interceptionRewriteManifestPath = join(\n this.distDir,\n 'server',\n `${INTERCEPTION_ROUTE_REWRITE_MANIFEST}.js`\n )\n deleteCache(buildManifestPath)\n deleteCache(middlewareBuildManifestPath)\n deleteCache(interceptionRewriteManifestPath)\n writeFileAtomic(buildManifestPath, JSON.stringify(buildManifest, null, 2))\n writeFileAtomic(\n middlewareBuildManifestPath,\n // we use globalThis here because middleware can be node\n // which doesn't have \"self\"\n createEdgeRuntimeManifest(buildManifest)\n )\n\n const interceptionRewrites = JSON.stringify(\n rewrites.beforeFiles.filter(isInterceptionRouteRewrite)\n )\n\n writeFileAtomic(\n interceptionRewriteManifestPath,\n `self.__INTERCEPTION_ROUTE_REWRITE_MANIFEST=${JSON.stringify(\n interceptionRewrites\n )};`\n )\n\n const pagesKeys = [...entrypoints.page.keys()]\n if (entrypoints.global.app) {\n pagesKeys.push('/_app')\n }\n if (entrypoints.global.error) {\n pagesKeys.push('/_error')\n }\n\n const sortedPageKeys = getSortedRoutes(pagesKeys)\n const clientBuildManifest = this.mergeClientBuildManifests(\n rewrites,\n this.clientBuildManifests.values(),\n sortedPageKeys\n )\n const clientBuildManifestJs = `self.__BUILD_MANIFEST = ${JSON.stringify(\n clientBuildManifest,\n null,\n 2\n )};self.__BUILD_MANIFEST_CB && self.__BUILD_MANIFEST_CB()`\n writeFileAtomic(\n join(this.distDir, 'static', this.buildId, '_buildManifest.js'),\n clientBuildManifestJs\n )\n writeFileAtomic(\n join(this.distDir, 'static', this.buildId, '_ssgManifest.js'),\n srcEmptySsgManifest\n )\n }\n\n private writeClientMiddlewareManifest(): void {\n const middlewareManifest = this.mergeMiddlewareManifests(\n this.middlewareManifests.values()\n )\n\n const matchers = middlewareManifest?.middleware['/']?.matchers || []\n\n const clientMiddlewareManifestPath = join(\n this.distDir,\n 'static',\n this.buildId,\n `${TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST}`\n )\n deleteCache(clientMiddlewareManifestPath)\n writeFileAtomic(\n clientMiddlewareManifestPath,\n JSON.stringify(matchers, null, 2)\n )\n }\n\n private async writeFallbackBuildManifest(): Promise<void> {\n const fallbackBuildManifest = this.mergeBuildManifests(\n [\n this.buildManifests.get(getEntryKey('pages', 'server', '_app')),\n this.buildManifests.get(getEntryKey('pages', 'server', '_error')),\n ].filter(Boolean) as BuildManifest[]\n )\n const fallbackBuildManifestPath = join(\n this.distDir,\n `fallback-${BUILD_MANIFEST}`\n )\n deleteCache(fallbackBuildManifestPath)\n writeFileAtomic(\n fallbackBuildManifestPath,\n JSON.stringify(fallbackBuildManifest, null, 2)\n )\n }\n\n loadFontManifest(pageName: string, type: 'app' | 'pages' = 'pages'): void {\n this.fontManifests.set(\n getEntryKey(type, 'server', pageName),\n readPartialManifest(\n this.distDir,\n `${NEXT_FONT_MANIFEST}.json`,\n pageName,\n type\n )\n )\n }\n\n private mergeFontManifests(manifests: Iterable<NextFontManifest>) {\n const manifest: NextFontManifest = {\n app: {},\n appUsingSizeAdjust: false,\n pages: {},\n pagesUsingSizeAdjust: false,\n }\n for (const m of manifests) {\n Object.assign(manifest.app, m.app)\n Object.assign(manifest.pages, m.pages)\n\n manifest.appUsingSizeAdjust =\n manifest.appUsingSizeAdjust || m.appUsingSizeAdjust\n manifest.pagesUsingSizeAdjust =\n manifest.pagesUsingSizeAdjust || m.pagesUsingSizeAdjust\n }\n manifest.app = sortObjectByKey(manifest.app)\n manifest.pages = sortObjectByKey(manifest.pages)\n return manifest\n }\n\n private async writeNextFontManifest(): Promise<void> {\n const fontManifest = this.mergeFontManifests(this.fontManifests.values())\n const json = JSON.stringify(fontManifest, null, 2)\n\n const fontManifestJsonPath = join(\n this.distDir,\n 'server',\n `${NEXT_FONT_MANIFEST}.json`\n )\n const fontManifestJsPath = join(\n this.distDir,\n 'server',\n `${NEXT_FONT_MANIFEST}.js`\n )\n deleteCache(fontManifestJsonPath)\n deleteCache(fontManifestJsPath)\n writeFileAtomic(fontManifestJsonPath, json)\n writeFileAtomic(\n fontManifestJsPath,\n `self.__NEXT_FONT_MANIFEST=${JSON.stringify(json)}`\n )\n }\n\n /**\n * @returns If the manifest was written or not\n */\n loadMiddlewareManifest(\n pageName: string,\n type: 'pages' | 'app' | 'middleware' | 'instrumentation'\n ): boolean {\n const middlewareManifestPath = getManifestPath(\n pageName,\n this.distDir,\n MIDDLEWARE_MANIFEST,\n type,\n true\n )\n\n // middlewareManifest is actually \"edge manifest\" and not all routes are edge runtime. If it is not written we skip it.\n if (!existsSync(middlewareManifestPath)) {\n return false\n }\n\n this.middlewareManifests.set(\n getEntryKey(\n type === 'middleware' || type === 'instrumentation' ? 'root' : type,\n 'server',\n pageName\n ),\n readPartialManifest(this.distDir, MIDDLEWARE_MANIFEST, pageName, type)\n )\n\n return true\n }\n\n getMiddlewareManifest(key: EntryKey) {\n return this.middlewareManifests.get(key)\n }\n\n deleteMiddlewareManifest(key: EntryKey) {\n return this.middlewareManifests.delete(key)\n }\n\n private mergeMiddlewareManifests(\n manifests: Iterable<TurbopackMiddlewareManifest>\n ): MiddlewareManifest {\n const manifest: MiddlewareManifest = {\n version: 3,\n middleware: {},\n sortedMiddleware: [],\n functions: {},\n }\n let instrumentation: InstrumentationDefinition | undefined = undefined\n for (const m of manifests) {\n Object.assign(manifest.functions, m.functions)\n Object.assign(manifest.middleware, m.middleware)\n if (m.instrumentation) {\n instrumentation = m.instrumentation\n }\n }\n manifest.functions = sortObjectByKey(manifest.functions)\n manifest.middleware = sortObjectByKey(manifest.middleware)\n const updateFunctionDefinition = (\n fun: EdgeFunctionDefinition\n ): EdgeFunctionDefinition => {\n return {\n ...fun,\n files: [...(instrumentation?.files ?? []), ...fun.files],\n }\n }\n for (const key of Object.keys(manifest.middleware)) {\n const value = manifest.middleware[key]\n manifest.middleware[key] = updateFunctionDefinition(value)\n }\n for (const key of Object.keys(manifest.functions)) {\n const value = manifest.functions[key]\n manifest.functions[key] = updateFunctionDefinition(value)\n }\n for (const fun of Object.values(manifest.functions).concat(\n Object.values(manifest.middleware)\n )) {\n for (const matcher of fun.matchers) {\n if (!matcher.regexp) {\n matcher.regexp = safePathToRegexp(matcher.originalSource, [], {\n delimiter: '/',\n sensitive: false,\n strict: true,\n }).source.replaceAll('\\\\/', '/')\n }\n }\n }\n manifest.sortedMiddleware = Object.keys(manifest.middleware)\n\n return manifest\n }\n\n private writeMiddlewareManifest(): void {\n const middlewareManifest = this.mergeMiddlewareManifests(\n this.middlewareManifests.values()\n )\n\n // Normalize regexes as it uses path-to-regexp\n for (const key in middlewareManifest.middleware) {\n middlewareManifest.middleware[key].matchers.forEach((matcher) => {\n if (!matcher.regexp.startsWith('^')) {\n const parsedPage = tryToParsePath(matcher.regexp)\n if (parsedPage.error || !parsedPage.regexStr) {\n throw new Error(`Invalid source: ${matcher.regexp}`)\n }\n matcher.regexp = parsedPage.regexStr\n }\n })\n }\n\n const middlewareManifestPath = join(\n this.distDir,\n 'server',\n MIDDLEWARE_MANIFEST\n )\n deleteCache(middlewareManifestPath)\n writeFileAtomic(\n middlewareManifestPath,\n JSON.stringify(middlewareManifest, null, 2)\n )\n }\n\n loadPagesManifest(pageName: string): void {\n this.pagesManifests.set(\n getEntryKey('pages', 'server', pageName),\n readPartialManifest(this.distDir, PAGES_MANIFEST, pageName)\n )\n }\n\n private mergePagesManifests(manifests: Iterable<PagesManifest>) {\n const manifest: PagesManifest = {}\n for (const m of manifests) {\n Object.assign(manifest, m)\n }\n return sortObjectByKey(manifest)\n }\n\n private writePagesManifest(): void {\n const pagesManifest = this.mergePagesManifests(this.pagesManifests.values())\n const pagesManifestPath = join(this.distDir, 'server', PAGES_MANIFEST)\n deleteCache(pagesManifestPath)\n writeFileAtomic(pagesManifestPath, JSON.stringify(pagesManifest, null, 2))\n }\n\n writeManifests({\n devRewrites,\n productionRewrites,\n entrypoints,\n }: {\n devRewrites: SetupOpts['fsChecker']['rewrites'] | undefined\n productionRewrites: CustomRoutes['rewrites'] | undefined\n entrypoints: Entrypoints\n }): void {\n this.writeActionManifest()\n this.writeAppPathsManifest()\n this.writeBuildManifest(entrypoints, devRewrites, productionRewrites)\n this.writeFallbackBuildManifest()\n this.writeMiddlewareManifest()\n this.writeClientMiddlewareManifest()\n this.writeNextFontManifest()\n this.writePagesManifest()\n\n if (process.env.TURBOPACK_STATS != null) {\n this.writeWebpackStats()\n }\n }\n}\n\nfunction sortObjectByKey(obj: Record<string, any>) {\n return Object.keys(obj)\n .sort()\n .reduce(\n (acc, key) => {\n acc[key] = obj[key]\n return acc\n },\n {} as Record<string, any>\n )\n}\n"],"names":["APP_PATHS_MANIFEST","BUILD_MANIFEST","INTERCEPTION_ROUTE_REWRITE_MANIFEST","MIDDLEWARE_BUILD_MANIFEST","MIDDLEWARE_MANIFEST","NEXT_FONT_MANIFEST","PAGES_MANIFEST","SERVER_REFERENCE_MANIFEST","TURBOPACK_CLIENT_BUILD_MANIFEST","TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST","WEBPACK_STATS","join","posix","readFileSync","deleteCache","writeFileAtomic","isInterceptionRouteRewrite","getAssetPathFromRoute","getEntryKey","getSortedRoutes","existsSync","addMetadataIdToRoute","addRouteSuffix","removeRouteSuffix","tryToParsePath","safePathToRegexp","normalizeRewritesForBuildManifest","srcEmptySsgManifest","processRoute","createEdgeRuntimeManifest","getManifestPath","page","distDir","name","type","firstCall","manifestPath","isSitemapRoute","test","replace","endsWith","metadataPage","readPartialManifest","pageName","JSON","parse","TurbopackManifestLoader","delete","key","actionManifests","appPathsManifests","buildManifests","clientBuildManifests","fontManifests","middlewareManifests","pagesManifests","webpackStats","loadActionManifest","set","mergeActionManifests","manifests","manifest","node","edge","encryptionKey","mergeActionIds","actionEntries","other","action","workers","layer","filename","exportedName","Object","assign","m","entry","sortObjectByKey","writeActionManifest","actionManifest","values","actionManifestJsonPath","actionManifestJsPath","json","stringify","loadAppPathsManifest","writeAppPathsManifest","appPathsManifest","mergePagesManifests","appPathsManifestPath","writeWebpackStats","mergeWebpackStats","path","loadBuildManifest","loadClientBuildManifest","loadWebpackStats","statsFiles","entrypoints","assets","Map","chunks","modules","statsFile","k","v","entries","asset","has","chunk","id","module","existing","get","includes","push","version","mergeBuildManifests","pages","devFiles","ampDevFiles","polyfillFiles","lowPriorityFiles","buildId","rootMainFiles","ampFirstPages","length","mergeClientBuildManifests","rewrites","sortedPageKeys","__rewrites","sortedPages","writeBuildManifest","devRewrites","productionRewrites","beforeFiles","map","afterFiles","fallback","buildManifest","buildManifestPath","middlewareBuildManifestPath","interceptionRewriteManifestPath","interceptionRewrites","filter","pagesKeys","keys","global","app","error","clientBuildManifest","clientBuildManifestJs","writeClientMiddlewareManifest","middlewareManifest","mergeMiddlewareManifests","matchers","middleware","clientMiddlewareManifestPath","writeFallbackBuildManifest","fallbackBuildManifest","Boolean","fallbackBuildManifestPath","loadFontManifest","mergeFontManifests","appUsingSizeAdjust","pagesUsingSizeAdjust","writeNextFontManifest","fontManifest","fontManifestJsonPath","fontManifestJsPath","loadMiddlewareManifest","middlewareManifestPath","getMiddlewareManifest","deleteMiddlewareManifest","sortedMiddleware","functions","instrumentation","undefined","updateFunctionDefinition","fun","files","value","concat","matcher","regexp","originalSource","delimiter","sensitive","strict","source","replaceAll","writeMiddlewareManifest","forEach","startsWith","parsedPage","regexStr","Error","loadPagesManifest","writePagesManifest","pagesManifest","pagesManifestPath","writeManifests","process","env","TURBOPACK_STATS","constructor","obj","sort","reduce","acc"],"mappings":"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","ignoreList":[0]}
|
1
|
+
{"version":3,"sources":["../../../../src/shared/lib/turbopack/manifest-loader.ts"],"sourcesContent":["import type {\n EdgeFunctionDefinition,\n MiddlewareManifest,\n} from '../../../build/webpack/plugins/middleware-plugin'\nimport type {\n StatsAsset,\n StatsChunk,\n StatsChunkGroup,\n StatsModule,\n StatsCompilation as WebpackStats,\n} from 'webpack'\nimport type { BuildManifest } from '../../../server/get-page-files'\nimport type { PagesManifest } from '../../../build/webpack/plugins/pages-manifest-plugin'\nimport type { ActionManifest } from '../../../build/webpack/plugins/flight-client-entry-plugin'\nimport type { NextFontManifest } from '../../../build/webpack/plugins/next-font-manifest-plugin'\nimport type { REACT_LOADABLE_MANIFEST } from '../constants'\nimport {\n APP_PATHS_MANIFEST,\n BUILD_MANIFEST,\n INTERCEPTION_ROUTE_REWRITE_MANIFEST,\n MIDDLEWARE_BUILD_MANIFEST,\n MIDDLEWARE_MANIFEST,\n NEXT_FONT_MANIFEST,\n PAGES_MANIFEST,\n SERVER_REFERENCE_MANIFEST,\n TURBOPACK_CLIENT_BUILD_MANIFEST,\n TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST,\n WEBPACK_STATS,\n} from '../constants'\nimport { join, posix } from 'path'\nimport { readFileSync } from 'fs'\nimport type { SetupOpts } from '../../../server/lib/router-utils/setup-dev-bundler'\nimport { deleteCache } from '../../../server/dev/require-cache'\nimport { writeFileAtomic } from '../../../lib/fs/write-atomic'\nimport { isInterceptionRouteRewrite } from '../../../lib/generate-interception-routes-rewrites'\nimport getAssetPathFromRoute from '../router/utils/get-asset-path-from-route'\nimport { getEntryKey, type EntryKey } from './entry-key'\nimport type { CustomRoutes } from '../../../lib/load-custom-routes'\nimport { getSortedRoutes } from '../router/utils'\nimport { existsSync } from 'fs'\nimport {\n addMetadataIdToRoute,\n addRouteSuffix,\n removeRouteSuffix,\n} from '../../../server/dev/turbopack-utils'\nimport { tryToParsePath } from '../../../lib/try-to-parse-path'\nimport { safePathToRegexp } from '../router/utils/route-match-utils'\nimport type { Entrypoints } from '../../../build/swc/types'\nimport {\n normalizeRewritesForBuildManifest,\n type ClientBuildManifest,\n srcEmptySsgManifest,\n processRoute,\n createEdgeRuntimeManifest,\n} from '../../../build/webpack/plugins/build-manifest-plugin-utils'\n\ninterface InstrumentationDefinition {\n files: string[]\n name: 'instrumentation'\n}\n\ntype TurbopackMiddlewareManifest = MiddlewareManifest & {\n instrumentation?: InstrumentationDefinition\n}\n\ntype ManifestName =\n | typeof MIDDLEWARE_MANIFEST\n | typeof BUILD_MANIFEST\n | typeof PAGES_MANIFEST\n | typeof WEBPACK_STATS\n | typeof APP_PATHS_MANIFEST\n | `${typeof SERVER_REFERENCE_MANIFEST}.json`\n | `${typeof NEXT_FONT_MANIFEST}.json`\n | typeof REACT_LOADABLE_MANIFEST\n | typeof TURBOPACK_CLIENT_BUILD_MANIFEST\n\nconst getManifestPath = (\n page: string,\n distDir: string,\n name: ManifestName,\n type: string,\n firstCall: boolean\n) => {\n let manifestPath = posix.join(\n distDir,\n `server`,\n type,\n type === 'middleware' || type === 'instrumentation'\n ? ''\n : type === 'app'\n ? page\n : getAssetPathFromRoute(page),\n name\n )\n\n if (firstCall) {\n const isSitemapRoute = /[\\\\/]sitemap(.xml)?\\/route$/.test(page)\n // Check the ambiguity of /sitemap and /sitemap.xml\n if (isSitemapRoute && !existsSync(manifestPath)) {\n manifestPath = getManifestPath(\n page.replace(/\\/sitemap\\/route$/, '/sitemap.xml/route'),\n distDir,\n name,\n type,\n false\n )\n }\n // existsSync is faster than using the async version\n if (!existsSync(manifestPath) && page.endsWith('/route')) {\n // TODO: Improve implementation of metadata routes, currently it requires this extra check for the variants of the files that can be written.\n let metadataPage = addRouteSuffix(\n addMetadataIdToRoute(removeRouteSuffix(page))\n )\n manifestPath = getManifestPath(metadataPage, distDir, name, type, false)\n }\n }\n\n return manifestPath\n}\n\nfunction readPartialManifestContent(\n distDir: string,\n name: ManifestName,\n pageName: string,\n type: 'pages' | 'app' | 'middleware' | 'instrumentation' = 'pages'\n): string {\n const page = pageName\n const manifestPath = getManifestPath(page, distDir, name, type, true)\n return readFileSync(posix.join(manifestPath), 'utf-8')\n}\n\n/// Helper class that stores a map of manifests and tracks if they have changed\n/// since the last time they were written to disk. This is used to avoid\n/// unnecessary writes to disk.\nclass ManifestsMap<K, V> {\n private rawMap = new Map<K, string>()\n private map = new Map<K, V>()\n private extraInvalidationKey: string | undefined = undefined\n private changed = true\n\n set(key: K, value: string) {\n if (this.rawMap.get(key) === value) return\n this.changed = true\n this.rawMap.set(key, value)\n this.map.set(key, JSON.parse(value))\n }\n\n delete(key: K) {\n if (this.map.has(key)) {\n this.changed = true\n this.rawMap.delete(key)\n this.map.delete(key)\n }\n }\n\n get(key: K) {\n return this.map.get(key)\n }\n\n takeChanged(extraInvalidationKey?: any) {\n let changed = this.changed\n if (extraInvalidationKey !== undefined) {\n const stringified = JSON.stringify(extraInvalidationKey)\n if (this.extraInvalidationKey !== stringified) {\n this.extraInvalidationKey = stringified\n changed = true\n }\n }\n this.changed = false\n return changed\n }\n\n values() {\n return this.map.values()\n }\n}\n\nexport class TurbopackManifestLoader {\n private actionManifests: ManifestsMap<EntryKey, ActionManifest> =\n new ManifestsMap()\n private appPathsManifests: ManifestsMap<EntryKey, PagesManifest> =\n new ManifestsMap()\n private buildManifests: ManifestsMap<EntryKey, BuildManifest> =\n new ManifestsMap()\n private clientBuildManifests: ManifestsMap<EntryKey, ClientBuildManifest> =\n new ManifestsMap()\n private fontManifests: ManifestsMap<EntryKey, NextFontManifest> =\n new ManifestsMap()\n private middlewareManifests: ManifestsMap<\n EntryKey,\n TurbopackMiddlewareManifest\n > = new ManifestsMap()\n private pagesManifests: ManifestsMap<string, PagesManifest> =\n new ManifestsMap()\n private webpackStats: ManifestsMap<EntryKey, WebpackStats> =\n new ManifestsMap()\n private encryptionKey: string\n /// interceptionRewrites that have been written to disk\n /// This is used to avoid unnecessary writes if the rewrites haven't changed\n private cachedInterceptionRewrites: string | undefined = undefined\n\n private readonly distDir: string\n private readonly buildId: string\n\n constructor({\n distDir,\n buildId,\n encryptionKey,\n }: {\n buildId: string\n distDir: string\n encryptionKey: string\n }) {\n this.distDir = distDir\n this.buildId = buildId\n this.encryptionKey = encryptionKey\n }\n\n delete(key: EntryKey) {\n this.actionManifests.delete(key)\n this.appPathsManifests.delete(key)\n this.buildManifests.delete(key)\n this.clientBuildManifests.delete(key)\n this.fontManifests.delete(key)\n this.middlewareManifests.delete(key)\n this.pagesManifests.delete(key)\n this.webpackStats.delete(key)\n }\n\n loadActionManifest(pageName: string): void {\n this.actionManifests.set(\n getEntryKey('app', 'server', pageName),\n readPartialManifestContent(\n this.distDir,\n `${SERVER_REFERENCE_MANIFEST}.json`,\n pageName,\n 'app'\n )\n )\n }\n\n private mergeActionManifests(manifests: Iterable<ActionManifest>) {\n type ActionEntries = ActionManifest['edge' | 'node']\n const manifest: ActionManifest = {\n node: {},\n edge: {},\n encryptionKey: this.encryptionKey,\n }\n\n function mergeActionIds(\n actionEntries: ActionEntries,\n other: ActionEntries\n ): void {\n for (const key in other) {\n const action = (actionEntries[key] ??= {\n workers: {},\n layer: {},\n })\n action.filename = other[key].filename\n action.exportedName = other[key].exportedName\n Object.assign(action.workers, other[key].workers)\n Object.assign(action.layer, other[key].layer)\n }\n }\n\n for (const m of manifests) {\n mergeActionIds(manifest.node, m.node)\n mergeActionIds(manifest.edge, m.edge)\n }\n for (const key in manifest.node) {\n const entry = manifest.node[key]\n entry.workers = sortObjectByKey(entry.workers)\n entry.layer = sortObjectByKey(entry.layer)\n }\n for (const key in manifest.edge) {\n const entry = manifest.edge[key]\n entry.workers = sortObjectByKey(entry.workers)\n entry.layer = sortObjectByKey(entry.layer)\n }\n\n return manifest\n }\n\n private writeActionManifest(): void {\n if (!this.actionManifests.takeChanged()) {\n return\n }\n const actionManifest = this.mergeActionManifests(\n this.actionManifests.values()\n )\n const actionManifestJsonPath = join(\n this.distDir,\n 'server',\n `${SERVER_REFERENCE_MANIFEST}.json`\n )\n const actionManifestJsPath = join(\n this.distDir,\n 'server',\n `${SERVER_REFERENCE_MANIFEST}.js`\n )\n const json = JSON.stringify(actionManifest, null, 2)\n deleteCache(actionManifestJsonPath)\n deleteCache(actionManifestJsPath)\n writeFileAtomic(actionManifestJsonPath, json)\n writeFileAtomic(\n actionManifestJsPath,\n `self.__RSC_SERVER_MANIFEST=${JSON.stringify(json)}`\n )\n }\n\n loadAppPathsManifest(pageName: string): void {\n this.appPathsManifests.set(\n getEntryKey('app', 'server', pageName),\n readPartialManifestContent(\n this.distDir,\n APP_PATHS_MANIFEST,\n pageName,\n 'app'\n )\n )\n }\n\n private writeAppPathsManifest(): void {\n if (!this.appPathsManifests.takeChanged()) {\n return\n }\n const appPathsManifest = this.mergePagesManifests(\n this.appPathsManifests.values()\n )\n const appPathsManifestPath = join(\n this.distDir,\n 'server',\n APP_PATHS_MANIFEST\n )\n deleteCache(appPathsManifestPath)\n writeFileAtomic(\n appPathsManifestPath,\n JSON.stringify(appPathsManifest, null, 2)\n )\n }\n\n private writeWebpackStats(): void {\n if (!this.webpackStats.takeChanged()) {\n return\n }\n const webpackStats = this.mergeWebpackStats(this.webpackStats.values())\n const path = join(this.distDir, 'server', WEBPACK_STATS)\n deleteCache(path)\n writeFileAtomic(path, JSON.stringify(webpackStats, null, 2))\n }\n\n loadBuildManifest(pageName: string, type: 'app' | 'pages' = 'pages'): void {\n this.buildManifests.set(\n getEntryKey(type, 'server', pageName),\n readPartialManifestContent(this.distDir, BUILD_MANIFEST, pageName, type)\n )\n }\n\n loadClientBuildManifest(\n pageName: string,\n type: 'app' | 'pages' = 'pages'\n ): void {\n this.clientBuildManifests.set(\n getEntryKey(type, 'server', pageName),\n readPartialManifestContent(\n this.distDir,\n TURBOPACK_CLIENT_BUILD_MANIFEST,\n pageName,\n type\n )\n )\n }\n\n loadWebpackStats(pageName: string, type: 'app' | 'pages' = 'pages'): void {\n this.webpackStats.set(\n getEntryKey(type, 'client', pageName),\n readPartialManifestContent(this.distDir, WEBPACK_STATS, pageName, type)\n )\n }\n\n private mergeWebpackStats(statsFiles: Iterable<WebpackStats>): WebpackStats {\n const entrypoints: Record<string, StatsChunkGroup> = {}\n const assets: Map<string, StatsAsset> = new Map()\n const chunks: Map<string | number, StatsChunk> = new Map()\n const modules: Map<string | number, StatsModule> = new Map()\n\n for (const statsFile of statsFiles) {\n if (statsFile.entrypoints) {\n for (const [k, v] of Object.entries(statsFile.entrypoints)) {\n if (!entrypoints[k]) {\n entrypoints[k] = v\n }\n }\n }\n\n if (statsFile.assets) {\n for (const asset of statsFile.assets) {\n if (!assets.has(asset.name)) {\n assets.set(asset.name, asset)\n }\n }\n }\n\n if (statsFile.chunks) {\n for (const chunk of statsFile.chunks) {\n if (!chunks.has(chunk.id!)) {\n chunks.set(chunk.id!, chunk)\n }\n }\n }\n\n if (statsFile.modules) {\n for (const module of statsFile.modules) {\n const id = module.id\n if (id != null) {\n // Merge the chunk list for the module. This can vary across endpoints.\n const existing = modules.get(id)\n if (existing == null) {\n modules.set(id, module)\n } else if (module.chunks != null && existing.chunks != null) {\n for (const chunk of module.chunks) {\n if (!existing.chunks.includes(chunk)) {\n existing.chunks.push(chunk)\n }\n }\n }\n }\n }\n }\n }\n\n return {\n version: 'Turbopack',\n entrypoints,\n assets: [...assets.values()],\n chunks: [...chunks.values()],\n modules: [...modules.values()],\n }\n }\n\n private mergeBuildManifests(manifests: Iterable<BuildManifest>) {\n const manifest: Partial<BuildManifest> & Pick<BuildManifest, 'pages'> = {\n pages: {\n '/_app': [],\n },\n // Something in next.js depends on these to exist even for app dir rendering\n devFiles: [],\n ampDevFiles: [],\n polyfillFiles: [],\n lowPriorityFiles: [\n `static/${this.buildId}/_ssgManifest.js`,\n `static/${this.buildId}/_buildManifest.js`,\n ],\n rootMainFiles: [],\n ampFirstPages: [],\n }\n for (const m of manifests) {\n Object.assign(manifest.pages, m.pages)\n if (m.rootMainFiles.length) manifest.rootMainFiles = m.rootMainFiles\n // polyfillFiles should always be the same, so we can overwrite instead of actually merging\n if (m.polyfillFiles.length) manifest.polyfillFiles = m.polyfillFiles\n }\n manifest.pages = sortObjectByKey(manifest.pages) as BuildManifest['pages']\n return manifest\n }\n\n private mergeClientBuildManifests(\n manifests: Iterable<ClientBuildManifest>,\n rewrites: CustomRoutes['rewrites'],\n sortedPageKeys: string[]\n ): ClientBuildManifest {\n const manifest = {\n __rewrites: rewrites as any,\n sortedPages: sortedPageKeys,\n }\n for (const m of manifests) {\n Object.assign(manifest, m)\n }\n return sortObjectByKey(manifest)\n }\n\n private writeInterceptionRouteRewriteManifest(\n devRewrites: SetupOpts['fsChecker']['rewrites'] | undefined,\n productionRewrites: CustomRoutes['rewrites'] | undefined\n ): void {\n const rewrites = productionRewrites ?? {\n ...devRewrites,\n beforeFiles: (devRewrites?.beforeFiles ?? []).map(processRoute),\n afterFiles: (devRewrites?.afterFiles ?? []).map(processRoute),\n fallback: (devRewrites?.fallback ?? []).map(processRoute),\n }\n\n const interceptionRewrites = JSON.stringify(\n rewrites.beforeFiles.filter(isInterceptionRouteRewrite)\n )\n\n if (this.cachedInterceptionRewrites === interceptionRewrites) {\n return\n }\n this.cachedInterceptionRewrites = interceptionRewrites\n\n const interceptionRewriteManifestPath = join(\n this.distDir,\n 'server',\n `${INTERCEPTION_ROUTE_REWRITE_MANIFEST}.js`\n )\n deleteCache(interceptionRewriteManifestPath)\n\n writeFileAtomic(\n interceptionRewriteManifestPath,\n `self.__INTERCEPTION_ROUTE_REWRITE_MANIFEST=${JSON.stringify(\n interceptionRewrites\n )};`\n )\n }\n\n private writeBuildManifest(): void {\n if (!this.buildManifests.takeChanged()) {\n return\n }\n const buildManifest = this.mergeBuildManifests(this.buildManifests.values())\n\n const buildManifestPath = join(this.distDir, BUILD_MANIFEST)\n const middlewareBuildManifestPath = join(\n this.distDir,\n 'server',\n `${MIDDLEWARE_BUILD_MANIFEST}.js`\n )\n\n deleteCache(buildManifestPath)\n deleteCache(middlewareBuildManifestPath)\n writeFileAtomic(buildManifestPath, JSON.stringify(buildManifest, null, 2))\n writeFileAtomic(\n middlewareBuildManifestPath,\n // we use globalThis here because middleware can be node\n // which doesn't have \"self\"\n createEdgeRuntimeManifest(buildManifest)\n )\n\n // Write fallback build manifest\n const fallbackBuildManifest = this.mergeBuildManifests(\n [\n this.buildManifests.get(getEntryKey('pages', 'server', '_app')),\n this.buildManifests.get(getEntryKey('pages', 'server', '_error')),\n ].filter(Boolean) as BuildManifest[]\n )\n const fallbackBuildManifestPath = join(\n this.distDir,\n `fallback-${BUILD_MANIFEST}`\n )\n deleteCache(fallbackBuildManifestPath)\n writeFileAtomic(\n fallbackBuildManifestPath,\n JSON.stringify(fallbackBuildManifest, null, 2)\n )\n }\n\n private writeClientBuildManifest(\n entrypoints: Entrypoints,\n devRewrites: SetupOpts['fsChecker']['rewrites'] | undefined,\n productionRewrites: CustomRoutes['rewrites'] | undefined\n ): void {\n const rewrites = normalizeRewritesForBuildManifest(\n productionRewrites ?? {\n ...devRewrites,\n beforeFiles: (devRewrites?.beforeFiles ?? []).map(processRoute),\n afterFiles: (devRewrites?.afterFiles ?? []).map(processRoute),\n fallback: (devRewrites?.fallback ?? []).map(processRoute),\n }\n )\n\n const pagesKeys = [...entrypoints.page.keys()]\n if (entrypoints.global.app) {\n pagesKeys.push('/_app')\n }\n if (entrypoints.global.error) {\n pagesKeys.push('/_error')\n }\n\n const sortedPageKeys = getSortedRoutes(pagesKeys)\n\n if (!this.clientBuildManifests.takeChanged({ rewrites, sortedPageKeys })) {\n return\n }\n const clientBuildManifest = this.mergeClientBuildManifests(\n this.clientBuildManifests.values(),\n rewrites,\n sortedPageKeys\n )\n const clientBuildManifestJs = `self.__BUILD_MANIFEST = ${JSON.stringify(\n clientBuildManifest,\n null,\n 2\n )};self.__BUILD_MANIFEST_CB && self.__BUILD_MANIFEST_CB()`\n writeFileAtomic(\n join(this.distDir, 'static', this.buildId, '_buildManifest.js'),\n clientBuildManifestJs\n )\n writeFileAtomic(\n join(this.distDir, 'static', this.buildId, '_ssgManifest.js'),\n srcEmptySsgManifest\n )\n }\n\n loadFontManifest(pageName: string, type: 'app' | 'pages' = 'pages'): void {\n this.fontManifests.set(\n getEntryKey(type, 'server', pageName),\n readPartialManifestContent(\n this.distDir,\n `${NEXT_FONT_MANIFEST}.json`,\n pageName,\n type\n )\n )\n }\n\n private mergeFontManifests(manifests: Iterable<NextFontManifest>) {\n const manifest: NextFontManifest = {\n app: {},\n appUsingSizeAdjust: false,\n pages: {},\n pagesUsingSizeAdjust: false,\n }\n for (const m of manifests) {\n Object.assign(manifest.app, m.app)\n Object.assign(manifest.pages, m.pages)\n\n manifest.appUsingSizeAdjust =\n manifest.appUsingSizeAdjust || m.appUsingSizeAdjust\n manifest.pagesUsingSizeAdjust =\n manifest.pagesUsingSizeAdjust || m.pagesUsingSizeAdjust\n }\n manifest.app = sortObjectByKey(manifest.app)\n manifest.pages = sortObjectByKey(manifest.pages)\n return manifest\n }\n\n private async writeNextFontManifest(): Promise<void> {\n if (!this.fontManifests.takeChanged()) {\n return\n }\n const fontManifest = this.mergeFontManifests(this.fontManifests.values())\n const json = JSON.stringify(fontManifest, null, 2)\n\n const fontManifestJsonPath = join(\n this.distDir,\n 'server',\n `${NEXT_FONT_MANIFEST}.json`\n )\n const fontManifestJsPath = join(\n this.distDir,\n 'server',\n `${NEXT_FONT_MANIFEST}.js`\n )\n deleteCache(fontManifestJsonPath)\n deleteCache(fontManifestJsPath)\n writeFileAtomic(fontManifestJsonPath, json)\n writeFileAtomic(\n fontManifestJsPath,\n `self.__NEXT_FONT_MANIFEST=${JSON.stringify(json)}`\n )\n }\n\n /**\n * @returns If the manifest was written or not\n */\n loadMiddlewareManifest(\n pageName: string,\n type: 'pages' | 'app' | 'middleware' | 'instrumentation'\n ): boolean {\n const middlewareManifestPath = getManifestPath(\n pageName,\n this.distDir,\n MIDDLEWARE_MANIFEST,\n type,\n true\n )\n\n // middlewareManifest is actually \"edge manifest\" and not all routes are edge runtime. If it is not written we skip it.\n if (!existsSync(middlewareManifestPath)) {\n return false\n }\n\n this.middlewareManifests.set(\n getEntryKey(\n type === 'middleware' || type === 'instrumentation' ? 'root' : type,\n 'server',\n pageName\n ),\n readPartialManifestContent(\n this.distDir,\n MIDDLEWARE_MANIFEST,\n pageName,\n type\n )\n )\n\n return true\n }\n\n getMiddlewareManifest(key: EntryKey) {\n return this.middlewareManifests.get(key)\n }\n\n deleteMiddlewareManifest(key: EntryKey) {\n return this.middlewareManifests.delete(key)\n }\n\n private mergeMiddlewareManifests(\n manifests: Iterable<TurbopackMiddlewareManifest>\n ): MiddlewareManifest {\n const manifest: MiddlewareManifest = {\n version: 3,\n middleware: {},\n sortedMiddleware: [],\n functions: {},\n }\n let instrumentation: InstrumentationDefinition | undefined = undefined\n for (const m of manifests) {\n Object.assign(manifest.functions, m.functions)\n Object.assign(manifest.middleware, m.middleware)\n if (m.instrumentation) {\n instrumentation = m.instrumentation\n }\n }\n manifest.functions = sortObjectByKey(manifest.functions)\n manifest.middleware = sortObjectByKey(manifest.middleware)\n const updateFunctionDefinition = (\n fun: EdgeFunctionDefinition\n ): EdgeFunctionDefinition => {\n return {\n ...fun,\n files: [...(instrumentation?.files ?? []), ...fun.files],\n }\n }\n for (const key of Object.keys(manifest.middleware)) {\n const value = manifest.middleware[key]\n manifest.middleware[key] = updateFunctionDefinition(value)\n }\n for (const key of Object.keys(manifest.functions)) {\n const value = manifest.functions[key]\n manifest.functions[key] = updateFunctionDefinition(value)\n }\n for (const fun of Object.values(manifest.functions).concat(\n Object.values(manifest.middleware)\n )) {\n for (const matcher of fun.matchers) {\n if (!matcher.regexp) {\n matcher.regexp = safePathToRegexp(matcher.originalSource, [], {\n delimiter: '/',\n sensitive: false,\n strict: true,\n }).source.replaceAll('\\\\/', '/')\n }\n }\n }\n manifest.sortedMiddleware = Object.keys(manifest.middleware)\n\n return manifest\n }\n\n private writeMiddlewareManifest(): void {\n if (!this.middlewareManifests.takeChanged()) {\n return\n }\n const middlewareManifest = this.mergeMiddlewareManifests(\n this.middlewareManifests.values()\n )\n\n // Server middleware manifest\n\n // Normalize regexes as it uses path-to-regexp\n for (const key in middlewareManifest.middleware) {\n middlewareManifest.middleware[key].matchers.forEach((matcher) => {\n if (!matcher.regexp.startsWith('^')) {\n const parsedPage = tryToParsePath(matcher.regexp)\n if (parsedPage.error || !parsedPage.regexStr) {\n throw new Error(`Invalid source: ${matcher.regexp}`)\n }\n matcher.regexp = parsedPage.regexStr\n }\n })\n }\n\n const middlewareManifestPath = join(\n this.distDir,\n 'server',\n MIDDLEWARE_MANIFEST\n )\n deleteCache(middlewareManifestPath)\n writeFileAtomic(\n middlewareManifestPath,\n JSON.stringify(middlewareManifest, null, 2)\n )\n\n // Client middleware manifest\n const matchers = middlewareManifest?.middleware['/']?.matchers || []\n\n const clientMiddlewareManifestPath = join(\n this.distDir,\n 'static',\n this.buildId,\n `${TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST}`\n )\n deleteCache(clientMiddlewareManifestPath)\n writeFileAtomic(\n clientMiddlewareManifestPath,\n JSON.stringify(matchers, null, 2)\n )\n }\n\n loadPagesManifest(pageName: string): void {\n this.pagesManifests.set(\n getEntryKey('pages', 'server', pageName),\n readPartialManifestContent(this.distDir, PAGES_MANIFEST, pageName)\n )\n }\n\n private mergePagesManifests(manifests: Iterable<PagesManifest>) {\n const manifest: PagesManifest = {}\n for (const m of manifests) {\n Object.assign(manifest, m)\n }\n return sortObjectByKey(manifest)\n }\n\n private writePagesManifest(): void {\n if (!this.pagesManifests.takeChanged()) {\n return\n }\n const pagesManifest = this.mergePagesManifests(this.pagesManifests.values())\n const pagesManifestPath = join(this.distDir, 'server', PAGES_MANIFEST)\n deleteCache(pagesManifestPath)\n writeFileAtomic(pagesManifestPath, JSON.stringify(pagesManifest, null, 2))\n }\n\n writeManifests({\n devRewrites,\n productionRewrites,\n entrypoints,\n }: {\n devRewrites: SetupOpts['fsChecker']['rewrites'] | undefined\n productionRewrites: CustomRoutes['rewrites'] | undefined\n entrypoints: Entrypoints\n }): void {\n this.writeActionManifest()\n this.writeAppPathsManifest()\n this.writeBuildManifest()\n this.writeInterceptionRouteRewriteManifest(devRewrites, productionRewrites)\n this.writeClientBuildManifest(entrypoints, devRewrites, productionRewrites)\n this.writeMiddlewareManifest()\n this.writeNextFontManifest()\n this.writePagesManifest()\n\n if (process.env.TURBOPACK_STATS != null) {\n this.writeWebpackStats()\n }\n }\n}\n\nfunction sortObjectByKey(obj: Record<string, any>) {\n return Object.keys(obj)\n .sort()\n .reduce(\n (acc, key) => {\n acc[key] = obj[key]\n return acc\n },\n {} as Record<string, any>\n )\n}\n"],"names":["APP_PATHS_MANIFEST","BUILD_MANIFEST","INTERCEPTION_ROUTE_REWRITE_MANIFEST","MIDDLEWARE_BUILD_MANIFEST","MIDDLEWARE_MANIFEST","NEXT_FONT_MANIFEST","PAGES_MANIFEST","SERVER_REFERENCE_MANIFEST","TURBOPACK_CLIENT_BUILD_MANIFEST","TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST","WEBPACK_STATS","join","posix","readFileSync","deleteCache","writeFileAtomic","isInterceptionRouteRewrite","getAssetPathFromRoute","getEntryKey","getSortedRoutes","existsSync","addMetadataIdToRoute","addRouteSuffix","removeRouteSuffix","tryToParsePath","safePathToRegexp","normalizeRewritesForBuildManifest","srcEmptySsgManifest","processRoute","createEdgeRuntimeManifest","getManifestPath","page","distDir","name","type","firstCall","manifestPath","isSitemapRoute","test","replace","endsWith","metadataPage","readPartialManifestContent","pageName","ManifestsMap","set","key","value","rawMap","get","changed","map","JSON","parse","delete","has","takeChanged","extraInvalidationKey","undefined","stringified","stringify","values","Map","TurbopackManifestLoader","actionManifests","appPathsManifests","buildManifests","clientBuildManifests","fontManifests","middlewareManifests","pagesManifests","webpackStats","loadActionManifest","mergeActionManifests","manifests","manifest","node","edge","encryptionKey","mergeActionIds","actionEntries","other","action","workers","layer","filename","exportedName","Object","assign","m","entry","sortObjectByKey","writeActionManifest","actionManifest","actionManifestJsonPath","actionManifestJsPath","json","loadAppPathsManifest","writeAppPathsManifest","appPathsManifest","mergePagesManifests","appPathsManifestPath","writeWebpackStats","mergeWebpackStats","path","loadBuildManifest","loadClientBuildManifest","loadWebpackStats","statsFiles","entrypoints","assets","chunks","modules","statsFile","k","v","entries","asset","chunk","id","module","existing","includes","push","version","mergeBuildManifests","pages","devFiles","ampDevFiles","polyfillFiles","lowPriorityFiles","buildId","rootMainFiles","ampFirstPages","length","mergeClientBuildManifests","rewrites","sortedPageKeys","__rewrites","sortedPages","writeInterceptionRouteRewriteManifest","devRewrites","productionRewrites","beforeFiles","afterFiles","fallback","interceptionRewrites","filter","cachedInterceptionRewrites","interceptionRewriteManifestPath","writeBuildManifest","buildManifest","buildManifestPath","middlewareBuildManifestPath","fallbackBuildManifest","Boolean","fallbackBuildManifestPath","writeClientBuildManifest","pagesKeys","keys","global","app","error","clientBuildManifest","clientBuildManifestJs","loadFontManifest","mergeFontManifests","appUsingSizeAdjust","pagesUsingSizeAdjust","writeNextFontManifest","fontManifest","fontManifestJsonPath","fontManifestJsPath","loadMiddlewareManifest","middlewareManifestPath","getMiddlewareManifest","deleteMiddlewareManifest","mergeMiddlewareManifests","middleware","sortedMiddleware","functions","instrumentation","updateFunctionDefinition","fun","files","concat","matcher","matchers","regexp","originalSource","delimiter","sensitive","strict","source","replaceAll","writeMiddlewareManifest","middlewareManifest","forEach","startsWith","parsedPage","regexStr","Error","clientMiddlewareManifestPath","loadPagesManifest","writePagesManifest","pagesManifest","pagesManifestPath","writeManifests","process","env","TURBOPACK_STATS","constructor","obj","sort","reduce","acc"],"mappings":"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","ignoreList":[0]}
|
@@ -151,7 +151,7 @@ async function createHotReloaderTurbopack(opts, serverFields, distDir, resetFetc
|
|
151
151
|
}
|
152
152
|
const hasRewrites = opts.fsChecker.rewrites.afterFiles.length > 0 || opts.fsChecker.rewrites.beforeFiles.length > 0 || opts.fsChecker.rewrites.fallback.length > 0;
|
153
153
|
const hotReloaderSpan = (0, _trace.trace)('hot-reloader', undefined, {
|
154
|
-
version: "15.6.0-canary.
|
154
|
+
version: "15.6.0-canary.34"
|
155
155
|
});
|
156
156
|
// Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
|
157
157
|
// of the current `next dev` invocation.
|
@@ -229,7 +229,7 @@ class HotReloaderWebpack {
|
|
229
229
|
this.previewProps = previewProps;
|
230
230
|
this.rewrites = rewrites;
|
231
231
|
this.hotReloaderSpan = (0, _trace.trace)('hot-reloader', undefined, {
|
232
|
-
version: "15.6.0-canary.
|
232
|
+
version: "15.6.0-canary.34"
|
233
233
|
});
|
234
234
|
// Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
|
235
235
|
// of the current `next dev` invocation.
|
@@ -82,7 +82,7 @@ function logStartInfo({ networkUrl, appUrl, envInfo, experimentalFeatures, logBu
|
|
82
82
|
bundlerSuffix = ' (webpack)';
|
83
83
|
}
|
84
84
|
}
|
85
|
-
_log.bootstrap(`${(0, _picocolors.bold)((0, _picocolors.purple)(`${_log.prefixes.ready} Next.js ${"15.6.0-canary.
|
85
|
+
_log.bootstrap(`${(0, _picocolors.bold)((0, _picocolors.purple)(`${_log.prefixes.ready} Next.js ${"15.6.0-canary.34"}`))}${bundlerSuffix}`);
|
86
86
|
if (appUrl) {
|
87
87
|
_log.bootstrap(`- Local: ${appUrl}`);
|
88
88
|
}
|
@@ -179,7 +179,7 @@ async function getRequestHandlers({ dir, port, isDev, onDevServerCleanup, server
|
|
179
179
|
async function startServer(serverOptions) {
|
180
180
|
const { dir, isDev, hostname, minimalMode, allowRetry, keepAliveTimeout, selfSignedCertificate } = serverOptions;
|
181
181
|
let { port } = serverOptions;
|
182
|
-
process.title = `next-server (v${"15.6.0-canary.
|
182
|
+
process.title = `next-server (v${"15.6.0-canary.34"})`;
|
183
183
|
let handlersReady = ()=>{};
|
184
184
|
let handlersError = ()=>{};
|
185
185
|
let handlersPromise = new Promise((resolve, reject)=>{
|
@@ -22,7 +22,7 @@ _export(exports, {
|
|
22
22
|
});
|
23
23
|
function isStableBuild() {
|
24
24
|
var _process_env___NEXT_VERSION;
|
25
|
-
return !((_process_env___NEXT_VERSION = "15.6.0-canary.
|
25
|
+
return !((_process_env___NEXT_VERSION = "15.6.0-canary.34") == null ? void 0 : _process_env___NEXT_VERSION.includes('canary')) && !process.env.__NEXT_TEST_MODE && !process.env.NEXT_PRIVATE_LOCAL_DEV;
|
26
26
|
}
|
27
27
|
class CanaryOnlyError extends Error {
|
28
28
|
constructor(arg){
|
@@ -20,6 +20,7 @@ export declare class TurbopackManifestLoader {
|
|
20
20
|
private pagesManifests;
|
21
21
|
private webpackStats;
|
22
22
|
private encryptionKey;
|
23
|
+
private cachedInterceptionRewrites;
|
23
24
|
private readonly distDir;
|
24
25
|
private readonly buildId;
|
25
26
|
constructor({ distDir, buildId, encryptionKey, }: {
|
@@ -40,9 +41,9 @@ export declare class TurbopackManifestLoader {
|
|
40
41
|
private mergeWebpackStats;
|
41
42
|
private mergeBuildManifests;
|
42
43
|
private mergeClientBuildManifests;
|
44
|
+
private writeInterceptionRouteRewriteManifest;
|
43
45
|
private writeBuildManifest;
|
44
|
-
private
|
45
|
-
private writeFallbackBuildManifest;
|
46
|
+
private writeClientBuildManifest;
|
46
47
|
loadFontManifest(pageName: string, type?: 'app' | 'pages'): void;
|
47
48
|
private mergeFontManifests;
|
48
49
|
private writeNextFontManifest;
|
@@ -51,7 +52,7 @@ export declare class TurbopackManifestLoader {
|
|
51
52
|
*/
|
52
53
|
loadMiddlewareManifest(pageName: string, type: 'pages' | 'app' | 'middleware' | 'instrumentation'): boolean;
|
53
54
|
getMiddlewareManifest(key: EntryKey): TurbopackMiddlewareManifest | undefined;
|
54
|
-
deleteMiddlewareManifest(key: EntryKey):
|
55
|
+
deleteMiddlewareManifest(key: EntryKey): void;
|
55
56
|
private mergeMiddlewareManifests;
|
56
57
|
private writeMiddlewareManifest;
|
57
58
|
loadPagesManifest(pageName: string): void;
|
@@ -39,11 +39,53 @@ const getManifestPath = (page, distDir, name, type, firstCall)=>{
|
|
39
39
|
}
|
40
40
|
return manifestPath;
|
41
41
|
};
|
42
|
-
function
|
42
|
+
function readPartialManifestContent(distDir, name, pageName, type) {
|
43
43
|
if (type === void 0) type = 'pages';
|
44
44
|
const page = pageName;
|
45
45
|
const manifestPath = getManifestPath(page, distDir, name, type, true);
|
46
|
-
return
|
46
|
+
return (0, _fs.readFileSync)(_path.posix.join(manifestPath), 'utf-8');
|
47
|
+
}
|
48
|
+
/// Helper class that stores a map of manifests and tracks if they have changed
|
49
|
+
/// since the last time they were written to disk. This is used to avoid
|
50
|
+
/// unnecessary writes to disk.
|
51
|
+
class ManifestsMap {
|
52
|
+
set(key, value) {
|
53
|
+
if (this.rawMap.get(key) === value) return;
|
54
|
+
this.changed = true;
|
55
|
+
this.rawMap.set(key, value);
|
56
|
+
this.map.set(key, JSON.parse(value));
|
57
|
+
}
|
58
|
+
delete(key) {
|
59
|
+
if (this.map.has(key)) {
|
60
|
+
this.changed = true;
|
61
|
+
this.rawMap.delete(key);
|
62
|
+
this.map.delete(key);
|
63
|
+
}
|
64
|
+
}
|
65
|
+
get(key) {
|
66
|
+
return this.map.get(key);
|
67
|
+
}
|
68
|
+
takeChanged(extraInvalidationKey) {
|
69
|
+
let changed = this.changed;
|
70
|
+
if (extraInvalidationKey !== undefined) {
|
71
|
+
const stringified = JSON.stringify(extraInvalidationKey);
|
72
|
+
if (this.extraInvalidationKey !== stringified) {
|
73
|
+
this.extraInvalidationKey = stringified;
|
74
|
+
changed = true;
|
75
|
+
}
|
76
|
+
}
|
77
|
+
this.changed = false;
|
78
|
+
return changed;
|
79
|
+
}
|
80
|
+
values() {
|
81
|
+
return this.map.values();
|
82
|
+
}
|
83
|
+
constructor(){
|
84
|
+
this.rawMap = new Map();
|
85
|
+
this.map = new Map();
|
86
|
+
this.extraInvalidationKey = undefined;
|
87
|
+
this.changed = true;
|
88
|
+
}
|
47
89
|
}
|
48
90
|
class TurbopackManifestLoader {
|
49
91
|
delete(key) {
|
@@ -57,7 +99,7 @@ class TurbopackManifestLoader {
|
|
57
99
|
this.webpackStats.delete(key);
|
58
100
|
}
|
59
101
|
loadActionManifest(pageName) {
|
60
|
-
this.actionManifests.set((0, _entrykey.getEntryKey)('app', 'server', pageName),
|
102
|
+
this.actionManifests.set((0, _entrykey.getEntryKey)('app', 'server', pageName), readPartialManifestContent(this.distDir, "" + _constants.SERVER_REFERENCE_MANIFEST + ".json", pageName, 'app'));
|
61
103
|
}
|
62
104
|
mergeActionManifests(manifests) {
|
63
105
|
const manifest = {
|
@@ -96,6 +138,9 @@ class TurbopackManifestLoader {
|
|
96
138
|
return manifest;
|
97
139
|
}
|
98
140
|
writeActionManifest() {
|
141
|
+
if (!this.actionManifests.takeChanged()) {
|
142
|
+
return;
|
143
|
+
}
|
99
144
|
const actionManifest = this.mergeActionManifests(this.actionManifests.values());
|
100
145
|
const actionManifestJsonPath = (0, _path.join)(this.distDir, 'server', "" + _constants.SERVER_REFERENCE_MANIFEST + ".json");
|
101
146
|
const actionManifestJsPath = (0, _path.join)(this.distDir, 'server', "" + _constants.SERVER_REFERENCE_MANIFEST + ".js");
|
@@ -106,15 +151,21 @@ class TurbopackManifestLoader {
|
|
106
151
|
(0, _writeatomic.writeFileAtomic)(actionManifestJsPath, "self.__RSC_SERVER_MANIFEST=" + JSON.stringify(json));
|
107
152
|
}
|
108
153
|
loadAppPathsManifest(pageName) {
|
109
|
-
this.appPathsManifests.set((0, _entrykey.getEntryKey)('app', 'server', pageName),
|
154
|
+
this.appPathsManifests.set((0, _entrykey.getEntryKey)('app', 'server', pageName), readPartialManifestContent(this.distDir, _constants.APP_PATHS_MANIFEST, pageName, 'app'));
|
110
155
|
}
|
111
156
|
writeAppPathsManifest() {
|
157
|
+
if (!this.appPathsManifests.takeChanged()) {
|
158
|
+
return;
|
159
|
+
}
|
112
160
|
const appPathsManifest = this.mergePagesManifests(this.appPathsManifests.values());
|
113
161
|
const appPathsManifestPath = (0, _path.join)(this.distDir, 'server', _constants.APP_PATHS_MANIFEST);
|
114
162
|
(0, _requirecache.deleteCache)(appPathsManifestPath);
|
115
163
|
(0, _writeatomic.writeFileAtomic)(appPathsManifestPath, JSON.stringify(appPathsManifest, null, 2));
|
116
164
|
}
|
117
165
|
writeWebpackStats() {
|
166
|
+
if (!this.webpackStats.takeChanged()) {
|
167
|
+
return;
|
168
|
+
}
|
118
169
|
const webpackStats = this.mergeWebpackStats(this.webpackStats.values());
|
119
170
|
const path = (0, _path.join)(this.distDir, 'server', _constants.WEBPACK_STATS);
|
120
171
|
(0, _requirecache.deleteCache)(path);
|
@@ -122,15 +173,15 @@ class TurbopackManifestLoader {
|
|
122
173
|
}
|
123
174
|
loadBuildManifest(pageName, type) {
|
124
175
|
if (type === void 0) type = 'pages';
|
125
|
-
this.buildManifests.set((0, _entrykey.getEntryKey)(type, 'server', pageName),
|
176
|
+
this.buildManifests.set((0, _entrykey.getEntryKey)(type, 'server', pageName), readPartialManifestContent(this.distDir, _constants.BUILD_MANIFEST, pageName, type));
|
126
177
|
}
|
127
178
|
loadClientBuildManifest(pageName, type) {
|
128
179
|
if (type === void 0) type = 'pages';
|
129
|
-
this.clientBuildManifests.set((0, _entrykey.getEntryKey)(type, 'server', pageName),
|
180
|
+
this.clientBuildManifests.set((0, _entrykey.getEntryKey)(type, 'server', pageName), readPartialManifestContent(this.distDir, _constants.TURBOPACK_CLIENT_BUILD_MANIFEST, pageName, type));
|
130
181
|
}
|
131
182
|
loadWebpackStats(pageName, type) {
|
132
183
|
if (type === void 0) type = 'pages';
|
133
|
-
this.webpackStats.set((0, _entrykey.getEntryKey)(type, 'client', pageName),
|
184
|
+
this.webpackStats.set((0, _entrykey.getEntryKey)(type, 'client', pageName), readPartialManifestContent(this.distDir, _constants.WEBPACK_STATS, pageName, type));
|
134
185
|
}
|
135
186
|
mergeWebpackStats(statsFiles) {
|
136
187
|
const entrypoints = {};
|
@@ -217,9 +268,9 @@ class TurbopackManifestLoader {
|
|
217
268
|
manifest.pages = sortObjectByKey(manifest.pages);
|
218
269
|
return manifest;
|
219
270
|
}
|
220
|
-
mergeClientBuildManifests(
|
271
|
+
mergeClientBuildManifests(manifests, rewrites, sortedPageKeys) {
|
221
272
|
const manifest = {
|
222
|
-
__rewrites:
|
273
|
+
__rewrites: rewrites,
|
223
274
|
sortedPages: sortedPageKeys
|
224
275
|
};
|
225
276
|
for (const m of manifests){
|
@@ -227,7 +278,7 @@ class TurbopackManifestLoader {
|
|
227
278
|
}
|
228
279
|
return sortObjectByKey(manifest);
|
229
280
|
}
|
230
|
-
|
281
|
+
writeInterceptionRouteRewriteManifest(devRewrites, productionRewrites) {
|
231
282
|
var _devRewrites_beforeFiles, _devRewrites_afterFiles, _devRewrites_fallback;
|
232
283
|
const rewrites = productionRewrites != null ? productionRewrites : {
|
233
284
|
...devRewrites,
|
@@ -235,19 +286,45 @@ class TurbopackManifestLoader {
|
|
235
286
|
afterFiles: ((_devRewrites_afterFiles = devRewrites == null ? void 0 : devRewrites.afterFiles) != null ? _devRewrites_afterFiles : []).map(_buildmanifestpluginutils.processRoute),
|
236
287
|
fallback: ((_devRewrites_fallback = devRewrites == null ? void 0 : devRewrites.fallback) != null ? _devRewrites_fallback : []).map(_buildmanifestpluginutils.processRoute)
|
237
288
|
};
|
289
|
+
const interceptionRewrites = JSON.stringify(rewrites.beforeFiles.filter(_generateinterceptionroutesrewrites.isInterceptionRouteRewrite));
|
290
|
+
if (this.cachedInterceptionRewrites === interceptionRewrites) {
|
291
|
+
return;
|
292
|
+
}
|
293
|
+
this.cachedInterceptionRewrites = interceptionRewrites;
|
294
|
+
const interceptionRewriteManifestPath = (0, _path.join)(this.distDir, 'server', "" + _constants.INTERCEPTION_ROUTE_REWRITE_MANIFEST + ".js");
|
295
|
+
(0, _requirecache.deleteCache)(interceptionRewriteManifestPath);
|
296
|
+
(0, _writeatomic.writeFileAtomic)(interceptionRewriteManifestPath, "self.__INTERCEPTION_ROUTE_REWRITE_MANIFEST=" + JSON.stringify(interceptionRewrites) + ";");
|
297
|
+
}
|
298
|
+
writeBuildManifest() {
|
299
|
+
if (!this.buildManifests.takeChanged()) {
|
300
|
+
return;
|
301
|
+
}
|
238
302
|
const buildManifest = this.mergeBuildManifests(this.buildManifests.values());
|
239
303
|
const buildManifestPath = (0, _path.join)(this.distDir, _constants.BUILD_MANIFEST);
|
240
304
|
const middlewareBuildManifestPath = (0, _path.join)(this.distDir, 'server', "" + _constants.MIDDLEWARE_BUILD_MANIFEST + ".js");
|
241
|
-
const interceptionRewriteManifestPath = (0, _path.join)(this.distDir, 'server', "" + _constants.INTERCEPTION_ROUTE_REWRITE_MANIFEST + ".js");
|
242
305
|
(0, _requirecache.deleteCache)(buildManifestPath);
|
243
306
|
(0, _requirecache.deleteCache)(middlewareBuildManifestPath);
|
244
|
-
(0, _requirecache.deleteCache)(interceptionRewriteManifestPath);
|
245
307
|
(0, _writeatomic.writeFileAtomic)(buildManifestPath, JSON.stringify(buildManifest, null, 2));
|
246
308
|
(0, _writeatomic.writeFileAtomic)(middlewareBuildManifestPath, // we use globalThis here because middleware can be node
|
247
309
|
// which doesn't have "self"
|
248
310
|
(0, _buildmanifestpluginutils.createEdgeRuntimeManifest)(buildManifest));
|
249
|
-
|
250
|
-
|
311
|
+
// Write fallback build manifest
|
312
|
+
const fallbackBuildManifest = this.mergeBuildManifests([
|
313
|
+
this.buildManifests.get((0, _entrykey.getEntryKey)('pages', 'server', '_app')),
|
314
|
+
this.buildManifests.get((0, _entrykey.getEntryKey)('pages', 'server', '_error'))
|
315
|
+
].filter(Boolean));
|
316
|
+
const fallbackBuildManifestPath = (0, _path.join)(this.distDir, "fallback-" + _constants.BUILD_MANIFEST);
|
317
|
+
(0, _requirecache.deleteCache)(fallbackBuildManifestPath);
|
318
|
+
(0, _writeatomic.writeFileAtomic)(fallbackBuildManifestPath, JSON.stringify(fallbackBuildManifest, null, 2));
|
319
|
+
}
|
320
|
+
writeClientBuildManifest(entrypoints, devRewrites, productionRewrites) {
|
321
|
+
var _devRewrites_beforeFiles, _devRewrites_afterFiles, _devRewrites_fallback;
|
322
|
+
const rewrites = (0, _buildmanifestpluginutils.normalizeRewritesForBuildManifest)(productionRewrites != null ? productionRewrites : {
|
323
|
+
...devRewrites,
|
324
|
+
beforeFiles: ((_devRewrites_beforeFiles = devRewrites == null ? void 0 : devRewrites.beforeFiles) != null ? _devRewrites_beforeFiles : []).map(_buildmanifestpluginutils.processRoute),
|
325
|
+
afterFiles: ((_devRewrites_afterFiles = devRewrites == null ? void 0 : devRewrites.afterFiles) != null ? _devRewrites_afterFiles : []).map(_buildmanifestpluginutils.processRoute),
|
326
|
+
fallback: ((_devRewrites_fallback = devRewrites == null ? void 0 : devRewrites.fallback) != null ? _devRewrites_fallback : []).map(_buildmanifestpluginutils.processRoute)
|
327
|
+
});
|
251
328
|
const pagesKeys = [
|
252
329
|
...entrypoints.page.keys()
|
253
330
|
];
|
@@ -258,31 +335,20 @@ class TurbopackManifestLoader {
|
|
258
335
|
pagesKeys.push('/_error');
|
259
336
|
}
|
260
337
|
const sortedPageKeys = (0, _utils.getSortedRoutes)(pagesKeys);
|
261
|
-
|
338
|
+
if (!this.clientBuildManifests.takeChanged({
|
339
|
+
rewrites,
|
340
|
+
sortedPageKeys
|
341
|
+
})) {
|
342
|
+
return;
|
343
|
+
}
|
344
|
+
const clientBuildManifest = this.mergeClientBuildManifests(this.clientBuildManifests.values(), rewrites, sortedPageKeys);
|
262
345
|
const clientBuildManifestJs = "self.__BUILD_MANIFEST = " + JSON.stringify(clientBuildManifest, null, 2) + ";self.__BUILD_MANIFEST_CB && self.__BUILD_MANIFEST_CB()";
|
263
346
|
(0, _writeatomic.writeFileAtomic)((0, _path.join)(this.distDir, 'static', this.buildId, '_buildManifest.js'), clientBuildManifestJs);
|
264
347
|
(0, _writeatomic.writeFileAtomic)((0, _path.join)(this.distDir, 'static', this.buildId, '_ssgManifest.js'), _buildmanifestpluginutils.srcEmptySsgManifest);
|
265
348
|
}
|
266
|
-
writeClientMiddlewareManifest() {
|
267
|
-
var _middlewareManifest_middleware_;
|
268
|
-
const middlewareManifest = this.mergeMiddlewareManifests(this.middlewareManifests.values());
|
269
|
-
const matchers = (middlewareManifest == null ? void 0 : (_middlewareManifest_middleware_ = middlewareManifest.middleware['/']) == null ? void 0 : _middlewareManifest_middleware_.matchers) || [];
|
270
|
-
const clientMiddlewareManifestPath = (0, _path.join)(this.distDir, 'static', this.buildId, "" + _constants.TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST);
|
271
|
-
(0, _requirecache.deleteCache)(clientMiddlewareManifestPath);
|
272
|
-
(0, _writeatomic.writeFileAtomic)(clientMiddlewareManifestPath, JSON.stringify(matchers, null, 2));
|
273
|
-
}
|
274
|
-
async writeFallbackBuildManifest() {
|
275
|
-
const fallbackBuildManifest = this.mergeBuildManifests([
|
276
|
-
this.buildManifests.get((0, _entrykey.getEntryKey)('pages', 'server', '_app')),
|
277
|
-
this.buildManifests.get((0, _entrykey.getEntryKey)('pages', 'server', '_error'))
|
278
|
-
].filter(Boolean));
|
279
|
-
const fallbackBuildManifestPath = (0, _path.join)(this.distDir, "fallback-" + _constants.BUILD_MANIFEST);
|
280
|
-
(0, _requirecache.deleteCache)(fallbackBuildManifestPath);
|
281
|
-
(0, _writeatomic.writeFileAtomic)(fallbackBuildManifestPath, JSON.stringify(fallbackBuildManifest, null, 2));
|
282
|
-
}
|
283
349
|
loadFontManifest(pageName, type) {
|
284
350
|
if (type === void 0) type = 'pages';
|
285
|
-
this.fontManifests.set((0, _entrykey.getEntryKey)(type, 'server', pageName),
|
351
|
+
this.fontManifests.set((0, _entrykey.getEntryKey)(type, 'server', pageName), readPartialManifestContent(this.distDir, "" + _constants.NEXT_FONT_MANIFEST + ".json", pageName, type));
|
286
352
|
}
|
287
353
|
mergeFontManifests(manifests) {
|
288
354
|
const manifest = {
|
@@ -302,6 +368,9 @@ class TurbopackManifestLoader {
|
|
302
368
|
return manifest;
|
303
369
|
}
|
304
370
|
async writeNextFontManifest() {
|
371
|
+
if (!this.fontManifests.takeChanged()) {
|
372
|
+
return;
|
373
|
+
}
|
305
374
|
const fontManifest = this.mergeFontManifests(this.fontManifests.values());
|
306
375
|
const json = JSON.stringify(fontManifest, null, 2);
|
307
376
|
const fontManifestJsonPath = (0, _path.join)(this.distDir, 'server', "" + _constants.NEXT_FONT_MANIFEST + ".json");
|
@@ -319,7 +388,7 @@ class TurbopackManifestLoader {
|
|
319
388
|
if (!(0, _fs.existsSync)(middlewareManifestPath)) {
|
320
389
|
return false;
|
321
390
|
}
|
322
|
-
this.middlewareManifests.set((0, _entrykey.getEntryKey)(type === 'middleware' || type === 'instrumentation' ? 'root' : type, 'server', pageName),
|
391
|
+
this.middlewareManifests.set((0, _entrykey.getEntryKey)(type === 'middleware' || type === 'instrumentation' ? 'root' : type, 'server', pageName), readPartialManifestContent(this.distDir, _constants.MIDDLEWARE_MANIFEST, pageName, type));
|
323
392
|
return true;
|
324
393
|
}
|
325
394
|
getMiddlewareManifest(key) {
|
@@ -378,7 +447,12 @@ class TurbopackManifestLoader {
|
|
378
447
|
return manifest;
|
379
448
|
}
|
380
449
|
writeMiddlewareManifest() {
|
450
|
+
var _middlewareManifest_middleware_;
|
451
|
+
if (!this.middlewareManifests.takeChanged()) {
|
452
|
+
return;
|
453
|
+
}
|
381
454
|
const middlewareManifest = this.mergeMiddlewareManifests(this.middlewareManifests.values());
|
455
|
+
// Server middleware manifest
|
382
456
|
// Normalize regexes as it uses path-to-regexp
|
383
457
|
for(const key in middlewareManifest.middleware){
|
384
458
|
middlewareManifest.middleware[key].matchers.forEach((matcher)=>{
|
@@ -398,9 +472,14 @@ class TurbopackManifestLoader {
|
|
398
472
|
const middlewareManifestPath = (0, _path.join)(this.distDir, 'server', _constants.MIDDLEWARE_MANIFEST);
|
399
473
|
(0, _requirecache.deleteCache)(middlewareManifestPath);
|
400
474
|
(0, _writeatomic.writeFileAtomic)(middlewareManifestPath, JSON.stringify(middlewareManifest, null, 2));
|
475
|
+
// Client middleware manifest
|
476
|
+
const matchers = (middlewareManifest == null ? void 0 : (_middlewareManifest_middleware_ = middlewareManifest.middleware['/']) == null ? void 0 : _middlewareManifest_middleware_.matchers) || [];
|
477
|
+
const clientMiddlewareManifestPath = (0, _path.join)(this.distDir, 'static', this.buildId, "" + _constants.TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST);
|
478
|
+
(0, _requirecache.deleteCache)(clientMiddlewareManifestPath);
|
479
|
+
(0, _writeatomic.writeFileAtomic)(clientMiddlewareManifestPath, JSON.stringify(matchers, null, 2));
|
401
480
|
}
|
402
481
|
loadPagesManifest(pageName) {
|
403
|
-
this.pagesManifests.set((0, _entrykey.getEntryKey)('pages', 'server', pageName),
|
482
|
+
this.pagesManifests.set((0, _entrykey.getEntryKey)('pages', 'server', pageName), readPartialManifestContent(this.distDir, _constants.PAGES_MANIFEST, pageName));
|
404
483
|
}
|
405
484
|
mergePagesManifests(manifests) {
|
406
485
|
const manifest = {};
|
@@ -410,6 +489,9 @@ class TurbopackManifestLoader {
|
|
410
489
|
return sortObjectByKey(manifest);
|
411
490
|
}
|
412
491
|
writePagesManifest() {
|
492
|
+
if (!this.pagesManifests.takeChanged()) {
|
493
|
+
return;
|
494
|
+
}
|
413
495
|
const pagesManifest = this.mergePagesManifests(this.pagesManifests.values());
|
414
496
|
const pagesManifestPath = (0, _path.join)(this.distDir, 'server', _constants.PAGES_MANIFEST);
|
415
497
|
(0, _requirecache.deleteCache)(pagesManifestPath);
|
@@ -419,10 +501,10 @@ class TurbopackManifestLoader {
|
|
419
501
|
let { devRewrites, productionRewrites, entrypoints } = param;
|
420
502
|
this.writeActionManifest();
|
421
503
|
this.writeAppPathsManifest();
|
422
|
-
this.writeBuildManifest(
|
423
|
-
this.
|
504
|
+
this.writeBuildManifest();
|
505
|
+
this.writeInterceptionRouteRewriteManifest(devRewrites, productionRewrites);
|
506
|
+
this.writeClientBuildManifest(entrypoints, devRewrites, productionRewrites);
|
424
507
|
this.writeMiddlewareManifest();
|
425
|
-
this.writeClientMiddlewareManifest();
|
426
508
|
this.writeNextFontManifest();
|
427
509
|
this.writePagesManifest();
|
428
510
|
if (process.env.TURBOPACK_STATS != null) {
|
@@ -430,14 +512,17 @@ class TurbopackManifestLoader {
|
|
430
512
|
}
|
431
513
|
}
|
432
514
|
constructor({ distDir, buildId, encryptionKey }){
|
433
|
-
this.actionManifests = new
|
434
|
-
this.appPathsManifests = new
|
435
|
-
this.buildManifests = new
|
436
|
-
this.clientBuildManifests = new
|
437
|
-
this.fontManifests = new
|
438
|
-
this.middlewareManifests = new
|
439
|
-
this.pagesManifests = new
|
440
|
-
this.webpackStats = new
|
515
|
+
this.actionManifests = new ManifestsMap();
|
516
|
+
this.appPathsManifests = new ManifestsMap();
|
517
|
+
this.buildManifests = new ManifestsMap();
|
518
|
+
this.clientBuildManifests = new ManifestsMap();
|
519
|
+
this.fontManifests = new ManifestsMap();
|
520
|
+
this.middlewareManifests = new ManifestsMap();
|
521
|
+
this.pagesManifests = new ManifestsMap();
|
522
|
+
this.webpackStats = new ManifestsMap();
|
523
|
+
/// interceptionRewrites that have been written to disk
|
524
|
+
/// This is used to avoid unnecessary writes if the rewrites haven't changed
|
525
|
+
this.cachedInterceptionRewrites = undefined;
|
441
526
|
this.distDir = distDir;
|
442
527
|
this.buildId = buildId;
|
443
528
|
this.encryptionKey = encryptionKey;
|