next 16.0.2-canary.14 → 16.0.2-canary.16

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.
Files changed (33) hide show
  1. package/dist/bin/next +1 -1
  2. package/dist/build/adapter/build-complete.js +14 -11
  3. package/dist/build/adapter/build-complete.js.map +1 -1
  4. package/dist/build/index.js +3 -3
  5. package/dist/build/swc/index.js +1 -1
  6. package/dist/build/webpack-config.js +2 -2
  7. package/dist/client/app-bootstrap.js +1 -1
  8. package/dist/client/index.js +1 -1
  9. package/dist/compiled/next-server/pages-api-turbo.runtime.prod.js +1 -1
  10. package/dist/compiled/next-server/pages-api-turbo.runtime.prod.js.map +1 -1
  11. package/dist/compiled/next-server/pages-turbo.runtime.prod.js +1 -1
  12. package/dist/compiled/next-server/pages-turbo.runtime.prod.js.map +1 -1
  13. package/dist/esm/build/adapter/build-complete.js +14 -11
  14. package/dist/esm/build/adapter/build-complete.js.map +1 -1
  15. package/dist/esm/build/index.js +3 -3
  16. package/dist/esm/build/swc/index.js +1 -1
  17. package/dist/esm/build/webpack-config.js +2 -2
  18. package/dist/esm/client/app-bootstrap.js +1 -1
  19. package/dist/esm/client/index.js +1 -1
  20. package/dist/esm/server/dev/hot-reloader-turbopack.js +1 -1
  21. package/dist/esm/server/dev/hot-reloader-webpack.js +1 -1
  22. package/dist/esm/server/lib/app-info-log.js +1 -1
  23. package/dist/esm/server/lib/start-server.js +1 -1
  24. package/dist/esm/shared/lib/errors/canary-only-config-error.js +1 -1
  25. package/dist/server/dev/hot-reloader-turbopack.js +1 -1
  26. package/dist/server/dev/hot-reloader-webpack.js +1 -1
  27. package/dist/server/lib/app-info-log.js +1 -1
  28. package/dist/server/lib/start-server.js +1 -1
  29. package/dist/shared/lib/errors/canary-only-config-error.js +1 -1
  30. package/dist/telemetry/anonymous-meta.js +1 -1
  31. package/dist/telemetry/events/session-stopped.js +2 -2
  32. package/dist/telemetry/events/version.js +2 -2
  33. package/package.json +15 -15
