next 16.1.1-canary.23 → 16.1.1-canary.24

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 (107) hide show
  1. package/dist/.build-commit +1 -1
  2. package/dist/bin/next +2 -2
  3. package/dist/build/index.js +3 -3
  4. package/dist/build/swc/index.js +1 -1
  5. package/dist/build/templates/app-page.js +8 -16
  6. package/dist/build/templates/app-page.js.map +1 -1
  7. package/dist/build/templates/app-route.js +1 -1
  8. package/dist/build/templates/app-route.js.map +1 -1
  9. package/dist/build/webpack-config.js +3 -3
  10. package/dist/bundle-analyzer/404.html +2 -2
  11. package/dist/bundle-analyzer/__next.__PAGE__.txt +1 -1
  12. package/dist/bundle-analyzer/__next._full.txt +1 -1
  13. package/dist/bundle-analyzer/__next._head.txt +1 -1
  14. package/dist/bundle-analyzer/__next._index.txt +1 -1
  15. package/dist/bundle-analyzer/__next._tree.txt +1 -1
  16. package/dist/bundle-analyzer/_not-found/__next._full.txt +1 -1
  17. package/dist/bundle-analyzer/_not-found/__next._head.txt +1 -1
  18. package/dist/bundle-analyzer/_not-found/__next._index.txt +1 -1
  19. package/dist/bundle-analyzer/_not-found/__next._not-found.__PAGE__.txt +1 -1
  20. package/dist/bundle-analyzer/_not-found/__next._not-found.txt +1 -1
  21. package/dist/bundle-analyzer/_not-found/__next._tree.txt +1 -1
  22. package/dist/bundle-analyzer/_not-found.html +2 -2
  23. package/dist/bundle-analyzer/_not-found.txt +1 -1
  24. package/dist/bundle-analyzer/index.html +2 -2
  25. package/dist/bundle-analyzer/index.txt +1 -1
  26. package/dist/client/app-bootstrap.js +1 -1
  27. package/dist/client/index.js +1 -1
  28. package/dist/compiled/next-server/pages-api-turbo.runtime.dev.js.map +1 -1
  29. package/dist/compiled/next-server/pages-api-turbo.runtime.prod.js.map +1 -1
  30. package/dist/compiled/next-server/pages-api.runtime.dev.js.map +1 -1
  31. package/dist/compiled/next-server/pages-api.runtime.prod.js +1 -1
  32. package/dist/compiled/next-server/pages-api.runtime.prod.js.map +1 -1
  33. package/dist/compiled/next-server/pages-turbo.runtime.dev.js +2 -2
  34. package/dist/compiled/next-server/pages-turbo.runtime.dev.js.map +1 -1
  35. package/dist/compiled/next-server/pages-turbo.runtime.prod.js +8 -8
  36. package/dist/compiled/next-server/pages-turbo.runtime.prod.js.map +1 -1
  37. package/dist/compiled/next-server/pages.runtime.dev.js +2 -2
  38. package/dist/compiled/next-server/pages.runtime.dev.js.map +1 -1
  39. package/dist/compiled/next-server/pages.runtime.prod.js +8 -8
  40. package/dist/compiled/next-server/pages.runtime.prod.js.map +1 -1
  41. package/dist/compiled/next-server/server.runtime.prod.js +4 -4
  42. package/dist/compiled/next-server/server.runtime.prod.js.map +1 -1
  43. package/dist/esm/build/index.js +3 -3
  44. package/dist/esm/build/swc/index.js +1 -1
  45. package/dist/esm/build/templates/app-page.js +8 -16
  46. package/dist/esm/build/templates/app-page.js.map +1 -1
  47. package/dist/esm/build/templates/app-route.js +2 -2
  48. package/dist/esm/build/templates/app-route.js.map +1 -1
  49. package/dist/esm/build/webpack-config.js +3 -3
  50. package/dist/esm/client/app-bootstrap.js +1 -1
  51. package/dist/esm/client/index.js +1 -1
  52. package/dist/esm/server/base-server.js +1 -3
  53. package/dist/esm/server/base-server.js.map +1 -1
  54. package/dist/esm/server/config-schema.js +0 -1
  55. package/dist/esm/server/config-schema.js.map +1 -1
  56. package/dist/esm/server/config-shared.js +0 -2
  57. package/dist/esm/server/config-shared.js.map +1 -1
  58. package/dist/esm/server/dev/hot-reloader-turbopack.js +1 -1
  59. package/dist/esm/server/dev/hot-reloader-webpack.js +1 -1
  60. package/dist/esm/server/lib/app-info-log.js +1 -1
  61. package/dist/esm/server/lib/cache-control.js +4 -45
  62. package/dist/esm/server/lib/cache-control.js.map +1 -1
  63. package/dist/esm/server/lib/start-server.js +1 -1
  64. package/dist/esm/server/next-server.js +1 -2
  65. package/dist/esm/server/next-server.js.map +1 -1
  66. package/dist/esm/server/render.js +3 -3
  67. package/dist/esm/server/render.js.map +1 -1
  68. package/dist/esm/server/route-modules/pages/pages-handler.js +3 -4
  69. package/dist/esm/server/route-modules/pages/pages-handler.js.map +1 -1
  70. package/dist/esm/server/send-payload.js +3 -3
  71. package/dist/esm/server/send-payload.js.map +1 -1
  72. package/dist/esm/shared/lib/errors/canary-only-config-error.js +1 -1
  73. package/dist/server/base-server.d.ts +0 -1
  74. package/dist/server/base-server.js +1 -3
  75. package/dist/server/base-server.js.map +1 -1
  76. package/dist/server/config-schema.d.ts +0 -1
  77. package/dist/server/config-schema.js +0 -1
  78. package/dist/server/config-schema.js.map +1 -1
  79. package/dist/server/config-shared.d.ts +1 -8
  80. package/dist/server/config-shared.js +0 -2
  81. package/dist/server/config-shared.js.map +1 -1
  82. package/dist/server/dev/hot-reloader-turbopack.js +1 -1
  83. package/dist/server/dev/hot-reloader-webpack.js +1 -1
  84. package/dist/server/lib/app-info-log.js +1 -1
  85. package/dist/server/lib/cache-control.d.ts +1 -28
  86. package/dist/server/lib/cache-control.js +7 -52
  87. package/dist/server/lib/cache-control.js.map +1 -1
  88. package/dist/server/lib/start-server.js +1 -1
  89. package/dist/server/next-server.d.ts +0 -1
  90. package/dist/server/next-server.js +1 -2
  91. package/dist/server/next-server.js.map +1 -1
  92. package/dist/server/render.d.ts +0 -1
  93. package/dist/server/render.js +2 -2
  94. package/dist/server/render.js.map +1 -1
  95. package/dist/server/route-modules/pages/pages-handler.js +2 -3
  96. package/dist/server/route-modules/pages/pages-handler.js.map +1 -1
  97. package/dist/server/send-payload.d.ts +1 -2
  98. package/dist/server/send-payload.js +2 -2
  99. package/dist/server/send-payload.js.map +1 -1
  100. package/dist/shared/lib/errors/canary-only-config-error.js +1 -1
  101. package/dist/telemetry/anonymous-meta.js +1 -1
  102. package/dist/telemetry/events/session-stopped.js +2 -2
  103. package/dist/telemetry/events/version.js +2 -2
  104. package/package.json +15 -15
  105. /package/dist/bundle-analyzer/_next/static/{nbQP50dTiki8WHJ2QEq8j → yUm7dqHCllGKcpZoTrY7X}/_buildManifest.js +0 -0
  106. /package/dist/bundle-analyzer/_next/static/{nbQP50dTiki8WHJ2QEq8j → yUm7dqHCllGKcpZoTrY7X}/_clientMiddlewareManifest.json +0 -0
  107. /package/dist/bundle-analyzer/_next/static/{nbQP50dTiki8WHJ2QEq8j → yUm7dqHCllGKcpZoTrY7X}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/server/route-modules/pages/pages-handler.ts"],"sourcesContent":["import type { IncomingMessage, ServerResponse } from 'node:http'\nimport type { ParsedUrlQuery } from 'node:querystring'\nimport { RouteKind } from '../../route-kind'\nimport { BaseServerSpan } from '../../lib/trace/constants'\nimport { getTracer, SpanKind, type Span } from '../../lib/trace/tracer'\nimport { formatUrl } from '../../../shared/lib/router/utils/format-url'\nimport {\n addRequestMeta,\n getRequestMeta,\n setRequestMeta,\n type RequestMeta,\n} from '../../request-meta'\nimport { interopDefault } from '../../app-render/interop-default'\nimport { getRevalidateReason } from '../../instrumentation/utils'\nimport { normalizeDataPath } from '../../../shared/lib/page-path/normalize-data-path'\nimport {\n CachedRouteKind,\n type CachedPageValue,\n type CachedRedirectValue,\n type ResponseCacheEntry,\n type ResponseGenerator,\n} from '../../response-cache'\n\nimport {\n setResponseCacheControlHeaders,\n type CacheControl,\n} from '../../lib/cache-control'\nimport { normalizeRepeatedSlashes } from '../../../shared/lib/utils'\nimport { getRedirectStatus } from '../../../lib/redirect-status'\nimport {\n CACHE_ONE_YEAR,\n HTML_CONTENT_TYPE_HEADER,\n JSON_CONTENT_TYPE_HEADER,\n} from '../../../lib/constants'\nimport path from 'path'\nimport { sendRenderResult } from '../../send-payload'\nimport RenderResult from '../../render-result'\nimport { toResponseCacheEntry } from '../../response-cache/utils'\nimport { NoFallbackError } from '../../../shared/lib/no-fallback-error.external'\nimport { RedirectStatusCode } from '../../../client/components/redirect-status-code'\nimport { isBot } from '../../../shared/lib/router/utils/is-bot'\nimport { addPathPrefix } from '../../../shared/lib/router/utils/add-path-prefix'\nimport { removeTrailingSlash } from '../../../shared/lib/router/utils/remove-trailing-slash'\nimport type { PagesRouteModule } from './module.compiled'\nimport type {\n GetServerSideProps,\n GetStaticPaths,\n GetStaticProps,\n} from '../../../types'\nimport { getDeploymentId } from '../../../shared/lib/deployment-id'\n\nexport const getHandler = ({\n srcPage: originalSrcPage,\n config,\n userland,\n routeModule,\n isFallbackError,\n getStaticPaths,\n getStaticProps,\n getServerSideProps,\n}: {\n srcPage: string\n config: Record<string, any> | undefined\n userland: any\n isFallbackError?: boolean\n routeModule: PagesRouteModule\n getStaticProps?: GetStaticProps\n getStaticPaths?: GetStaticPaths\n getServerSideProps?: GetServerSideProps\n}) => {\n return async function handler(\n req: IncomingMessage,\n res: ServerResponse,\n ctx: {\n waitUntil?: (prom: Promise<void>) => void\n requestMeta?: RequestMeta\n }\n ) {\n if (ctx.requestMeta) {\n setRequestMeta(req, ctx.requestMeta)\n }\n if (routeModule.isDev) {\n addRequestMeta(\n req,\n 'devRequestTimingInternalsEnd',\n process.hrtime.bigint()\n )\n }\n let srcPage = originalSrcPage\n // turbopack doesn't normalize `/index` in the page name\n // so we need to to process dynamic routes properly\n // TODO: fix turbopack providing differing value from webpack\n if (process.env.TURBOPACK) {\n srcPage = srcPage.replace(/\\/index$/, '') || '/'\n } else if (srcPage === '/index') {\n // we always normalize /index specifically\n srcPage = '/'\n }\n const multiZoneDraftMode = process.env\n .__NEXT_MULTI_ZONE_DRAFT_MODE as any as boolean\n\n const prepareResult = await routeModule.prepare(req, res, {\n srcPage,\n multiZoneDraftMode,\n })\n\n if (!prepareResult) {\n res.statusCode = 400\n res.end('Bad Request')\n ctx.waitUntil?.(Promise.resolve())\n return\n }\n\n const isMinimalMode = Boolean(getRequestMeta(req, 'minimalMode'))\n\n const render404 = async () => {\n // TODO: should route-module itself handle rendering the 404\n if (routerServerContext?.render404) {\n await routerServerContext.render404(req, res, parsedUrl, false)\n } else {\n res.end('This page could not be found')\n }\n }\n\n const {\n buildId,\n query,\n params,\n parsedUrl,\n originalQuery,\n originalPathname,\n buildManifest,\n fallbackBuildManifest,\n nextFontManifest,\n serverFilesManifest,\n reactLoadableManifest,\n prerenderManifest,\n isDraftMode,\n isOnDemandRevalidate,\n revalidateOnlyGenerated,\n locale,\n locales,\n defaultLocale,\n routerServerContext,\n nextConfig,\n resolvedPathname,\n encodedResolvedPathname,\n } = prepareResult\n\n const isExperimentalCompile =\n serverFilesManifest?.config?.experimental?.isExperimentalCompile\n\n const hasServerProps = Boolean(getServerSideProps)\n const hasStaticProps = Boolean(getStaticProps)\n const hasStaticPaths = Boolean(getStaticPaths)\n const hasGetInitialProps = Boolean(\n (userland.default || userland).getInitialProps\n )\n let cacheKey: null | string = null\n let isIsrFallback = false\n let isNextDataRequest =\n prepareResult.isNextDataRequest && (hasStaticProps || hasServerProps)\n\n const is404Page = srcPage === '/404'\n const is500Page = srcPage === '/500'\n const isErrorPage = srcPage === '/_error'\n\n if (!routeModule.isDev && !isDraftMode && hasStaticProps) {\n cacheKey = `${locale ? `/${locale}` : ''}${\n (srcPage === '/' || resolvedPathname === '/') && locale\n ? ''\n : resolvedPathname\n }`\n\n if (is404Page || is500Page || isErrorPage) {\n cacheKey = `${locale ? `/${locale}` : ''}${srcPage}`\n }\n\n // ensure /index and / is normalized to one key\n cacheKey = cacheKey === '/index' ? '/' : cacheKey\n }\n\n if (hasStaticPaths && !isDraftMode) {\n const decodedPathname = removeTrailingSlash(\n locale\n ? addPathPrefix(resolvedPathname, `/${locale}`)\n : resolvedPathname\n )\n const isPrerendered =\n Boolean(prerenderManifest.routes[decodedPathname]) ||\n prerenderManifest.notFoundRoutes.includes(decodedPathname)\n\n const prerenderInfo = prerenderManifest.dynamicRoutes[srcPage]\n\n if (prerenderInfo) {\n if (prerenderInfo.fallback === false && !isPrerendered) {\n if (nextConfig.experimental.adapterPath) {\n return await render404()\n }\n throw new NoFallbackError()\n }\n\n if (\n typeof prerenderInfo.fallback === 'string' &&\n !isPrerendered &&\n !isNextDataRequest\n ) {\n isIsrFallback = true\n }\n }\n }\n\n // When serving a bot request, we want to serve a blocking render and not\n // the prerendered page. This ensures that the correct content is served\n // to the bot in the head.\n if (\n (isIsrFallback && isBot(req.headers['user-agent'] || '')) ||\n isMinimalMode\n ) {\n isIsrFallback = false\n }\n\n const tracer = getTracer()\n const activeSpan = tracer.getActiveScopeSpan()\n\n try {\n const method = req.method || 'GET'\n\n const resolvedUrl = formatUrl({\n pathname: nextConfig.trailingSlash\n ? `${encodedResolvedPathname}${!encodedResolvedPathname.endsWith('/') && parsedUrl.pathname?.endsWith('/') ? '/' : ''}`\n : removeTrailingSlash(encodedResolvedPathname || '/'),\n // make sure to only add query values from original URL\n query: hasStaticProps ? {} : originalQuery,\n })\n\n const handleResponse = async (span?: Span) => {\n const responseGenerator: ResponseGenerator = async ({\n previousCacheEntry,\n }) => {\n const doRender = async () => {\n try {\n return await routeModule\n .render(req, res, {\n query:\n hasStaticProps && !isExperimentalCompile\n ? ({\n ...params,\n } as ParsedUrlQuery)\n : {\n ...query,\n ...params,\n },\n params,\n page: srcPage,\n renderContext: {\n isDraftMode,\n isFallback: isIsrFallback,\n developmentNotFoundSourcePage: getRequestMeta(\n req,\n 'developmentNotFoundSourcePage'\n ),\n },\n sharedContext: {\n buildId,\n customServer:\n Boolean(routerServerContext?.isCustomServer) || undefined,\n deploymentId: getDeploymentId(),\n },\n renderOpts: {\n params,\n routeModule,\n page: srcPage,\n pageConfig: config || {},\n Component: interopDefault(userland),\n ComponentMod: userland,\n getStaticProps,\n getStaticPaths,\n getServerSideProps,\n supportsDynamicResponse: !hasStaticProps,\n buildManifest: isFallbackError\n ? fallbackBuildManifest\n : buildManifest,\n nextFontManifest,\n reactLoadableManifest,\n\n assetPrefix: nextConfig.assetPrefix,\n previewProps: prerenderManifest.preview,\n images: nextConfig.images as any,\n nextConfigOutput: nextConfig.output,\n optimizeCss: Boolean(nextConfig.experimental.optimizeCss),\n nextScriptWorkers: Boolean(\n nextConfig.experimental.nextScriptWorkers\n ),\n domainLocales: nextConfig.i18n?.domains,\n crossOrigin: nextConfig.crossOrigin,\n\n multiZoneDraftMode,\n basePath: nextConfig.basePath,\n disableOptimizedLoading:\n nextConfig.experimental.disableOptimizedLoading,\n largePageDataBytes:\n nextConfig.experimental.largePageDataBytes,\n\n isExperimentalCompile,\n\n experimental: {\n clientTraceMetadata:\n nextConfig.experimental.clientTraceMetadata ||\n ([] as any),\n },\n\n locale,\n locales,\n defaultLocale,\n setIsrStatus: routerServerContext?.setIsrStatus,\n\n isNextDataRequest:\n isNextDataRequest && (hasServerProps || hasStaticProps),\n\n resolvedUrl,\n // For getServerSideProps and getInitialProps we need to ensure we use the original URL\n // and not the resolved URL to prevent a hydration mismatch on\n // asPath\n resolvedAsPath:\n hasServerProps || hasGetInitialProps\n ? formatUrl({\n // we use the original URL pathname less the _next/data prefix if\n // present\n pathname: isNextDataRequest\n ? normalizeDataPath(originalPathname)\n : originalPathname,\n query: originalQuery,\n })\n : resolvedUrl,\n\n isOnDemandRevalidate,\n\n ErrorDebug: getRequestMeta(req, 'PagesErrorDebug'),\n err: getRequestMeta(req, 'invokeError'),\n dev: routeModule.isDev,\n\n // needed for experimental.optimizeCss feature\n distDir: path.join(\n /* turbopackIgnore: true */\n process.cwd(),\n routeModule.relativeProjectDir,\n routeModule.distDir\n ),\n },\n })\n .then((renderResult): ResponseCacheEntry => {\n const { metadata } = renderResult\n\n let cacheControl: CacheControl | undefined =\n metadata.cacheControl\n\n if ('isNotFound' in metadata && metadata.isNotFound) {\n return {\n value: null,\n cacheControl,\n } satisfies ResponseCacheEntry\n }\n\n // Handle `isRedirect`.\n if (metadata.isRedirect) {\n return {\n value: {\n kind: CachedRouteKind.REDIRECT,\n props: metadata.pageData ?? metadata.flightData,\n } satisfies CachedRedirectValue,\n cacheControl,\n } satisfies ResponseCacheEntry\n }\n\n return {\n value: {\n kind: CachedRouteKind.PAGES,\n html: renderResult,\n pageData: renderResult.metadata.pageData,\n headers: renderResult.metadata.headers,\n status: renderResult.metadata.statusCode,\n },\n cacheControl,\n }\n })\n .finally(() => {\n if (!span) return\n\n span.setAttributes({\n 'http.status_code': res.statusCode,\n 'next.rsc': false,\n })\n\n const rootSpanAttributes = tracer.getRootSpanAttributes()\n // We were unable to get attributes, probably OTEL is not enabled\n if (!rootSpanAttributes) {\n return\n }\n\n if (\n rootSpanAttributes.get('next.span_type') !==\n BaseServerSpan.handleRequest\n ) {\n console.warn(\n `Unexpected root span type '${rootSpanAttributes.get(\n 'next.span_type'\n )}'. Please report this Next.js issue https://github.com/vercel/next.js`\n )\n return\n }\n\n const route = rootSpanAttributes.get('next.route')\n if (route) {\n const name = `${method} ${route}`\n\n span.setAttributes({\n 'next.route': route,\n 'http.route': route,\n 'next.span_name': name,\n })\n span.updateName(name)\n } else {\n span.updateName(`${method} ${srcPage}`)\n }\n })\n } catch (err: unknown) {\n // if this is a background revalidate we need to report\n // the request error here as it won't be bubbled\n if (previousCacheEntry?.isStale) {\n const silenceLog = false\n await routeModule.onRequestError(\n req,\n err,\n {\n routerKind: 'Pages Router',\n routePath: srcPage,\n routeType: 'render',\n revalidateReason: getRevalidateReason({\n isStaticGeneration: hasStaticProps,\n isOnDemandRevalidate,\n }),\n },\n silenceLog,\n routerServerContext\n )\n }\n throw err\n }\n }\n\n // if we've already generated this page we no longer\n // serve the fallback\n if (previousCacheEntry) {\n isIsrFallback = false\n }\n\n if (isIsrFallback) {\n const fallbackResponse = await routeModule\n .getResponseCache(req)\n .get(\n routeModule.isDev\n ? null\n : locale\n ? `/${locale}${srcPage}`\n : srcPage,\n async ({\n previousCacheEntry: previousFallbackCacheEntry = null,\n }) => {\n if (!routeModule.isDev) {\n return toResponseCacheEntry(previousFallbackCacheEntry)\n }\n return doRender()\n },\n {\n routeKind: RouteKind.PAGES,\n isFallback: true,\n isRoutePPREnabled: false,\n isOnDemandRevalidate: false,\n incrementalCache: await routeModule.getIncrementalCache(\n req,\n nextConfig,\n prerenderManifest,\n isMinimalMode\n ),\n waitUntil: ctx.waitUntil,\n }\n )\n if (fallbackResponse) {\n // Remove the cache control from the response to prevent it from being\n // used in the surrounding cache.\n delete fallbackResponse.cacheControl\n fallbackResponse.isMiss = true\n return fallbackResponse\n }\n }\n\n if (\n !isMinimalMode &&\n isOnDemandRevalidate &&\n revalidateOnlyGenerated &&\n !previousCacheEntry\n ) {\n res.statusCode = 404\n // on-demand revalidate always sets this header\n res.setHeader('x-nextjs-cache', 'REVALIDATED')\n res.end('This page could not be found')\n return null\n }\n\n if (\n isIsrFallback &&\n previousCacheEntry?.value?.kind === CachedRouteKind.PAGES\n ) {\n return {\n value: {\n kind: CachedRouteKind.PAGES,\n html: new RenderResult(\n Buffer.from(previousCacheEntry.value.html),\n {\n contentType: HTML_CONTENT_TYPE_HEADER,\n metadata: {\n statusCode: previousCacheEntry.value.status,\n headers: previousCacheEntry.value.headers,\n },\n }\n ),\n pageData: {},\n status: previousCacheEntry.value.status,\n headers: previousCacheEntry.value.headers,\n } satisfies CachedPageValue,\n cacheControl: { revalidate: 0, expire: undefined },\n } satisfies ResponseCacheEntry\n }\n return doRender()\n }\n\n const result = await routeModule.handleResponse({\n cacheKey,\n req,\n nextConfig,\n routeKind: RouteKind.PAGES,\n isOnDemandRevalidate,\n revalidateOnlyGenerated,\n waitUntil: ctx.waitUntil,\n responseGenerator: responseGenerator,\n prerenderManifest,\n isMinimalMode,\n })\n\n // if we got a cache hit this wasn't an ISR fallback\n // but it wasn't generated during build so isn't in the\n // prerender-manifest\n if (isIsrFallback && !result?.isMiss) {\n isIsrFallback = false\n }\n\n // response is finished is no cache entry\n if (!result) {\n return\n }\n\n if (hasStaticProps && !isMinimalMode) {\n res.setHeader(\n 'x-nextjs-cache',\n isOnDemandRevalidate\n ? 'REVALIDATED'\n : result.isMiss\n ? 'MISS'\n : result.isStale\n ? 'STALE'\n : 'HIT'\n )\n }\n\n let cacheControl: CacheControl | undefined\n\n if (!hasStaticProps || isIsrFallback) {\n if (!res.getHeader('Cache-Control')) {\n cacheControl = { revalidate: 0, expire: undefined }\n }\n } else if (is404Page) {\n const notFoundRevalidate = getRequestMeta(req, 'notFoundRevalidate')\n\n cacheControl = {\n revalidate:\n typeof notFoundRevalidate === 'undefined'\n ? 0\n : notFoundRevalidate,\n expire: undefined,\n }\n } else if (is500Page) {\n cacheControl = { revalidate: 0, expire: undefined }\n } else if (result.cacheControl) {\n // If the cache entry has a cache control with a revalidate value that's\n // a number, use it.\n if (typeof result.cacheControl.revalidate === 'number') {\n if (result.cacheControl.revalidate < 1) {\n throw new Error(\n `Invalid revalidate configuration provided: ${result.cacheControl.revalidate} < 1`\n )\n }\n cacheControl = {\n revalidate: result.cacheControl.revalidate,\n expire: result.cacheControl?.expire ?? nextConfig.expireTime,\n }\n } else {\n // revalidate: false\n cacheControl = {\n revalidate: CACHE_ONE_YEAR,\n expire: undefined,\n }\n }\n }\n\n // If cache control is already set on the response we don't\n // override it to allow users to customize it via next.config\n if (cacheControl && !res.getHeader('Cache-Control')) {\n setResponseCacheControlHeaders(\n res,\n cacheControl,\n nextConfig.experimental.cdnCacheControlHeader\n )\n }\n\n // notFound: true case\n if (!result.value) {\n // add revalidate metadata before rendering 404 page\n // so that we can use this as source of truth for the\n // cache-control header instead of what the 404 page returns\n // for the revalidate value\n addRequestMeta(\n req,\n 'notFoundRevalidate',\n result.cacheControl?.revalidate\n )\n\n res.statusCode = 404\n\n if (isNextDataRequest) {\n res.end('{\"notFound\":true}')\n return\n }\n return await render404()\n }\n\n if (result.value.kind === CachedRouteKind.REDIRECT) {\n if (isNextDataRequest) {\n res.setHeader('content-type', JSON_CONTENT_TYPE_HEADER)\n res.end(JSON.stringify(result.value.props))\n return\n } else {\n const handleRedirect = (pageData: any) => {\n const redirect = {\n destination: pageData.pageProps.__N_REDIRECT,\n statusCode: pageData.pageProps.__N_REDIRECT_STATUS,\n basePath: pageData.pageProps.__N_REDIRECT_BASE_PATH,\n }\n const statusCode = getRedirectStatus(redirect)\n const { basePath } = nextConfig\n\n if (\n basePath &&\n redirect.basePath !== false &&\n redirect.destination.startsWith('/')\n ) {\n redirect.destination = `${basePath}${redirect.destination}`\n }\n\n if (redirect.destination.startsWith('/')) {\n redirect.destination = normalizeRepeatedSlashes(\n redirect.destination\n )\n }\n\n res.statusCode = statusCode\n res.setHeader('Location', redirect.destination)\n if (statusCode === RedirectStatusCode.PermanentRedirect) {\n res.setHeader('Refresh', `0;url=${redirect.destination}`)\n }\n res.end(redirect.destination)\n }\n await handleRedirect(result.value.props)\n return null\n }\n }\n\n if (result.value.kind !== CachedRouteKind.PAGES) {\n throw new Error(\n `Invariant: received non-pages cache entry in pages handler`\n )\n }\n\n // In dev, we should not cache pages for any reason.\n if (routeModule.isDev) {\n res.setHeader(\n 'Cache-Control',\n nextConfig.experimental.devCacheControlNoCache\n ? 'no-cache, must-revalidate'\n : 'no-store, must-revalidate'\n )\n }\n\n // Draft mode should never be cached\n if (isDraftMode) {\n res.setHeader(\n 'Cache-Control',\n 'private, no-cache, no-store, max-age=0, must-revalidate'\n )\n }\n\n // when invoking _error before pages/500 we don't actually\n // send the _error response\n if (\n getRequestMeta(req, 'customErrorRender') ||\n (isErrorPage && isMinimalMode && res.statusCode === 500)\n ) {\n return null\n }\n\n await sendRenderResult({\n req,\n res,\n // If we are rendering the error page it's not a data request\n // anymore\n result:\n isNextDataRequest && !isErrorPage && !is500Page\n ? new RenderResult(\n Buffer.from(JSON.stringify(result.value.pageData)),\n {\n contentType: JSON_CONTENT_TYPE_HEADER,\n metadata: result.value.html.metadata,\n }\n )\n : result.value.html,\n generateEtags: nextConfig.generateEtags,\n poweredByHeader: nextConfig.poweredByHeader,\n cacheControl: routeModule.isDev ? undefined : cacheControl,\n cdnCacheControlHeader: nextConfig.experimental.cdnCacheControlHeader,\n })\n }\n\n // TODO: activeSpan code path is for when wrapped by\n // next-server can be removed when this is no longer used\n if (activeSpan) {\n await handleResponse()\n } else {\n await tracer.withPropagatedContext(req.headers, () =>\n tracer.trace(\n BaseServerSpan.handleRequest,\n {\n spanName: `${method} ${srcPage}`,\n kind: SpanKind.SERVER,\n attributes: {\n 'http.method': method,\n 'http.target': req.url,\n },\n },\n handleResponse\n )\n )\n }\n } catch (err) {\n if (!(err instanceof NoFallbackError)) {\n const silenceLog = false\n await routeModule.onRequestError(\n req,\n err,\n {\n routerKind: 'Pages Router',\n routePath: srcPage,\n routeType: 'render',\n revalidateReason: getRevalidateReason({\n isStaticGeneration: hasStaticProps,\n isOnDemandRevalidate,\n }),\n },\n silenceLog,\n routerServerContext\n )\n }\n\n // rethrow so that we can handle serving error page\n throw err\n }\n }\n}\n"],"names":["RouteKind","BaseServerSpan","getTracer","SpanKind","formatUrl","addRequestMeta","getRequestMeta","setRequestMeta","interopDefault","getRevalidateReason","normalizeDataPath","CachedRouteKind","setResponseCacheControlHeaders","normalizeRepeatedSlashes","getRedirectStatus","CACHE_ONE_YEAR","HTML_CONTENT_TYPE_HEADER","JSON_CONTENT_TYPE_HEADER","path","sendRenderResult","RenderResult","toResponseCacheEntry","NoFallbackError","RedirectStatusCode","isBot","addPathPrefix","removeTrailingSlash","getDeploymentId","getHandler","srcPage","originalSrcPage","config","userland","routeModule","isFallbackError","getStaticPaths","getStaticProps","getServerSideProps","handler","req","res","ctx","serverFilesManifest","requestMeta","isDev","process","hrtime","bigint","env","TURBOPACK","replace","multiZoneDraftMode","__NEXT_MULTI_ZONE_DRAFT_MODE","prepareResult","prepare","statusCode","end","waitUntil","Promise","resolve","isMinimalMode","Boolean","render404","routerServerContext","parsedUrl","buildId","query","params","originalQuery","originalPathname","buildManifest","fallbackBuildManifest","nextFontManifest","reactLoadableManifest","prerenderManifest","isDraftMode","isOnDemandRevalidate","revalidateOnlyGenerated","locale","locales","defaultLocale","nextConfig","resolvedPathname","encodedResolvedPathname","isExperimentalCompile","experimental","hasServerProps","hasStaticProps","hasStaticPaths","hasGetInitialProps","default","getInitialProps","cacheKey","isIsrFallback","isNextDataRequest","is404Page","is500Page","isErrorPage","decodedPathname","isPrerendered","routes","notFoundRoutes","includes","prerenderInfo","dynamicRoutes","fallback","adapterPath","headers","tracer","activeSpan","getActiveScopeSpan","method","resolvedUrl","pathname","trailingSlash","endsWith","handleResponse","span","responseGenerator","previousCacheEntry","doRender","render","page","renderContext","isFallback","developmentNotFoundSourcePage","sharedContext","customServer","isCustomServer","undefined","deploymentId","renderOpts","pageConfig","Component","ComponentMod","supportsDynamicResponse","assetPrefix","previewProps","preview","images","nextConfigOutput","output","optimizeCss","nextScriptWorkers","domainLocales","i18n","domains","crossOrigin","basePath","disableOptimizedLoading","largePageDataBytes","clientTraceMetadata","setIsrStatus","resolvedAsPath","ErrorDebug","err","dev","distDir","join","cwd","relativeProjectDir","then","renderResult","metadata","cacheControl","isNotFound","value","isRedirect","kind","REDIRECT","props","pageData","flightData","PAGES","html","status","finally","setAttributes","rootSpanAttributes","getRootSpanAttributes","get","handleRequest","console","warn","route","name","updateName","isStale","silenceLog","onRequestError","routerKind","routePath","routeType","revalidateReason","isStaticGeneration","fallbackResponse","getResponseCache","previousFallbackCacheEntry","routeKind","isRoutePPREnabled","incrementalCache","getIncrementalCache","isMiss","setHeader","Buffer","from","contentType","revalidate","expire","result","getHeader","notFoundRevalidate","Error","expireTime","cdnCacheControlHeader","JSON","stringify","handleRedirect","redirect","destination","pageProps","__N_REDIRECT","__N_REDIRECT_STATUS","__N_REDIRECT_BASE_PATH","startsWith","PermanentRedirect","devCacheControlNoCache","generateEtags","poweredByHeader","withPropagatedContext","trace","spanName","SERVER","attributes","url"],"mappings":"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","ignoreList":[0]}
1
+ {"version":3,"sources":["../../../../../src/server/route-modules/pages/pages-handler.ts"],"sourcesContent":["import type { IncomingMessage, ServerResponse } from 'node:http'\nimport type { ParsedUrlQuery } from 'node:querystring'\nimport { RouteKind } from '../../route-kind'\nimport { BaseServerSpan } from '../../lib/trace/constants'\nimport { getTracer, SpanKind, type Span } from '../../lib/trace/tracer'\nimport { formatUrl } from '../../../shared/lib/router/utils/format-url'\nimport {\n addRequestMeta,\n getRequestMeta,\n setRequestMeta,\n type RequestMeta,\n} from '../../request-meta'\nimport { interopDefault } from '../../app-render/interop-default'\nimport { getRevalidateReason } from '../../instrumentation/utils'\nimport { normalizeDataPath } from '../../../shared/lib/page-path/normalize-data-path'\nimport {\n CachedRouteKind,\n type CachedPageValue,\n type CachedRedirectValue,\n type ResponseCacheEntry,\n type ResponseGenerator,\n} from '../../response-cache'\n\nimport {\n getCacheControlHeader,\n type CacheControl,\n} from '../../lib/cache-control'\nimport { normalizeRepeatedSlashes } from '../../../shared/lib/utils'\nimport { getRedirectStatus } from '../../../lib/redirect-status'\nimport {\n CACHE_ONE_YEAR,\n HTML_CONTENT_TYPE_HEADER,\n JSON_CONTENT_TYPE_HEADER,\n} from '../../../lib/constants'\nimport path from 'path'\nimport { sendRenderResult } from '../../send-payload'\nimport RenderResult from '../../render-result'\nimport { toResponseCacheEntry } from '../../response-cache/utils'\nimport { NoFallbackError } from '../../../shared/lib/no-fallback-error.external'\nimport { RedirectStatusCode } from '../../../client/components/redirect-status-code'\nimport { isBot } from '../../../shared/lib/router/utils/is-bot'\nimport { addPathPrefix } from '../../../shared/lib/router/utils/add-path-prefix'\nimport { removeTrailingSlash } from '../../../shared/lib/router/utils/remove-trailing-slash'\nimport type { PagesRouteModule } from './module.compiled'\nimport type {\n GetServerSideProps,\n GetStaticPaths,\n GetStaticProps,\n} from '../../../types'\nimport { getDeploymentId } from '../../../shared/lib/deployment-id'\n\nexport const getHandler = ({\n srcPage: originalSrcPage,\n config,\n userland,\n routeModule,\n isFallbackError,\n getStaticPaths,\n getStaticProps,\n getServerSideProps,\n}: {\n srcPage: string\n config: Record<string, any> | undefined\n userland: any\n isFallbackError?: boolean\n routeModule: PagesRouteModule\n getStaticProps?: GetStaticProps\n getStaticPaths?: GetStaticPaths\n getServerSideProps?: GetServerSideProps\n}) => {\n return async function handler(\n req: IncomingMessage,\n res: ServerResponse,\n ctx: {\n waitUntil?: (prom: Promise<void>) => void\n requestMeta?: RequestMeta\n }\n ) {\n if (ctx.requestMeta) {\n setRequestMeta(req, ctx.requestMeta)\n }\n if (routeModule.isDev) {\n addRequestMeta(\n req,\n 'devRequestTimingInternalsEnd',\n process.hrtime.bigint()\n )\n }\n let srcPage = originalSrcPage\n // turbopack doesn't normalize `/index` in the page name\n // so we need to to process dynamic routes properly\n // TODO: fix turbopack providing differing value from webpack\n if (process.env.TURBOPACK) {\n srcPage = srcPage.replace(/\\/index$/, '') || '/'\n } else if (srcPage === '/index') {\n // we always normalize /index specifically\n srcPage = '/'\n }\n const multiZoneDraftMode = process.env\n .__NEXT_MULTI_ZONE_DRAFT_MODE as any as boolean\n\n const prepareResult = await routeModule.prepare(req, res, {\n srcPage,\n multiZoneDraftMode,\n })\n\n if (!prepareResult) {\n res.statusCode = 400\n res.end('Bad Request')\n ctx.waitUntil?.(Promise.resolve())\n return\n }\n\n const isMinimalMode = Boolean(getRequestMeta(req, 'minimalMode'))\n\n const render404 = async () => {\n // TODO: should route-module itself handle rendering the 404\n if (routerServerContext?.render404) {\n await routerServerContext.render404(req, res, parsedUrl, false)\n } else {\n res.end('This page could not be found')\n }\n }\n\n const {\n buildId,\n query,\n params,\n parsedUrl,\n originalQuery,\n originalPathname,\n buildManifest,\n fallbackBuildManifest,\n nextFontManifest,\n serverFilesManifest,\n reactLoadableManifest,\n prerenderManifest,\n isDraftMode,\n isOnDemandRevalidate,\n revalidateOnlyGenerated,\n locale,\n locales,\n defaultLocale,\n routerServerContext,\n nextConfig,\n resolvedPathname,\n encodedResolvedPathname,\n } = prepareResult\n\n const isExperimentalCompile =\n serverFilesManifest?.config?.experimental?.isExperimentalCompile\n\n const hasServerProps = Boolean(getServerSideProps)\n const hasStaticProps = Boolean(getStaticProps)\n const hasStaticPaths = Boolean(getStaticPaths)\n const hasGetInitialProps = Boolean(\n (userland.default || userland).getInitialProps\n )\n let cacheKey: null | string = null\n let isIsrFallback = false\n let isNextDataRequest =\n prepareResult.isNextDataRequest && (hasStaticProps || hasServerProps)\n\n const is404Page = srcPage === '/404'\n const is500Page = srcPage === '/500'\n const isErrorPage = srcPage === '/_error'\n\n if (!routeModule.isDev && !isDraftMode && hasStaticProps) {\n cacheKey = `${locale ? `/${locale}` : ''}${\n (srcPage === '/' || resolvedPathname === '/') && locale\n ? ''\n : resolvedPathname\n }`\n\n if (is404Page || is500Page || isErrorPage) {\n cacheKey = `${locale ? `/${locale}` : ''}${srcPage}`\n }\n\n // ensure /index and / is normalized to one key\n cacheKey = cacheKey === '/index' ? '/' : cacheKey\n }\n\n if (hasStaticPaths && !isDraftMode) {\n const decodedPathname = removeTrailingSlash(\n locale\n ? addPathPrefix(resolvedPathname, `/${locale}`)\n : resolvedPathname\n )\n const isPrerendered =\n Boolean(prerenderManifest.routes[decodedPathname]) ||\n prerenderManifest.notFoundRoutes.includes(decodedPathname)\n\n const prerenderInfo = prerenderManifest.dynamicRoutes[srcPage]\n\n if (prerenderInfo) {\n if (prerenderInfo.fallback === false && !isPrerendered) {\n if (nextConfig.experimental.adapterPath) {\n return await render404()\n }\n throw new NoFallbackError()\n }\n\n if (\n typeof prerenderInfo.fallback === 'string' &&\n !isPrerendered &&\n !isNextDataRequest\n ) {\n isIsrFallback = true\n }\n }\n }\n\n // When serving a bot request, we want to serve a blocking render and not\n // the prerendered page. This ensures that the correct content is served\n // to the bot in the head.\n if (\n (isIsrFallback && isBot(req.headers['user-agent'] || '')) ||\n isMinimalMode\n ) {\n isIsrFallback = false\n }\n\n const tracer = getTracer()\n const activeSpan = tracer.getActiveScopeSpan()\n\n try {\n const method = req.method || 'GET'\n\n const resolvedUrl = formatUrl({\n pathname: nextConfig.trailingSlash\n ? `${encodedResolvedPathname}${!encodedResolvedPathname.endsWith('/') && parsedUrl.pathname?.endsWith('/') ? '/' : ''}`\n : removeTrailingSlash(encodedResolvedPathname || '/'),\n // make sure to only add query values from original URL\n query: hasStaticProps ? {} : originalQuery,\n })\n\n const handleResponse = async (span?: Span) => {\n const responseGenerator: ResponseGenerator = async ({\n previousCacheEntry,\n }) => {\n const doRender = async () => {\n try {\n return await routeModule\n .render(req, res, {\n query:\n hasStaticProps && !isExperimentalCompile\n ? ({\n ...params,\n } as ParsedUrlQuery)\n : {\n ...query,\n ...params,\n },\n params,\n page: srcPage,\n renderContext: {\n isDraftMode,\n isFallback: isIsrFallback,\n developmentNotFoundSourcePage: getRequestMeta(\n req,\n 'developmentNotFoundSourcePage'\n ),\n },\n sharedContext: {\n buildId,\n customServer:\n Boolean(routerServerContext?.isCustomServer) || undefined,\n deploymentId: getDeploymentId(),\n },\n renderOpts: {\n params,\n routeModule,\n page: srcPage,\n pageConfig: config || {},\n Component: interopDefault(userland),\n ComponentMod: userland,\n getStaticProps,\n getStaticPaths,\n getServerSideProps,\n supportsDynamicResponse: !hasStaticProps,\n buildManifest: isFallbackError\n ? fallbackBuildManifest\n : buildManifest,\n nextFontManifest,\n reactLoadableManifest,\n\n assetPrefix: nextConfig.assetPrefix,\n previewProps: prerenderManifest.preview,\n images: nextConfig.images as any,\n nextConfigOutput: nextConfig.output,\n optimizeCss: Boolean(nextConfig.experimental.optimizeCss),\n nextScriptWorkers: Boolean(\n nextConfig.experimental.nextScriptWorkers\n ),\n domainLocales: nextConfig.i18n?.domains,\n crossOrigin: nextConfig.crossOrigin,\n\n multiZoneDraftMode,\n basePath: nextConfig.basePath,\n disableOptimizedLoading:\n nextConfig.experimental.disableOptimizedLoading,\n largePageDataBytes:\n nextConfig.experimental.largePageDataBytes,\n\n isExperimentalCompile,\n\n experimental: {\n clientTraceMetadata:\n nextConfig.experimental.clientTraceMetadata ||\n ([] as any),\n },\n\n locale,\n locales,\n defaultLocale,\n setIsrStatus: routerServerContext?.setIsrStatus,\n\n isNextDataRequest:\n isNextDataRequest && (hasServerProps || hasStaticProps),\n\n resolvedUrl,\n // For getServerSideProps and getInitialProps we need to ensure we use the original URL\n // and not the resolved URL to prevent a hydration mismatch on\n // asPath\n resolvedAsPath:\n hasServerProps || hasGetInitialProps\n ? formatUrl({\n // we use the original URL pathname less the _next/data prefix if\n // present\n pathname: isNextDataRequest\n ? normalizeDataPath(originalPathname)\n : originalPathname,\n query: originalQuery,\n })\n : resolvedUrl,\n\n isOnDemandRevalidate,\n\n ErrorDebug: getRequestMeta(req, 'PagesErrorDebug'),\n err: getRequestMeta(req, 'invokeError'),\n dev: routeModule.isDev,\n\n // needed for experimental.optimizeCss feature\n distDir: path.join(\n /* turbopackIgnore: true */\n process.cwd(),\n routeModule.relativeProjectDir,\n routeModule.distDir\n ),\n },\n })\n .then((renderResult): ResponseCacheEntry => {\n const { metadata } = renderResult\n\n let cacheControl: CacheControl | undefined =\n metadata.cacheControl\n\n if ('isNotFound' in metadata && metadata.isNotFound) {\n return {\n value: null,\n cacheControl,\n } satisfies ResponseCacheEntry\n }\n\n // Handle `isRedirect`.\n if (metadata.isRedirect) {\n return {\n value: {\n kind: CachedRouteKind.REDIRECT,\n props: metadata.pageData ?? metadata.flightData,\n } satisfies CachedRedirectValue,\n cacheControl,\n } satisfies ResponseCacheEntry\n }\n\n return {\n value: {\n kind: CachedRouteKind.PAGES,\n html: renderResult,\n pageData: renderResult.metadata.pageData,\n headers: renderResult.metadata.headers,\n status: renderResult.metadata.statusCode,\n },\n cacheControl,\n }\n })\n .finally(() => {\n if (!span) return\n\n span.setAttributes({\n 'http.status_code': res.statusCode,\n 'next.rsc': false,\n })\n\n const rootSpanAttributes = tracer.getRootSpanAttributes()\n // We were unable to get attributes, probably OTEL is not enabled\n if (!rootSpanAttributes) {\n return\n }\n\n if (\n rootSpanAttributes.get('next.span_type') !==\n BaseServerSpan.handleRequest\n ) {\n console.warn(\n `Unexpected root span type '${rootSpanAttributes.get(\n 'next.span_type'\n )}'. Please report this Next.js issue https://github.com/vercel/next.js`\n )\n return\n }\n\n const route = rootSpanAttributes.get('next.route')\n if (route) {\n const name = `${method} ${route}`\n\n span.setAttributes({\n 'next.route': route,\n 'http.route': route,\n 'next.span_name': name,\n })\n span.updateName(name)\n } else {\n span.updateName(`${method} ${srcPage}`)\n }\n })\n } catch (err: unknown) {\n // if this is a background revalidate we need to report\n // the request error here as it won't be bubbled\n if (previousCacheEntry?.isStale) {\n const silenceLog = false\n await routeModule.onRequestError(\n req,\n err,\n {\n routerKind: 'Pages Router',\n routePath: srcPage,\n routeType: 'render',\n revalidateReason: getRevalidateReason({\n isStaticGeneration: hasStaticProps,\n isOnDemandRevalidate,\n }),\n },\n silenceLog,\n routerServerContext\n )\n }\n throw err\n }\n }\n\n // if we've already generated this page we no longer\n // serve the fallback\n if (previousCacheEntry) {\n isIsrFallback = false\n }\n\n if (isIsrFallback) {\n const fallbackResponse = await routeModule\n .getResponseCache(req)\n .get(\n routeModule.isDev\n ? null\n : locale\n ? `/${locale}${srcPage}`\n : srcPage,\n async ({\n previousCacheEntry: previousFallbackCacheEntry = null,\n }) => {\n if (!routeModule.isDev) {\n return toResponseCacheEntry(previousFallbackCacheEntry)\n }\n return doRender()\n },\n {\n routeKind: RouteKind.PAGES,\n isFallback: true,\n isRoutePPREnabled: false,\n isOnDemandRevalidate: false,\n incrementalCache: await routeModule.getIncrementalCache(\n req,\n nextConfig,\n prerenderManifest,\n isMinimalMode\n ),\n waitUntil: ctx.waitUntil,\n }\n )\n if (fallbackResponse) {\n // Remove the cache control from the response to prevent it from being\n // used in the surrounding cache.\n delete fallbackResponse.cacheControl\n fallbackResponse.isMiss = true\n return fallbackResponse\n }\n }\n\n if (\n !isMinimalMode &&\n isOnDemandRevalidate &&\n revalidateOnlyGenerated &&\n !previousCacheEntry\n ) {\n res.statusCode = 404\n // on-demand revalidate always sets this header\n res.setHeader('x-nextjs-cache', 'REVALIDATED')\n res.end('This page could not be found')\n return null\n }\n\n if (\n isIsrFallback &&\n previousCacheEntry?.value?.kind === CachedRouteKind.PAGES\n ) {\n return {\n value: {\n kind: CachedRouteKind.PAGES,\n html: new RenderResult(\n Buffer.from(previousCacheEntry.value.html),\n {\n contentType: HTML_CONTENT_TYPE_HEADER,\n metadata: {\n statusCode: previousCacheEntry.value.status,\n headers: previousCacheEntry.value.headers,\n },\n }\n ),\n pageData: {},\n status: previousCacheEntry.value.status,\n headers: previousCacheEntry.value.headers,\n } satisfies CachedPageValue,\n cacheControl: { revalidate: 0, expire: undefined },\n } satisfies ResponseCacheEntry\n }\n return doRender()\n }\n\n const result = await routeModule.handleResponse({\n cacheKey,\n req,\n nextConfig,\n routeKind: RouteKind.PAGES,\n isOnDemandRevalidate,\n revalidateOnlyGenerated,\n waitUntil: ctx.waitUntil,\n responseGenerator: responseGenerator,\n prerenderManifest,\n isMinimalMode,\n })\n\n // if we got a cache hit this wasn't an ISR fallback\n // but it wasn't generated during build so isn't in the\n // prerender-manifest\n if (isIsrFallback && !result?.isMiss) {\n isIsrFallback = false\n }\n\n // response is finished is no cache entry\n if (!result) {\n return\n }\n\n if (hasStaticProps && !isMinimalMode) {\n res.setHeader(\n 'x-nextjs-cache',\n isOnDemandRevalidate\n ? 'REVALIDATED'\n : result.isMiss\n ? 'MISS'\n : result.isStale\n ? 'STALE'\n : 'HIT'\n )\n }\n\n let cacheControl: CacheControl | undefined\n\n if (!hasStaticProps || isIsrFallback) {\n if (!res.getHeader('Cache-Control')) {\n cacheControl = { revalidate: 0, expire: undefined }\n }\n } else if (is404Page) {\n const notFoundRevalidate = getRequestMeta(req, 'notFoundRevalidate')\n\n cacheControl = {\n revalidate:\n typeof notFoundRevalidate === 'undefined'\n ? 0\n : notFoundRevalidate,\n expire: undefined,\n }\n } else if (is500Page) {\n cacheControl = { revalidate: 0, expire: undefined }\n } else if (result.cacheControl) {\n // If the cache entry has a cache control with a revalidate value that's\n // a number, use it.\n if (typeof result.cacheControl.revalidate === 'number') {\n if (result.cacheControl.revalidate < 1) {\n throw new Error(\n `Invalid revalidate configuration provided: ${result.cacheControl.revalidate} < 1`\n )\n }\n cacheControl = {\n revalidate: result.cacheControl.revalidate,\n expire: result.cacheControl?.expire ?? nextConfig.expireTime,\n }\n } else {\n // revalidate: false\n cacheControl = {\n revalidate: CACHE_ONE_YEAR,\n expire: undefined,\n }\n }\n }\n\n // If cache control is already set on the response we don't\n // override it to allow users to customize it via next.config\n if (cacheControl && !res.getHeader('Cache-Control')) {\n res.setHeader('Cache-Control', getCacheControlHeader(cacheControl))\n }\n\n // notFound: true case\n if (!result.value) {\n // add revalidate metadata before rendering 404 page\n // so that we can use this as source of truth for the\n // cache-control header instead of what the 404 page returns\n // for the revalidate value\n addRequestMeta(\n req,\n 'notFoundRevalidate',\n result.cacheControl?.revalidate\n )\n\n res.statusCode = 404\n\n if (isNextDataRequest) {\n res.end('{\"notFound\":true}')\n return\n }\n return await render404()\n }\n\n if (result.value.kind === CachedRouteKind.REDIRECT) {\n if (isNextDataRequest) {\n res.setHeader('content-type', JSON_CONTENT_TYPE_HEADER)\n res.end(JSON.stringify(result.value.props))\n return\n } else {\n const handleRedirect = (pageData: any) => {\n const redirect = {\n destination: pageData.pageProps.__N_REDIRECT,\n statusCode: pageData.pageProps.__N_REDIRECT_STATUS,\n basePath: pageData.pageProps.__N_REDIRECT_BASE_PATH,\n }\n const statusCode = getRedirectStatus(redirect)\n const { basePath } = nextConfig\n\n if (\n basePath &&\n redirect.basePath !== false &&\n redirect.destination.startsWith('/')\n ) {\n redirect.destination = `${basePath}${redirect.destination}`\n }\n\n if (redirect.destination.startsWith('/')) {\n redirect.destination = normalizeRepeatedSlashes(\n redirect.destination\n )\n }\n\n res.statusCode = statusCode\n res.setHeader('Location', redirect.destination)\n if (statusCode === RedirectStatusCode.PermanentRedirect) {\n res.setHeader('Refresh', `0;url=${redirect.destination}`)\n }\n res.end(redirect.destination)\n }\n await handleRedirect(result.value.props)\n return null\n }\n }\n\n if (result.value.kind !== CachedRouteKind.PAGES) {\n throw new Error(\n `Invariant: received non-pages cache entry in pages handler`\n )\n }\n\n // In dev, we should not cache pages for any reason.\n if (routeModule.isDev) {\n res.setHeader(\n 'Cache-Control',\n nextConfig.experimental.devCacheControlNoCache\n ? 'no-cache, must-revalidate'\n : 'no-store, must-revalidate'\n )\n }\n\n // Draft mode should never be cached\n if (isDraftMode) {\n res.setHeader(\n 'Cache-Control',\n 'private, no-cache, no-store, max-age=0, must-revalidate'\n )\n }\n\n // when invoking _error before pages/500 we don't actually\n // send the _error response\n if (\n getRequestMeta(req, 'customErrorRender') ||\n (isErrorPage && isMinimalMode && res.statusCode === 500)\n ) {\n return null\n }\n\n await sendRenderResult({\n req,\n res,\n // If we are rendering the error page it's not a data request\n // anymore\n result:\n isNextDataRequest && !isErrorPage && !is500Page\n ? new RenderResult(\n Buffer.from(JSON.stringify(result.value.pageData)),\n {\n contentType: JSON_CONTENT_TYPE_HEADER,\n metadata: result.value.html.metadata,\n }\n )\n : result.value.html,\n generateEtags: nextConfig.generateEtags,\n poweredByHeader: nextConfig.poweredByHeader,\n cacheControl: routeModule.isDev ? undefined : cacheControl,\n })\n }\n\n // TODO: activeSpan code path is for when wrapped by\n // next-server can be removed when this is no longer used\n if (activeSpan) {\n await handleResponse()\n } else {\n await tracer.withPropagatedContext(req.headers, () =>\n tracer.trace(\n BaseServerSpan.handleRequest,\n {\n spanName: `${method} ${srcPage}`,\n kind: SpanKind.SERVER,\n attributes: {\n 'http.method': method,\n 'http.target': req.url,\n },\n },\n handleResponse\n )\n )\n }\n } catch (err) {\n if (!(err instanceof NoFallbackError)) {\n const silenceLog = false\n await routeModule.onRequestError(\n req,\n err,\n {\n routerKind: 'Pages Router',\n routePath: srcPage,\n routeType: 'render',\n revalidateReason: getRevalidateReason({\n isStaticGeneration: hasStaticProps,\n isOnDemandRevalidate,\n }),\n },\n silenceLog,\n routerServerContext\n )\n }\n\n // rethrow so that we can handle serving error page\n throw err\n }\n }\n}\n"],"names":["RouteKind","BaseServerSpan","getTracer","SpanKind","formatUrl","addRequestMeta","getRequestMeta","setRequestMeta","interopDefault","getRevalidateReason","normalizeDataPath","CachedRouteKind","getCacheControlHeader","normalizeRepeatedSlashes","getRedirectStatus","CACHE_ONE_YEAR","HTML_CONTENT_TYPE_HEADER","JSON_CONTENT_TYPE_HEADER","path","sendRenderResult","RenderResult","toResponseCacheEntry","NoFallbackError","RedirectStatusCode","isBot","addPathPrefix","removeTrailingSlash","getDeploymentId","getHandler","srcPage","originalSrcPage","config","userland","routeModule","isFallbackError","getStaticPaths","getStaticProps","getServerSideProps","handler","req","res","ctx","serverFilesManifest","requestMeta","isDev","process","hrtime","bigint","env","TURBOPACK","replace","multiZoneDraftMode","__NEXT_MULTI_ZONE_DRAFT_MODE","prepareResult","prepare","statusCode","end","waitUntil","Promise","resolve","isMinimalMode","Boolean","render404","routerServerContext","parsedUrl","buildId","query","params","originalQuery","originalPathname","buildManifest","fallbackBuildManifest","nextFontManifest","reactLoadableManifest","prerenderManifest","isDraftMode","isOnDemandRevalidate","revalidateOnlyGenerated","locale","locales","defaultLocale","nextConfig","resolvedPathname","encodedResolvedPathname","isExperimentalCompile","experimental","hasServerProps","hasStaticProps","hasStaticPaths","hasGetInitialProps","default","getInitialProps","cacheKey","isIsrFallback","isNextDataRequest","is404Page","is500Page","isErrorPage","decodedPathname","isPrerendered","routes","notFoundRoutes","includes","prerenderInfo","dynamicRoutes","fallback","adapterPath","headers","tracer","activeSpan","getActiveScopeSpan","method","resolvedUrl","pathname","trailingSlash","endsWith","handleResponse","span","responseGenerator","previousCacheEntry","doRender","render","page","renderContext","isFallback","developmentNotFoundSourcePage","sharedContext","customServer","isCustomServer","undefined","deploymentId","renderOpts","pageConfig","Component","ComponentMod","supportsDynamicResponse","assetPrefix","previewProps","preview","images","nextConfigOutput","output","optimizeCss","nextScriptWorkers","domainLocales","i18n","domains","crossOrigin","basePath","disableOptimizedLoading","largePageDataBytes","clientTraceMetadata","setIsrStatus","resolvedAsPath","ErrorDebug","err","dev","distDir","join","cwd","relativeProjectDir","then","renderResult","metadata","cacheControl","isNotFound","value","isRedirect","kind","REDIRECT","props","pageData","flightData","PAGES","html","status","finally","setAttributes","rootSpanAttributes","getRootSpanAttributes","get","handleRequest","console","warn","route","name","updateName","isStale","silenceLog","onRequestError","routerKind","routePath","routeType","revalidateReason","isStaticGeneration","fallbackResponse","getResponseCache","previousFallbackCacheEntry","routeKind","isRoutePPREnabled","incrementalCache","getIncrementalCache","isMiss","setHeader","Buffer","from","contentType","revalidate","expire","result","getHeader","notFoundRevalidate","Error","expireTime","JSON","stringify","handleRedirect","redirect","destination","pageProps","__N_REDIRECT","__N_REDIRECT_STATUS","__N_REDIRECT_BASE_PATH","startsWith","PermanentRedirect","devCacheControlNoCache","generateEtags","poweredByHeader","withPropagatedContext","trace","spanName","SERVER","attributes","url"],"mappings":"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","ignoreList":[0]}
@@ -1,7 +1,7 @@
1
1
  import { isResSent } from '../shared/lib/utils';
2
2
  import { generateETag } from './lib/etag';
3
3
  import fresh from 'next/dist/compiled/fresh';
4
- import { setResponseCacheControlHeaders } from './lib/cache-control';
4
+ import { getCacheControlHeader } from './lib/cache-control';
5
5
  import { HTML_CONTENT_TYPE_HEADER } from '../lib/constants';
6
6
  export function sendEtagResponse(req, res, etag) {
7
7
  if (etag) {
@@ -21,7 +21,7 @@ export function sendEtagResponse(req, res, etag) {
21
21
  }
22
22
  return false;
23
23
  }
24
- export async function sendRenderResult({ req, res, result, generateEtags, poweredByHeader, cacheControl, cdnCacheControlHeader }) {
24
+ export async function sendRenderResult({ req, res, result, generateEtags, poweredByHeader, cacheControl }) {
25
25
  if (isResSent(res)) {
26
26
  return;
27
27
  }
@@ -31,7 +31,7 @@ export async function sendRenderResult({ req, res, result, generateEtags, powere
31
31
  // If cache control is already set on the response we don't
32
32
  // override it to allow users to customize it via next.config
33
33
  if (cacheControl && !res.getHeader('Cache-Control')) {
34
- setResponseCacheControlHeaders(res, cacheControl, cdnCacheControlHeader);
34
+ res.setHeader('Cache-Control', getCacheControlHeader(cacheControl));
35
35
  }
36
36
  const payload = result.isDynamic ? null : result.toUnchunkedString();
37
37
  if (generateEtags && payload !== null) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/server/send-payload.ts"],"sourcesContent":["import type { IncomingMessage, ServerResponse } from 'http'\nimport type RenderResult from './render-result'\nimport type { CacheControl } from './lib/cache-control'\n\nimport { isResSent } from '../shared/lib/utils'\nimport { generateETag } from './lib/etag'\nimport fresh from 'next/dist/compiled/fresh'\nimport { setResponseCacheControlHeaders } from './lib/cache-control'\nimport { HTML_CONTENT_TYPE_HEADER } from '../lib/constants'\n\nexport function sendEtagResponse(\n req: IncomingMessage,\n res: ServerResponse,\n etag: string | undefined\n): boolean {\n if (etag) {\n /**\n * The server generating a 304 response MUST generate any of the\n * following header fields that would have been sent in a 200 (OK)\n * response to the same request: Cache-Control, Content-Location, Date,\n * ETag, Expires, and Vary. https://tools.ietf.org/html/rfc7232#section-4.1\n */\n res.setHeader('ETag', etag)\n }\n\n if (fresh(req.headers, { etag })) {\n res.statusCode = 304\n res.end()\n return true\n }\n\n return false\n}\n\nexport async function sendRenderResult({\n req,\n res,\n result,\n generateEtags,\n poweredByHeader,\n cacheControl,\n cdnCacheControlHeader,\n}: {\n req: IncomingMessage\n res: ServerResponse\n result: RenderResult\n generateEtags: boolean\n poweredByHeader: boolean\n cacheControl: CacheControl | undefined\n cdnCacheControlHeader?: string\n}): Promise<void> {\n if (isResSent(res)) {\n return\n }\n\n if (poweredByHeader && result.contentType === HTML_CONTENT_TYPE_HEADER) {\n res.setHeader('X-Powered-By', 'Next.js')\n }\n\n // If cache control is already set on the response we don't\n // override it to allow users to customize it via next.config\n if (cacheControl && !res.getHeader('Cache-Control')) {\n setResponseCacheControlHeaders(res, cacheControl, cdnCacheControlHeader)\n }\n\n const payload = result.isDynamic ? null : result.toUnchunkedString()\n\n if (generateEtags && payload !== null) {\n const etag = generateETag(payload)\n if (sendEtagResponse(req, res, etag)) {\n return\n }\n }\n\n if (!res.getHeader('Content-Type') && result.contentType) {\n res.setHeader('Content-Type', result.contentType)\n }\n\n if (payload) {\n res.setHeader('Content-Length', Buffer.byteLength(payload))\n }\n\n if (req.method === 'HEAD') {\n res.end(null)\n return\n }\n\n if (payload !== null) {\n res.end(payload)\n return\n }\n\n // Pipe the render result to the response after we get a writer for it.\n await result.pipeToNodeResponse(res)\n}\n"],"names":["isResSent","generateETag","fresh","setResponseCacheControlHeaders","HTML_CONTENT_TYPE_HEADER","sendEtagResponse","req","res","etag","setHeader","headers","statusCode","end","sendRenderResult","result","generateEtags","poweredByHeader","cacheControl","cdnCacheControlHeader","contentType","getHeader","payload","isDynamic","toUnchunkedString","Buffer","byteLength","method","pipeToNodeResponse"],"mappings":"AAIA,SAASA,SAAS,QAAQ,sBAAqB;AAC/C,SAASC,YAAY,QAAQ,aAAY;AACzC,OAAOC,WAAW,2BAA0B;AAC5C,SAASC,8BAA8B,QAAQ,sBAAqB;AACpE,SAASC,wBAAwB,QAAQ,mBAAkB;AAE3D,OAAO,SAASC,iBACdC,GAAoB,EACpBC,GAAmB,EACnBC,IAAwB;IAExB,IAAIA,MAAM;QACR;;;;;KAKC,GACDD,IAAIE,SAAS,CAAC,QAAQD;IACxB;IAEA,IAAIN,MAAMI,IAAII,OAAO,EAAE;QAAEF;IAAK,IAAI;QAChCD,IAAII,UAAU,GAAG;QACjBJ,IAAIK,GAAG;QACP,OAAO;IACT;IAEA,OAAO;AACT;AAEA,OAAO,eAAeC,iBAAiB,EACrCP,GAAG,EACHC,GAAG,EACHO,MAAM,EACNC,aAAa,EACbC,eAAe,EACfC,YAAY,EACZC,qBAAqB,EAStB;IACC,IAAIlB,UAAUO,MAAM;QAClB;IACF;IAEA,IAAIS,mBAAmBF,OAAOK,WAAW,KAAKf,0BAA0B;QACtEG,IAAIE,SAAS,CAAC,gBAAgB;IAChC;IAEA,2DAA2D;IAC3D,6DAA6D;IAC7D,IAAIQ,gBAAgB,CAACV,IAAIa,SAAS,CAAC,kBAAkB;QACnDjB,+BAA+BI,KAAKU,cAAcC;IACpD;IAEA,MAAMG,UAAUP,OAAOQ,SAAS,GAAG,OAAOR,OAAOS,iBAAiB;IAElE,IAAIR,iBAAiBM,YAAY,MAAM;QACrC,MAAMb,OAAOP,aAAaoB;QAC1B,IAAIhB,iBAAiBC,KAAKC,KAAKC,OAAO;YACpC;QACF;IACF;IAEA,IAAI,CAACD,IAAIa,SAAS,CAAC,mBAAmBN,OAAOK,WAAW,EAAE;QACxDZ,IAAIE,SAAS,CAAC,gBAAgBK,OAAOK,WAAW;IAClD;IAEA,IAAIE,SAAS;QACXd,IAAIE,SAAS,CAAC,kBAAkBe,OAAOC,UAAU,CAACJ;IACpD;IAEA,IAAIf,IAAIoB,MAAM,KAAK,QAAQ;QACzBnB,IAAIK,GAAG,CAAC;QACR;IACF;IAEA,IAAIS,YAAY,MAAM;QACpBd,IAAIK,GAAG,CAACS;QACR;IACF;IAEA,uEAAuE;IACvE,MAAMP,OAAOa,kBAAkB,CAACpB;AAClC","ignoreList":[0]}
1
+ {"version":3,"sources":["../../../src/server/send-payload.ts"],"sourcesContent":["import type { IncomingMessage, ServerResponse } from 'http'\nimport type RenderResult from './render-result'\nimport type { CacheControl } from './lib/cache-control'\n\nimport { isResSent } from '../shared/lib/utils'\nimport { generateETag } from './lib/etag'\nimport fresh from 'next/dist/compiled/fresh'\nimport { getCacheControlHeader } from './lib/cache-control'\nimport { HTML_CONTENT_TYPE_HEADER } from '../lib/constants'\n\nexport function sendEtagResponse(\n req: IncomingMessage,\n res: ServerResponse,\n etag: string | undefined\n): boolean {\n if (etag) {\n /**\n * The server generating a 304 response MUST generate any of the\n * following header fields that would have been sent in a 200 (OK)\n * response to the same request: Cache-Control, Content-Location, Date,\n * ETag, Expires, and Vary. https://tools.ietf.org/html/rfc7232#section-4.1\n */\n res.setHeader('ETag', etag)\n }\n\n if (fresh(req.headers, { etag })) {\n res.statusCode = 304\n res.end()\n return true\n }\n\n return false\n}\n\nexport async function sendRenderResult({\n req,\n res,\n result,\n generateEtags,\n poweredByHeader,\n cacheControl,\n}: {\n req: IncomingMessage\n res: ServerResponse\n result: RenderResult\n generateEtags: boolean\n poweredByHeader: boolean\n cacheControl: CacheControl | undefined\n}): Promise<void> {\n if (isResSent(res)) {\n return\n }\n\n if (poweredByHeader && result.contentType === HTML_CONTENT_TYPE_HEADER) {\n res.setHeader('X-Powered-By', 'Next.js')\n }\n\n // If cache control is already set on the response we don't\n // override it to allow users to customize it via next.config\n if (cacheControl && !res.getHeader('Cache-Control')) {\n res.setHeader('Cache-Control', getCacheControlHeader(cacheControl))\n }\n\n const payload = result.isDynamic ? null : result.toUnchunkedString()\n\n if (generateEtags && payload !== null) {\n const etag = generateETag(payload)\n if (sendEtagResponse(req, res, etag)) {\n return\n }\n }\n\n if (!res.getHeader('Content-Type') && result.contentType) {\n res.setHeader('Content-Type', result.contentType)\n }\n\n if (payload) {\n res.setHeader('Content-Length', Buffer.byteLength(payload))\n }\n\n if (req.method === 'HEAD') {\n res.end(null)\n return\n }\n\n if (payload !== null) {\n res.end(payload)\n return\n }\n\n // Pipe the render result to the response after we get a writer for it.\n await result.pipeToNodeResponse(res)\n}\n"],"names":["isResSent","generateETag","fresh","getCacheControlHeader","HTML_CONTENT_TYPE_HEADER","sendEtagResponse","req","res","etag","setHeader","headers","statusCode","end","sendRenderResult","result","generateEtags","poweredByHeader","cacheControl","contentType","getHeader","payload","isDynamic","toUnchunkedString","Buffer","byteLength","method","pipeToNodeResponse"],"mappings":"AAIA,SAASA,SAAS,QAAQ,sBAAqB;AAC/C,SAASC,YAAY,QAAQ,aAAY;AACzC,OAAOC,WAAW,2BAA0B;AAC5C,SAASC,qBAAqB,QAAQ,sBAAqB;AAC3D,SAASC,wBAAwB,QAAQ,mBAAkB;AAE3D,OAAO,SAASC,iBACdC,GAAoB,EACpBC,GAAmB,EACnBC,IAAwB;IAExB,IAAIA,MAAM;QACR;;;;;KAKC,GACDD,IAAIE,SAAS,CAAC,QAAQD;IACxB;IAEA,IAAIN,MAAMI,IAAII,OAAO,EAAE;QAAEF;IAAK,IAAI;QAChCD,IAAII,UAAU,GAAG;QACjBJ,IAAIK,GAAG;QACP,OAAO;IACT;IAEA,OAAO;AACT;AAEA,OAAO,eAAeC,iBAAiB,EACrCP,GAAG,EACHC,GAAG,EACHO,MAAM,EACNC,aAAa,EACbC,eAAe,EACfC,YAAY,EAQb;IACC,IAAIjB,UAAUO,MAAM;QAClB;IACF;IAEA,IAAIS,mBAAmBF,OAAOI,WAAW,KAAKd,0BAA0B;QACtEG,IAAIE,SAAS,CAAC,gBAAgB;IAChC;IAEA,2DAA2D;IAC3D,6DAA6D;IAC7D,IAAIQ,gBAAgB,CAACV,IAAIY,SAAS,CAAC,kBAAkB;QACnDZ,IAAIE,SAAS,CAAC,iBAAiBN,sBAAsBc;IACvD;IAEA,MAAMG,UAAUN,OAAOO,SAAS,GAAG,OAAOP,OAAOQ,iBAAiB;IAElE,IAAIP,iBAAiBK,YAAY,MAAM;QACrC,MAAMZ,OAAOP,aAAamB;QAC1B,IAAIf,iBAAiBC,KAAKC,KAAKC,OAAO;YACpC;QACF;IACF;IAEA,IAAI,CAACD,IAAIY,SAAS,CAAC,mBAAmBL,OAAOI,WAAW,EAAE;QACxDX,IAAIE,SAAS,CAAC,gBAAgBK,OAAOI,WAAW;IAClD;IAEA,IAAIE,SAAS;QACXb,IAAIE,SAAS,CAAC,kBAAkBc,OAAOC,UAAU,CAACJ;IACpD;IAEA,IAAId,IAAImB,MAAM,KAAK,QAAQ;QACzBlB,IAAIK,GAAG,CAAC;QACR;IACF;IAEA,IAAIQ,YAAY,MAAM;QACpBb,IAAIK,GAAG,CAACQ;QACR;IACF;IAEA,uEAAuE;IACvE,MAAMN,OAAOY,kBAAkB,CAACnB;AAClC","ignoreList":[0]}
@@ -1,5 +1,5 @@
1
1
  export function isStableBuild() {
2
- return !"16.1.1-canary.23"?.includes('canary') && !process.env.__NEXT_TEST_MODE && !process.env.NEXT_PRIVATE_LOCAL_DEV;
2
+ return !"16.1.1-canary.24"?.includes('canary') && !process.env.__NEXT_TEST_MODE && !process.env.NEXT_PRIVATE_LOCAL_DEV;
3
3
  }
4
4
  export class CanaryOnlyConfigError extends Error {
5
5
  constructor(arg){
@@ -188,7 +188,6 @@ export default abstract class Server<ServerOptions extends Options = Options, Se
188
188
  generateEtags: boolean;
189
189
  poweredByHeader: boolean;
190
190
  cacheControl: CacheControl | undefined;
191
- cdnCacheControlHeader?: string;
192
191
  }): Promise<void>;
193
192
  protected abstract runApi(req: ServerRequest, res: ServerResponse, query: ParsedUrlQuery, match: PagesAPIRouteMatch): Promise<boolean>;
194
193
  protected abstract renderHTML(req: ServerRequest, res: ServerResponse, pathname: string, query: NextParsedUrlQuery, renderOpts: LoadedRenderOpts): Promise<RenderResult>;
@@ -389,7 +389,6 @@ class Server {
389
389
  dynamicOnHover: this.nextConfig.experimental.dynamicOnHover ?? false,
390
390
  inlineCss: this.nextConfig.experimental.inlineCss ?? false,
391
391
  authInterrupts: !!this.nextConfig.experimental.authInterrupts,
392
- cdnCacheControlHeader: this.nextConfig.experimental.cdnCacheControlHeader,
393
392
  maxPostponedStateSizeBytes: (0, _configshared.parseMaxPostponedStateSize)(this.nextConfig.experimental.maxPostponedStateSize)
394
393
  },
395
394
  onInstrumentationRequestError: this.instrumentationOnRequestError.bind(this),
@@ -1058,8 +1057,7 @@ class Server {
1058
1057
  result: body,
1059
1058
  generateEtags,
1060
1059
  poweredByHeader,
1061
- cacheControl,
1062
- cdnCacheControlHeader: this.nextConfig.experimental.cdnCacheControlHeader
1060
+ cacheControl
1063
1061
  });
1064
1062
  res.statusCode = originalStatus;
1065
1063
  }