package/dist/bin/next CHANGED
@@ -85,7 +85,7 @@ const program = new NextRootCommand();
85
85
  program.name('next').description('The Next.js CLI allows you to develop, build, start your application, and more.').configureHelp({
86
86
  formatHelp: (cmd, helper)=>(0, _formatclihelpoutput.formatCliHelpOutput)(cmd, helper),
87
87
  subcommandTerm: (cmd)=>`${cmd.name()} ${cmd.usage()}`
88
- }).helpCommand(false).helpOption('-h, --help', 'Displays this message.').version(`Next.js v${"16.0.2-canary.14"}`, '-v, --version', 'Outputs the Next.js version.');
88
+ }).helpCommand(false).helpOption('-h, --help', 'Displays this message.').version(`Next.js v${"16.0.2-canary.16"}`, '-v, --version', 'Outputs the Next.js version.');
89
89
  program.command('build').description('Creates an optimized production build of your application. The output displays information about each route.').argument('[directory]', `A directory on which to build the application. ${(0, _picocolors.italic)('If no directory is provided, the current directory will be used.')}`).option('--experimental-analyze', 'Analyze bundle output. Only compatible with Turbopack.').option('-d, --debug', 'Enables a more verbose build output.').option('--debug-prerender', 'Enables debug mode for prerendering. Not for production use!').option('--no-mangling', 'Disables mangling.').option('--profile', 'Enables production profiling for React.').option('--experimental-app-only', 'Builds only App Router routes.').option('--turbo', 'Builds using Turbopack.').option('--turbopack', 'Builds using Turbopack.').option('--webpack', 'Builds using webpack.').addOption(new _commander.Option('--experimental-build-mode [mode]', 'Uses an experimental build mode.').choices([
90
90
  'compile',
91
91
  'generate',
@@ -296,7 +296,7 @@ async function handleBuildComplete({ dir, config, buildId, configOutDir, distDir
296
296
  }
297
297
  // need to add matching .rsc output
298
298
  if (isAppPage) {
299
- const rscPathname = (output.pathname === '/' ? '/index' : output.pathname) + '.rsc';
299
+ const rscPathname = (0, _normalizepagepath.normalizePagePath)(output.pathname) + '.rsc';
300
300
  outputs.appPages.push({
301
301
  ...output,
302
302
  pathname: rscPathname,
@@ -399,7 +399,7 @@ async function handleBuildComplete({ dir, config, buildId, configOutDir, distDir
399
399
  // if page is get server side props we need to create
400
400
  // the _next/data output as well
401
401
  if (serverPropsPages.has(page)) {
402
- const dataPathname = _path.default.posix.join('/_next/data', buildId, page + '.json');
402
+ const dataPathname = _path.default.posix.join('/_next/data', buildId, (0, _normalizepagepath.normalizePagePath)(page) + '.json');
403
403
  outputs.pages.push({
404
404
  ...output,
405
405
  pathname: dataPathname,
@@ -508,8 +508,8 @@ async function handleBuildComplete({ dir, config, buildId, configOutDir, distDir
508
508
  if (output.type === _constants.AdapterOutputType.APP_PAGE) {
509
509
  outputs.appPages.push({
510
510
  ...output,
511
- pathname: (output.pathname === '/' ? '/index' : output.pathname) + '.rsc',
512
- id: (output.id === '/' ? '/index' : output.pathname) + '.rsc'
511
+ pathname: (0, _normalizepagepath.normalizePagePath)(output.pathname) + '.rsc',
512
+ id: (0, _normalizepagepath.normalizePagePath)(output.pathname) + '.rsc'
513
513
  });
514
514
  outputs.appPages.push(output);
515
515
  } else {
@@ -540,10 +540,11 @@ async function handleBuildComplete({ dir, config, buildId, configOutDir, distDir
540
540
  initialOutput.fallback.postponedState = meta.postponed;
541
541
  }
542
542
  if (meta == null ? void 0 : meta.segmentPaths) {
543
- const segmentsDir = _path.default.join(appDistDir, `${route}${prefetchSegmentDirSuffix}`);
543
+ const normalizedRoute = (0, _normalizepagepath.normalizePagePath)(route);
544
+ const segmentsDir = _path.default.join(appDistDir, `${normalizedRoute}${prefetchSegmentDirSuffix}`);
544
545
  for (const segmentPath of meta.segmentPaths){
545
546
  var _initialOutput_fallback, _initialOutput_fallback1, _initialOutput_fallback2;
546
- const outputSegmentPath = _path.default.join(route + prefetchSegmentDirSuffix, segmentPath) + prefetchSegmentSuffix;
547
+ const outputSegmentPath = _path.default.join(normalizedRoute + prefetchSegmentDirSuffix, segmentPath) + prefetchSegmentSuffix;
547
548
  const fallbackPathname = _path.default.join(segmentsDir, segmentPath + prefetchSegmentSuffix);
548
549
  outputs.prerenders.push({
549
550
  id: outputSegmentPath,
@@ -571,7 +572,8 @@ async function handleBuildComplete({ dir, config, buildId, configOutDir, distDir
571
572
  };
572
573
  let prerenderGroupId = 1;
573
574
  const getAppRouteMeta = async (route, isAppPage)=>{
574
- const meta = isAppPage ? JSON.parse(await _promises.default.readFile(_path.default.join(appDistDir, `${route}.meta`), 'utf8').catch(()=>'{}')) : {};
575
+ const basename = route.endsWith('/') ? `${route}index` : route;
576
+ const meta = isAppPage ? JSON.parse(await _promises.default.readFile(_path.default.join(appDistDir, `${basename}.meta`), 'utf8').catch(()=>'{}')) : {};
575
577
  if (meta.headers) {
576
578
  // normalize these for consistency
577
579
  for (const key of Object.keys(meta.headers)){
@@ -615,7 +617,7 @@ async function handleBuildComplete({ dir, config, buildId, configOutDir, distDir
615
617
  // for allowQuery for dynamic routes
616
618
  allowQuery = Object.values(routeKeys);
617
619
  }
618
- let filePath = _path.default.join(isAppPage ? appDistDir : pagesDistDir, `${route === '/' ? 'index' : route}.${isAppPage && !dataRoute ? 'body' : 'html'}`);
620
+ let filePath = _path.default.join(isAppPage ? appDistDir : pagesDistDir, `${(0, _normalizepagepath.normalizePagePath)(route)}.${isAppPage && !dataRoute ? 'body' : 'html'}`);
619
621
  // we use the static 404 for notFound: true if available
620
622
  // if not we do a blocking invoke on first request
621
623
  if (isNotFoundTrue && hasStatic404) {
@@ -667,7 +669,7 @@ async function handleBuildComplete({ dir, config, buildId, configOutDir, distDir
667
669
  outputs.prerenders.push(initialOutput);
668
670
  if (dataRoute) {
669
671
  var _initialOutput_fallback;
670
- let dataFilePath = _path.default.join(pagesDistDir, `${route === '/' ? 'index' : route}.json`);
672
+ let dataFilePath = _path.default.join(pagesDistDir, `${(0, _normalizepagepath.normalizePagePath)(route)}.json`);
671
673
  if (isAppPage) {
672
674
  // When experimental PPR is enabled, we expect that the data
673
675
  // that should be served as a part of the prerender should
@@ -893,14 +895,15 @@ async function handleBuildComplete({ dir, config, buildId, configOutDir, distDir
893
895
  prefixRouteKeys: true,
894
896
  includeSuffix: true
895
897
  });
896
- const destination = _path.default.posix.join('/', config.basePath, ...dataRoutePages.has(page) ? [
898
+ const isDataRoute = dataRoutePages.has(page);
899
+ const destination = _path.default.posix.join('/', config.basePath, ...isDataRoute ? [
897
900
  `_next/data`,
898
901
  buildId
899
902
  ] : '', ...page === '/' ? [
900
903
  shouldLocalize ? '$nextLocale.json' : 'index.json'
901
904
  ] : [
902
905
  shouldLocalize ? '$nextLocale' : '',
903
- page + '.json' + getDestinationQuery(routeRegex.routeKeys || {})
906
+ page + (isDataRoute ? '.json' : '') + getDestinationQuery(routeRegex.routeKeys || {})
904
907
  ]);
905
908
  dynamicDataRoutes.push({
906
909
  source: page,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/build/adapter/build-complete.ts"],"sourcesContent":["import path from 'path'\nimport fs from 'fs/promises'\nimport { pathToFileURL } from 'url'\nimport * as Log from '../output/log'\nimport { isMiddlewareFilename } from '../utils'\nimport { RenderingMode } from '../rendering-mode'\nimport { interopDefault } from '../../lib/interop-default'\nimport type { RouteHas } from '../../lib/load-custom-routes'\nimport { recursiveReadDir } from '../../lib/recursive-readdir'\nimport { isDynamicRoute } from '../../shared/lib/router/utils'\nimport type { Revalidate } from '../../server/lib/cache-control'\nimport type { NextConfigComplete } from '../../server/config-shared'\nimport { normalizeAppPath } from '../../shared/lib/router/utils/app-paths'\nimport { AdapterOutputType, type PHASE_TYPE } from '../../shared/lib/constants'\nimport { normalizePagePath } from '../../shared/lib/page-path/normalize-page-path'\nimport {\n convertRedirects,\n convertRewrites,\n convertHeaders,\n} from 'next/dist/compiled/@vercel/routing-utils'\n\nimport type {\n MiddlewareManifest,\n EdgeFunctionDefinition,\n} from '../webpack/plugins/middleware-plugin'\n\nimport type {\n RoutesManifest,\n PrerenderManifest,\n ManifestRewriteRoute,\n FunctionsConfigManifest,\n DynamicPrerenderManifestRoute,\n} from '..'\n\nimport {\n HTML_CONTENT_TYPE_HEADER,\n JSON_CONTENT_TYPE_HEADER,\n NEXT_RESUME_HEADER,\n} from '../../lib/constants'\nimport { normalizeLocalePath } from '../../shared/lib/i18n/normalize-locale-path'\nimport { addPathPrefix } from '../../shared/lib/router/utils/add-path-prefix'\nimport { getRedirectStatus, modifyRouteRegex } from '../../lib/redirect-status'\nimport { getNamedRouteRegex } from '../../shared/lib/router/utils/route-regex'\nimport { escapeStringRegexp } from '../../shared/lib/escape-regexp'\nimport { sortSortableRoutes } from '../../shared/lib/router/utils/sortable-routes'\nimport { nodeFileTrace } from 'next/dist/compiled/@vercel/nft'\nimport { defaultOverrides } from '../../server/require-hook'\nimport { makeIgnoreFn } from '../collect-build-traces'\n\ninterface SharedRouteFields {\n /**\n * id is the unique identifier of the output\n */\n id: string\n /**\n * filePath is the location on disk of the built entrypoint asset\n */\n filePath: string\n /**\n * pathname is the URL pathname the asset should be served at\n */\n pathname: string\n\n /**\n * sourcePage is the original source in the app or pages folder\n */\n sourcePage: string\n\n /**\n * runtime is which runtime the entrypoint is built for\n */\n runtime: 'nodejs' | 'edge'\n /**\n * assets are all necessary traced assets that could be\n * loaded by the output to handle a request e.g. traced\n * node_modules or necessary manifests for Next.js.\n * The key is the relative path from the repo root and the value\n * is the absolute path to the file\n */\n assets: Record<string, string>\n\n /**\n * wasmAssets are bundled wasm files with mapping of name\n * to filePath on disk\n */\n wasmAssets?: Record<string, string>\n\n /**\n * config related to the route\n */\n config: {\n /**\n * maxDuration is a segment config to signal the max\n * execution duration a route should be allowed before\n * it's timed out\n */\n maxDuration?: number\n /**\n * preferredRegion is a segment config to signal deployment\n * region preferences to the provider being used\n */\n preferredRegion?: string | string[]\n\n /**\n * env is the environment variables to expose, this is only\n * populated for edge runtime currently\n */\n env?: Record<string, string>\n }\n}\n\nexport interface AdapterOutput {\n /**\n * `PAGES` represents all the React pages that are under `pages/`.\n */\n PAGES: SharedRouteFields & {\n type: AdapterOutputType.PAGES\n }\n\n /**\n * `PAGES_API` represents all the API routes under `pages/api/`.\n */\n PAGES_API: SharedRouteFields & {\n type: AdapterOutputType.PAGES_API\n }\n /**\n * `APP_PAGE` represents all the React pages that are under `app/` with the\n * filename of `page.{j,t}s{,x}`.\n */\n APP_PAGE: SharedRouteFields & {\n type: AdapterOutputType.APP_PAGE\n }\n\n /**\n * `APP_ROUTE` represents all the API routes and metadata routes that are under `app/` with the\n * filename of `route.{j,t}s{,x}`.\n */\n APP_ROUTE: SharedRouteFields & {\n type: AdapterOutputType.APP_ROUTE\n }\n\n /**\n * `PRERENDER` represents an ISR enabled route that might\n * have a seeded cache entry or fallback generated during build\n */\n PRERENDER: {\n id: string\n pathname: string\n type: AdapterOutputType.PRERENDER\n\n /**\n * For prerenders the parent output is the originating\n * page that the prerender is created from\n */\n parentOutputId: string\n\n /**\n * groupId is the identifier for a group of prerenders that should be\n * revalidated together\n */\n groupId: number\n\n pprChain?: {\n headers: Record<string, string>\n }\n\n /**\n * parentFallbackMode signals whether additional routes can be generated\n * e.g. fallback: false or 'blocking' in getStaticPaths in pages router\n */\n parentFallbackMode?: DynamicPrerenderManifestRoute['fallback']\n\n /**\n * fallback is initial cache data generated during build for a prerender\n */\n fallback?: {\n /**\n * path to the fallback file can be HTML/JSON/RSC\n */\n filePath: string\n /**\n * initialStatus is the status code that should be applied\n * when serving the fallback\n */\n initialStatus?: number\n /**\n * initialHeaders are the headers that should be sent when\n * serving the fallback\n */\n initialHeaders?: Record<string, string | string[]>\n /**\n * initial expiration is how long until the fallback entry\n * is considered expired and no longer valid to serve\n */\n initialExpiration?: number\n /**\n * initial revalidate is how long until the fallback is\n * considered stale and should be revalidated\n */\n initialRevalidate?: Revalidate\n\n /**\n * postponedState is the PPR state when it postponed and is used for resuming\n */\n postponedState?: string\n }\n /**\n * config related to the route\n */\n config: {\n /**\n * allowQuery is the allowed query values to be passed\n * to an ISR function and what should be considered for the cacheKey\n * e.g. for /blog/[slug], \"slug\" is the only allowQuery\n */\n allowQuery?: string[]\n /**\n * allowHeader is the allowed headers to be passed to an\n * ISR function to prevent accidentally poisoning the cache\n * from leaking additional information that can impact the render\n */\n allowHeader?: string[]\n /**\n * bypass for is a list of has conditions the cache\n * should be bypassed and invoked directly e.g. action header\n */\n bypassFor?: RouteHas[]\n /**\n * renderingMode signals PPR or not for a prerender\n */\n renderingMode?: RenderingMode\n\n /**\n * bypassToken is the generated token that signals a prerender cache\n * should be bypassed\n */\n bypassToken?: string\n }\n }\n\n /**\n * `STATIC_FILE` represents a static file (ie /_next/static) or a purely\n * static HTML asset e.g. an automatically statically optimized page\n * that does not use ISR\n */\n STATIC_FILE: {\n id: string\n filePath: string\n pathname: string\n type: AdapterOutputType.STATIC_FILE\n }\n\n /**\n * `MIDDLEWARE` represents the middleware output if present\n */\n MIDDLEWARE: SharedRouteFields & {\n type: AdapterOutputType.MIDDLEWARE\n /**\n * config related to the route\n */\n config: SharedRouteFields['config'] & {\n /**\n * matchers are the configured matchers for middleware\n */\n matchers?: Array<{\n source: string\n sourceRegex: string\n has: RouteHas[] | undefined\n missing: RouteHas[] | undefined\n }>\n }\n }\n}\n\nexport interface AdapterOutputs {\n pages: Array<AdapterOutput['PAGES']>\n middleware?: AdapterOutput['MIDDLEWARE']\n appPages: Array<AdapterOutput['APP_PAGE']>\n pagesApi: Array<AdapterOutput['PAGES_API']>\n appRoutes: Array<AdapterOutput['APP_ROUTE']>\n prerenders: Array<AdapterOutput['PRERENDER']>\n staticFiles: Array<AdapterOutput['STATIC_FILE']>\n}\n\ntype RewriteItem = {\n source: string\n sourceRegex: string\n destination: string\n has: RouteHas[] | undefined\n missing: RouteHas[] | undefined\n}\n\ntype DynamicRouteItem = {\n source: string\n sourceRegex: string\n destination: string\n has: RouteHas[] | undefined\n missing: RouteHas[] | undefined\n}\n\nexport interface NextAdapter {\n name: string\n /**\n * modifyConfig is called for any CLI command that loads the next.config\n * to only apply for specific commands the \"phase\" should be used\n * @param config\n * @param ctx\n * @returns\n */\n modifyConfig?: (\n config: NextConfigComplete,\n ctx: {\n phase: PHASE_TYPE\n }\n ) => Promise<NextConfigComplete> | NextConfigComplete\n onBuildComplete?: (ctx: {\n routes: {\n headers: Array<{\n source: string\n sourceRegex: string\n headers: Record<string, string>\n has: RouteHas[] | undefined\n missing: RouteHas[] | undefined\n priority?: boolean\n }>\n redirects: Array<{\n source: string\n sourceRegex: string\n destination: string\n statusCode: number\n has: RouteHas[] | undefined\n missing: RouteHas[] | undefined\n priority?: boolean\n }>\n rewrites: {\n beforeFiles: RewriteItem[]\n afterFiles: RewriteItem[]\n fallback: RewriteItem[]\n }\n dynamicRoutes: Array<DynamicRouteItem>\n }\n outputs: AdapterOutputs\n /**\n * projectDir is the absolute directory the Next.js application is in\n */\n projectDir: string\n /**\n * repoRoot is the absolute path of the detected root of the repo\n */\n repoRoot: string\n /**\n * distDir is the absolute path to the dist directory\n */\n distDir: string\n /**\n * config is the loaded next.config (has modifyConfig applied)\n */\n config: NextConfigComplete\n /**\n * nextVersion is the current version of Next.js being used\n */\n nextVersion: string\n /**\n * buildId is the current unique ID for the build, this can be\n * influenced by NextConfig.generateBuildId\n */\n buildId: string\n }) => Promise<void> | void\n}\n\nfunction normalizePathnames(\n config: NextConfigComplete,\n outputs: AdapterOutputs\n) {\n // normalize pathname field with basePath\n if (config.basePath) {\n for (const output of [\n ...outputs.pages,\n ...outputs.pagesApi,\n ...outputs.appPages,\n ...outputs.appRoutes,\n ...outputs.prerenders,\n ...outputs.staticFiles,\n ]) {\n output.pathname =\n addPathPrefix(output.pathname, config.basePath).replace(/\\/$/, '') ||\n '/'\n }\n }\n}\n\nexport async function handleBuildComplete({\n dir,\n config,\n buildId,\n configOutDir,\n distDir,\n pageKeys,\n tracingRoot,\n adapterPath,\n appPageKeys,\n staticPages,\n nextVersion,\n hasStatic404,\n hasStatic500,\n routesManifest,\n serverPropsPages,\n hasNodeMiddleware,\n prerenderManifest,\n middlewareManifest,\n requiredServerFiles,\n hasInstrumentationHook,\n functionsConfigManifest,\n}: {\n dir: string\n distDir: string\n buildId: string\n configOutDir: string\n adapterPath: string\n tracingRoot: string\n nextVersion: string\n hasStatic404: boolean\n hasStatic500: boolean\n staticPages: Set<string>\n hasNodeMiddleware: boolean\n config: NextConfigComplete\n pageKeys: readonly string[]\n serverPropsPages: Set<string>\n requiredServerFiles: string[]\n routesManifest: RoutesManifest\n hasInstrumentationHook: boolean\n prerenderManifest: PrerenderManifest\n middlewareManifest: MiddlewareManifest\n appPageKeys?: readonly string[] | undefined\n functionsConfigManifest: FunctionsConfigManifest\n}) {\n const adapterMod = interopDefault(\n await import(pathToFileURL(require.resolve(adapterPath)).href)\n ) as NextAdapter\n\n if (typeof adapterMod.onBuildComplete === 'function') {\n const outputs: AdapterOutputs = {\n pages: [],\n pagesApi: [],\n appPages: [],\n appRoutes: [],\n prerenders: [],\n staticFiles: [],\n }\n\n if (config.output === 'export') {\n // collect export assets and provide as static files\n const exportFiles = await recursiveReadDir(configOutDir)\n\n for (const file of exportFiles) {\n let pathname = (\n file.endsWith('.html') ? file.replace(/\\.html$/, '') : file\n ).replace(/\\\\/g, '/')\n\n pathname = pathname.startsWith('/') ? pathname : `/${pathname}`\n\n outputs.staticFiles.push({\n id: file,\n pathname,\n filePath: path.join(configOutDir, file),\n type: AdapterOutputType.STATIC_FILE,\n } satisfies AdapterOutput['STATIC_FILE'])\n }\n } else {\n const staticFiles = await recursiveReadDir(path.join(distDir, 'static'))\n\n for (const file of staticFiles) {\n const pathname = path.posix.join('/_next/static', file)\n const filePath = path.join(distDir, 'static', file)\n outputs.staticFiles.push({\n type: AdapterOutputType.STATIC_FILE,\n id: path.join('static', file),\n pathname,\n filePath,\n })\n }\n\n const sharedNodeAssets: Record<string, string> = {}\n const pagesSharedNodeAssets: Record<string, string> = {}\n const appPagesSharedNodeAssets: Record<string, string> = {}\n\n const sharedTraceIgnores = [\n '**/next/dist/compiled/next-server/**/*.dev.js',\n '**/next/dist/compiled/webpack/*',\n '**/node_modules/webpack5/**/*',\n '**/next/dist/server/lib/route-resolver*',\n 'next/dist/compiled/semver/semver/**/*.js',\n '**/node_modules/react{,-dom,-dom-server-turbopack}/**/*.development.js',\n '**/*.d.ts',\n '**/*.map',\n '**/next/dist/pages/**/*',\n '**/node_modules/sharp/**/*',\n '**/@img/sharp-libvips*/**/*',\n '**/next/dist/compiled/edge-runtime/**/*',\n '**/next/dist/server/web/sandbox/**/*',\n '**/next/dist/server/post-process.js',\n ]\n const sharedIgnoreFn = makeIgnoreFn(tracingRoot, sharedTraceIgnores)\n\n for (const file of requiredServerFiles) {\n // add to shared node assets\n const filePath = path.join(dir, file)\n const fileOutputPath = path.relative(tracingRoot, filePath)\n sharedNodeAssets[fileOutputPath] = filePath\n }\n\n const moduleTypes = ['app-page', 'pages'] as const\n\n for (const type of moduleTypes) {\n const currentDependencies: string[] = []\n const modulePath = require.resolve(\n `next/dist/server/route-modules/${type}/module.compiled`\n )\n const contextDir = path.join(\n path.dirname(modulePath),\n 'vendored',\n 'contexts'\n )\n\n for (const item of await fs.readdir(contextDir)) {\n if (item.match(/\\.(mjs|cjs|js)$/)) {\n currentDependencies.push(path.join(contextDir, item))\n }\n }\n\n const { fileList, esmFileList } = await nodeFileTrace(\n currentDependencies,\n {\n base: tracingRoot,\n ignore: sharedIgnoreFn,\n }\n )\n esmFileList.forEach((item) => fileList.add(item))\n\n for (const rootRelativeFilePath of fileList) {\n if (type === 'pages') {\n pagesSharedNodeAssets[rootRelativeFilePath] = path.join(\n tracingRoot,\n rootRelativeFilePath\n )\n } else {\n appPagesSharedNodeAssets[rootRelativeFilePath] = path.join(\n tracingRoot,\n rootRelativeFilePath\n )\n }\n }\n }\n\n // These are modules that are necessary for bootstrapping node env\n const necessaryNodeDependencies = [\n require.resolve('next/dist/server/node-environment'),\n require.resolve('next/dist/server/require-hook'),\n require.resolve('next/dist/server/node-polyfill-crypto'),\n ...Object.values(defaultOverrides).filter((item) => path.extname(item)),\n ]\n\n const { fileList, esmFileList } = await nodeFileTrace(\n necessaryNodeDependencies,\n {\n base: tracingRoot,\n ignore: sharedIgnoreFn,\n }\n )\n esmFileList.forEach((item) => fileList.add(item))\n\n for (const rootRelativeFilePath of fileList) {\n sharedNodeAssets[rootRelativeFilePath] = path.join(\n tracingRoot,\n rootRelativeFilePath\n )\n }\n\n if (hasInstrumentationHook) {\n const assets = await handleTraceFiles(\n path.join(distDir, 'server', 'instrumentation.js.nft.json'),\n 'neutral'\n )\n const fileOutputPath = path.relative(\n tracingRoot,\n path.join(distDir, 'server', 'instrumentation.js')\n )\n sharedNodeAssets[fileOutputPath] = path.join(\n distDir,\n 'server',\n 'instrumentation.js'\n )\n Object.assign(sharedNodeAssets, assets)\n }\n\n async function handleTraceFiles(\n traceFilePath: string,\n type: 'pages' | 'app' | 'neutral'\n ): Promise<Record<string, string>> {\n const assets: Record<string, string> = Object.assign(\n {},\n sharedNodeAssets,\n type === 'pages' ? pagesSharedNodeAssets : {},\n type === 'app' ? appPagesSharedNodeAssets : {}\n )\n const traceData = JSON.parse(\n await fs.readFile(traceFilePath, 'utf8')\n ) as {\n files: string[]\n }\n const traceFileDir = path.dirname(traceFilePath)\n\n for (const relativeFile of traceData.files) {\n const tracedFilePath = path.join(traceFileDir, relativeFile)\n const fileOutputPath = path.relative(tracingRoot, tracedFilePath)\n assets[fileOutputPath] = tracedFilePath\n }\n return assets\n }\n\n async function handleEdgeFunction(\n page: EdgeFunctionDefinition,\n isMiddleware: boolean = false\n ) {\n let type: AdapterOutputType = AdapterOutputType.PAGES\n const isAppPrefix = page.name.startsWith('app/')\n const isAppPage = isAppPrefix && page.name.endsWith('/page')\n const isAppRoute = isAppPrefix && page.name.endsWith('/route')\n let currentOutputs: Array<\n | AdapterOutput['PAGES']\n | AdapterOutput['PAGES_API']\n | AdapterOutput['APP_PAGE']\n | AdapterOutput['APP_ROUTE']\n > = outputs.pages\n\n if (isMiddleware) {\n type = AdapterOutputType.MIDDLEWARE\n } else if (isAppPage) {\n currentOutputs = outputs.appPages\n type = AdapterOutputType.APP_PAGE\n } else if (isAppRoute) {\n currentOutputs = outputs.appRoutes\n type = AdapterOutputType.APP_ROUTE\n } else if (page.page.startsWith('/api')) {\n currentOutputs = outputs.pagesApi\n type = AdapterOutputType.PAGES_API\n }\n\n const route = page.page.replace(/^(app|pages)\\//, '')\n\n const output: Omit<AdapterOutput[typeof type], 'type'> & {\n type: any\n } = {\n type,\n id: page.name,\n runtime: 'edge',\n sourcePage: route,\n pathname: isAppPrefix ? normalizeAppPath(route) : route,\n filePath: path.join(\n distDir,\n page.files.find(\n (item) =>\n item.startsWith('server/app') || item.startsWith('server/pages')\n ) ||\n // TODO: turbopack build doesn't name the main entry chunk\n // identifiably so we don't know which to mark here but\n // technically edge needs all chunks to load always so\n // should this field even be provided?\n page.files[0] ||\n ''\n ),\n assets: {},\n wasmAssets: {},\n config: {\n env: page.env,\n },\n }\n\n function handleFile(file: string) {\n const originalPath = path.join(distDir, file)\n const fileOutputPath = path.join(\n path.relative(tracingRoot, distDir),\n file\n )\n if (!output.assets) {\n output.assets = {}\n }\n output.assets[fileOutputPath] = originalPath\n }\n for (const file of page.files) {\n handleFile(file)\n }\n for (const item of [...(page.assets || [])]) {\n handleFile(item.filePath)\n }\n for (const item of page.wasm || []) {\n if (!output.wasmAssets) {\n output.wasmAssets = {}\n }\n output.wasmAssets[item.name] = path.join(distDir, item.filePath)\n }\n\n if (type === AdapterOutputType.MIDDLEWARE) {\n ;(output as AdapterOutput['MIDDLEWARE']).config.matchers =\n page.matchers.map((item) => {\n return {\n source: item.originalSource,\n sourceRegex: item.regexp,\n has: item.has,\n missing: [\n ...(item.missing || []),\n // always skip middleware for on-demand revalidate\n {\n type: 'header',\n key: 'x-prerender-revalidate',\n value: prerenderManifest.preview.previewModeId,\n },\n ],\n }\n })\n output.pathname = '/_middleware'\n output.id = page.name\n outputs.middleware = output\n } else {\n currentOutputs.push(output)\n }\n\n // need to add matching .rsc output\n if (isAppPage) {\n const rscPathname =\n (output.pathname === '/' ? '/index' : output.pathname) + '.rsc'\n outputs.appPages.push({\n ...output,\n pathname: rscPathname,\n id: page.name + '.rsc',\n })\n }\n }\n\n const edgeFunctionHandlers: Promise<any>[] = []\n\n for (const middleware of Object.values(middlewareManifest.middleware)) {\n if (isMiddlewareFilename(middleware.name)) {\n edgeFunctionHandlers.push(handleEdgeFunction(middleware, true))\n }\n }\n\n for (const page of Object.values(middlewareManifest.functions)) {\n edgeFunctionHandlers.push(handleEdgeFunction(page))\n }\n const pagesDistDir = path.join(distDir, 'server', 'pages')\n const pageOutputMap: Record<\n string,\n AdapterOutput['PAGES'] | AdapterOutput['PAGES_API']\n > = {}\n\n const rscFallbackPath = path.join(distDir, 'server', 'rsc-fallback.json')\n\n if (appPageKeys && appPageKeys.length > 0 && pageKeys.length > 0) {\n await fs.writeFile(rscFallbackPath, '{}')\n }\n\n for (const page of pageKeys) {\n if (page === '/_app' || page === '/_document') {\n continue\n }\n\n if (middlewareManifest.functions.hasOwnProperty(page)) {\n continue\n }\n\n const route = normalizePagePath(page)\n const pageFile = path.join(pagesDistDir, `${route}.js`)\n\n // if it's an auto static optimized page it's just\n // a static file\n if (staticPages.has(page)) {\n if (config.i18n) {\n for (const locale of config.i18n.locales || []) {\n const localePage =\n page === '/' ? `/${locale}` : addPathPrefix(page, `/${locale}`)\n\n const localeOutput = {\n id: localePage,\n pathname: localePage,\n type: AdapterOutputType.STATIC_FILE,\n filePath: path.join(\n pagesDistDir,\n `${normalizePagePath(localePage)}.html`\n ),\n } satisfies AdapterOutput['STATIC_FILE']\n\n outputs.staticFiles.push(localeOutput)\n\n if (appPageKeys && appPageKeys.length > 0) {\n outputs.staticFiles.push({\n id: `${localePage}.rsc`,\n pathname: `${localePage}.rsc`,\n type: AdapterOutputType.STATIC_FILE,\n filePath: rscFallbackPath,\n })\n }\n }\n } else {\n const staticOutput = {\n id: page,\n pathname: route,\n type: AdapterOutputType.STATIC_FILE,\n filePath: pageFile.replace(/\\.js$/, '.html'),\n } satisfies AdapterOutput['STATIC_FILE']\n\n outputs.staticFiles.push(staticOutput)\n\n if (appPageKeys && appPageKeys.length > 0) {\n outputs.staticFiles.push({\n id: `${page}.rsc`,\n pathname: `${route}.rsc`,\n type: AdapterOutputType.STATIC_FILE,\n filePath: rscFallbackPath,\n })\n }\n }\n // if was a static file output don't create page output as well\n continue\n }\n\n const pageTraceFile = `${pageFile}.nft.json`\n const assets = await handleTraceFiles(pageTraceFile, 'pages').catch(\n (err) => {\n if (err.code !== 'ENOENT' || (page !== '/404' && page !== '/500')) {\n Log.warn(`Failed to locate traced assets for ${pageFile}`, err)\n }\n return {} as Record<string, string>\n }\n )\n const functionConfig = functionsConfigManifest.functions[route] || {}\n let sourcePage = route.replace(/^\\//, '')\n\n sourcePage = sourcePage === 'api' ? 'api/index' : sourcePage\n\n const output: AdapterOutput['PAGES'] | AdapterOutput['PAGES_API'] = {\n id: route,\n type: page.startsWith('/api')\n ? AdapterOutputType.PAGES_API\n : AdapterOutputType.PAGES,\n filePath: pageTraceFile.replace(/\\.nft\\.json$/, ''),\n pathname: route,\n sourcePage,\n assets,\n runtime: 'nodejs',\n config: {\n maxDuration: functionConfig.maxDuration,\n preferredRegion: functionConfig.regions,\n },\n }\n pageOutputMap[page] = output\n\n if (output.type === AdapterOutputType.PAGES) {\n outputs.pages.push(output)\n\n // if page is get server side props we need to create\n // the _next/data output as well\n if (serverPropsPages.has(page)) {\n const dataPathname = path.posix.join(\n '/_next/data',\n buildId,\n page + '.json'\n )\n outputs.pages.push({\n ...output,\n pathname: dataPathname,\n id: dataPathname,\n })\n }\n\n for (const locale of config.i18n?.locales || []) {\n const localePage =\n page === '/' ? `/${locale}` : addPathPrefix(page, `/${locale}`)\n\n outputs.pages.push({\n ...output,\n id: localePage,\n pathname: localePage,\n })\n\n if (serverPropsPages.has(page)) {\n const dataPathname = path.posix.join(\n '/_next/data',\n buildId,\n localePage + '.json'\n )\n outputs.pages.push({\n ...output,\n pathname: dataPathname,\n id: dataPathname,\n })\n }\n }\n } else {\n outputs.pagesApi.push(output)\n }\n\n if (appPageKeys && appPageKeys.length > 0) {\n outputs.staticFiles.push({\n id: `${output.id}.rsc`,\n pathname: `${output.pathname}.rsc`,\n type: AdapterOutputType.STATIC_FILE,\n filePath: rscFallbackPath,\n })\n }\n }\n\n if (hasNodeMiddleware) {\n const middlewareFile = path.join(distDir, 'server', 'middleware.js')\n const middlewareTrace = `${middlewareFile}.nft.json`\n const assets = await handleTraceFiles(middlewareTrace, 'neutral')\n const functionConfig =\n functionsConfigManifest.functions['/_middleware'] || {}\n\n outputs.middleware = {\n pathname: '/_middleware',\n id: '/_middleware',\n sourcePage: 'middleware',\n assets,\n type: AdapterOutputType.MIDDLEWARE,\n runtime: 'nodejs',\n filePath: middlewareFile,\n config: {\n matchers:\n functionConfig.matchers?.map((item) => {\n return {\n source: item.originalSource,\n sourceRegex: item.regexp,\n has: item.has,\n missing: [\n ...(item.missing || []),\n // always skip middleware for on-demand revalidate\n {\n type: 'header',\n key: 'x-prerender-revalidate',\n value: prerenderManifest.preview.previewModeId,\n },\n ],\n }\n }) || [],\n },\n } satisfies AdapterOutput['MIDDLEWARE']\n }\n const appOutputMap: Record<\n string,\n AdapterOutput['APP_PAGE'] | AdapterOutput['APP_ROUTE']\n > = {}\n const appDistDir = path.join(distDir, 'server', 'app')\n\n if (appPageKeys) {\n for (const page of appPageKeys) {\n if (middlewareManifest.functions.hasOwnProperty(page)) {\n continue\n }\n const normalizedPage = normalizeAppPath(page)\n const pageFile = path.join(appDistDir, `${page}.js`)\n const pageTraceFile = `${pageFile}.nft.json`\n const assets = await handleTraceFiles(pageTraceFile, 'app').catch(\n (err) => {\n Log.warn(`Failed to copy traced files for ${pageFile}`, err)\n return {} as Record<string, string>\n }\n )\n\n // If this is a parallel route we just need to merge\n // the assets as they share the same pathname\n const existingOutput = appOutputMap[normalizedPage]\n if (existingOutput) {\n Object.assign(existingOutput.assets, assets)\n existingOutput.assets[path.relative(tracingRoot, pageFile)] =\n pageFile\n\n continue\n }\n\n const functionConfig =\n functionsConfigManifest.functions[normalizedPage] || {}\n\n const output: AdapterOutput['APP_PAGE'] | AdapterOutput['APP_ROUTE'] =\n {\n pathname: normalizedPage,\n id: normalizedPage,\n sourcePage: page,\n assets,\n type: page.endsWith('/route')\n ? AdapterOutputType.APP_ROUTE\n : AdapterOutputType.APP_PAGE,\n runtime: 'nodejs',\n filePath: pageFile,\n config: {\n maxDuration: functionConfig.maxDuration,\n preferredRegion: functionConfig.regions,\n },\n }\n appOutputMap[normalizedPage] = output\n\n if (output.type === AdapterOutputType.APP_PAGE) {\n outputs.appPages.push({\n ...output,\n pathname:\n (output.pathname === '/' ? '/index' : output.pathname) + '.rsc',\n id: (output.id === '/' ? '/index' : output.pathname) + '.rsc',\n })\n outputs.appPages.push(output)\n } else {\n outputs.appRoutes.push(output)\n }\n }\n }\n\n const getParentOutput = (\n srcRoute: string,\n childRoute: string,\n allowMissing?: boolean\n ) => {\n const normalizedSrcRoute = normalizeLocalePath(\n srcRoute,\n config.i18n?.locales || []\n ).pathname\n const parentOutput =\n pageOutputMap[normalizedSrcRoute] || appOutputMap[normalizedSrcRoute]\n\n if (!parentOutput && !allowMissing) {\n console.error({\n appOutputs: Object.keys(appOutputMap),\n pageOutputs: Object.keys(pageOutputMap),\n })\n throw new Error(\n `Invariant: failed to find source route ${srcRoute} for prerender ${childRoute}`\n )\n }\n return parentOutput\n }\n\n const {\n prefetchSegmentDirSuffix,\n prefetchSegmentSuffix,\n varyHeader,\n didPostponeHeader,\n contentTypeHeader: rscContentTypeHeader,\n } = routesManifest.rsc\n\n const handleAppMeta = async (\n route: string,\n initialOutput: AdapterOutput['PRERENDER'],\n meta: {\n postponed?: string\n segmentPaths?: string[]\n }\n ) => {\n if (meta.postponed && initialOutput.fallback) {\n initialOutput.fallback.postponedState = meta.postponed\n }\n\n if (meta?.segmentPaths) {\n const segmentsDir = path.join(\n appDistDir,\n `${route}${prefetchSegmentDirSuffix}`\n )\n\n for (const segmentPath of meta.segmentPaths) {\n const outputSegmentPath =\n path.join(route + prefetchSegmentDirSuffix, segmentPath) +\n prefetchSegmentSuffix\n\n const fallbackPathname = path.join(\n segmentsDir,\n segmentPath + prefetchSegmentSuffix\n )\n\n outputs.prerenders.push({\n id: outputSegmentPath,\n pathname: outputSegmentPath,\n type: AdapterOutputType.PRERENDER,\n parentOutputId: initialOutput.parentOutputId,\n groupId: initialOutput.groupId,\n\n config: {\n ...initialOutput.config,\n },\n\n fallback: {\n filePath: fallbackPathname,\n initialExpiration: initialOutput.fallback?.initialExpiration,\n initialRevalidate: initialOutput.fallback?.initialRevalidate,\n\n initialHeaders: {\n ...initialOutput.fallback?.initialHeaders,\n vary: varyHeader,\n 'content-type': rscContentTypeHeader,\n [didPostponeHeader]: '2',\n },\n },\n } satisfies AdapterOutput['PRERENDER'])\n }\n }\n }\n\n let prerenderGroupId = 1\n\n type AppRouteMeta = {\n segmentPaths?: string[]\n postponed?: string\n headers?: Record<string, string>\n status?: number\n }\n\n const getAppRouteMeta = async (\n route: string,\n isAppPage: boolean\n ): Promise<AppRouteMeta> => {\n const meta: AppRouteMeta = isAppPage\n ? JSON.parse(\n await fs\n .readFile(path.join(appDistDir, `${route}.meta`), 'utf8')\n .catch(() => '{}')\n )\n : {}\n\n if (meta.headers) {\n // normalize these for consistency\n for (const key of Object.keys(meta.headers)) {\n const keyLower = key.toLowerCase()\n if (keyLower !== key) {\n const value = meta.headers[key]\n delete meta.headers[key]\n meta.headers[keyLower] = value\n }\n }\n }\n\n return meta\n }\n\n const filePathCache = new Map<string, Promise<boolean>>()\n const cachedFilePathCheck = async (filePath: string) => {\n if (filePathCache.has(filePath)) {\n return filePathCache.get(filePath)\n }\n const newCheck = fs\n .access(filePath)\n .then(() => true)\n .catch(() => false)\n filePathCache.set(filePath, newCheck)\n\n return newCheck\n }\n\n for (const route in prerenderManifest.routes) {\n const {\n initialExpireSeconds: initialExpiration,\n initialRevalidateSeconds: initialRevalidate,\n initialHeaders,\n initialStatus,\n prefetchDataRoute,\n dataRoute,\n renderingMode,\n allowHeader,\n experimentalBypassFor,\n } = prerenderManifest.routes[route]\n\n const srcRoute = prerenderManifest.routes[route].srcRoute || route\n const srcRouteInfo = prerenderManifest.dynamicRoutes[srcRoute]\n\n const isAppPage =\n Boolean(appOutputMap[srcRoute]) || srcRoute === '/_not-found'\n\n const isNotFoundTrue = prerenderManifest.notFoundRoutes.includes(route)\n\n let allowQuery: string[] | undefined\n const routeKeys = routesManifest.dynamicRoutes.find(\n (item) => item.page === srcRoute\n )?.routeKeys\n\n if (!isDynamicRoute(srcRoute)) {\n // for non-dynamic routes we use an empty array since\n // no query values bust the cache for non-dynamic prerenders\n // prerendered paths also do not pass allowQuery as they match\n // during handle: 'filesystem' so should not cache differently\n // by query values\n allowQuery = []\n } else if (routeKeys) {\n // if we have routeKeys in the routes-manifest we use those\n // for allowQuery for dynamic routes\n allowQuery = Object.values(routeKeys)\n }\n\n let filePath = path.join(\n isAppPage ? appDistDir : pagesDistDir,\n `${route === '/' ? 'index' : route}.${isAppPage && !dataRoute ? 'body' : 'html'}`\n )\n\n // we use the static 404 for notFound: true if available\n // if not we do a blocking invoke on first request\n if (isNotFoundTrue && hasStatic404) {\n const locale =\n config.i18n &&\n normalizeLocalePath(route, config.i18n?.locales).detectedLocale\n\n for (const currentFilePath of [\n path.join(pagesDistDir, locale || '', '404.html'),\n path.join(pagesDistDir, '404.html'),\n ]) {\n if (await cachedFilePathCheck(currentFilePath)) {\n filePath = currentFilePath\n break\n }\n }\n }\n\n const meta = await getAppRouteMeta(route, isAppPage)\n\n const initialOutput: AdapterOutput['PRERENDER'] = {\n id: route,\n type: AdapterOutputType.PRERENDER,\n pathname: route,\n parentOutputId:\n srcRoute === '/_not-found'\n ? srcRoute\n : getParentOutput(srcRoute, route).id,\n groupId: prerenderGroupId,\n\n pprChain:\n isAppPage && config.experimental.ppr\n ? {\n headers: {\n [NEXT_RESUME_HEADER]: '1',\n },\n }\n : undefined,\n\n parentFallbackMode: srcRouteInfo?.fallback,\n\n fallback:\n !isNotFoundTrue || (isNotFoundTrue && hasStatic404)\n ? {\n filePath,\n initialStatus:\n (initialStatus ?? isNotFoundTrue) ? 404 : undefined,\n initialHeaders: {\n ...initialHeaders,\n vary: varyHeader,\n 'content-type': HTML_CONTENT_TYPE_HEADER,\n ...meta.headers,\n },\n initialExpiration,\n initialRevalidate:\n typeof initialRevalidate === 'undefined'\n ? 1\n : initialRevalidate,\n }\n : undefined,\n config: {\n allowQuery,\n allowHeader,\n renderingMode,\n bypassFor: experimentalBypassFor,\n bypassToken: prerenderManifest.preview.previewModeId,\n },\n }\n outputs.prerenders.push(initialOutput)\n\n if (dataRoute) {\n let dataFilePath = path.join(\n pagesDistDir,\n `${route === '/' ? 'index' : route}.json`\n )\n\n if (isAppPage) {\n // When experimental PPR is enabled, we expect that the data\n // that should be served as a part of the prerender should\n // be from the prefetch data route. If this isn't enabled\n // for ppr, the only way to get the data is from the data\n // route.\n dataFilePath = path.join(\n appDistDir,\n prefetchDataRoute &&\n renderingMode === RenderingMode.PARTIALLY_STATIC\n ? prefetchDataRoute\n : dataRoute\n )\n }\n\n outputs.prerenders.push({\n ...initialOutput,\n id: dataRoute,\n pathname: dataRoute,\n fallback: isNotFoundTrue\n ? undefined\n : {\n ...initialOutput.fallback,\n initialHeaders: {\n ...initialOutput.fallback?.initialHeaders,\n 'content-type': isAppPage\n ? rscContentTypeHeader\n : JSON_CONTENT_TYPE_HEADER,\n },\n filePath: dataFilePath,\n },\n })\n }\n\n if (isAppPage) {\n await handleAppMeta(route, initialOutput, meta)\n }\n prerenderGroupId += 1\n }\n\n for (const dynamicRoute in prerenderManifest.dynamicRoutes) {\n const {\n fallback,\n fallbackExpire,\n fallbackRevalidate,\n fallbackHeaders,\n fallbackStatus,\n allowHeader,\n dataRoute,\n renderingMode,\n experimentalBypassFor,\n } = prerenderManifest.dynamicRoutes[dynamicRoute]\n\n const isAppPage = Boolean(appOutputMap[dynamicRoute])\n\n const allowQuery = Object.values(\n routesManifest.dynamicRoutes.find(\n (item) => item.page === dynamicRoute\n )?.routeKeys || {}\n )\n const meta = await getAppRouteMeta(dynamicRoute, isAppPage)\n\n const initialOutput: AdapterOutput['PRERENDER'] = {\n id: dynamicRoute,\n type: AdapterOutputType.PRERENDER,\n pathname: dynamicRoute,\n parentOutputId: getParentOutput(dynamicRoute, dynamicRoute).id,\n groupId: prerenderGroupId,\n config: {\n allowQuery,\n allowHeader,\n renderingMode,\n bypassFor: experimentalBypassFor,\n bypassToken: prerenderManifest.preview.previewModeId,\n },\n fallback:\n typeof fallback === 'string'\n ? {\n filePath: path.join(\n isAppPage ? appDistDir : pagesDistDir,\n // app router dynamic route fallbacks don't have the\n // extension so ensure it's added here\n fallback.endsWith('.html') ? fallback : `${fallback}.html`\n ),\n initialStatus: fallbackStatus,\n initialHeaders: {\n ...fallbackHeaders,\n 'content-type': HTML_CONTENT_TYPE_HEADER,\n },\n initialExpiration: fallbackExpire,\n initialRevalidate: fallbackRevalidate || 1,\n }\n : undefined,\n }\n\n if (!config.i18n || isAppPage) {\n outputs.prerenders.push(initialOutput)\n\n if (isAppPage) {\n await handleAppMeta(dynamicRoute, initialOutput, meta)\n }\n\n if (dataRoute) {\n outputs.prerenders.push({\n ...initialOutput,\n id: dataRoute,\n pathname: dataRoute,\n fallback: undefined,\n })\n }\n prerenderGroupId += 1\n } else {\n for (const locale of config.i18n.locales) {\n const currentOutput = {\n ...initialOutput,\n pathname: path.posix.join(`/${locale}`, initialOutput.pathname),\n id: path.posix.join(`/${locale}`, initialOutput.id),\n fallback:\n typeof fallback === 'string'\n ? {\n ...initialOutput.fallback,\n filePath: path.join(\n pagesDistDir,\n locale,\n // app router dynamic route fallbacks don't have the\n // extension so ensure it's added here\n fallback.endsWith('.html')\n ? fallback\n : `${fallback}.html`\n ),\n }\n : undefined,\n groupId: prerenderGroupId,\n }\n outputs.prerenders.push(currentOutput)\n\n if (dataRoute) {\n const dataPathname = path.posix.join(\n `/_next/data`,\n buildId,\n locale,\n dynamicRoute + '.json'\n )\n outputs.prerenders.push({\n ...initialOutput,\n id: dataPathname,\n pathname: dataPathname,\n // data route doesn't have skeleton fallback\n fallback: undefined,\n groupId: prerenderGroupId,\n })\n }\n prerenderGroupId += 1\n }\n }\n }\n\n // ensure 404\n const staticErrorDocs = [\n ...(hasStatic404 ? ['/404'] : []),\n ...(hasStatic500 ? ['/500'] : []),\n ]\n\n for (const errorDoc of staticErrorDocs) {\n const errorDocPath = path.posix.join(\n '/',\n config.i18n?.defaultLocale || '',\n errorDoc\n )\n\n if (!prerenderManifest.routes[errorDocPath]) {\n for (const currentDocPath of [\n errorDocPath,\n ...(config.i18n?.locales?.map((locale) =>\n path.posix.join('/', locale, errorDoc)\n ) || []),\n ]) {\n const currentFilePath = path.join(\n pagesDistDir,\n `${currentDocPath}.html`\n )\n if (await cachedFilePathCheck(currentFilePath)) {\n outputs.staticFiles.push({\n pathname: currentDocPath,\n id: currentDocPath,\n type: AdapterOutputType.STATIC_FILE,\n filePath: currentFilePath,\n })\n }\n }\n }\n }\n }\n\n normalizePathnames(config, outputs)\n\n const dynamicRoutes: DynamicRouteItem[] = []\n const dynamicDataRoutes: DynamicRouteItem[] = []\n const dynamicSegmentRoutes: DynamicRouteItem[] = []\n\n const getDestinationQuery = (routeKeys: Record<string, string>) => {\n const items = Object.entries(routeKeys ?? {})\n if (items.length === 0) return ''\n\n return '?' + items.map(([key, value]) => `${value}=$${key}`).join('&')\n }\n\n const fallbackFalseHasCondition: RouteHas[] = [\n {\n type: 'cookie',\n key: '__prerender_bypass',\n value: prerenderManifest.preview.previewModeId,\n },\n {\n type: 'cookie',\n key: '__next_preview_data',\n },\n ]\n\n for (const route of routesManifest.dynamicRoutes) {\n const shouldLocalize = config.i18n\n\n const routeRegex = getNamedRouteRegex(route.page, {\n prefixRouteKeys: true,\n })\n\n const isFallbackFalse =\n prerenderManifest.dynamicRoutes[route.page]?.fallback === false\n\n const { hasFallbackRootParams } = route\n\n const sourceRegex = routeRegex.namedRegex.replace(\n '^',\n `^${config.basePath && config.basePath !== '/' ? path.posix.join('/', config.basePath || '') : ''}[/]?${shouldLocalize ? '(?<nextLocale>[^/]{1,})?' : ''}`\n )\n const destination =\n path.posix.join(\n '/',\n config.basePath,\n shouldLocalize ? '/$nextLocale' : '',\n route.page\n ) + getDestinationQuery(route.routeKeys)\n\n if (appPageKeys && appPageKeys.length > 0 && config.cacheComponents) {\n // If we have fallback root params (implying we've already\n // emitted a rewrite for the /_tree request), or if the route\n // has PPR enabled and client param parsing is enabled, then\n // we don't need to include any other suffixes.\n const shouldSkipSuffixes = hasFallbackRootParams\n\n dynamicRoutes.push({\n source: route.page + '.rsc',\n sourceRegex: sourceRegex.replace(\n new RegExp(escapeStringRegexp('(?:/)?$')),\n // Now than the upstream issues has been resolved, we can safely\n // add the suffix back, this resolves a bug related to segment\n // rewrites not capturing the correct suffix values when\n // enabled.\n shouldSkipSuffixes\n ? '(?<rscSuffix>\\\\.rsc|\\\\.segments/.+\\\\.segment\\\\.rsc)(?:/)?$'\n : '(?<rscSuffix>\\\\.rsc|\\\\.prefetch\\\\.rsc|\\\\.segments/.+\\\\.segment\\\\.rsc)(?:/)?$'\n ),\n destination: destination?.replace(/($|\\?)/, '$rscSuffix$1'),\n has: isFallbackFalse ? fallbackFalseHasCondition : undefined,\n missing: undefined,\n })\n }\n\n // needs basePath and locale handling if pages router\n dynamicRoutes.push({\n source: route.page,\n sourceRegex,\n destination,\n has: isFallbackFalse ? fallbackFalseHasCondition : undefined,\n missing: undefined,\n })\n\n for (const segmentRoute of route.prefetchSegmentDataRoutes || []) {\n dynamicSegmentRoutes.push({\n source: route.page,\n sourceRegex: segmentRoute.source.replace(\n '^',\n `^${config.basePath && config.basePath !== '/' ? path.posix.join('/', config.basePath || '') : ''}[/]?`\n ),\n destination: path.posix.join(\n '/',\n config.basePath,\n segmentRoute.destination +\n getDestinationQuery(segmentRoute.routeKeys)\n ),\n has: undefined,\n missing: undefined,\n })\n }\n }\n\n const needsMiddlewareResolveRoutes =\n outputs.middleware && outputs.pages.length > 0\n\n const dataRoutePages = new Set([\n ...routesManifest.dataRoutes.map((item) => item.page),\n ])\n const sortedDataPages = sortSortableRoutes([\n ...(needsMiddlewareResolveRoutes\n ? [...staticPages].map((page) => ({ sourcePage: page, page }))\n : []),\n ...routesManifest.dataRoutes.map((item) => ({\n sourcePage: item.page,\n page: item.page,\n })),\n ])\n\n for (const { page } of sortedDataPages) {\n if (needsMiddlewareResolveRoutes || isDynamicRoute(page)) {\n const shouldLocalize = config.i18n\n const isFallbackFalse =\n prerenderManifest.dynamicRoutes[page]?.fallback === false\n\n const routeRegex = getNamedRouteRegex(page + '.json', {\n prefixRouteKeys: true,\n includeSuffix: true,\n })\n const destination = path.posix.join(\n '/',\n config.basePath,\n ...(dataRoutePages.has(page) ? [`_next/data`, buildId] : ''),\n ...(page === '/'\n ? [shouldLocalize ? '$nextLocale.json' : 'index.json']\n : [\n shouldLocalize ? '$nextLocale' : '',\n page +\n '.json' +\n getDestinationQuery(routeRegex.routeKeys || {}),\n ])\n )\n\n dynamicDataRoutes.push({\n source: page,\n sourceRegex:\n shouldLocalize && page === '/'\n ? '^' +\n path.posix.join(\n '/',\n config.basePath,\n '_next/data',\n escapeStringRegexp(buildId),\n '(?<nextLocale>[^/]{1,}).json'\n )\n : routeRegex.namedRegex.replace(\n '^',\n `^${path.posix.join(\n '/',\n config.basePath,\n `_next/data`,\n escapeStringRegexp(buildId)\n )}[/]?${shouldLocalize ? '(?<nextLocale>[^/]{1,})?' : ''}`\n ),\n destination,\n has: isFallbackFalse ? fallbackFalseHasCondition : undefined,\n missing: undefined,\n })\n }\n }\n\n const buildRewriteItem = (route: ManifestRewriteRoute): RewriteItem => {\n const converted = convertRewrites([route], ['nextInternalLocale'])[0]\n const regex = converted.src || route.regex\n\n return {\n source: route.source,\n sourceRegex: route.internal ? regex : modifyRouteRegex(regex),\n destination: converted.dest || route.destination,\n has: route.has,\n missing: route.missing,\n }\n }\n\n try {\n Log.info(`Running onBuildComplete from ${adapterMod.name}`)\n await adapterMod.onBuildComplete({\n routes: {\n dynamicRoutes: [\n ...dynamicDataRoutes,\n ...dynamicSegmentRoutes,\n ...dynamicRoutes,\n ],\n rewrites: {\n beforeFiles:\n routesManifest.rewrites.beforeFiles.map(buildRewriteItem),\n afterFiles:\n routesManifest.rewrites.afterFiles.map(buildRewriteItem),\n fallback: routesManifest.rewrites.fallback.map(buildRewriteItem),\n },\n redirects: routesManifest.redirects.map((route) => {\n const converted = convertRedirects([route], 307)[0]\n let dest = 'headers' in converted && converted.headers?.Location\n const regex = converted.src || route.regex\n\n return {\n source: route.source,\n sourceRegex: route.internal ? regex : modifyRouteRegex(regex),\n destination: dest || route.destination,\n statusCode: converted.status || getRedirectStatus(route),\n has: route.has,\n missing: route.missing,\n priority: route.internal || undefined,\n }\n }),\n headers: routesManifest.headers.map((route) => {\n const converted = convertHeaders([route])[0]\n const regex = converted.src || route.regex\n\n return {\n source: route.source,\n sourceRegex: route.internal ? regex : modifyRouteRegex(regex),\n headers: 'headers' in converted ? converted.headers || {} : {},\n has: route.has,\n missing: route.missing,\n priority: route.internal || undefined,\n }\n }),\n },\n outputs,\n\n config,\n distDir,\n buildId,\n nextVersion,\n projectDir: dir,\n repoRoot: tracingRoot,\n })\n } catch (err) {\n Log.error(`Failed to run onBuildComplete from ${adapterMod.name}`)\n throw err\n }\n }\n}\n"],"names":["handleBuildComplete","normalizePathnames","config","outputs","basePath","output","pages","pagesApi","appPages","appRoutes","prerenders","staticFiles","pathname","addPathPrefix","replace","dir","buildId","configOutDir","distDir","pageKeys","tracingRoot","adapterPath","appPageKeys","staticPages","nextVersion","hasStatic404","hasStatic500","routesManifest","serverPropsPages","hasNodeMiddleware","prerenderManifest","middlewareManifest","requiredServerFiles","hasInstrumentationHook","functionsConfigManifest","adapterMod","interopDefault","pathToFileURL","require","resolve","href","onBuildComplete","exportFiles","recursiveReadDir","file","endsWith","startsWith","push","id","filePath","path","join","type","AdapterOutputType","STATIC_FILE","posix","sharedNodeAssets","pagesSharedNodeAssets","appPagesSharedNodeAssets","sharedTraceIgnores","sharedIgnoreFn","makeIgnoreFn","fileOutputPath","relative","moduleTypes","currentDependencies","modulePath","contextDir","dirname","item","fs","readdir","match","fileList","esmFileList","nodeFileTrace","base","ignore","forEach","add","rootRelativeFilePath","necessaryNodeDependencies","Object","values","defaultOverrides","filter","extname","assets","handleTraceFiles","assign","traceFilePath","traceData","JSON","parse","readFile","traceFileDir","relativeFile","files","tracedFilePath","handleEdgeFunction","page","isMiddleware","PAGES","isAppPrefix","name","isAppPage","isAppRoute","currentOutputs","MIDDLEWARE","APP_PAGE","APP_ROUTE","PAGES_API","route","runtime","sourcePage","normalizeAppPath","find","wasmAssets","env","handleFile","originalPath","wasm","matchers","map","source","originalSource","sourceRegex","regexp","has","missing","key","value","preview","previewModeId","middleware","rscPathname","edgeFunctionHandlers","isMiddlewareFilename","functions","pagesDistDir","pageOutputMap","rscFallbackPath","length","writeFile","hasOwnProperty","normalizePagePath","pageFile","i18n","locale","locales","localePage","localeOutput","staticOutput","pageTraceFile","catch","err","code","Log","warn","functionConfig","maxDuration","preferredRegion","regions","dataPathname","middlewareFile","middlewareTrace","appOutputMap","appDistDir","normalizedPage","existingOutput","getParentOutput","srcRoute","childRoute","allowMissing","normalizedSrcRoute","normalizeLocalePath","parentOutput","console","error","appOutputs","keys","pageOutputs","Error","prefetchSegmentDirSuffix","prefetchSegmentSuffix","varyHeader","didPostponeHeader","contentTypeHeader","rscContentTypeHeader","rsc","handleAppMeta","initialOutput","meta","postponed","fallback","postponedState","segmentPaths","segmentsDir","segmentPath","outputSegmentPath","fallbackPathname","PRERENDER","parentOutputId","groupId","initialExpiration","initialRevalidate","initialHeaders","vary","prerenderGroupId","getAppRouteMeta","headers","keyLower","toLowerCase","filePathCache","Map","cachedFilePathCheck","get","newCheck","access","then","set","routes","initialExpireSeconds","initialRevalidateSeconds","initialStatus","prefetchDataRoute","dataRoute","renderingMode","allowHeader","experimentalBypassFor","srcRouteInfo","dynamicRoutes","Boolean","isNotFoundTrue","notFoundRoutes","includes","allowQuery","routeKeys","isDynamicRoute","detectedLocale","currentFilePath","pprChain","experimental","ppr","NEXT_RESUME_HEADER","undefined","parentFallbackMode","HTML_CONTENT_TYPE_HEADER","bypassFor","bypassToken","dataFilePath","RenderingMode","PARTIALLY_STATIC","JSON_CONTENT_TYPE_HEADER","dynamicRoute","fallbackExpire","fallbackRevalidate","fallbackHeaders","fallbackStatus","currentOutput","staticErrorDocs","errorDoc","errorDocPath","defaultLocale","currentDocPath","dynamicDataRoutes","dynamicSegmentRoutes","getDestinationQuery","items","entries","fallbackFalseHasCondition","shouldLocalize","routeRegex","getNamedRouteRegex","prefixRouteKeys","isFallbackFalse","hasFallbackRootParams","namedRegex","destination","cacheComponents","shouldSkipSuffixes","RegExp","escapeStringRegexp","segmentRoute","prefetchSegmentDataRoutes","needsMiddlewareResolveRoutes","dataRoutePages","Set","dataRoutes","sortedDataPages","sortSortableRoutes","includeSuffix","buildRewriteItem","converted","convertRewrites","regex","src","internal","modifyRouteRegex","dest","info","rewrites","beforeFiles","afterFiles","redirects","convertRedirects","Location","statusCode","status","getRedirectStatus","priority","convertHeaders","projectDir","repoRoot"],"mappings":"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","ignoreList":[0]}
1
+ {"version":3,"sources":["../../../src/build/adapter/build-complete.ts"],"sourcesContent":["import path from 'path'\nimport fs from 'fs/promises'\nimport { pathToFileURL } from 'url'\nimport * as Log from '../output/log'\nimport { isMiddlewareFilename } from '../utils'\nimport { RenderingMode } from '../rendering-mode'\nimport { interopDefault } from '../../lib/interop-default'\nimport type { RouteHas } from '../../lib/load-custom-routes'\nimport { recursiveReadDir } from '../../lib/recursive-readdir'\nimport { isDynamicRoute } from '../../shared/lib/router/utils'\nimport type { Revalidate } from '../../server/lib/cache-control'\nimport type { NextConfigComplete } from '../../server/config-shared'\nimport { normalizeAppPath } from '../../shared/lib/router/utils/app-paths'\nimport { AdapterOutputType, type PHASE_TYPE } from '../../shared/lib/constants'\nimport { normalizePagePath } from '../../shared/lib/page-path/normalize-page-path'\nimport {\n convertRedirects,\n convertRewrites,\n convertHeaders,\n} from 'next/dist/compiled/@vercel/routing-utils'\n\nimport type {\n MiddlewareManifest,\n EdgeFunctionDefinition,\n} from '../webpack/plugins/middleware-plugin'\n\nimport type {\n RoutesManifest,\n PrerenderManifest,\n ManifestRewriteRoute,\n FunctionsConfigManifest,\n DynamicPrerenderManifestRoute,\n} from '..'\n\nimport {\n HTML_CONTENT_TYPE_HEADER,\n JSON_CONTENT_TYPE_HEADER,\n NEXT_RESUME_HEADER,\n} from '../../lib/constants'\nimport { normalizeLocalePath } from '../../shared/lib/i18n/normalize-locale-path'\nimport { addPathPrefix } from '../../shared/lib/router/utils/add-path-prefix'\nimport { getRedirectStatus, modifyRouteRegex } from '../../lib/redirect-status'\nimport { getNamedRouteRegex } from '../../shared/lib/router/utils/route-regex'\nimport { escapeStringRegexp } from '../../shared/lib/escape-regexp'\nimport { sortSortableRoutes } from '../../shared/lib/router/utils/sortable-routes'\nimport { nodeFileTrace } from 'next/dist/compiled/@vercel/nft'\nimport { defaultOverrides } from '../../server/require-hook'\nimport { makeIgnoreFn } from '../collect-build-traces'\n\ninterface SharedRouteFields {\n /**\n * id is the unique identifier of the output\n */\n id: string\n /**\n * filePath is the location on disk of the built entrypoint asset\n */\n filePath: string\n /**\n * pathname is the URL pathname the asset should be served at\n */\n pathname: string\n\n /**\n * sourcePage is the original source in the app or pages folder\n */\n sourcePage: string\n\n /**\n * runtime is which runtime the entrypoint is built for\n */\n runtime: 'nodejs' | 'edge'\n /**\n * assets are all necessary traced assets that could be\n * loaded by the output to handle a request e.g. traced\n * node_modules or necessary manifests for Next.js.\n * The key is the relative path from the repo root and the value\n * is the absolute path to the file\n */\n assets: Record<string, string>\n\n /**\n * wasmAssets are bundled wasm files with mapping of name\n * to filePath on disk\n */\n wasmAssets?: Record<string, string>\n\n /**\n * config related to the route\n */\n config: {\n /**\n * maxDuration is a segment config to signal the max\n * execution duration a route should be allowed before\n * it's timed out\n */\n maxDuration?: number\n /**\n * preferredRegion is a segment config to signal deployment\n * region preferences to the provider being used\n */\n preferredRegion?: string | string[]\n\n /**\n * env is the environment variables to expose, this is only\n * populated for edge runtime currently\n */\n env?: Record<string, string>\n }\n}\n\nexport interface AdapterOutput {\n /**\n * `PAGES` represents all the React pages that are under `pages/`.\n */\n PAGES: SharedRouteFields & {\n type: AdapterOutputType.PAGES\n }\n\n /**\n * `PAGES_API` represents all the API routes under `pages/api/`.\n */\n PAGES_API: SharedRouteFields & {\n type: AdapterOutputType.PAGES_API\n }\n /**\n * `APP_PAGE` represents all the React pages that are under `app/` with the\n * filename of `page.{j,t}s{,x}`.\n */\n APP_PAGE: SharedRouteFields & {\n type: AdapterOutputType.APP_PAGE\n }\n\n /**\n * `APP_ROUTE` represents all the API routes and metadata routes that are under `app/` with the\n * filename of `route.{j,t}s{,x}`.\n */\n APP_ROUTE: SharedRouteFields & {\n type: AdapterOutputType.APP_ROUTE\n }\n\n /**\n * `PRERENDER` represents an ISR enabled route that might\n * have a seeded cache entry or fallback generated during build\n */\n PRERENDER: {\n id: string\n pathname: string\n type: AdapterOutputType.PRERENDER\n\n /**\n * For prerenders the parent output is the originating\n * page that the prerender is created from\n */\n parentOutputId: string\n\n /**\n * groupId is the identifier for a group of prerenders that should be\n * revalidated together\n */\n groupId: number\n\n pprChain?: {\n headers: Record<string, string>\n }\n\n /**\n * parentFallbackMode signals whether additional routes can be generated\n * e.g. fallback: false or 'blocking' in getStaticPaths in pages router\n */\n parentFallbackMode?: DynamicPrerenderManifestRoute['fallback']\n\n /**\n * fallback is initial cache data generated during build for a prerender\n */\n fallback?: {\n /**\n * path to the fallback file can be HTML/JSON/RSC\n */\n filePath: string\n /**\n * initialStatus is the status code that should be applied\n * when serving the fallback\n */\n initialStatus?: number\n /**\n * initialHeaders are the headers that should be sent when\n * serving the fallback\n */\n initialHeaders?: Record<string, string | string[]>\n /**\n * initial expiration is how long until the fallback entry\n * is considered expired and no longer valid to serve\n */\n initialExpiration?: number\n /**\n * initial revalidate is how long until the fallback is\n * considered stale and should be revalidated\n */\n initialRevalidate?: Revalidate\n\n /**\n * postponedState is the PPR state when it postponed and is used for resuming\n */\n postponedState?: string\n }\n /**\n * config related to the route\n */\n config: {\n /**\n * allowQuery is the allowed query values to be passed\n * to an ISR function and what should be considered for the cacheKey\n * e.g. for /blog/[slug], \"slug\" is the only allowQuery\n */\n allowQuery?: string[]\n /**\n * allowHeader is the allowed headers to be passed to an\n * ISR function to prevent accidentally poisoning the cache\n * from leaking additional information that can impact the render\n */\n allowHeader?: string[]\n /**\n * bypass for is a list of has conditions the cache\n * should be bypassed and invoked directly e.g. action header\n */\n bypassFor?: RouteHas[]\n /**\n * renderingMode signals PPR or not for a prerender\n */\n renderingMode?: RenderingMode\n\n /**\n * bypassToken is the generated token that signals a prerender cache\n * should be bypassed\n */\n bypassToken?: string\n }\n }\n\n /**\n * `STATIC_FILE` represents a static file (ie /_next/static) or a purely\n * static HTML asset e.g. an automatically statically optimized page\n * that does not use ISR\n */\n STATIC_FILE: {\n id: string\n filePath: string\n pathname: string\n type: AdapterOutputType.STATIC_FILE\n }\n\n /**\n * `MIDDLEWARE` represents the middleware output if present\n */\n MIDDLEWARE: SharedRouteFields & {\n type: AdapterOutputType.MIDDLEWARE\n /**\n * config related to the route\n */\n config: SharedRouteFields['config'] & {\n /**\n * matchers are the configured matchers for middleware\n */\n matchers?: Array<{\n source: string\n sourceRegex: string\n has: RouteHas[] | undefined\n missing: RouteHas[] | undefined\n }>\n }\n }\n}\n\nexport interface AdapterOutputs {\n pages: Array<AdapterOutput['PAGES']>\n middleware?: AdapterOutput['MIDDLEWARE']\n appPages: Array<AdapterOutput['APP_PAGE']>\n pagesApi: Array<AdapterOutput['PAGES_API']>\n appRoutes: Array<AdapterOutput['APP_ROUTE']>\n prerenders: Array<AdapterOutput['PRERENDER']>\n staticFiles: Array<AdapterOutput['STATIC_FILE']>\n}\n\ntype RewriteItem = {\n source: string\n sourceRegex: string\n destination: string\n has: RouteHas[] | undefined\n missing: RouteHas[] | undefined\n}\n\ntype DynamicRouteItem = {\n source: string\n sourceRegex: string\n destination: string\n has: RouteHas[] | undefined\n missing: RouteHas[] | undefined\n}\n\nexport interface NextAdapter {\n name: string\n /**\n * modifyConfig is called for any CLI command that loads the next.config\n * to only apply for specific commands the \"phase\" should be used\n * @param config\n * @param ctx\n * @returns\n */\n modifyConfig?: (\n config: NextConfigComplete,\n ctx: {\n phase: PHASE_TYPE\n }\n ) => Promise<NextConfigComplete> | NextConfigComplete\n onBuildComplete?: (ctx: {\n routes: {\n headers: Array<{\n source: string\n sourceRegex: string\n headers: Record<string, string>\n has: RouteHas[] | undefined\n missing: RouteHas[] | undefined\n priority?: boolean\n }>\n redirects: Array<{\n source: string\n sourceRegex: string\n destination: string\n statusCode: number\n has: RouteHas[] | undefined\n missing: RouteHas[] | undefined\n priority?: boolean\n }>\n rewrites: {\n beforeFiles: RewriteItem[]\n afterFiles: RewriteItem[]\n fallback: RewriteItem[]\n }\n dynamicRoutes: Array<DynamicRouteItem>\n }\n outputs: AdapterOutputs\n /**\n * projectDir is the absolute directory the Next.js application is in\n */\n projectDir: string\n /**\n * repoRoot is the absolute path of the detected root of the repo\n */\n repoRoot: string\n /**\n * distDir is the absolute path to the dist directory\n */\n distDir: string\n /**\n * config is the loaded next.config (has modifyConfig applied)\n */\n config: NextConfigComplete\n /**\n * nextVersion is the current version of Next.js being used\n */\n nextVersion: string\n /**\n * buildId is the current unique ID for the build, this can be\n * influenced by NextConfig.generateBuildId\n */\n buildId: string\n }) => Promise<void> | void\n}\n\nfunction normalizePathnames(\n config: NextConfigComplete,\n outputs: AdapterOutputs\n) {\n // normalize pathname field with basePath\n if (config.basePath) {\n for (const output of [\n ...outputs.pages,\n ...outputs.pagesApi,\n ...outputs.appPages,\n ...outputs.appRoutes,\n ...outputs.prerenders,\n ...outputs.staticFiles,\n ]) {\n output.pathname =\n addPathPrefix(output.pathname, config.basePath).replace(/\\/$/, '') ||\n '/'\n }\n }\n}\n\nexport async function handleBuildComplete({\n dir,\n config,\n buildId,\n configOutDir,\n distDir,\n pageKeys,\n tracingRoot,\n adapterPath,\n appPageKeys,\n staticPages,\n nextVersion,\n hasStatic404,\n hasStatic500,\n routesManifest,\n serverPropsPages,\n hasNodeMiddleware,\n prerenderManifest,\n middlewareManifest,\n requiredServerFiles,\n hasInstrumentationHook,\n functionsConfigManifest,\n}: {\n dir: string\n distDir: string\n buildId: string\n configOutDir: string\n adapterPath: string\n tracingRoot: string\n nextVersion: string\n hasStatic404: boolean\n hasStatic500: boolean\n staticPages: Set<string>\n hasNodeMiddleware: boolean\n config: NextConfigComplete\n pageKeys: readonly string[]\n serverPropsPages: Set<string>\n requiredServerFiles: string[]\n routesManifest: RoutesManifest\n hasInstrumentationHook: boolean\n prerenderManifest: PrerenderManifest\n middlewareManifest: MiddlewareManifest\n appPageKeys?: readonly string[] | undefined\n functionsConfigManifest: FunctionsConfigManifest\n}) {\n const adapterMod = interopDefault(\n await import(pathToFileURL(require.resolve(adapterPath)).href)\n ) as NextAdapter\n\n if (typeof adapterMod.onBuildComplete === 'function') {\n const outputs: AdapterOutputs = {\n pages: [],\n pagesApi: [],\n appPages: [],\n appRoutes: [],\n prerenders: [],\n staticFiles: [],\n }\n\n if (config.output === 'export') {\n // collect export assets and provide as static files\n const exportFiles = await recursiveReadDir(configOutDir)\n\n for (const file of exportFiles) {\n let pathname = (\n file.endsWith('.html') ? file.replace(/\\.html$/, '') : file\n ).replace(/\\\\/g, '/')\n\n pathname = pathname.startsWith('/') ? pathname : `/${pathname}`\n\n outputs.staticFiles.push({\n id: file,\n pathname,\n filePath: path.join(configOutDir, file),\n type: AdapterOutputType.STATIC_FILE,\n } satisfies AdapterOutput['STATIC_FILE'])\n }\n } else {\n const staticFiles = await recursiveReadDir(path.join(distDir, 'static'))\n\n for (const file of staticFiles) {\n const pathname = path.posix.join('/_next/static', file)\n const filePath = path.join(distDir, 'static', file)\n outputs.staticFiles.push({\n type: AdapterOutputType.STATIC_FILE,\n id: path.join('static', file),\n pathname,\n filePath,\n })\n }\n\n const sharedNodeAssets: Record<string, string> = {}\n const pagesSharedNodeAssets: Record<string, string> = {}\n const appPagesSharedNodeAssets: Record<string, string> = {}\n\n const sharedTraceIgnores = [\n '**/next/dist/compiled/next-server/**/*.dev.js',\n '**/next/dist/compiled/webpack/*',\n '**/node_modules/webpack5/**/*',\n '**/next/dist/server/lib/route-resolver*',\n 'next/dist/compiled/semver/semver/**/*.js',\n '**/node_modules/react{,-dom,-dom-server-turbopack}/**/*.development.js',\n '**/*.d.ts',\n '**/*.map',\n '**/next/dist/pages/**/*',\n '**/node_modules/sharp/**/*',\n '**/@img/sharp-libvips*/**/*',\n '**/next/dist/compiled/edge-runtime/**/*',\n '**/next/dist/server/web/sandbox/**/*',\n '**/next/dist/server/post-process.js',\n ]\n const sharedIgnoreFn = makeIgnoreFn(tracingRoot, sharedTraceIgnores)\n\n for (const file of requiredServerFiles) {\n // add to shared node assets\n const filePath = path.join(dir, file)\n const fileOutputPath = path.relative(tracingRoot, filePath)\n sharedNodeAssets[fileOutputPath] = filePath\n }\n\n const moduleTypes = ['app-page', 'pages'] as const\n\n for (const type of moduleTypes) {\n const currentDependencies: string[] = []\n const modulePath = require.resolve(\n `next/dist/server/route-modules/${type}/module.compiled`\n )\n const contextDir = path.join(\n path.dirname(modulePath),\n 'vendored',\n 'contexts'\n )\n\n for (const item of await fs.readdir(contextDir)) {\n if (item.match(/\\.(mjs|cjs|js)$/)) {\n currentDependencies.push(path.join(contextDir, item))\n }\n }\n\n const { fileList, esmFileList } = await nodeFileTrace(\n currentDependencies,\n {\n base: tracingRoot,\n ignore: sharedIgnoreFn,\n }\n )\n esmFileList.forEach((item) => fileList.add(item))\n\n for (const rootRelativeFilePath of fileList) {\n if (type === 'pages') {\n pagesSharedNodeAssets[rootRelativeFilePath] = path.join(\n tracingRoot,\n rootRelativeFilePath\n )\n } else {\n appPagesSharedNodeAssets[rootRelativeFilePath] = path.join(\n tracingRoot,\n rootRelativeFilePath\n )\n }\n }\n }\n\n // These are modules that are necessary for bootstrapping node env\n const necessaryNodeDependencies = [\n require.resolve('next/dist/server/node-environment'),\n require.resolve('next/dist/server/require-hook'),\n require.resolve('next/dist/server/node-polyfill-crypto'),\n ...Object.values(defaultOverrides).filter((item) => path.extname(item)),\n ]\n\n const { fileList, esmFileList } = await nodeFileTrace(\n necessaryNodeDependencies,\n {\n base: tracingRoot,\n ignore: sharedIgnoreFn,\n }\n )\n esmFileList.forEach((item) => fileList.add(item))\n\n for (const rootRelativeFilePath of fileList) {\n sharedNodeAssets[rootRelativeFilePath] = path.join(\n tracingRoot,\n rootRelativeFilePath\n )\n }\n\n if (hasInstrumentationHook) {\n const assets = await handleTraceFiles(\n path.join(distDir, 'server', 'instrumentation.js.nft.json'),\n 'neutral'\n )\n const fileOutputPath = path.relative(\n tracingRoot,\n path.join(distDir, 'server', 'instrumentation.js')\n )\n sharedNodeAssets[fileOutputPath] = path.join(\n distDir,\n 'server',\n 'instrumentation.js'\n )\n Object.assign(sharedNodeAssets, assets)\n }\n\n async function handleTraceFiles(\n traceFilePath: string,\n type: 'pages' | 'app' | 'neutral'\n ): Promise<Record<string, string>> {\n const assets: Record<string, string> = Object.assign(\n {},\n sharedNodeAssets,\n type === 'pages' ? pagesSharedNodeAssets : {},\n type === 'app' ? appPagesSharedNodeAssets : {}\n )\n const traceData = JSON.parse(\n await fs.readFile(traceFilePath, 'utf8')\n ) as {\n files: string[]\n }\n const traceFileDir = path.dirname(traceFilePath)\n\n for (const relativeFile of traceData.files) {\n const tracedFilePath = path.join(traceFileDir, relativeFile)\n const fileOutputPath = path.relative(tracingRoot, tracedFilePath)\n assets[fileOutputPath] = tracedFilePath\n }\n return assets\n }\n\n async function handleEdgeFunction(\n page: EdgeFunctionDefinition,\n isMiddleware: boolean = false\n ) {\n let type: AdapterOutputType = AdapterOutputType.PAGES\n const isAppPrefix = page.name.startsWith('app/')\n const isAppPage = isAppPrefix && page.name.endsWith('/page')\n const isAppRoute = isAppPrefix && page.name.endsWith('/route')\n let currentOutputs: Array<\n | AdapterOutput['PAGES']\n | AdapterOutput['PAGES_API']\n | AdapterOutput['APP_PAGE']\n | AdapterOutput['APP_ROUTE']\n > = outputs.pages\n\n if (isMiddleware) {\n type = AdapterOutputType.MIDDLEWARE\n } else if (isAppPage) {\n currentOutputs = outputs.appPages\n type = AdapterOutputType.APP_PAGE\n } else if (isAppRoute) {\n currentOutputs = outputs.appRoutes\n type = AdapterOutputType.APP_ROUTE\n } else if (page.page.startsWith('/api')) {\n currentOutputs = outputs.pagesApi\n type = AdapterOutputType.PAGES_API\n }\n\n const route = page.page.replace(/^(app|pages)\\//, '')\n\n const output: Omit<AdapterOutput[typeof type], 'type'> & {\n type: any\n } = {\n type,\n id: page.name,\n runtime: 'edge',\n sourcePage: route,\n pathname: isAppPrefix ? normalizeAppPath(route) : route,\n filePath: path.join(\n distDir,\n page.files.find(\n (item) =>\n item.startsWith('server/app') || item.startsWith('server/pages')\n ) ||\n // TODO: turbopack build doesn't name the main entry chunk\n // identifiably so we don't know which to mark here but\n // technically edge needs all chunks to load always so\n // should this field even be provided?\n page.files[0] ||\n ''\n ),\n assets: {},\n wasmAssets: {},\n config: {\n env: page.env,\n },\n }\n\n function handleFile(file: string) {\n const originalPath = path.join(distDir, file)\n const fileOutputPath = path.join(\n path.relative(tracingRoot, distDir),\n file\n )\n if (!output.assets) {\n output.assets = {}\n }\n output.assets[fileOutputPath] = originalPath\n }\n for (const file of page.files) {\n handleFile(file)\n }\n for (const item of [...(page.assets || [])]) {\n handleFile(item.filePath)\n }\n for (const item of page.wasm || []) {\n if (!output.wasmAssets) {\n output.wasmAssets = {}\n }\n output.wasmAssets[item.name] = path.join(distDir, item.filePath)\n }\n\n if (type === AdapterOutputType.MIDDLEWARE) {\n ;(output as AdapterOutput['MIDDLEWARE']).config.matchers =\n page.matchers.map((item) => {\n return {\n source: item.originalSource,\n sourceRegex: item.regexp,\n has: item.has,\n missing: [\n ...(item.missing || []),\n // always skip middleware for on-demand revalidate\n {\n type: 'header',\n key: 'x-prerender-revalidate',\n value: prerenderManifest.preview.previewModeId,\n },\n ],\n }\n })\n output.pathname = '/_middleware'\n output.id = page.name\n outputs.middleware = output\n } else {\n currentOutputs.push(output)\n }\n\n // need to add matching .rsc output\n if (isAppPage) {\n const rscPathname = normalizePagePath(output.pathname) + '.rsc'\n outputs.appPages.push({\n ...output,\n pathname: rscPathname,\n id: page.name + '.rsc',\n })\n }\n }\n\n const edgeFunctionHandlers: Promise<any>[] = []\n\n for (const middleware of Object.values(middlewareManifest.middleware)) {\n if (isMiddlewareFilename(middleware.name)) {\n edgeFunctionHandlers.push(handleEdgeFunction(middleware, true))\n }\n }\n\n for (const page of Object.values(middlewareManifest.functions)) {\n edgeFunctionHandlers.push(handleEdgeFunction(page))\n }\n const pagesDistDir = path.join(distDir, 'server', 'pages')\n const pageOutputMap: Record<\n string,\n AdapterOutput['PAGES'] | AdapterOutput['PAGES_API']\n > = {}\n\n const rscFallbackPath = path.join(distDir, 'server', 'rsc-fallback.json')\n\n if (appPageKeys && appPageKeys.length > 0 && pageKeys.length > 0) {\n await fs.writeFile(rscFallbackPath, '{}')\n }\n\n for (const page of pageKeys) {\n if (page === '/_app' || page === '/_document') {\n continue\n }\n\n if (middlewareManifest.functions.hasOwnProperty(page)) {\n continue\n }\n\n const route = normalizePagePath(page)\n const pageFile = path.join(pagesDistDir, `${route}.js`)\n\n // if it's an auto static optimized page it's just\n // a static file\n if (staticPages.has(page)) {\n if (config.i18n) {\n for (const locale of config.i18n.locales || []) {\n const localePage =\n page === '/' ? `/${locale}` : addPathPrefix(page, `/${locale}`)\n\n const localeOutput = {\n id: localePage,\n pathname: localePage,\n type: AdapterOutputType.STATIC_FILE,\n filePath: path.join(\n pagesDistDir,\n `${normalizePagePath(localePage)}.html`\n ),\n } satisfies AdapterOutput['STATIC_FILE']\n\n outputs.staticFiles.push(localeOutput)\n\n if (appPageKeys && appPageKeys.length > 0) {\n outputs.staticFiles.push({\n id: `${localePage}.rsc`,\n pathname: `${localePage}.rsc`,\n type: AdapterOutputType.STATIC_FILE,\n filePath: rscFallbackPath,\n })\n }\n }\n } else {\n const staticOutput = {\n id: page,\n pathname: route,\n type: AdapterOutputType.STATIC_FILE,\n filePath: pageFile.replace(/\\.js$/, '.html'),\n } satisfies AdapterOutput['STATIC_FILE']\n\n outputs.staticFiles.push(staticOutput)\n\n if (appPageKeys && appPageKeys.length > 0) {\n outputs.staticFiles.push({\n id: `${page}.rsc`,\n pathname: `${route}.rsc`,\n type: AdapterOutputType.STATIC_FILE,\n filePath: rscFallbackPath,\n })\n }\n }\n // if was a static file output don't create page output as well\n continue\n }\n\n const pageTraceFile = `${pageFile}.nft.json`\n const assets = await handleTraceFiles(pageTraceFile, 'pages').catch(\n (err) => {\n if (err.code !== 'ENOENT' || (page !== '/404' && page !== '/500')) {\n Log.warn(`Failed to locate traced assets for ${pageFile}`, err)\n }\n return {} as Record<string, string>\n }\n )\n const functionConfig = functionsConfigManifest.functions[route] || {}\n let sourcePage = route.replace(/^\\//, '')\n\n sourcePage = sourcePage === 'api' ? 'api/index' : sourcePage\n\n const output: AdapterOutput['PAGES'] | AdapterOutput['PAGES_API'] = {\n id: route,\n type: page.startsWith('/api')\n ? AdapterOutputType.PAGES_API\n : AdapterOutputType.PAGES,\n filePath: pageTraceFile.replace(/\\.nft\\.json$/, ''),\n pathname: route,\n sourcePage,\n assets,\n runtime: 'nodejs',\n config: {\n maxDuration: functionConfig.maxDuration,\n preferredRegion: functionConfig.regions,\n },\n }\n pageOutputMap[page] = output\n\n if (output.type === AdapterOutputType.PAGES) {\n outputs.pages.push(output)\n\n // if page is get server side props we need to create\n // the _next/data output as well\n if (serverPropsPages.has(page)) {\n const dataPathname = path.posix.join(\n '/_next/data',\n buildId,\n normalizePagePath(page) + '.json'\n )\n outputs.pages.push({\n ...output,\n pathname: dataPathname,\n id: dataPathname,\n })\n }\n\n for (const locale of config.i18n?.locales || []) {\n const localePage =\n page === '/' ? `/${locale}` : addPathPrefix(page, `/${locale}`)\n\n outputs.pages.push({\n ...output,\n id: localePage,\n pathname: localePage,\n })\n\n if (serverPropsPages.has(page)) {\n const dataPathname = path.posix.join(\n '/_next/data',\n buildId,\n localePage + '.json'\n )\n outputs.pages.push({\n ...output,\n pathname: dataPathname,\n id: dataPathname,\n })\n }\n }\n } else {\n outputs.pagesApi.push(output)\n }\n\n if (appPageKeys && appPageKeys.length > 0) {\n outputs.staticFiles.push({\n id: `${output.id}.rsc`,\n pathname: `${output.pathname}.rsc`,\n type: AdapterOutputType.STATIC_FILE,\n filePath: rscFallbackPath,\n })\n }\n }\n\n if (hasNodeMiddleware) {\n const middlewareFile = path.join(distDir, 'server', 'middleware.js')\n const middlewareTrace = `${middlewareFile}.nft.json`\n const assets = await handleTraceFiles(middlewareTrace, 'neutral')\n const functionConfig =\n functionsConfigManifest.functions['/_middleware'] || {}\n\n outputs.middleware = {\n pathname: '/_middleware',\n id: '/_middleware',\n sourcePage: 'middleware',\n assets,\n type: AdapterOutputType.MIDDLEWARE,\n runtime: 'nodejs',\n filePath: middlewareFile,\n config: {\n matchers:\n functionConfig.matchers?.map((item) => {\n return {\n source: item.originalSource,\n sourceRegex: item.regexp,\n has: item.has,\n missing: [\n ...(item.missing || []),\n // always skip middleware for on-demand revalidate\n {\n type: 'header',\n key: 'x-prerender-revalidate',\n value: prerenderManifest.preview.previewModeId,\n },\n ],\n }\n }) || [],\n },\n } satisfies AdapterOutput['MIDDLEWARE']\n }\n const appOutputMap: Record<\n string,\n AdapterOutput['APP_PAGE'] | AdapterOutput['APP_ROUTE']\n > = {}\n const appDistDir = path.join(distDir, 'server', 'app')\n\n if (appPageKeys) {\n for (const page of appPageKeys) {\n if (middlewareManifest.functions.hasOwnProperty(page)) {\n continue\n }\n const normalizedPage = normalizeAppPath(page)\n const pageFile = path.join(appDistDir, `${page}.js`)\n const pageTraceFile = `${pageFile}.nft.json`\n const assets = await handleTraceFiles(pageTraceFile, 'app').catch(\n (err) => {\n Log.warn(`Failed to copy traced files for ${pageFile}`, err)\n return {} as Record<string, string>\n }\n )\n\n // If this is a parallel route we just need to merge\n // the assets as they share the same pathname\n const existingOutput = appOutputMap[normalizedPage]\n if (existingOutput) {\n Object.assign(existingOutput.assets, assets)\n existingOutput.assets[path.relative(tracingRoot, pageFile)] =\n pageFile\n\n continue\n }\n\n const functionConfig =\n functionsConfigManifest.functions[normalizedPage] || {}\n\n const output: AdapterOutput['APP_PAGE'] | AdapterOutput['APP_ROUTE'] =\n {\n pathname: normalizedPage,\n id: normalizedPage,\n sourcePage: page,\n assets,\n type: page.endsWith('/route')\n ? AdapterOutputType.APP_ROUTE\n : AdapterOutputType.APP_PAGE,\n runtime: 'nodejs',\n filePath: pageFile,\n config: {\n maxDuration: functionConfig.maxDuration,\n preferredRegion: functionConfig.regions,\n },\n }\n appOutputMap[normalizedPage] = output\n\n if (output.type === AdapterOutputType.APP_PAGE) {\n outputs.appPages.push({\n ...output,\n pathname: normalizePagePath(output.pathname) + '.rsc',\n id: normalizePagePath(output.pathname) + '.rsc',\n })\n outputs.appPages.push(output)\n } else {\n outputs.appRoutes.push(output)\n }\n }\n }\n\n const getParentOutput = (\n srcRoute: string,\n childRoute: string,\n allowMissing?: boolean\n ) => {\n const normalizedSrcRoute = normalizeLocalePath(\n srcRoute,\n config.i18n?.locales || []\n ).pathname\n const parentOutput =\n pageOutputMap[normalizedSrcRoute] || appOutputMap[normalizedSrcRoute]\n\n if (!parentOutput && !allowMissing) {\n console.error({\n appOutputs: Object.keys(appOutputMap),\n pageOutputs: Object.keys(pageOutputMap),\n })\n throw new Error(\n `Invariant: failed to find source route ${srcRoute} for prerender ${childRoute}`\n )\n }\n return parentOutput\n }\n\n const {\n prefetchSegmentDirSuffix,\n prefetchSegmentSuffix,\n varyHeader,\n didPostponeHeader,\n contentTypeHeader: rscContentTypeHeader,\n } = routesManifest.rsc\n\n const handleAppMeta = async (\n route: string,\n initialOutput: AdapterOutput['PRERENDER'],\n meta: {\n postponed?: string\n segmentPaths?: string[]\n }\n ) => {\n if (meta.postponed && initialOutput.fallback) {\n initialOutput.fallback.postponedState = meta.postponed\n }\n\n if (meta?.segmentPaths) {\n const normalizedRoute = normalizePagePath(route)\n const segmentsDir = path.join(\n appDistDir,\n `${normalizedRoute}${prefetchSegmentDirSuffix}`\n )\n\n for (const segmentPath of meta.segmentPaths) {\n const outputSegmentPath =\n path.join(\n normalizedRoute + prefetchSegmentDirSuffix,\n segmentPath\n ) + prefetchSegmentSuffix\n\n const fallbackPathname = path.join(\n segmentsDir,\n segmentPath + prefetchSegmentSuffix\n )\n\n outputs.prerenders.push({\n id: outputSegmentPath,\n pathname: outputSegmentPath,\n type: AdapterOutputType.PRERENDER,\n parentOutputId: initialOutput.parentOutputId,\n groupId: initialOutput.groupId,\n\n config: {\n ...initialOutput.config,\n },\n\n fallback: {\n filePath: fallbackPathname,\n initialExpiration: initialOutput.fallback?.initialExpiration,\n initialRevalidate: initialOutput.fallback?.initialRevalidate,\n\n initialHeaders: {\n ...initialOutput.fallback?.initialHeaders,\n vary: varyHeader,\n 'content-type': rscContentTypeHeader,\n [didPostponeHeader]: '2',\n },\n },\n } satisfies AdapterOutput['PRERENDER'])\n }\n }\n }\n\n let prerenderGroupId = 1\n\n type AppRouteMeta = {\n segmentPaths?: string[]\n postponed?: string\n headers?: Record<string, string>\n status?: number\n }\n\n const getAppRouteMeta = async (\n route: string,\n isAppPage: boolean\n ): Promise<AppRouteMeta> => {\n const basename = route.endsWith('/') ? `${route}index` : route\n const meta: AppRouteMeta = isAppPage\n ? JSON.parse(\n await fs\n .readFile(path.join(appDistDir, `${basename}.meta`), 'utf8')\n .catch(() => '{}')\n )\n : {}\n\n if (meta.headers) {\n // normalize these for consistency\n for (const key of Object.keys(meta.headers)) {\n const keyLower = key.toLowerCase()\n if (keyLower !== key) {\n const value = meta.headers[key]\n delete meta.headers[key]\n meta.headers[keyLower] = value\n }\n }\n }\n\n return meta\n }\n\n const filePathCache = new Map<string, Promise<boolean>>()\n const cachedFilePathCheck = async (filePath: string) => {\n if (filePathCache.has(filePath)) {\n return filePathCache.get(filePath)\n }\n const newCheck = fs\n .access(filePath)\n .then(() => true)\n .catch(() => false)\n filePathCache.set(filePath, newCheck)\n\n return newCheck\n }\n\n for (const route in prerenderManifest.routes) {\n const {\n initialExpireSeconds: initialExpiration,\n initialRevalidateSeconds: initialRevalidate,\n initialHeaders,\n initialStatus,\n prefetchDataRoute,\n dataRoute,\n renderingMode,\n allowHeader,\n experimentalBypassFor,\n } = prerenderManifest.routes[route]\n\n const srcRoute = prerenderManifest.routes[route].srcRoute || route\n const srcRouteInfo = prerenderManifest.dynamicRoutes[srcRoute]\n\n const isAppPage =\n Boolean(appOutputMap[srcRoute]) || srcRoute === '/_not-found'\n\n const isNotFoundTrue = prerenderManifest.notFoundRoutes.includes(route)\n\n let allowQuery: string[] | undefined\n const routeKeys = routesManifest.dynamicRoutes.find(\n (item) => item.page === srcRoute\n )?.routeKeys\n\n if (!isDynamicRoute(srcRoute)) {\n // for non-dynamic routes we use an empty array since\n // no query values bust the cache for non-dynamic prerenders\n // prerendered paths also do not pass allowQuery as they match\n // during handle: 'filesystem' so should not cache differently\n // by query values\n allowQuery = []\n } else if (routeKeys) {\n // if we have routeKeys in the routes-manifest we use those\n // for allowQuery for dynamic routes\n allowQuery = Object.values(routeKeys)\n }\n\n let filePath = path.join(\n isAppPage ? appDistDir : pagesDistDir,\n `${normalizePagePath(route)}.${isAppPage && !dataRoute ? 'body' : 'html'}`\n )\n\n // we use the static 404 for notFound: true if available\n // if not we do a blocking invoke on first request\n if (isNotFoundTrue && hasStatic404) {\n const locale =\n config.i18n &&\n normalizeLocalePath(route, config.i18n?.locales).detectedLocale\n\n for (const currentFilePath of [\n path.join(pagesDistDir, locale || '', '404.html'),\n path.join(pagesDistDir, '404.html'),\n ]) {\n if (await cachedFilePathCheck(currentFilePath)) {\n filePath = currentFilePath\n break\n }\n }\n }\n\n const meta = await getAppRouteMeta(route, isAppPage)\n\n const initialOutput: AdapterOutput['PRERENDER'] = {\n id: route,\n type: AdapterOutputType.PRERENDER,\n pathname: route,\n parentOutputId:\n srcRoute === '/_not-found'\n ? srcRoute\n : getParentOutput(srcRoute, route).id,\n groupId: prerenderGroupId,\n\n pprChain:\n isAppPage && config.experimental.ppr\n ? {\n headers: {\n [NEXT_RESUME_HEADER]: '1',\n },\n }\n : undefined,\n\n parentFallbackMode: srcRouteInfo?.fallback,\n\n fallback:\n !isNotFoundTrue || (isNotFoundTrue && hasStatic404)\n ? {\n filePath,\n initialStatus:\n (initialStatus ?? isNotFoundTrue) ? 404 : undefined,\n initialHeaders: {\n ...initialHeaders,\n vary: varyHeader,\n 'content-type': HTML_CONTENT_TYPE_HEADER,\n ...meta.headers,\n },\n initialExpiration,\n initialRevalidate:\n typeof initialRevalidate === 'undefined'\n ? 1\n : initialRevalidate,\n }\n : undefined,\n config: {\n allowQuery,\n allowHeader,\n renderingMode,\n bypassFor: experimentalBypassFor,\n bypassToken: prerenderManifest.preview.previewModeId,\n },\n }\n outputs.prerenders.push(initialOutput)\n\n if (dataRoute) {\n let dataFilePath = path.join(\n pagesDistDir,\n `${normalizePagePath(route)}.json`\n )\n\n if (isAppPage) {\n // When experimental PPR is enabled, we expect that the data\n // that should be served as a part of the prerender should\n // be from the prefetch data route. If this isn't enabled\n // for ppr, the only way to get the data is from the data\n // route.\n dataFilePath = path.join(\n appDistDir,\n prefetchDataRoute &&\n renderingMode === RenderingMode.PARTIALLY_STATIC\n ? prefetchDataRoute\n : dataRoute\n )\n }\n\n outputs.prerenders.push({\n ...initialOutput,\n id: dataRoute,\n pathname: dataRoute,\n fallback: isNotFoundTrue\n ? undefined\n : {\n ...initialOutput.fallback,\n initialHeaders: {\n ...initialOutput.fallback?.initialHeaders,\n 'content-type': isAppPage\n ? rscContentTypeHeader\n : JSON_CONTENT_TYPE_HEADER,\n },\n filePath: dataFilePath,\n },\n })\n }\n\n if (isAppPage) {\n await handleAppMeta(route, initialOutput, meta)\n }\n prerenderGroupId += 1\n }\n\n for (const dynamicRoute in prerenderManifest.dynamicRoutes) {\n const {\n fallback,\n fallbackExpire,\n fallbackRevalidate,\n fallbackHeaders,\n fallbackStatus,\n allowHeader,\n dataRoute,\n renderingMode,\n experimentalBypassFor,\n } = prerenderManifest.dynamicRoutes[dynamicRoute]\n\n const isAppPage = Boolean(appOutputMap[dynamicRoute])\n\n const allowQuery = Object.values(\n routesManifest.dynamicRoutes.find(\n (item) => item.page === dynamicRoute\n )?.routeKeys || {}\n )\n const meta = await getAppRouteMeta(dynamicRoute, isAppPage)\n\n const initialOutput: AdapterOutput['PRERENDER'] = {\n id: dynamicRoute,\n type: AdapterOutputType.PRERENDER,\n pathname: dynamicRoute,\n parentOutputId: getParentOutput(dynamicRoute, dynamicRoute).id,\n groupId: prerenderGroupId,\n config: {\n allowQuery,\n allowHeader,\n renderingMode,\n bypassFor: experimentalBypassFor,\n bypassToken: prerenderManifest.preview.previewModeId,\n },\n fallback:\n typeof fallback === 'string'\n ? {\n filePath: path.join(\n isAppPage ? appDistDir : pagesDistDir,\n // app router dynamic route fallbacks don't have the\n // extension so ensure it's added here\n fallback.endsWith('.html') ? fallback : `${fallback}.html`\n ),\n initialStatus: fallbackStatus,\n initialHeaders: {\n ...fallbackHeaders,\n 'content-type': HTML_CONTENT_TYPE_HEADER,\n },\n initialExpiration: fallbackExpire,\n initialRevalidate: fallbackRevalidate || 1,\n }\n : undefined,\n }\n\n if (!config.i18n || isAppPage) {\n outputs.prerenders.push(initialOutput)\n\n if (isAppPage) {\n await handleAppMeta(dynamicRoute, initialOutput, meta)\n }\n\n if (dataRoute) {\n outputs.prerenders.push({\n ...initialOutput,\n id: dataRoute,\n pathname: dataRoute,\n fallback: undefined,\n })\n }\n prerenderGroupId += 1\n } else {\n for (const locale of config.i18n.locales) {\n const currentOutput = {\n ...initialOutput,\n pathname: path.posix.join(`/${locale}`, initialOutput.pathname),\n id: path.posix.join(`/${locale}`, initialOutput.id),\n fallback:\n typeof fallback === 'string'\n ? {\n ...initialOutput.fallback,\n filePath: path.join(\n pagesDistDir,\n locale,\n // app router dynamic route fallbacks don't have the\n // extension so ensure it's added here\n fallback.endsWith('.html')\n ? fallback\n : `${fallback}.html`\n ),\n }\n : undefined,\n groupId: prerenderGroupId,\n }\n outputs.prerenders.push(currentOutput)\n\n if (dataRoute) {\n const dataPathname = path.posix.join(\n `/_next/data`,\n buildId,\n locale,\n dynamicRoute + '.json'\n )\n outputs.prerenders.push({\n ...initialOutput,\n id: dataPathname,\n pathname: dataPathname,\n // data route doesn't have skeleton fallback\n fallback: undefined,\n groupId: prerenderGroupId,\n })\n }\n prerenderGroupId += 1\n }\n }\n }\n\n // ensure 404\n const staticErrorDocs = [\n ...(hasStatic404 ? ['/404'] : []),\n ...(hasStatic500 ? ['/500'] : []),\n ]\n\n for (const errorDoc of staticErrorDocs) {\n const errorDocPath = path.posix.join(\n '/',\n config.i18n?.defaultLocale || '',\n errorDoc\n )\n\n if (!prerenderManifest.routes[errorDocPath]) {\n for (const currentDocPath of [\n errorDocPath,\n ...(config.i18n?.locales?.map((locale) =>\n path.posix.join('/', locale, errorDoc)\n ) || []),\n ]) {\n const currentFilePath = path.join(\n pagesDistDir,\n `${currentDocPath}.html`\n )\n if (await cachedFilePathCheck(currentFilePath)) {\n outputs.staticFiles.push({\n pathname: currentDocPath,\n id: currentDocPath,\n type: AdapterOutputType.STATIC_FILE,\n filePath: currentFilePath,\n })\n }\n }\n }\n }\n }\n\n normalizePathnames(config, outputs)\n\n const dynamicRoutes: DynamicRouteItem[] = []\n const dynamicDataRoutes: DynamicRouteItem[] = []\n const dynamicSegmentRoutes: DynamicRouteItem[] = []\n\n const getDestinationQuery = (routeKeys: Record<string, string>) => {\n const items = Object.entries(routeKeys ?? {})\n if (items.length === 0) return ''\n\n return '?' + items.map(([key, value]) => `${value}=$${key}`).join('&')\n }\n\n const fallbackFalseHasCondition: RouteHas[] = [\n {\n type: 'cookie',\n key: '__prerender_bypass',\n value: prerenderManifest.preview.previewModeId,\n },\n {\n type: 'cookie',\n key: '__next_preview_data',\n },\n ]\n\n for (const route of routesManifest.dynamicRoutes) {\n const shouldLocalize = config.i18n\n\n const routeRegex = getNamedRouteRegex(route.page, {\n prefixRouteKeys: true,\n })\n\n const isFallbackFalse =\n prerenderManifest.dynamicRoutes[route.page]?.fallback === false\n\n const { hasFallbackRootParams } = route\n\n const sourceRegex = routeRegex.namedRegex.replace(\n '^',\n `^${config.basePath && config.basePath !== '/' ? path.posix.join('/', config.basePath || '') : ''}[/]?${shouldLocalize ? '(?<nextLocale>[^/]{1,})?' : ''}`\n )\n const destination =\n path.posix.join(\n '/',\n config.basePath,\n shouldLocalize ? '/$nextLocale' : '',\n route.page\n ) + getDestinationQuery(route.routeKeys)\n\n if (appPageKeys && appPageKeys.length > 0 && config.cacheComponents) {\n // If we have fallback root params (implying we've already\n // emitted a rewrite for the /_tree request), or if the route\n // has PPR enabled and client param parsing is enabled, then\n // we don't need to include any other suffixes.\n const shouldSkipSuffixes = hasFallbackRootParams\n\n dynamicRoutes.push({\n source: route.page + '.rsc',\n sourceRegex: sourceRegex.replace(\n new RegExp(escapeStringRegexp('(?:/)?$')),\n // Now than the upstream issues has been resolved, we can safely\n // add the suffix back, this resolves a bug related to segment\n // rewrites not capturing the correct suffix values when\n // enabled.\n shouldSkipSuffixes\n ? '(?<rscSuffix>\\\\.rsc|\\\\.segments/.+\\\\.segment\\\\.rsc)(?:/)?$'\n : '(?<rscSuffix>\\\\.rsc|\\\\.prefetch\\\\.rsc|\\\\.segments/.+\\\\.segment\\\\.rsc)(?:/)?$'\n ),\n destination: destination?.replace(/($|\\?)/, '$rscSuffix$1'),\n has: isFallbackFalse ? fallbackFalseHasCondition : undefined,\n missing: undefined,\n })\n }\n\n // needs basePath and locale handling if pages router\n dynamicRoutes.push({\n source: route.page,\n sourceRegex,\n destination,\n has: isFallbackFalse ? fallbackFalseHasCondition : undefined,\n missing: undefined,\n })\n\n for (const segmentRoute of route.prefetchSegmentDataRoutes || []) {\n dynamicSegmentRoutes.push({\n source: route.page,\n sourceRegex: segmentRoute.source.replace(\n '^',\n `^${config.basePath && config.basePath !== '/' ? path.posix.join('/', config.basePath || '') : ''}[/]?`\n ),\n destination: path.posix.join(\n '/',\n config.basePath,\n segmentRoute.destination +\n getDestinationQuery(segmentRoute.routeKeys)\n ),\n has: undefined,\n missing: undefined,\n })\n }\n }\n\n const needsMiddlewareResolveRoutes =\n outputs.middleware && outputs.pages.length > 0\n\n const dataRoutePages = new Set([\n ...routesManifest.dataRoutes.map((item) => item.page),\n ])\n const sortedDataPages = sortSortableRoutes([\n ...(needsMiddlewareResolveRoutes\n ? [...staticPages].map((page) => ({ sourcePage: page, page }))\n : []),\n ...routesManifest.dataRoutes.map((item) => ({\n sourcePage: item.page,\n page: item.page,\n })),\n ])\n\n for (const { page } of sortedDataPages) {\n if (needsMiddlewareResolveRoutes || isDynamicRoute(page)) {\n const shouldLocalize = config.i18n\n const isFallbackFalse =\n prerenderManifest.dynamicRoutes[page]?.fallback === false\n\n const routeRegex = getNamedRouteRegex(page + '.json', {\n prefixRouteKeys: true,\n includeSuffix: true,\n })\n const isDataRoute = dataRoutePages.has(page)\n\n const destination = path.posix.join(\n '/',\n config.basePath,\n ...(isDataRoute ? [`_next/data`, buildId] : ''),\n ...(page === '/'\n ? [shouldLocalize ? '$nextLocale.json' : 'index.json']\n : [\n shouldLocalize ? '$nextLocale' : '',\n page +\n (isDataRoute ? '.json' : '') +\n getDestinationQuery(routeRegex.routeKeys || {}),\n ])\n )\n\n dynamicDataRoutes.push({\n source: page,\n sourceRegex:\n shouldLocalize && page === '/'\n ? '^' +\n path.posix.join(\n '/',\n config.basePath,\n '_next/data',\n escapeStringRegexp(buildId),\n '(?<nextLocale>[^/]{1,}).json'\n )\n : routeRegex.namedRegex.replace(\n '^',\n `^${path.posix.join(\n '/',\n config.basePath,\n `_next/data`,\n escapeStringRegexp(buildId)\n )}[/]?${shouldLocalize ? '(?<nextLocale>[^/]{1,})?' : ''}`\n ),\n destination,\n has: isFallbackFalse ? fallbackFalseHasCondition : undefined,\n missing: undefined,\n })\n }\n }\n\n const buildRewriteItem = (route: ManifestRewriteRoute): RewriteItem => {\n const converted = convertRewrites([route], ['nextInternalLocale'])[0]\n const regex = converted.src || route.regex\n\n return {\n source: route.source,\n sourceRegex: route.internal ? regex : modifyRouteRegex(regex),\n destination: converted.dest || route.destination,\n has: route.has,\n missing: route.missing,\n }\n }\n\n try {\n Log.info(`Running onBuildComplete from ${adapterMod.name}`)\n await adapterMod.onBuildComplete({\n routes: {\n dynamicRoutes: [\n ...dynamicDataRoutes,\n ...dynamicSegmentRoutes,\n ...dynamicRoutes,\n ],\n rewrites: {\n beforeFiles:\n routesManifest.rewrites.beforeFiles.map(buildRewriteItem),\n afterFiles:\n routesManifest.rewrites.afterFiles.map(buildRewriteItem),\n fallback: routesManifest.rewrites.fallback.map(buildRewriteItem),\n },\n redirects: routesManifest.redirects.map((route) => {\n const converted = convertRedirects([route], 307)[0]\n let dest = 'headers' in converted && converted.headers?.Location\n const regex = converted.src || route.regex\n\n return {\n source: route.source,\n sourceRegex: route.internal ? regex : modifyRouteRegex(regex),\n destination: dest || route.destination,\n statusCode: converted.status || getRedirectStatus(route),\n has: route.has,\n missing: route.missing,\n priority: route.internal || undefined,\n }\n }),\n headers: routesManifest.headers.map((route) => {\n const converted = convertHeaders([route])[0]\n const regex = converted.src || route.regex\n\n return {\n source: route.source,\n sourceRegex: route.internal ? regex : modifyRouteRegex(regex),\n headers: 'headers' in converted ? converted.headers || {} : {},\n has: route.has,\n missing: route.missing,\n priority: route.internal || undefined,\n }\n }),\n },\n outputs,\n\n config,\n distDir,\n buildId,\n nextVersion,\n projectDir: dir,\n repoRoot: tracingRoot,\n })\n } catch (err) {\n Log.error(`Failed to run onBuildComplete from ${adapterMod.name}`)\n throw err\n }\n }\n}\n"],"names":["handleBuildComplete","normalizePathnames","config","outputs","basePath","output","pages","pagesApi","appPages","appRoutes","prerenders","staticFiles","pathname","addPathPrefix","replace","dir","buildId","configOutDir","distDir","pageKeys","tracingRoot","adapterPath","appPageKeys","staticPages","nextVersion","hasStatic404","hasStatic500","routesManifest","serverPropsPages","hasNodeMiddleware","prerenderManifest","middlewareManifest","requiredServerFiles","hasInstrumentationHook","functionsConfigManifest","adapterMod","interopDefault","pathToFileURL","require","resolve","href","onBuildComplete","exportFiles","recursiveReadDir","file","endsWith","startsWith","push","id","filePath","path","join","type","AdapterOutputType","STATIC_FILE","posix","sharedNodeAssets","pagesSharedNodeAssets","appPagesSharedNodeAssets","sharedTraceIgnores","sharedIgnoreFn","makeIgnoreFn","fileOutputPath","relative","moduleTypes","currentDependencies","modulePath","contextDir","dirname","item","fs","readdir","match","fileList","esmFileList","nodeFileTrace","base","ignore","forEach","add","rootRelativeFilePath","necessaryNodeDependencies","Object","values","defaultOverrides","filter","extname","assets","handleTraceFiles","assign","traceFilePath","traceData","JSON","parse","readFile","traceFileDir","relativeFile","files","tracedFilePath","handleEdgeFunction","page","isMiddleware","PAGES","isAppPrefix","name","isAppPage","isAppRoute","currentOutputs","MIDDLEWARE","APP_PAGE","APP_ROUTE","PAGES_API","route","runtime","sourcePage","normalizeAppPath","find","wasmAssets","env","handleFile","originalPath","wasm","matchers","map","source","originalSource","sourceRegex","regexp","has","missing","key","value","preview","previewModeId","middleware","rscPathname","normalizePagePath","edgeFunctionHandlers","isMiddlewareFilename","functions","pagesDistDir","pageOutputMap","rscFallbackPath","length","writeFile","hasOwnProperty","pageFile","i18n","locale","locales","localePage","localeOutput","staticOutput","pageTraceFile","catch","err","code","Log","warn","functionConfig","maxDuration","preferredRegion","regions","dataPathname","middlewareFile","middlewareTrace","appOutputMap","appDistDir","normalizedPage","existingOutput","getParentOutput","srcRoute","childRoute","allowMissing","normalizedSrcRoute","normalizeLocalePath","parentOutput","console","error","appOutputs","keys","pageOutputs","Error","prefetchSegmentDirSuffix","prefetchSegmentSuffix","varyHeader","didPostponeHeader","contentTypeHeader","rscContentTypeHeader","rsc","handleAppMeta","initialOutput","meta","postponed","fallback","postponedState","segmentPaths","normalizedRoute","segmentsDir","segmentPath","outputSegmentPath","fallbackPathname","PRERENDER","parentOutputId","groupId","initialExpiration","initialRevalidate","initialHeaders","vary","prerenderGroupId","getAppRouteMeta","basename","headers","keyLower","toLowerCase","filePathCache","Map","cachedFilePathCheck","get","newCheck","access","then","set","routes","initialExpireSeconds","initialRevalidateSeconds","initialStatus","prefetchDataRoute","dataRoute","renderingMode","allowHeader","experimentalBypassFor","srcRouteInfo","dynamicRoutes","Boolean","isNotFoundTrue","notFoundRoutes","includes","allowQuery","routeKeys","isDynamicRoute","detectedLocale","currentFilePath","pprChain","experimental","ppr","NEXT_RESUME_HEADER","undefined","parentFallbackMode","HTML_CONTENT_TYPE_HEADER","bypassFor","bypassToken","dataFilePath","RenderingMode","PARTIALLY_STATIC","JSON_CONTENT_TYPE_HEADER","dynamicRoute","fallbackExpire","fallbackRevalidate","fallbackHeaders","fallbackStatus","currentOutput","staticErrorDocs","errorDoc","errorDocPath","defaultLocale","currentDocPath","dynamicDataRoutes","dynamicSegmentRoutes","getDestinationQuery","items","entries","fallbackFalseHasCondition","shouldLocalize","routeRegex","getNamedRouteRegex","prefixRouteKeys","isFallbackFalse","hasFallbackRootParams","namedRegex","destination","cacheComponents","shouldSkipSuffixes","RegExp","escapeStringRegexp","segmentRoute","prefetchSegmentDataRoutes","needsMiddlewareResolveRoutes","dataRoutePages","Set","dataRoutes","sortedDataPages","sortSortableRoutes","includeSuffix","isDataRoute","buildRewriteItem","converted","convertRewrites","regex","src","internal","modifyRouteRegex","dest","info","rewrites","beforeFiles","afterFiles","redirects","convertRedirects","Location","statusCode","status","getRedirectStatus","priority","convertHeaders","projectDir","repoRoot"],"mappings":"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","ignoreList":[0]}
@@ -377,7 +377,7 @@ async function build(dir, experimentalAnalyze = false, reactProductionProfiling
377
377
  try {
378
378
  const nextBuildSpan = (0, _trace.trace)('next-build', undefined, {
379
379
  buildMode: experimentalBuildMode,
380
- version: "16.0.2-canary.14"
380
+ version: "16.0.2-canary.16"
381
381
  });
382
382
  _buildcontext.NextBuildContext.nextBuildSpan = nextBuildSpan;
383
383
  _buildcontext.NextBuildContext.dir = dir;
@@ -915,7 +915,7 @@ async function build(dir, experimentalAnalyze = false, reactProductionProfiling
915
915
  // Files outside of the distDir can be "type": "module"
916
916
  await writeFileUtf8(_path.default.join(distDir, 'package.json'), '{"type": "commonjs"}');
917
917
  // These are written to distDir, so they need to come after creating and cleaning distDr.
918
- await (0, _builddiagnostics.recordFrameworkVersion)("16.0.2-canary.14");
918
+ await (0, _builddiagnostics.recordFrameworkVersion)("16.0.2-canary.16");
919
919
  await (0, _builddiagnostics.updateBuildDiagnostics)({
920
920
  buildStage: 'start'
921
921
  });
@@ -2594,7 +2594,7 @@ async function build(dir, experimentalAnalyze = false, reactProductionProfiling
2594
2594
  configOutDir: _path.default.join(dir, configOutDir),
2595
2595
  staticPages,
2596
2596
  serverPropsPages,
2597
- nextVersion: "16.0.2-canary.14",
2597
+ nextVersion: "16.0.2-canary.16",
2598
2598
  tracingRoot: outputFileTracingRoot,
2599
2599
  hasNodeMiddleware,
2600
2600
  hasInstrumentationHook,
@@ -130,7 +130,7 @@ function _interop_require_wildcard(obj, nodeInterop) {
130
130
  }
131
131
  return newObj;
132
132
  }
133
- const nextVersion = "16.0.2-canary.14";
133
+ const nextVersion = "16.0.2-canary.16";
134
134
  const ArchName = (0, _os.arch)();
135
135
  const PlatformName = (0, _os.platform)();
136
136
  function infoLog(...args) {
@@ -1723,7 +1723,7 @@ async function getBaseWebpackConfig(dir, { buildId, encryptionKey, config, compi
1723
1723
  isClient && new _copyfileplugin.CopyFilePlugin({
1724
1724
  // file path to build output of `@next/polyfill-nomodule`
1725
1725
  filePath: require.resolve('./polyfills/polyfill-nomodule'),
1726
- cacheKey: "16.0.2-canary.14",
1726
+ cacheKey: "16.0.2-canary.16",
1727
1727
  name: `static/chunks/polyfills${dev ? '' : '-[hash]'}.js`,
1728
1728
  minimize: false,
1729
1729
  info: {
@@ -1909,7 +1909,7 @@ async function getBaseWebpackConfig(dir, { buildId, encryptionKey, config, compi
1909
1909
  // - Next.js location on disk (some loaders use absolute paths and some resolve options depend on absolute paths)
1910
1910
  // - Next.js version
1911
1911
  // - next.config.js keys that affect compilation
1912
- version: `${__dirname}|${"16.0.2-canary.14"}|${configVars}`,
1912
+ version: `${__dirname}|${"16.0.2-canary.16"}|${configVars}`,
1913
1913
  cacheDirectory: _path.default.join(distDir, 'cache', 'webpack'),
1914
1914
  // For production builds, it's more efficient to compress all cache files together instead of compression each one individually.
1915
1915
  // So we disable compression here and allow the build runner to take care of compressing the cache as a whole.