Duffer Derek
{"version":3,"sources":["../../../src/server/app-render/app-render.tsx"],"sourcesContent":["import type {\n ActionResult,\n DynamicParamTypesShort,\n FlightRouterState,\n RenderOpts,\n Segment,\n CacheNodeSeedData,\n PreloadCallbacks,\n RSCPayload,\n FlightData,\n InitialRSCPayload,\n FlightDataPath,\n} from './types'\nimport {\n workAsyncStorage,\n type WorkStore,\n} from '../app-render/work-async-storage.external'\nimport type { RequestStore } from '../app-render/work-unit-async-storage.external'\nimport type { NextParsedUrlQuery } from '../request-meta'\nimport type { LoaderTree } from '../lib/app-dir-module'\nimport type { AppPageModule } from '../route-modules/app-page/module'\nimport type {\n ClientReferenceManifest,\n ManifestNode,\n} from '../../build/webpack/plugins/flight-manifest-plugin'\nimport type { DeepReadonly } from '../../shared/lib/deep-readonly'\nimport type { BaseNextRequest, BaseNextResponse } from '../base-http'\nimport type { IncomingHttpHeaders } from 'http'\n\nimport React, { type ErrorInfo, type JSX } from 'react'\n\nimport RenderResult, {\n type AppPageRenderResultMetadata,\n type RenderResultOptions,\n} from '../render-result'\nimport {\n chainStreams,\n renderToInitialFizzStream,\n createDocumentClosingStream,\n continueFizzStream,\n continueDynamicPrerender,\n continueStaticPrerender,\n continueDynamicHTMLResume,\n streamToBuffer,\n streamToString,\n} from '../stream-utils/node-web-streams-helper'\nimport { stripInternalQueries } from '../internal-utils'\nimport {\n NEXT_HMR_REFRESH_HEADER,\n NEXT_ROUTER_PREFETCH_HEADER,\n NEXT_ROUTER_STATE_TREE_HEADER,\n NEXT_ROUTER_STALE_TIME_HEADER,\n NEXT_URL,\n RSC_HEADER,\n NEXT_ROUTER_SEGMENT_PREFETCH_HEADER,\n} from '../../client/components/app-router-headers'\nimport {\n createTrackedMetadataContext,\n createMetadataContext,\n} from '../../lib/metadata/metadata-context'\nimport { createRequestStoreForRender } from '../async-storage/request-store'\nimport { createWorkStore } from '../async-storage/work-store'\nimport {\n getAccessFallbackErrorTypeByStatus,\n getAccessFallbackHTTPStatus,\n isHTTPAccessFallbackError,\n} from '../../client/components/http-access-fallback/http-access-fallback'\nimport {\n getURLFromRedirectError,\n getRedirectStatusCodeFromError,\n} from '../../client/components/redirect'\nimport { isRedirectError } from '../../client/components/redirect-error'\nimport { getImplicitTags } from '../lib/implicit-tags'\nimport { AppRenderSpan, NextNodeServerSpan } from '../lib/trace/constants'\nimport { getTracer } from '../lib/trace/tracer'\nimport { FlightRenderResult } from './flight-render-result'\nimport {\n createFlightReactServerErrorHandler,\n createHTMLReactServerErrorHandler,\n createHTMLErrorHandler,\n type DigestedError,\n isUserLandError,\n getDigestForWellKnownError,\n} from './create-error-handler'\nimport {\n getShortDynamicParamType,\n dynamicParamTypes,\n} from './get-short-dynamic-param-type'\nimport { getSegmentParam } from './get-segment-param'\nimport { getScriptNonceFromHeader } from './get-script-nonce-from-header'\nimport { parseAndValidateFlightRouterState } from './parse-and-validate-flight-router-state'\nimport { createFlightRouterStateFromLoaderTree } from './create-flight-router-state-from-loader-tree'\nimport { handleAction } from './action-handler'\nimport { isBailoutToCSRError } from '../../shared/lib/lazy-dynamic/bailout-to-csr'\nimport { warn, error } from '../../build/output/log'\nimport { appendMutableCookies } from '../web/spec-extension/adapters/request-cookies'\nimport { createServerInsertedHTML } from './server-inserted-html'\nimport { getRequiredScripts } from './required-scripts'\nimport { addPathPrefix } from '../../shared/lib/router/utils/add-path-prefix'\nimport { makeGetServerInsertedHTML } from './make-get-server-inserted-html'\nimport { walkTreeWithFlightRouterState } from './walk-tree-with-flight-router-state'\nimport { createComponentTree, getRootParams } from './create-component-tree'\nimport { getAssetQueryString } from './get-asset-query-string'\nimport { setReferenceManifestsSingleton } from './encryption-utils'\nimport {\n DynamicState,\n type PostponedState,\n parsePostponedState,\n} from './postponed-state'\nimport {\n getDynamicDataPostponedState,\n getDynamicHTMLPostponedState,\n getPostponedFromState,\n} from './postponed-state'\nimport { isDynamicServerError } from '../../client/components/hooks-server-context'\nimport {\n useFlightStream,\n createInlinedDataReadableStream,\n} from './use-flight-response'\nimport {\n StaticGenBailoutError,\n isStaticGenBailoutError,\n} from '../../client/components/static-generation-bailout'\nimport { getStackWithoutErrorMessage } from '../../lib/format-server-error'\nimport {\n accessedDynamicData,\n createPostponedAbortSignal,\n formatDynamicAPIAccesses,\n isPrerenderInterruptedError,\n createDynamicTrackingState,\n createDynamicValidationState,\n getFirstDynamicReason,\n trackAllowedDynamicAccess,\n throwIfDisallowedDynamic,\n consumeDynamicAccess,\n type DynamicAccess,\n} from './dynamic-rendering'\nimport {\n getClientComponentLoaderMetrics,\n wrapClientComponentLoader,\n} from '../client-component-renderer-logger'\nimport { createServerModuleMap } from './action-utils'\nimport { isNodeNextRequest } from '../base-http/helpers'\nimport { parseParameter } from '../../shared/lib/router/utils/route-regex'\nimport { parseRelativeUrl } from '../../shared/lib/router/utils/parse-relative-url'\nimport AppRouter from '../../client/components/app-router'\nimport type { ServerComponentsHmrCache } from '../response-cache'\nimport type { RequestErrorContext } from '../instrumentation/types'\nimport { getServerActionRequestMetadata } from '../lib/server-action-request-meta'\nimport { createInitialRouterState } from '../../client/components/router-reducer/create-initial-router-state'\nimport { createMutableActionQueue } from '../../shared/lib/router/action-queue'\nimport { getRevalidateReason } from '../instrumentation/utils'\nimport { PAGE_SEGMENT_KEY } from '../../shared/lib/segment'\nimport type { FallbackRouteParams } from '../request/fallback-params'\nimport { DynamicServerError } from '../../client/components/hooks-server-context'\nimport { ServerPrerenderStreamResult } from './app-render-prerender-utils'\nimport {\n type ReactServerPrerenderResult,\n ReactServerResult,\n createReactServerPrerenderResult,\n createReactServerPrerenderResultFromRender,\n prerenderAndAbortInSequentialTasks,\n prerenderServerWithPhases,\n prerenderClientWithPhases,\n} from './app-render-prerender-utils'\nimport { printDebugThrownValueForProspectiveRender } from './prospective-render-utils'\nimport { scheduleInSequentialTasks } from './app-render-render-utils'\nimport { waitAtLeastOneReactRenderTask } from '../../lib/scheduler'\nimport {\n workUnitAsyncStorage,\n type PrerenderStore,\n} from './work-unit-async-storage.external'\nimport { CacheSignal } from './cache-signal'\nimport { getTracedMetadata } from '../lib/trace/utils'\nimport { InvariantError } from '../../shared/lib/invariant-error'\n\nimport './clean-async-snapshot.external'\nimport { INFINITE_CACHE } from '../../lib/constants'\nimport { createComponentStylesAndScripts } from './create-component-styles-and-scripts'\nimport { parseLoaderTree } from './parse-loader-tree'\nimport {\n createPrerenderResumeDataCache,\n createRenderResumeDataCache,\n} from '../resume-data-cache/resume-data-cache'\nimport type { MetadataErrorType } from '../../lib/metadata/resolve-metadata'\nimport isError from '../../lib/is-error'\nimport { isUseCacheTimeoutError } from '../use-cache/use-cache-errors'\nimport { createServerInsertedMetadata } from './metadata-insertion/create-server-inserted-metadata'\n\nexport type GetDynamicParamFromSegment = (\n // [slug] / [[slug]] / [...slug]\n segment: string\n) => {\n param: string\n value: string | string[] | null\n treeSegment: Segment\n type: DynamicParamTypesShort\n} | null\n\nexport type GenerateFlight = typeof generateDynamicFlightRenderResult\n\nexport type AppSharedContext = {\n buildId: string\n}\n\nexport type AppRenderContext = {\n sharedContext: AppSharedContext\n workStore: WorkStore\n url: ReturnType<typeof parseRelativeUrl>\n componentMod: AppPageModule\n renderOpts: RenderOpts\n parsedRequestHeaders: ParsedRequestHeaders\n getDynamicParamFromSegment: GetDynamicParamFromSegment\n query: NextParsedUrlQuery\n isPrefetch: boolean\n isAction: boolean\n requestTimestamp: number\n appUsingSizeAdjustment: boolean\n flightRouterState?: FlightRouterState\n requestId: string\n pagePath: string\n clientReferenceManifest: DeepReadonly<ClientReferenceManifest>\n assetPrefix: string\n isNotFoundPath: boolean\n nonce: string | undefined\n res: BaseNextResponse\n}\n\ninterface ParseRequestHeadersOptions {\n readonly isDevWarmup: undefined | boolean\n readonly isRoutePPREnabled: boolean\n}\n\nconst flightDataPathHeadKey = 'h'\n\ninterface ParsedRequestHeaders {\n /**\n * Router state provided from the client-side router. Used to handle rendering\n * from the common layout down. This value will be undefined if the request is\n * not a client-side navigation request, or if the request is a prefetch\n * request.\n */\n readonly flightRouterState: FlightRouterState | undefined\n readonly isPrefetchRequest: boolean\n readonly isRouteTreePrefetchRequest: boolean\n readonly isDevWarmupRequest: boolean\n readonly isHmrRefresh: boolean\n readonly isRSCRequest: boolean\n readonly nonce: string | undefined\n}\n\nfunction parseRequestHeaders(\n headers: IncomingHttpHeaders,\n options: ParseRequestHeadersOptions\n): ParsedRequestHeaders {\n const isDevWarmupRequest = options.isDevWarmup === true\n\n // dev warmup requests are treated as prefetch RSC requests\n const isPrefetchRequest =\n isDevWarmupRequest ||\n headers[NEXT_ROUTER_PREFETCH_HEADER.toLowerCase()] !== undefined\n\n const isHmrRefresh =\n headers[NEXT_HMR_REFRESH_HEADER.toLowerCase()] !== undefined\n\n // dev warmup requests are treated as prefetch RSC requests\n const isRSCRequest =\n isDevWarmupRequest || headers[RSC_HEADER.toLowerCase()] !== undefined\n\n const shouldProvideFlightRouterState =\n isRSCRequest && (!isPrefetchRequest || !options.isRoutePPREnabled)\n\n const flightRouterState = shouldProvideFlightRouterState\n ? parseAndValidateFlightRouterState(\n headers[NEXT_ROUTER_STATE_TREE_HEADER.toLowerCase()]\n )\n : undefined\n\n // Checks if this is a prefetch of the Route Tree by the Segment Cache\n const isRouteTreePrefetchRequest =\n headers[NEXT_ROUTER_SEGMENT_PREFETCH_HEADER.toLowerCase()] === '/_tree'\n\n const csp =\n headers['content-security-policy'] ||\n headers['content-security-policy-report-only']\n\n const nonce =\n typeof csp === 'string' ? getScriptNonceFromHeader(csp) : undefined\n\n return {\n flightRouterState,\n isPrefetchRequest,\n isRouteTreePrefetchRequest,\n isHmrRefresh,\n isRSCRequest,\n isDevWarmupRequest,\n nonce,\n }\n}\n\nfunction createNotFoundLoaderTree(loaderTree: LoaderTree): LoaderTree {\n // Align the segment with parallel-route-default in next-app-loader\n const components = loaderTree[2]\n return [\n '',\n {\n children: [\n PAGE_SEGMENT_KEY,\n {},\n {\n page: components['not-found'],\n },\n ],\n },\n components,\n ]\n}\n\nfunction createDivergedMetadataComponents(\n Metadata: React.ComponentType,\n serveStreamingMetadata: boolean\n): {\n StaticMetadata: React.ComponentType<{}>\n StreamingMetadata: React.ComponentType<{}> | null\n} {\n function EmptyMetadata() {\n return null\n }\n const StreamingMetadata: React.ComponentType | null = serveStreamingMetadata\n ? Metadata\n : null\n\n const StaticMetadata: React.ComponentType<{}> = serveStreamingMetadata\n ? EmptyMetadata\n : Metadata\n\n return {\n StaticMetadata,\n StreamingMetadata,\n }\n}\n\n/**\n * Returns a function that parses the dynamic segment and return the associated value.\n */\nfunction makeGetDynamicParamFromSegment(\n params: { [key: string]: any },\n pagePath: string,\n fallbackRouteParams: FallbackRouteParams | null\n): GetDynamicParamFromSegment {\n return function getDynamicParamFromSegment(\n // [slug] / [[slug]] / [...slug]\n segment: string\n ) {\n const segmentParam = getSegmentParam(segment)\n if (!segmentParam) {\n return null\n }\n\n const key = segmentParam.param\n\n let value = params[key]\n\n if (fallbackRouteParams && fallbackRouteParams.has(segmentParam.param)) {\n value = fallbackRouteParams.get(segmentParam.param)\n } else if (Array.isArray(value)) {\n value = value.map((i) => encodeURIComponent(i))\n } else if (typeof value === 'string') {\n value = encodeURIComponent(value)\n }\n\n if (!value) {\n const isCatchall = segmentParam.type === 'catchall'\n const isOptionalCatchall = segmentParam.type === 'optional-catchall'\n\n if (isCatchall || isOptionalCatchall) {\n const dynamicParamType = dynamicParamTypes[segmentParam.type]\n // handle the case where an optional catchall does not have a value,\n // e.g. `/dashboard/[[...slug]]` when requesting `/dashboard`\n if (isOptionalCatchall) {\n return {\n param: key,\n value: null,\n type: dynamicParamType,\n treeSegment: [key, '', dynamicParamType],\n }\n }\n\n // handle the case where a catchall or optional catchall does not have a value,\n // e.g. `/foo/bar/hello` and `@slot/[...catchall]` or `@slot/[[...catchall]]` is matched\n value = pagePath\n .split('/')\n // remove the first empty string\n .slice(1)\n // replace any dynamic params with the actual values\n .flatMap((pathSegment) => {\n const param = parseParameter(pathSegment)\n // if the segment matches a param, return the param value\n // otherwise, it's a static segment, so just return that\n return params[param.key] ?? param.key\n })\n\n return {\n param: key,\n value,\n type: dynamicParamType,\n // This value always has to be a string.\n treeSegment: [key, value.join('/'), dynamicParamType],\n }\n }\n }\n\n const type = getShortDynamicParamType(segmentParam.type)\n\n return {\n param: key,\n // The value that is passed to user code.\n value: value,\n // The value that is rendered in the router tree.\n treeSegment: [key, Array.isArray(value) ? value.join('/') : value, type],\n type: type,\n }\n }\n}\n\nfunction NonIndex({ ctx }: { ctx: AppRenderContext }) {\n const is404Page = ctx.pagePath === '/404'\n const isInvalidStatusCode =\n typeof ctx.res.statusCode === 'number' && ctx.res.statusCode > 400\n\n // Only render noindex for page request, skip for server actions\n if (!ctx.isAction && (is404Page || isInvalidStatusCode)) {\n return <meta name=\"robots\" content=\"noindex\" />\n }\n return null\n}\n\n/**\n * This is used by server actions & client-side navigations to generate RSC data from a client-side request.\n * This function is only called on \"dynamic\" requests (ie, there wasn't already a static response).\n * It uses request headers (namely `Next-Router-State-Tree`) to determine where to start rendering.\n */\nasync function generateDynamicRSCPayload(\n ctx: AppRenderContext,\n options?: {\n actionResult: ActionResult\n skipFlight: boolean\n }\n): Promise<RSCPayload> {\n // Flight data that is going to be passed to the browser.\n // Currently a single item array but in the future multiple patches might be combined in a single request.\n\n // We initialize `flightData` to an empty string because the client router knows how to tolerate\n // it (treating it as an MPA navigation). The only time this function wouldn't generate flight data\n // is for server actions, if the server action handler instructs this function to skip it. When the server\n // action reducer sees a falsy value, it'll simply resolve the action with no data.\n let flightData: FlightData = ''\n\n const {\n componentMod: {\n tree: loaderTree,\n createServerSearchParamsForMetadata,\n createServerParamsForMetadata,\n createMetadataComponents,\n MetadataBoundary,\n ViewportBoundary,\n },\n getDynamicParamFromSegment,\n appUsingSizeAdjustment,\n query,\n requestId,\n flightRouterState,\n workStore,\n url,\n } = ctx\n\n const serveStreamingMetadata = !!ctx.renderOpts.serveStreamingMetadata\n\n if (!options?.skipFlight) {\n const preloadCallbacks: PreloadCallbacks = []\n\n const searchParams = createServerSearchParamsForMetadata(query, workStore)\n const {\n ViewportTree,\n MetadataTree,\n getViewportReady,\n getMetadataReady,\n StreamingMetadataOutlet,\n } = createMetadataComponents({\n tree: loaderTree,\n searchParams,\n metadataContext: createTrackedMetadataContext(\n url.pathname,\n ctx.renderOpts,\n workStore\n ),\n getDynamicParamFromSegment,\n appUsingSizeAdjustment,\n createServerParamsForMetadata,\n workStore,\n MetadataBoundary,\n ViewportBoundary,\n serveStreamingMetadata,\n })\n\n const { StreamingMetadata, StaticMetadata } =\n createDivergedMetadataComponents(() => {\n return (\n // Adding requestId as react key to make metadata remount for each render\n <MetadataTree key={requestId} />\n )\n }, serveStreamingMetadata)\n\n flightData = (\n await walkTreeWithFlightRouterState({\n ctx,\n loaderTreeToFilter: loaderTree,\n parentParams: {},\n flightRouterState,\n // For flight, render metadata inside leaf page\n rscHead: (\n <React.Fragment key={flightDataPathHeadKey}>\n {/* noindex needs to be blocking */}\n <NonIndex ctx={ctx} />\n {/* Adding requestId as react key to make metadata remount for each render */}\n <ViewportTree key={requestId} />\n {StreamingMetadata ? <StreamingMetadata /> : null}\n <StaticMetadata />\n </React.Fragment>\n ),\n injectedCSS: new Set(),\n injectedJS: new Set(),\n injectedFontPreloadTags: new Set(),\n rootLayoutIncluded: false,\n getViewportReady,\n getMetadataReady,\n preloadCallbacks,\n StreamingMetadataOutlet,\n })\n ).map((path) => path.slice(1)) // remove the '' (root) segment\n }\n\n // If we have an action result, then this is a server action response.\n // We can rely on this because `ActionResult` will always be a promise, even if\n // the result is falsey.\n if (options?.actionResult) {\n return {\n a: options.actionResult,\n f: flightData,\n b: ctx.sharedContext.buildId,\n }\n }\n\n // Otherwise, it's a regular RSC response.\n return {\n b: ctx.sharedContext.buildId,\n f: flightData,\n S: workStore.isStaticGeneration,\n }\n}\n\nfunction createErrorContext(\n ctx: AppRenderContext,\n renderSource: RequestErrorContext['renderSource']\n): RequestErrorContext {\n return {\n routerKind: 'App Router',\n routePath: ctx.pagePath,\n routeType: ctx.isAction ? 'action' : 'render',\n renderSource,\n revalidateReason: getRevalidateReason(ctx.workStore),\n }\n}\n/**\n * Produces a RenderResult containing the Flight data for the given request. See\n * `generateDynamicRSCPayload` for information on the contents of the render result.\n */\nasync function generateDynamicFlightRenderResult(\n req: BaseNextRequest,\n ctx: AppRenderContext,\n requestStore: RequestStore,\n options?: {\n actionResult: ActionResult\n skipFlight: boolean\n componentTree?: CacheNodeSeedData\n preloadCallbacks?: PreloadCallbacks\n temporaryReferences?: WeakMap<any, string>\n }\n): Promise<RenderResult> {\n const renderOpts = ctx.renderOpts\n\n function onFlightDataRenderError(err: DigestedError) {\n return renderOpts.onInstrumentationRequestError?.(\n err,\n req,\n createErrorContext(ctx, 'react-server-components-payload')\n )\n }\n const onError = createFlightReactServerErrorHandler(\n !!renderOpts.dev,\n onFlightDataRenderError\n )\n\n const RSCPayload: RSCPayload & {\n /** Only available during dynamicIO development builds. Used for logging errors. */\n _validation?: Promise<React.ReactNode>\n } = await workUnitAsyncStorage.run(\n requestStore,\n generateDynamicRSCPayload,\n ctx,\n options\n )\n\n if (\n // We only want this behavior when running `next dev`\n renderOpts.dev &&\n // We only want this behavior when we have React's dev builds available\n process.env.NODE_ENV === 'development' &&\n // We only have a Prerender environment for projects opted into dynamicIO\n renderOpts.experimental.dynamicIO\n ) {\n const [resolveValidation, validationOutlet] = createValidationOutlet()\n RSCPayload._validation = validationOutlet\n\n spawnDynamicValidationInDev(\n resolveValidation,\n ctx.componentMod.tree,\n ctx,\n false,\n ctx.clientReferenceManifest,\n ctx.workStore.route,\n requestStore\n )\n }\n\n // For app dir, use the bundled version of Flight server renderer (renderToReadableStream)\n // which contains the subset React.\n const flightReadableStream = workUnitAsyncStorage.run(\n requestStore,\n ctx.componentMod.renderToReadableStream,\n RSCPayload,\n ctx.clientReferenceManifest.clientModules,\n {\n onError,\n temporaryReferences: options?.temporaryReferences,\n }\n )\n\n return new FlightRenderResult(flightReadableStream, {\n fetchMetrics: ctx.workStore.fetchMetrics,\n })\n}\n\n/**\n * Performs a \"warmup\" render of the RSC payload for a given route. This function is called by the server\n * prior to an actual render request in Dev mode only. It's purpose is to fill caches so the actual render\n * can accurately log activity in the right render context (Prerender vs Render).\n *\n * At the moment this implementation is mostly a fork of generateDynamicFlightRenderResult\n */\nasync function warmupDevRender(\n req: BaseNextRequest,\n ctx: AppRenderContext\n): Promise<RenderResult> {\n const renderOpts = ctx.renderOpts\n if (!renderOpts.dev) {\n throw new InvariantError(\n 'generateDynamicFlightRenderResult should never be called in `next start` mode.'\n )\n }\n\n const rootParams = getRootParams(\n ctx.componentMod.tree,\n ctx.getDynamicParamFromSegment\n )\n\n function onFlightDataRenderError(err: DigestedError) {\n return renderOpts.onInstrumentationRequestError?.(\n err,\n req,\n createErrorContext(ctx, 'react-server-components-payload')\n )\n }\n const onError = createFlightReactServerErrorHandler(\n true,\n onFlightDataRenderError\n )\n\n // We're doing a dev warmup, so we should create a new resume data cache so\n // we can fill it.\n const prerenderResumeDataCache = createPrerenderResumeDataCache()\n\n const renderController = new AbortController()\n const prerenderController = new AbortController()\n const cacheSignal = new CacheSignal()\n\n const prerenderStore: PrerenderStore = {\n type: 'prerender',\n phase: 'render',\n rootParams,\n implicitTags: [],\n renderSignal: renderController.signal,\n controller: prerenderController,\n cacheSignal,\n dynamicTracking: null,\n revalidate: INFINITE_CACHE,\n expire: INFINITE_CACHE,\n stale: INFINITE_CACHE,\n tags: [],\n prerenderResumeDataCache,\n }\n\n const rscPayload = await workUnitAsyncStorage.run(\n prerenderStore,\n generateDynamicRSCPayload,\n ctx\n )\n\n // For app dir, use the bundled version of Flight server renderer (renderToReadableStream)\n // which contains the subset React.\n workUnitAsyncStorage.run(\n prerenderStore,\n ctx.componentMod.renderToReadableStream,\n rscPayload,\n ctx.clientReferenceManifest.clientModules,\n {\n onError,\n signal: renderController.signal,\n }\n )\n\n // Wait for all caches to be finished filling\n await cacheSignal.cacheReady()\n // We unset the cache so any late over-run renders aren't able to write into this cache\n prerenderStore.prerenderResumeDataCache = null\n // Abort the render\n renderController.abort()\n\n // We don't really want to return a result here but the stack of functions\n // that calls into renderToHTML... expects a result. We should refactor this to\n // lift the warmup pathway outside of renderToHTML... but for now this suffices\n return new FlightRenderResult('', {\n fetchMetrics: ctx.workStore.fetchMetrics,\n devRenderResumeDataCache: createRenderResumeDataCache(\n prerenderResumeDataCache\n ),\n })\n}\n\n/**\n * Crawlers will inadvertently think the canonicalUrl in the RSC payload should be crawled\n * when our intention is to just seed the router state with the current URL.\n * This function splits up the pathname so that we can later join it on\n * when we're ready to consume the path.\n */\nfunction prepareInitialCanonicalUrl(url: RequestStore['url']) {\n return (url.pathname + url.search).split('/')\n}\n\n// This is the data necessary to render <AppRouter /> when no SSR errors are encountered\nasync function getRSCPayload(\n tree: LoaderTree,\n ctx: AppRenderContext,\n is404: boolean\n): Promise<InitialRSCPayload & { P: React.ReactNode }> {\n const injectedCSS = new Set<string>()\n const injectedJS = new Set<string>()\n const injectedFontPreloadTags = new Set<string>()\n let missingSlots: Set<string> | undefined\n\n // We only track missing parallel slots in development\n if (process.env.NODE_ENV === 'development') {\n missingSlots = new Set<string>()\n }\n\n const {\n getDynamicParamFromSegment,\n query,\n appUsingSizeAdjustment,\n componentMod: {\n GlobalError,\n createServerSearchParamsForMetadata,\n createServerParamsForMetadata,\n createMetadataComponents,\n MetadataBoundary,\n ViewportBoundary,\n },\n url,\n workStore,\n } = ctx\n\n const initialTree = createFlightRouterStateFromLoaderTree(\n tree,\n getDynamicParamFromSegment,\n query\n )\n const serveStreamingMetadata = !!ctx.renderOpts.serveStreamingMetadata\n\n const searchParams = createServerSearchParamsForMetadata(query, workStore)\n const {\n ViewportTree,\n MetadataTree,\n getViewportReady,\n getMetadataReady,\n StreamingMetadataOutlet,\n } = createMetadataComponents({\n tree,\n errorType: is404 ? 'not-found' : undefined,\n searchParams,\n metadataContext: createTrackedMetadataContext(\n url.pathname,\n ctx.renderOpts,\n workStore\n ),\n getDynamicParamFromSegment,\n appUsingSizeAdjustment,\n createServerParamsForMetadata,\n workStore,\n MetadataBoundary,\n ViewportBoundary,\n serveStreamingMetadata,\n })\n\n const preloadCallbacks: PreloadCallbacks = []\n\n const { StreamingMetadata, StaticMetadata } =\n createDivergedMetadataComponents(() => {\n return (\n // Not add requestId as react key to ensure segment prefetch could result consistently if nothing changed\n <MetadataTree />\n )\n }, serveStreamingMetadata)\n\n const seedData = await createComponentTree({\n ctx,\n loaderTree: tree,\n parentParams: {},\n injectedCSS,\n injectedJS,\n injectedFontPreloadTags,\n rootLayoutIncluded: false,\n getViewportReady,\n getMetadataReady,\n missingSlots,\n preloadCallbacks,\n authInterrupts: ctx.renderOpts.experimental.authInterrupts,\n StreamingMetadata,\n StreamingMetadataOutlet,\n })\n\n // When the `vary` response header is present with `Next-URL`, that means there's a chance\n // it could respond differently if there's an interception route. We provide this information\n // to `AppRouter` so that it can properly seed the prefetch cache with a prefix, if needed.\n const varyHeader = ctx.res.getHeader('vary')\n const couldBeIntercepted =\n typeof varyHeader === 'string' && varyHeader.includes(NEXT_URL)\n\n const initialHead = (\n <React.Fragment key={flightDataPathHeadKey}>\n <NonIndex ctx={ctx} />\n <ViewportTree key={ctx.requestId} />\n <StaticMetadata />\n </React.Fragment>\n )\n\n const globalErrorStyles = await getGlobalErrorStyles(tree, ctx)\n\n // Assume the head we're rendering contains only partial data if PPR is\n // enabled and this is a statically generated response. This is used by the\n // client Segment Cache after a prefetch to determine if it can skip the\n // second request to fill in the dynamic data.\n //\n // See similar comment in create-component-tree.tsx for more context.\n const isPossiblyPartialHead =\n workStore.isStaticGeneration &&\n ctx.renderOpts.experimental.isRoutePPREnabled === true\n\n return {\n // See the comment above the `Preloads` component (below) for why this is part of the payload\n P: <Preloads preloadCallbacks={preloadCallbacks} />,\n b: ctx.sharedContext.buildId,\n p: ctx.assetPrefix,\n c: prepareInitialCanonicalUrl(url),\n i: !!couldBeIntercepted,\n f: [\n [\n initialTree,\n seedData,\n initialHead,\n isPossiblyPartialHead,\n ] as FlightDataPath,\n ],\n m: missingSlots,\n G: [GlobalError, globalErrorStyles],\n s: typeof ctx.renderOpts.postponed === 'string',\n S: workStore.isStaticGeneration,\n }\n}\n\n/**\n * Preload calls (such as `ReactDOM.preloadStyle` and `ReactDOM.preloadFont`) need to be called during rendering\n * in order to create the appropriate preload tags in the DOM, otherwise they're a no-op. Since we invoke\n * renderToReadableStream with a function that returns component props rather than a component itself, we use\n * this component to \"render \" the preload calls.\n */\nfunction Preloads({ preloadCallbacks }: { preloadCallbacks: Function[] }) {\n preloadCallbacks.forEach((preloadFn) => preloadFn())\n return null\n}\n\n// This is the data necessary to render <AppRouter /> when an error state is triggered\nasync function getErrorRSCPayload(\n tree: LoaderTree,\n ctx: AppRenderContext,\n ssrError: unknown,\n errorType: MetadataErrorType | 'redirect' | undefined\n) {\n const {\n getDynamicParamFromSegment,\n query,\n appUsingSizeAdjustment,\n componentMod: {\n GlobalError,\n createServerSearchParamsForMetadata,\n createServerParamsForMetadata,\n createMetadataComponents,\n MetadataBoundary,\n ViewportBoundary,\n },\n url,\n requestId,\n workStore,\n } = ctx\n\n const serveStreamingMetadata = !!ctx.renderOpts.serveStreamingMetadata\n const searchParams = createServerSearchParamsForMetadata(query, workStore)\n const { MetadataTree, ViewportTree } = createMetadataComponents({\n tree,\n searchParams,\n // We create an untracked metadata context here because we can't postpone\n // again during the error render.\n metadataContext: createMetadataContext(url.pathname, ctx.renderOpts),\n errorType,\n getDynamicParamFromSegment,\n appUsingSizeAdjustment,\n createServerParamsForMetadata,\n workStore,\n MetadataBoundary,\n ViewportBoundary,\n serveStreamingMetadata: serveStreamingMetadata,\n })\n\n const { StreamingMetadata, StaticMetadata } =\n createDivergedMetadataComponents(\n () => (\n <React.Fragment key={flightDataPathHeadKey}>\n {/* Adding requestId as react key to make metadata remount for each render */}\n <MetadataTree key={requestId} />\n </React.Fragment>\n ),\n serveStreamingMetadata\n )\n\n const initialHead = (\n <React.Fragment key={flightDataPathHeadKey}>\n <NonIndex ctx={ctx} />\n {/* Adding requestId as react key to make metadata remount for each render */}\n <ViewportTree key={requestId} />\n {process.env.NODE_ENV === 'development' && (\n <meta name=\"next-error\" content=\"not-found\" />\n )}\n <StaticMetadata />\n </React.Fragment>\n )\n\n const initialTree = createFlightRouterStateFromLoaderTree(\n tree,\n getDynamicParamFromSegment,\n query\n )\n\n let err: Error | undefined = undefined\n if (ssrError) {\n err = isError(ssrError) ? ssrError : new Error(ssrError + '')\n }\n\n // For metadata notFound error there's no global not found boundary on top\n // so we create a not found page with AppRouter\n const seedData: CacheNodeSeedData = [\n initialTree[0],\n <html id=\"__next_error__\">\n <head>{StreamingMetadata ? <StreamingMetadata /> : null}</head>\n <body>\n {process.env.NODE_ENV !== 'production' && err ? (\n <template\n data-next-error-message={err.message}\n data-next-error-digest={'digest' in err ? err.digest : ''}\n data-next-error-stack={err.stack}\n />\n ) : null}\n </body>\n </html>,\n {},\n null,\n false,\n ]\n\n const globalErrorStyles = await getGlobalErrorStyles(tree, ctx)\n\n const isPossiblyPartialHead =\n workStore.isStaticGeneration &&\n ctx.renderOpts.experimental.isRoutePPREnabled === true\n\n return {\n b: ctx.sharedContext.buildId,\n p: ctx.assetPrefix,\n c: prepareInitialCanonicalUrl(url),\n m: undefined,\n i: false,\n f: [\n [\n initialTree,\n seedData,\n initialHead,\n isPossiblyPartialHead,\n ] as FlightDataPath,\n ],\n G: [GlobalError, globalErrorStyles],\n s: typeof ctx.renderOpts.postponed === 'string',\n S: workStore.isStaticGeneration,\n } satisfies InitialRSCPayload\n}\n\n// This component must run in an SSR context. It will render the RSC root component\nfunction App<T>({\n reactServerStream,\n preinitScripts,\n clientReferenceManifest,\n nonce,\n ServerInsertedHTMLProvider,\n ServerInsertedMetadataProvider,\n}: {\n reactServerStream: BinaryStreamOf<T>\n preinitScripts: () => void\n clientReferenceManifest: NonNullable<RenderOpts['clientReferenceManifest']>\n ServerInsertedHTMLProvider: React.ComponentType<{ children: JSX.Element }>\n ServerInsertedMetadataProvider: React.ComponentType<{ children: JSX.Element }>\n nonce?: string\n}): JSX.Element {\n preinitScripts()\n const response = React.use(\n useFlightStream<InitialRSCPayload>(\n reactServerStream,\n clientReferenceManifest,\n nonce\n )\n )\n\n const initialState = createInitialRouterState({\n initialFlightData: response.f,\n initialCanonicalUrlParts: response.c,\n initialParallelRoutes: new Map(),\n // location is not initialized in the SSR render\n // it's set to window.location during hydration\n location: null,\n couldBeIntercepted: response.i,\n postponed: response.s,\n prerendered: response.S,\n })\n\n const actionQueue = createMutableActionQueue(initialState)\n\n const { HeadManagerContext } =\n require('../../shared/lib/head-manager-context.shared-runtime') as typeof import('../../shared/lib/head-manager-context.shared-runtime')\n\n return (\n <HeadManagerContext.Provider\n value={{\n appDir: true,\n nonce,\n }}\n >\n <ServerInsertedMetadataProvider>\n <ServerInsertedHTMLProvider>\n <AppRouter\n actionQueue={actionQueue}\n globalErrorComponentAndStyles={response.G}\n assetPrefix={response.p}\n />\n </ServerInsertedHTMLProvider>\n </ServerInsertedMetadataProvider>\n </HeadManagerContext.Provider>\n )\n}\n\n// @TODO our error stream should be probably just use the same root component. But it was previously\n// different I don't want to figure out if that is meaningful at this time so just keeping the behavior\n// consistent for now.\nfunction AppWithoutContext<T>({\n reactServerStream,\n preinitScripts,\n clientReferenceManifest,\n nonce,\n}: {\n reactServerStream: BinaryStreamOf<T>\n preinitScripts: () => void\n clientReferenceManifest: NonNullable<RenderOpts['clientReferenceManifest']>\n nonce?: string\n}): JSX.Element {\n preinitScripts()\n const response = React.use(\n useFlightStream<InitialRSCPayload>(\n reactServerStream,\n clientReferenceManifest,\n nonce\n )\n )\n\n const initialState = createInitialRouterState({\n initialFlightData: response.f,\n initialCanonicalUrlParts: response.c,\n initialParallelRoutes: new Map(),\n // location is not initialized in the SSR render\n // it's set to window.location during hydration\n location: null,\n couldBeIntercepted: response.i,\n postponed: response.s,\n prerendered: response.S,\n })\n\n const actionQueue = createMutableActionQueue(initialState)\n\n return (\n <AppRouter\n actionQueue={actionQueue}\n globalErrorComponentAndStyles={response.G}\n assetPrefix={response.p}\n />\n )\n}\n\n// We use a trick with TS Generics to branch streams with a type so we can\n// consume the parsed value of a Readable Stream if it was constructed with a\n// certain object shape. The generic type is not used directly in the type so it\n// requires a disabling of the eslint rule disallowing unused vars\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport type BinaryStreamOf<T> = ReadableStream<Uint8Array>\n\nasync function renderToHTMLOrFlightImpl(\n req: BaseNextRequest,\n res: BaseNextResponse,\n url: ReturnType<typeof parseRelativeUrl>,\n pagePath: string,\n query: NextParsedUrlQuery,\n renderOpts: RenderOpts,\n workStore: WorkStore,\n parsedRequestHeaders: ParsedRequestHeaders,\n requestEndedState: { ended?: boolean },\n postponedState: PostponedState | null,\n implicitTags: Array<string>,\n serverComponentsHmrCache: ServerComponentsHmrCache | undefined,\n sharedContext: AppSharedContext\n) {\n const isNotFoundPath = pagePath === '/404'\n if (isNotFoundPath) {\n res.statusCode = 404\n }\n\n // A unique request timestamp used by development to ensure that it's\n // consistent and won't change during this request. This is important to\n // avoid that resources can be deduped by React Float if the same resource is\n // rendered or preloaded multiple times: `<link href=\"a.css?v={Date.now()}\"/>`.\n const requestTimestamp = Date.now()\n\n const {\n serverActionsManifest,\n ComponentMod,\n nextFontManifest,\n serverActions,\n assetPrefix = '',\n enableTainting,\n } = renderOpts\n\n // We need to expose the bundled `require` API globally for\n // react-server-dom-webpack. This is a hack until we find a better way.\n if (ComponentMod.__next_app__) {\n const instrumented = wrapClientComponentLoader(ComponentMod)\n // @ts-ignore\n globalThis.__next_require__ = instrumented.require\n // When we are prerendering if there is a cacheSignal for tracking\n // cache reads we wrap the loadChunk in this tracking. This allows us\n // to treat chunk loading with similar semantics as cache reads to avoid\n // async loading chunks from causing a prerender to abort too early.\n const __next_chunk_load__: typeof instrumented.loadChunk = (...args) => {\n const loadingChunk = instrumented.loadChunk(...args)\n trackChunkLoading(loadingChunk)\n return loadingChunk\n }\n // @ts-expect-error\n globalThis.__next_chunk_load__ = __next_chunk_load__\n }\n\n if (process.env.NODE_ENV === 'development') {\n // reset isr status at start of request\n const { pathname } = new URL(req.url || '/', 'http://n')\n renderOpts.setIsrStatus?.(pathname, null)\n }\n\n if (\n // The type check here ensures that `req` is correctly typed, and the\n // environment variable check provides dead code elimination.\n process.env.NEXT_RUNTIME !== 'edge' &&\n isNodeNextRequest(req)\n ) {\n req.originalRequest.on('end', () => {\n requestEndedState.ended = true\n\n if ('performance' in globalThis) {\n const metrics = getClientComponentLoaderMetrics({ reset: true })\n if (metrics) {\n getTracer()\n .startSpan(NextNodeServerSpan.clientComponentLoading, {\n startTime: metrics.clientComponentLoadStart,\n attributes: {\n 'next.clientComponentLoadCount':\n metrics.clientComponentLoadCount,\n 'next.span_type': NextNodeServerSpan.clientComponentLoading,\n },\n })\n .end(\n metrics.clientComponentLoadStart +\n metrics.clientComponentLoadTimes\n )\n }\n }\n })\n }\n\n const metadata: AppPageRenderResultMetadata = {}\n\n const appUsingSizeAdjustment = !!nextFontManifest?.appUsingSizeAdjust\n\n // TODO: fix this typescript\n const clientReferenceManifest = renderOpts.clientReferenceManifest!\n\n const serverModuleMap = createServerModuleMap({ serverActionsManifest })\n\n setReferenceManifestsSingleton({\n page: workStore.page,\n clientReferenceManifest,\n serverActionsManifest,\n serverModuleMap,\n })\n\n ComponentMod.patchFetch()\n\n // Pull out the hooks/references from the component.\n const { tree: loaderTree, taintObjectReference } = ComponentMod\n\n if (enableTainting) {\n taintObjectReference(\n 'Do not pass process.env to client components since it will leak sensitive data',\n process.env\n )\n }\n\n workStore.fetchMetrics = []\n metadata.fetchMetrics = workStore.fetchMetrics\n\n // don't modify original query object\n query = { ...query }\n stripInternalQueries(query)\n\n const {\n flightRouterState,\n isPrefetchRequest,\n isRSCRequest,\n isDevWarmupRequest,\n isHmrRefresh,\n nonce,\n } = parsedRequestHeaders\n\n /**\n * The metadata items array created in next-app-loader with all relevant information\n * that we need to resolve the final metadata.\n */\n let requestId: string\n\n if (process.env.NEXT_RUNTIME === 'edge') {\n requestId = crypto.randomUUID()\n } else {\n requestId = require('next/dist/compiled/nanoid').nanoid()\n }\n\n /**\n * Dynamic parameters. E.g. when you visit `/dashboard/vercel` which is rendered by `/dashboard/[slug]` the value will be {\"slug\": \"vercel\"}.\n */\n const params = renderOpts.params ?? {}\n\n const { isStaticGeneration, fallbackRouteParams } = workStore\n\n const getDynamicParamFromSegment = makeGetDynamicParamFromSegment(\n params,\n pagePath,\n fallbackRouteParams\n )\n\n const isActionRequest = getServerActionRequestMetadata(req).isServerAction\n\n const ctx: AppRenderContext = {\n componentMod: ComponentMod,\n url,\n renderOpts,\n workStore,\n parsedRequestHeaders,\n getDynamicParamFromSegment,\n query,\n isPrefetch: isPrefetchRequest,\n isAction: isActionRequest,\n requestTimestamp,\n appUsingSizeAdjustment,\n flightRouterState,\n requestId,\n pagePath,\n clientReferenceManifest,\n assetPrefix,\n isNotFoundPath,\n nonce,\n res,\n sharedContext,\n }\n\n getTracer().setRootSpanAttribute('next.route', pagePath)\n\n if (isStaticGeneration) {\n // We're either building or revalidating. In either case we need to\n // prerender our page rather than render it.\n const prerenderToStreamWithTracing = getTracer().wrap(\n AppRenderSpan.getBodyResult,\n {\n spanName: `prerender route (app) ${pagePath}`,\n attributes: {\n 'next.route': pagePath,\n },\n },\n prerenderToStream\n )\n\n const response = await prerenderToStreamWithTracing(\n req,\n res,\n ctx,\n metadata,\n workStore,\n loaderTree,\n implicitTags\n )\n\n // If we're debugging partial prerendering, print all the dynamic API accesses\n // that occurred during the render.\n // @TODO move into renderToStream function\n if (\n response.dynamicAccess &&\n accessedDynamicData(response.dynamicAccess) &&\n renderOpts.isDebugDynamicAccesses\n ) {\n warn('The following dynamic usage was detected:')\n for (const access of formatDynamicAPIAccesses(response.dynamicAccess)) {\n warn(access)\n }\n }\n\n // If we encountered any unexpected errors during build we fail the\n // prerendering phase and the build.\n if (response.digestErrorsMap.size) {\n const buildFailingError = response.digestErrorsMap.values().next().value\n if (buildFailingError) throw buildFailingError\n }\n // Pick first userland SSR error, which is also not a RSC error.\n if (response.ssrErrors.length) {\n const buildFailingError = response.ssrErrors.find((err) =>\n isUserLandError(err)\n )\n if (buildFailingError) throw buildFailingError\n }\n\n const options: RenderResultOptions = {\n metadata,\n }\n // If we have pending revalidates, wait until they are all resolved.\n if (\n workStore.pendingRevalidates ||\n workStore.pendingRevalidateWrites ||\n workStore.revalidatedTags\n ) {\n const pendingPromise = Promise.all([\n workStore.incrementalCache?.revalidateTag(\n workStore.revalidatedTags || []\n ),\n ...Object.values(workStore.pendingRevalidates || {}),\n ...(workStore.pendingRevalidateWrites || []),\n ]).finally(() => {\n if (process.env.NEXT_PRIVATE_DEBUG_CACHE) {\n console.log('pending revalidates promise finished for:', url)\n }\n })\n\n if (renderOpts.waitUntil) {\n renderOpts.waitUntil(pendingPromise)\n } else {\n options.waitUntil = pendingPromise\n }\n }\n\n if (response.collectedTags) {\n metadata.fetchTags = response.collectedTags.join(',')\n }\n\n // Let the client router know how long to keep the cached entry around.\n const staleHeader = String(response.collectedStale)\n res.setHeader(NEXT_ROUTER_STALE_TIME_HEADER, staleHeader)\n metadata.headers ??= {}\n metadata.headers[NEXT_ROUTER_STALE_TIME_HEADER] = staleHeader\n\n // If force static is specifically set to false, we should not revalidate\n // the page.\n if (workStore.forceStatic === false || response.collectedRevalidate === 0) {\n metadata.cacheControl = { revalidate: 0, expire: undefined }\n } else {\n // Copy the cache control value onto the render result metadata.\n metadata.cacheControl = {\n revalidate:\n response.collectedRevalidate >= INFINITE_CACHE\n ? false\n : response.collectedRevalidate,\n expire:\n response.collectedExpire >= INFINITE_CACHE\n ? undefined\n : response.collectedExpire,\n }\n }\n\n // provide bailout info for debugging\n if (metadata.cacheControl?.revalidate === 0) {\n metadata.staticBailoutInfo = {\n description: workStore.dynamicUsageDescription,\n stack: workStore.dynamicUsageStack,\n }\n }\n\n return new RenderResult(await streamToString(response.stream), options)\n } else {\n // We're rendering dynamically\n const renderResumeDataCache =\n renderOpts.devRenderResumeDataCache ??\n postponedState?.renderResumeDataCache\n\n const rootParams = getRootParams(loaderTree, ctx.getDynamicParamFromSegment)\n const requestStore = createRequestStoreForRender(\n req,\n res,\n url,\n rootParams,\n implicitTags,\n renderOpts.onUpdateCookies,\n renderOpts.previewProps,\n isHmrRefresh,\n serverComponentsHmrCache,\n renderResumeDataCache\n )\n\n if (\n process.env.NODE_ENV === 'development' &&\n renderOpts.setIsrStatus &&\n // The type check here ensures that `req` is correctly typed, and the\n // environment variable check provides dead code elimination.\n process.env.NEXT_RUNTIME !== 'edge' &&\n isNodeNextRequest(req) &&\n !isDevWarmupRequest\n ) {\n const setIsrStatus = renderOpts.setIsrStatus\n req.originalRequest.on('end', () => {\n if (!requestStore.usedDynamic && !workStore.forceDynamic) {\n // only node can be ISR so we only need to update the status here\n const { pathname } = new URL(req.url || '/', 'http://n')\n setIsrStatus(pathname, true)\n }\n })\n }\n\n if (isDevWarmupRequest) {\n return warmupDevRender(req, ctx)\n } else if (isRSCRequest) {\n return generateDynamicFlightRenderResult(req, ctx, requestStore)\n }\n\n const renderToStreamWithTracing = getTracer().wrap(\n AppRenderSpan.getBodyResult,\n {\n spanName: `render route (app) ${pagePath}`,\n attributes: {\n 'next.route': pagePath,\n },\n },\n renderToStream\n )\n\n let formState: null | any = null\n if (isActionRequest) {\n // For action requests, we handle them differently with a special render result.\n const actionRequestResult = await handleAction({\n req,\n res,\n ComponentMod,\n serverModuleMap,\n generateFlight: generateDynamicFlightRenderResult,\n workStore,\n requestStore,\n serverActions,\n ctx,\n })\n\n if (actionRequestResult) {\n if (actionRequestResult.type === 'not-found') {\n const notFoundLoaderTree = createNotFoundLoaderTree(loaderTree)\n res.statusCode = 404\n const stream = await renderToStreamWithTracing(\n requestStore,\n req,\n res,\n ctx,\n workStore,\n notFoundLoaderTree,\n formState,\n postponedState\n )\n\n return new RenderResult(stream, { metadata })\n } else if (actionRequestResult.type === 'done') {\n if (actionRequestResult.result) {\n actionRequestResult.result.assignMetadata(metadata)\n return actionRequestResult.result\n } else if (actionRequestResult.formState) {\n formState = actionRequestResult.formState\n }\n }\n }\n }\n\n const options: RenderResultOptions = {\n metadata,\n }\n\n const stream = await renderToStreamWithTracing(\n requestStore,\n req,\n res,\n ctx,\n workStore,\n loaderTree,\n formState,\n postponedState\n )\n\n // If we have pending revalidates, wait until they are all resolved.\n if (\n workStore.pendingRevalidates ||\n workStore.pendingRevalidateWrites ||\n workStore.revalidatedTags\n ) {\n const pendingPromise = Promise.all([\n workStore.incrementalCache?.revalidateTag(\n workStore.revalidatedTags || []\n ),\n ...Object.values(workStore.pendingRevalidates || {}),\n ...(workStore.pendingRevalidateWrites || []),\n ]).finally(() => {\n if (process.env.NEXT_PRIVATE_DEBUG_CACHE) {\n console.log('pending revalidates promise finished for:', url)\n }\n })\n\n if (renderOpts.waitUntil) {\n renderOpts.waitUntil(pendingPromise)\n } else {\n options.waitUntil = pendingPromise\n }\n }\n\n // Create the new render result for the response.\n return new RenderResult(stream, options)\n }\n}\n\nexport type AppPageRender = (\n req: BaseNextRequest,\n res: BaseNextResponse,\n pagePath: string,\n query: NextParsedUrlQuery,\n fallbackRouteParams: FallbackRouteParams | null,\n renderOpts: RenderOpts,\n serverComponentsHmrCache: ServerComponentsHmrCache | undefined,\n isDevWarmup: boolean,\n sharedContext: AppSharedContext\n) => Promise<RenderResult<AppPageRenderResultMetadata>>\n\nexport const renderToHTMLOrFlight: AppPageRender = (\n req,\n res,\n pagePath,\n query,\n fallbackRouteParams,\n renderOpts,\n serverComponentsHmrCache,\n isDevWarmup,\n sharedContext\n) => {\n if (!req.url) {\n throw new Error('Invalid URL')\n }\n\n const url = parseRelativeUrl(req.url, undefined, false)\n\n // We read these values from the request object as, in certain cases,\n // base-server will strip them to opt into different rendering behavior.\n const parsedRequestHeaders = parseRequestHeaders(req.headers, {\n isDevWarmup,\n isRoutePPREnabled: renderOpts.experimental.isRoutePPREnabled === true,\n })\n\n const { isPrefetchRequest } = parsedRequestHeaders\n\n const requestEndedState = { ended: false }\n let postponedState: PostponedState | null = null\n\n // If provided, the postpone state should be parsed so it can be provided to\n // React.\n if (typeof renderOpts.postponed === 'string') {\n if (fallbackRouteParams) {\n throw new InvariantError(\n 'postponed state should not be provided when fallback params are provided'\n )\n }\n\n postponedState = parsePostponedState(\n renderOpts.postponed,\n renderOpts.params\n )\n }\n\n if (\n postponedState?.renderResumeDataCache &&\n renderOpts.devRenderResumeDataCache\n ) {\n throw new InvariantError(\n 'postponed state and dev warmup immutable resume data cache should not be provided together'\n )\n }\n\n const implicitTags = getImplicitTags(\n renderOpts.routeModule.definition.page,\n url,\n fallbackRouteParams\n )\n\n const workStore = createWorkStore({\n page: renderOpts.routeModule.definition.page,\n fallbackRouteParams,\n renderOpts,\n requestEndedState,\n // @TODO move to workUnitStore of type Request\n isPrefetchRequest,\n buildId: sharedContext.buildId,\n })\n\n return workAsyncStorage.run(\n workStore,\n // The function to run\n renderToHTMLOrFlightImpl,\n // all of it's args\n req,\n res,\n url,\n pagePath,\n query,\n renderOpts,\n workStore,\n parsedRequestHeaders,\n requestEndedState,\n postponedState,\n implicitTags,\n serverComponentsHmrCache,\n sharedContext\n )\n}\n\nasync function renderToStream(\n requestStore: RequestStore,\n req: BaseNextRequest,\n res: BaseNextResponse,\n ctx: AppRenderContext,\n workStore: WorkStore,\n tree: LoaderTree,\n formState: any,\n postponedState: PostponedState | null\n): Promise<ReadableStream<Uint8Array>> {\n const renderOpts = ctx.renderOpts\n const ComponentMod = renderOpts.ComponentMod\n // TODO: fix this typescript\n const clientReferenceManifest = renderOpts.clientReferenceManifest!\n\n const { ServerInsertedHTMLProvider, renderServerInsertedHTML } =\n createServerInsertedHTML()\n const { ServerInsertedMetadataProvider, getServerInsertedMetadata } =\n createServerInsertedMetadata(ctx.nonce)\n\n const tracingMetadata = getTracedMetadata(\n getTracer().getTracePropagationData(),\n renderOpts.experimental.clientTraceMetadata\n )\n\n const polyfills: JSX.IntrinsicElements['script'][] =\n renderOpts.buildManifest.polyfillFiles\n .filter(\n (polyfill) =>\n polyfill.endsWith('.js') && !polyfill.endsWith('.module.js')\n )\n .map((polyfill) => ({\n src: `${ctx.assetPrefix}/_next/${polyfill}${getAssetQueryString(\n ctx,\n false\n )}`,\n integrity: renderOpts.subresourceIntegrityManifest?.[polyfill],\n crossOrigin: renderOpts.crossOrigin,\n noModule: true,\n nonce: ctx.nonce,\n }))\n\n const [preinitScripts, bootstrapScript] = getRequiredScripts(\n renderOpts.buildManifest,\n // Why is assetPrefix optional on renderOpts?\n // @TODO make it default empty string on renderOpts and get rid of it from ctx\n ctx.assetPrefix,\n renderOpts.crossOrigin,\n renderOpts.subresourceIntegrityManifest,\n getAssetQueryString(ctx, true),\n ctx.nonce,\n renderOpts.page\n )\n\n const reactServerErrorsByDigest: Map<string, DigestedError> = new Map()\n const silenceLogger = false\n function onHTMLRenderRSCError(err: DigestedError) {\n return renderOpts.onInstrumentationRequestError?.(\n err,\n req,\n createErrorContext(ctx, 'react-server-components')\n )\n }\n const serverComponentsErrorHandler = createHTMLReactServerErrorHandler(\n !!renderOpts.dev,\n !!renderOpts.nextExport,\n reactServerErrorsByDigest,\n silenceLogger,\n onHTMLRenderRSCError\n )\n\n function onHTMLRenderSSRError(err: DigestedError) {\n return renderOpts.onInstrumentationRequestError?.(\n err,\n req,\n createErrorContext(ctx, 'server-rendering')\n )\n }\n\n const allCapturedErrors: Array<unknown> = []\n const htmlRendererErrorHandler = createHTMLErrorHandler(\n !!renderOpts.dev,\n !!renderOpts.nextExport,\n reactServerErrorsByDigest,\n allCapturedErrors,\n silenceLogger,\n onHTMLRenderSSRError\n )\n\n let reactServerResult: null | ReactServerResult = null\n\n const setHeader = res.setHeader.bind(res)\n const appendHeader = res.appendHeader.bind(res)\n\n try {\n if (\n // We only want this behavior when running `next dev`\n renderOpts.dev &&\n // We only want this behavior when we have React's dev builds available\n process.env.NODE_ENV === 'development' &&\n // Edge routes never prerender so we don't have a Prerender environment for anything in edge runtime\n process.env.NEXT_RUNTIME !== 'edge' &&\n // We only have a Prerender environment for projects opted into dynamicIO\n renderOpts.experimental.dynamicIO\n ) {\n // This is a dynamic render. We don't do dynamic tracking because we're not prerendering\n const RSCPayload: InitialRSCPayload & {\n /** Only available during dynamicIO development builds. Used for logging errors. */\n _validation?: Promise<React.ReactNode>\n } = await workUnitAsyncStorage.run(\n requestStore,\n getRSCPayload,\n tree,\n ctx,\n res.statusCode === 404\n )\n const [resolveValidation, validationOutlet] = createValidationOutlet()\n RSCPayload._validation = validationOutlet\n\n const reactServerStream = await workUnitAsyncStorage.run(\n requestStore,\n scheduleInSequentialTasks,\n () => {\n requestStore.prerenderPhase = true\n return ComponentMod.renderToReadableStream(\n RSCPayload,\n clientReferenceManifest.clientModules,\n {\n onError: serverComponentsErrorHandler,\n environmentName: () =>\n requestStore.prerenderPhase === true ? 'Prerender' : 'Server',\n filterStackFrame(url: string, _functionName: string): boolean {\n // The default implementation filters out <anonymous> stack frames\n // but we want to retain them because current Server Components and\n // built-in Components in parent stacks don't have source location.\n return !url.startsWith('node:') && !url.includes('node_modules')\n },\n }\n )\n },\n () => {\n requestStore.prerenderPhase = false\n }\n )\n\n spawnDynamicValidationInDev(\n resolveValidation,\n tree,\n ctx,\n res.statusCode === 404,\n clientReferenceManifest,\n workStore.route,\n requestStore\n )\n\n reactServerResult = new ReactServerResult(reactServerStream)\n } else {\n // This is a dynamic render. We don't do dynamic tracking because we're not prerendering\n const RSCPayload = await workUnitAsyncStorage.run(\n requestStore,\n getRSCPayload,\n tree,\n ctx,\n res.statusCode === 404\n )\n\n reactServerResult = new ReactServerResult(\n workUnitAsyncStorage.run(\n requestStore,\n ComponentMod.renderToReadableStream,\n RSCPayload,\n clientReferenceManifest.clientModules,\n {\n onError: serverComponentsErrorHandler,\n }\n )\n )\n }\n\n // React doesn't start rendering synchronously but we want the RSC render to have a chance to start\n // before we begin SSR rendering because we want to capture any available preload headers so we tick\n // one task before continuing\n await waitAtLeastOneReactRenderTask()\n\n // If provided, the postpone state should be parsed as JSON so it can be\n // provided to React.\n if (typeof renderOpts.postponed === 'string') {\n if (postponedState?.type === DynamicState.DATA) {\n // We have a complete HTML Document in the prerender but we need to\n // still include the new server component render because it was not included\n // in the static prelude.\n const inlinedReactServerDataStream = createInlinedDataReadableStream(\n reactServerResult.tee(),\n ctx.nonce,\n formState\n )\n\n return chainStreams(\n inlinedReactServerDataStream,\n createDocumentClosingStream()\n )\n } else if (postponedState) {\n // We assume we have dynamic HTML requiring a resume render to complete\n const postponed = getPostponedFromState(postponedState)\n\n const resume = require('react-dom/server.edge')\n .resume as (typeof import('react-dom/server.edge'))['resume']\n\n const htmlStream = await workUnitAsyncStorage.run(\n requestStore,\n resume,\n <App\n reactServerStream={reactServerResult.tee()}\n preinitScripts={preinitScripts}\n clientReferenceManifest={clientReferenceManifest}\n ServerInsertedHTMLProvider={ServerInsertedHTMLProvider}\n ServerInsertedMetadataProvider={ServerInsertedMetadataProvider}\n nonce={ctx.nonce}\n />,\n postponed,\n {\n onError: htmlRendererErrorHandler,\n nonce: ctx.nonce,\n }\n )\n\n const getServerInsertedHTML = makeGetServerInsertedHTML({\n polyfills,\n renderServerInsertedHTML,\n serverCapturedErrors: allCapturedErrors,\n basePath: renderOpts.basePath,\n tracingMetadata: tracingMetadata,\n })\n return await continueDynamicHTMLResume(htmlStream, {\n inlinedDataStream: createInlinedDataReadableStream(\n reactServerResult.consume(),\n ctx.nonce,\n formState\n ),\n getServerInsertedHTML,\n getServerInsertedMetadata,\n })\n }\n }\n\n // This is a regular dynamic render\n const renderToReadableStream = require('react-dom/server.edge')\n .renderToReadableStream as (typeof import('react-dom/server.edge'))['renderToReadableStream']\n\n const htmlStream = await workUnitAsyncStorage.run(\n requestStore,\n renderToReadableStream,\n <App\n reactServerStream={reactServerResult.tee()}\n preinitScripts={preinitScripts}\n clientReferenceManifest={clientReferenceManifest}\n ServerInsertedHTMLProvider={ServerInsertedHTMLProvider}\n ServerInsertedMetadataProvider={ServerInsertedMetadataProvider}\n nonce={ctx.nonce}\n />,\n {\n onError: htmlRendererErrorHandler,\n nonce: ctx.nonce,\n onHeaders: (headers: Headers) => {\n headers.forEach((value, key) => {\n appendHeader(key, value)\n })\n },\n maxHeadersLength: renderOpts.reactMaxHeadersLength,\n bootstrapScripts: [bootstrapScript],\n formState,\n }\n )\n\n const getServerInsertedHTML = makeGetServerInsertedHTML({\n polyfills,\n renderServerInsertedHTML,\n serverCapturedErrors: allCapturedErrors,\n basePath: renderOpts.basePath,\n tracingMetadata: tracingMetadata,\n })\n /**\n * Rules of Static & Dynamic HTML:\n *\n * 1.) We must generate static HTML unless the caller explicitly opts\n * in to dynamic HTML support.\n *\n * 2.) If dynamic HTML support is requested, we must honor that request\n * or throw an error. It is the sole responsibility of the caller to\n * ensure they aren't e.g. requesting dynamic HTML for an AMP page.\n *\n * 3.) If `shouldWaitOnAllReady` is true, which indicates we need to\n * resolve all suspenses and generate a full HTML. e.g. when it's a\n * html limited bot requests, we produce the full HTML content.\n *\n * These rules help ensure that other existing features like request caching,\n * coalescing, and ISR continue working as intended.\n */\n const generateStaticHTML =\n renderOpts.supportsDynamicResponse !== true ||\n !!renderOpts.shouldWaitOnAllReady\n\n const validateRootLayout = renderOpts.dev\n return await continueFizzStream(htmlStream, {\n inlinedDataStream: createInlinedDataReadableStream(\n reactServerResult.consume(),\n ctx.nonce,\n formState\n ),\n isStaticGeneration: generateStaticHTML,\n getServerInsertedHTML,\n getServerInsertedMetadata,\n validateRootLayout,\n })\n } catch (err) {\n if (\n isStaticGenBailoutError(err) ||\n (typeof err === 'object' &&\n err !== null &&\n 'message' in err &&\n typeof err.message === 'string' &&\n err.message.includes(\n 'https://nextjs.org/docs/advanced-features/static-html-export'\n ))\n ) {\n // Ensure that \"next dev\" prints the red error overlay\n throw err\n }\n\n // If a bailout made it to this point, it means it wasn't wrapped inside\n // a suspense boundary.\n const shouldBailoutToCSR = isBailoutToCSRError(err)\n if (shouldBailoutToCSR) {\n const stack = getStackWithoutErrorMessage(err)\n error(\n `${err.reason} should be wrapped in a suspense boundary at page \"${ctx.pagePath}\". Read more: https://nextjs.org/docs/messages/missing-suspense-with-csr-bailout\\n${stack}`\n )\n\n throw err\n }\n\n let errorType: MetadataErrorType | 'redirect' | undefined\n\n if (isHTTPAccessFallbackError(err)) {\n res.statusCode = getAccessFallbackHTTPStatus(err)\n errorType = getAccessFallbackErrorTypeByStatus(res.statusCode)\n } else if (isRedirectError(err)) {\n errorType = 'redirect'\n res.statusCode = getRedirectStatusCodeFromError(err)\n\n const redirectUrl = addPathPrefix(\n getURLFromRedirectError(err),\n renderOpts.basePath\n )\n\n // If there were mutable cookies set, we need to set them on the\n // response.\n const headers = new Headers()\n if (appendMutableCookies(headers, requestStore.mutableCookies)) {\n setHeader('set-cookie', Array.from(headers.values()))\n }\n\n setHeader('location', redirectUrl)\n } else if (!shouldBailoutToCSR) {\n res.statusCode = 500\n }\n\n const [errorPreinitScripts, errorBootstrapScript] = getRequiredScripts(\n renderOpts.buildManifest,\n ctx.assetPrefix,\n renderOpts.crossOrigin,\n renderOpts.subresourceIntegrityManifest,\n getAssetQueryString(ctx, false),\n ctx.nonce,\n '/_not-found/page'\n )\n\n const errorRSCPayload = await workUnitAsyncStorage.run(\n requestStore,\n getErrorRSCPayload,\n tree,\n ctx,\n reactServerErrorsByDigest.has((err as any).digest) ? null : err,\n errorType\n )\n\n const errorServerStream = workUnitAsyncStorage.run(\n requestStore,\n ComponentMod.renderToReadableStream,\n errorRSCPayload,\n clientReferenceManifest.clientModules,\n {\n onError: serverComponentsErrorHandler,\n }\n )\n\n if (reactServerResult === null) {\n // We errored when we did not have an RSC stream to read from. This is not just a render\n // error, we need to throw early\n throw err\n }\n\n try {\n const fizzStream = await workUnitAsyncStorage.run(\n requestStore,\n renderToInitialFizzStream,\n {\n ReactDOMServer: require('react-dom/server.edge'),\n element: (\n <AppWithoutContext\n reactServerStream={errorServerStream}\n preinitScripts={errorPreinitScripts}\n clientReferenceManifest={clientReferenceManifest}\n nonce={ctx.nonce}\n />\n ),\n streamOptions: {\n nonce: ctx.nonce,\n // Include hydration scripts in the HTML\n bootstrapScripts: [errorBootstrapScript],\n formState,\n },\n }\n )\n\n /**\n * Rules of Static & Dynamic HTML:\n *\n * 1.) We must generate static HTML unless the caller explicitly opts\n * in to dynamic HTML support.\n *\n * 2.) If dynamic HTML support is requested, we must honor that request\n * or throw an error. It is the sole responsibility of the caller to\n * ensure they aren't e.g. requesting dynamic HTML for an AMP page.\n * 3.) If `shouldWaitOnAllReady` is true, which indicates we need to\n * resolve all suspenses and generate a full HTML. e.g. when it's a\n * html limited bot requests, we produce the full HTML content.\n *\n * These rules help ensure that other existing features like request caching,\n * coalescing, and ISR continue working as intended.\n */\n const generateStaticHTML =\n renderOpts.supportsDynamicResponse !== true ||\n !!renderOpts.shouldWaitOnAllReady\n const validateRootLayout = renderOpts.dev\n return await continueFizzStream(fizzStream, {\n inlinedDataStream: createInlinedDataReadableStream(\n // This is intentionally using the readable datastream from the\n // main render rather than the flight data from the error page\n // render\n reactServerResult.consume(),\n ctx.nonce,\n formState\n ),\n isStaticGeneration: generateStaticHTML,\n getServerInsertedHTML: makeGetServerInsertedHTML({\n polyfills,\n renderServerInsertedHTML,\n serverCapturedErrors: [],\n basePath: renderOpts.basePath,\n tracingMetadata: tracingMetadata,\n }),\n getServerInsertedMetadata,\n validateRootLayout,\n })\n } catch (finalErr: any) {\n if (\n process.env.NODE_ENV === 'development' &&\n isHTTPAccessFallbackError(finalErr)\n ) {\n const { bailOnRootNotFound } =\n require('../../client/components/dev-root-http-access-fallback-boundary') as typeof import('../../client/components/dev-root-http-access-fallback-boundary')\n bailOnRootNotFound()\n }\n throw finalErr\n }\n }\n}\n\nfunction createValidationOutlet() {\n let resolveValidation: (value: React.ReactNode) => void\n let outlet = new Promise<React.ReactNode>((resolve) => {\n resolveValidation = resolve\n })\n return [resolveValidation!, outlet] as const\n}\n\nasync function spawnDynamicValidationInDev(\n resolveValidation: (validatingElement: React.ReactNode) => void,\n tree: LoaderTree,\n ctx: AppRenderContext,\n isNotFound: boolean,\n clientReferenceManifest: NonNullable<RenderOpts['clientReferenceManifest']>,\n route: string,\n requestStore: RequestStore\n): Promise<void> {\n const { componentMod: ComponentMod } = ctx\n const rootParams = getRootParams(\n ComponentMod.tree,\n ctx.getDynamicParamFromSegment\n )\n\n // Prerender controller represents the lifetime of the prerender.\n // It will be aborted when a Task is complete or a synchronously aborting\n // API is called. Notably during cache-filling renders this does not actually\n // terminate the render itself which will continue until all caches are filled\n const initialServerPrerenderController = new AbortController()\n\n // This controller represents the lifetime of the React render call. Notably\n // during the cache-filling render it is different from the prerender controller\n // because we don't want to end the react render until all caches are filled.\n const initialServerRenderController = new AbortController()\n\n const cacheSignal = new CacheSignal()\n const prerenderResumeDataCache = createPrerenderResumeDataCache()\n const initialServerPrerenderStore: PrerenderStore = {\n type: 'prerender',\n phase: 'render',\n rootParams,\n implicitTags: [],\n renderSignal: initialServerRenderController.signal,\n controller: initialServerPrerenderController,\n cacheSignal,\n dynamicTracking: null,\n revalidate: INFINITE_CACHE,\n expire: INFINITE_CACHE,\n stale: INFINITE_CACHE,\n tags: [],\n prerenderResumeDataCache,\n }\n\n const initialClientController = new AbortController()\n const initialClientPrerenderStore: PrerenderStore = {\n type: 'prerender',\n phase: 'render',\n rootParams,\n implicitTags: [],\n renderSignal: initialClientController.signal,\n controller: initialClientController,\n cacheSignal,\n dynamicTracking: null,\n revalidate: INFINITE_CACHE,\n expire: INFINITE_CACHE,\n stale: INFINITE_CACHE,\n tags: [],\n prerenderResumeDataCache,\n }\n\n // We're not going to use the result of this render because the only time it could be used\n // is if it completes in a microtask and that's likely very rare for any non-trivial app\n const firstAttemptRSCPayload = await workUnitAsyncStorage.run(\n initialServerPrerenderStore,\n getRSCPayload,\n tree,\n ctx,\n isNotFound\n )\n\n let initialServerStream\n try {\n initialServerStream = workUnitAsyncStorage.run(\n initialServerPrerenderStore,\n ComponentMod.renderToReadableStream,\n firstAttemptRSCPayload,\n clientReferenceManifest.clientModules,\n {\n onError: (err) => {\n const digest = getDigestForWellKnownError(err)\n\n if (digest) {\n return digest\n }\n\n if (\n initialServerPrerenderController.signal.aborted ||\n initialServerRenderController.signal.aborted\n ) {\n // The render aborted before this error was handled which indicates\n // the error is caused by unfinished components within the render\n return\n } else if (\n process.env.NEXT_DEBUG_BUILD ||\n process.env.__NEXT_VERBOSE_LOGGING\n ) {\n printDebugThrownValueForProspectiveRender(err, route)\n }\n },\n signal: initialServerRenderController.signal,\n }\n )\n } catch (err: unknown) {\n if (\n initialServerPrerenderController.signal.aborted ||\n initialServerRenderController.signal.aborted\n ) {\n // These are expected errors that might error the prerender. we ignore them.\n } else if (\n process.env.NEXT_DEBUG_BUILD ||\n process.env.__NEXT_VERBOSE_LOGGING\n ) {\n // We don't normally log these errors because we are going to retry anyway but\n // it can be useful for debugging Next.js itself to get visibility here when needed\n printDebugThrownValueForProspectiveRender(err, route)\n }\n }\n\n const nonce = '1'\n const { ServerInsertedHTMLProvider } = createServerInsertedHTML()\n const { ServerInsertedMetadataProvider } = createServerInsertedMetadata(nonce)\n\n if (initialServerStream) {\n const [warmupStream, renderStream] = initialServerStream.tee()\n initialServerStream = null\n // Before we attempt the SSR initial render we need to ensure all client modules\n // are already loaded.\n await warmFlightResponse(warmupStream, clientReferenceManifest)\n\n const prerender = require('react-dom/static.edge')\n .prerender as (typeof import('react-dom/static.edge'))['prerender']\n const pendingInitialClientResult = workUnitAsyncStorage.run(\n initialClientPrerenderStore,\n prerender,\n <App\n reactServerStream={renderStream}\n preinitScripts={() => {}}\n clientReferenceManifest={clientReferenceManifest}\n ServerInsertedHTMLProvider={ServerInsertedHTMLProvider}\n ServerInsertedMetadataProvider={ServerInsertedMetadataProvider}\n nonce={nonce}\n />,\n {\n signal: initialClientController.signal,\n onError: (err) => {\n const digest = getDigestForWellKnownError(err)\n\n if (digest) {\n return digest\n }\n\n if (initialClientController.signal.aborted) {\n // These are expected errors that might error the prerender. we ignore them.\n } else if (\n process.env.NEXT_DEBUG_BUILD ||\n process.env.__NEXT_VERBOSE_LOGGING\n ) {\n // We don't normally log these errors because we are going to retry anyway but\n // it can be useful for debugging Next.js itself to get visibility here when needed\n printDebugThrownValueForProspectiveRender(err, route)\n }\n },\n }\n )\n pendingInitialClientResult.catch((err: unknown) => {\n if (initialClientController.signal.aborted) {\n // We aborted the render normally and can ignore this error\n } else {\n // We're going to retry to so we normally would suppress this error but\n // when verbose logging is on we print it\n if (process.env.__NEXT_VERBOSE_LOGGING) {\n printDebugThrownValueForProspectiveRender(err, route)\n }\n }\n })\n }\n\n await cacheSignal.cacheReady()\n // It is important that we abort the SSR render first to avoid\n // connection closed errors from having an incomplete RSC stream\n initialClientController.abort()\n initialServerRenderController.abort()\n initialServerPrerenderController.abort()\n\n // We've now filled caches and triggered any inadvertent sync bailouts\n // due to lazy module initialization. We can restart our render to capture results\n\n const finalServerController = new AbortController()\n const serverDynamicTracking = createDynamicTrackingState(false)\n\n const finalServerPrerenderStore: PrerenderStore = {\n type: 'prerender',\n phase: 'render',\n rootParams,\n implicitTags: [],\n renderSignal: finalServerController.signal,\n controller: finalServerController,\n // During the final prerender we don't need to track cache access so we omit the signal\n cacheSignal: null,\n dynamicTracking: serverDynamicTracking,\n revalidate: INFINITE_CACHE,\n expire: INFINITE_CACHE,\n stale: INFINITE_CACHE,\n tags: [],\n prerenderResumeDataCache,\n }\n\n const finalClientController = new AbortController()\n const clientDynamicTracking = createDynamicTrackingState(false)\n const dynamicValidation = createDynamicValidationState()\n\n const finalClientPrerenderStore: PrerenderStore = {\n type: 'prerender',\n phase: 'render',\n rootParams,\n implicitTags: [],\n renderSignal: finalClientController.signal,\n controller: finalClientController,\n // During the final prerender we don't need to track cache access so we omit the signal\n cacheSignal: null,\n dynamicTracking: clientDynamicTracking,\n revalidate: INFINITE_CACHE,\n expire: INFINITE_CACHE,\n stale: INFINITE_CACHE,\n tags: [],\n prerenderResumeDataCache,\n }\n\n const finalServerPayload = await workUnitAsyncStorage.run(\n finalServerPrerenderStore,\n getRSCPayload,\n tree,\n ctx,\n isNotFound\n )\n\n const serverPrerenderStreamResult = await prerenderServerWithPhases(\n finalServerController.signal,\n () =>\n workUnitAsyncStorage.run(\n finalServerPrerenderStore,\n ComponentMod.renderToReadableStream,\n finalServerPayload,\n clientReferenceManifest.clientModules,\n {\n onError: (err) => {\n if (isUseCacheTimeoutError(err)) {\n return err.digest\n }\n\n if (\n finalServerController.signal.aborted &&\n isPrerenderInterruptedError(err)\n ) {\n return err.digest\n }\n\n return getDigestForWellKnownError(err)\n },\n signal: finalServerController.signal,\n }\n ),\n () => {\n finalServerController.abort()\n }\n )\n\n let rootDidError = false\n const serverPhasedStream = serverPrerenderStreamResult.asPhasedStream()\n try {\n const prerender = require('react-dom/static.edge')\n .prerender as (typeof import('react-dom/static.edge'))['prerender']\n await prerenderClientWithPhases(\n () =>\n workUnitAsyncStorage.run(\n finalClientPrerenderStore,\n prerender,\n <App\n reactServerStream={serverPhasedStream}\n preinitScripts={() => {}}\n clientReferenceManifest={clientReferenceManifest}\n ServerInsertedHTMLProvider={ServerInsertedHTMLProvider}\n ServerInsertedMetadataProvider={ServerInsertedMetadataProvider}\n nonce={ctx.nonce}\n />,\n {\n signal: finalClientController.signal,\n onError: (err, errorInfo) => {\n if (isUseCacheTimeoutError(err)) {\n dynamicValidation.dynamicErrors.push(err)\n\n return\n }\n\n if (\n isPrerenderInterruptedError(err) ||\n finalClientController.signal.aborted\n ) {\n if (!rootDidError) {\n // If the root errored before we observe this error then it wasn't caused by something dynamic.\n // If the root did not error or is erroring because of a sync dynamic API or a prerender interrupt error\n // then we are a dynamic route.\n requestStore.usedDynamic = true\n }\n\n const componentStack = errorInfo.componentStack\n if (typeof componentStack === 'string') {\n trackAllowedDynamicAccess(\n route,\n componentStack,\n dynamicValidation,\n serverDynamicTracking,\n clientDynamicTracking\n )\n }\n return\n }\n\n return getDigestForWellKnownError(err)\n },\n }\n ),\n () => {\n finalClientController.abort()\n serverPhasedStream.assertExhausted()\n }\n )\n } catch (err) {\n rootDidError = true\n if (\n isPrerenderInterruptedError(err) ||\n finalClientController.signal.aborted\n ) {\n // we don't have a root because the abort errored in the root. We can just ignore this error\n } else {\n // If an error is thrown in the root before prerendering is aborted, we\n // don't want to rethrow it here, otherwise this would lead to a hanging\n // response and unhandled rejection. We also don't want to log it, because\n // it's most likely already logged as part of the normal render. So we\n // just fall through here, to make sure `resolveValidation` is called.\n }\n }\n\n function LogDynamicValidation() {\n try {\n throwIfDisallowedDynamic(\n route,\n dynamicValidation,\n serverDynamicTracking,\n clientDynamicTracking\n )\n } catch {}\n return null\n }\n\n resolveValidation(<LogDynamicValidation />)\n}\n\ntype PrerenderToStreamResult = {\n stream: ReadableStream<Uint8Array>\n digestErrorsMap: Map<string, DigestedError>\n ssrErrors: Array<unknown>\n dynamicAccess?: null | Array<DynamicAccess>\n collectedRevalidate: number\n collectedExpire: number\n collectedStale: number\n collectedTags: null | string[]\n}\n\n/**\n * Determines whether we should generate static flight data.\n */\nfunction shouldGenerateStaticFlightData(workStore: WorkStore): boolean {\n const { isStaticGeneration } = workStore\n if (!isStaticGeneration) return false\n\n return true\n}\n\nasync function prerenderToStream(\n req: BaseNextRequest,\n res: BaseNextResponse,\n ctx: AppRenderContext,\n metadata: AppPageRenderResultMetadata,\n workStore: WorkStore,\n tree: LoaderTree,\n implicitTags: Array<string>\n): Promise<PrerenderToStreamResult> {\n // When prerendering formState is always null. We still include it\n // because some shared APIs expect a formState value and this is slightly\n // more explicit than making it an optional function argument\n const formState = null\n const rootParams = getRootParams(tree, ctx.getDynamicParamFromSegment)\n\n const renderOpts = ctx.renderOpts\n const ComponentMod = renderOpts.ComponentMod\n // TODO: fix this typescript\n const clientReferenceManifest = renderOpts.clientReferenceManifest!\n const fallbackRouteParams = workStore.fallbackRouteParams\n\n const { ServerInsertedHTMLProvider, renderServerInsertedHTML } =\n createServerInsertedHTML()\n const { ServerInsertedMetadataProvider, getServerInsertedMetadata } =\n createServerInsertedMetadata(ctx.nonce)\n\n const tracingMetadata = getTracedMetadata(\n getTracer().getTracePropagationData(),\n renderOpts.experimental.clientTraceMetadata\n )\n\n const polyfills: JSX.IntrinsicElements['script'][] =\n renderOpts.buildManifest.polyfillFiles\n .filter(\n (polyfill) =>\n polyfill.endsWith('.js') && !polyfill.endsWith('.module.js')\n )\n .map((polyfill) => ({\n src: `${ctx.assetPrefix}/_next/${polyfill}${getAssetQueryString(\n ctx,\n false\n )}`,\n integrity: renderOpts.subresourceIntegrityManifest?.[polyfill],\n crossOrigin: renderOpts.crossOrigin,\n noModule: true,\n nonce: ctx.nonce,\n }))\n\n const [preinitScripts, bootstrapScript] = getRequiredScripts(\n renderOpts.buildManifest,\n // Why is assetPrefix optional on renderOpts?\n // @TODO make it default empty string on renderOpts and get rid of it from ctx\n ctx.assetPrefix,\n renderOpts.crossOrigin,\n renderOpts.subresourceIntegrityManifest,\n getAssetQueryString(ctx, true),\n ctx.nonce,\n renderOpts.page\n )\n\n const reactServerErrorsByDigest: Map<string, DigestedError> = new Map()\n // We don't report errors during prerendering through our instrumentation hooks\n const silenceLogger = !!renderOpts.experimental.isRoutePPREnabled\n function onHTMLRenderRSCError(err: DigestedError) {\n return renderOpts.onInstrumentationRequestError?.(\n err,\n req,\n createErrorContext(ctx, 'react-server-components')\n )\n }\n const serverComponentsErrorHandler = createHTMLReactServerErrorHandler(\n !!renderOpts.dev,\n !!renderOpts.nextExport,\n reactServerErrorsByDigest,\n silenceLogger,\n onHTMLRenderRSCError\n )\n\n function onHTMLRenderSSRError(err: DigestedError) {\n return renderOpts.onInstrumentationRequestError?.(\n err,\n req,\n createErrorContext(ctx, 'server-rendering')\n )\n }\n const allCapturedErrors: Array<unknown> = []\n const htmlRendererErrorHandler = createHTMLErrorHandler(\n !!renderOpts.dev,\n !!renderOpts.nextExport,\n reactServerErrorsByDigest,\n allCapturedErrors,\n silenceLogger,\n onHTMLRenderSSRError\n )\n\n let reactServerPrerenderResult:\n | null\n | ReactServerPrerenderResult\n | ServerPrerenderStreamResult = null\n const setMetadataHeader = (name: string) => {\n metadata.headers ??= {}\n metadata.headers[name] = res.getHeader(name)\n }\n const setHeader = (name: string, value: string | string[]) => {\n res.setHeader(name, value)\n setMetadataHeader(name)\n return res\n }\n const appendHeader = (name: string, value: string | string[]) => {\n if (Array.isArray(value)) {\n value.forEach((item) => {\n res.appendHeader(name, item)\n })\n } else {\n res.appendHeader(name, value)\n }\n setMetadataHeader(name)\n }\n\n let prerenderStore: PrerenderStore | null = null\n\n try {\n if (renderOpts.experimental.dynamicIO) {\n if (renderOpts.experimental.isRoutePPREnabled) {\n /**\n * dynamicIO with PPR\n *\n * The general approach is to render the RSC stream first allowing any cache reads to resolve.\n * Once we have settled all cache reads we restart the render and abort after a single Task.\n *\n * Unlike with the non PPR case we can't synchronously abort the render when a dynamic API is used\n * during the initial render because we need to ensure all caches can be filled as part of the initial Task\n * and a synchronous abort might prevent us from filling all caches.\n *\n * Once the render is complete we allow the SSR render to finish and use a combination of the postponed state\n * and the reactServerIsDynamic value to determine how to treat the resulting render\n */\n\n // Prerender controller represents the lifetime of the prerender.\n // It will be aborted when a Task is complete or a synchronously aborting\n // API is called. Notably during cache-filling renders this does not actually\n // terminate the render itself which will continue until all caches are filled\n const initialServerPrerenderController = new AbortController()\n\n // This controller represents the lifetime of the React render call. Notably\n // during the cache-filling render it is different from the prerender controller\n // because we don't want to end the react render until all caches are filled.\n const initialServerRenderController = new AbortController()\n\n // The cacheSignal helps us track whether caches are still filling or we are ready\n // to cut the render off.\n const cacheSignal = new CacheSignal()\n\n // The resume data cache here should use a fresh instance as it's\n // performing a fresh prerender. If we get to implementing the\n // prerendering of an already prerendered page, we should use the passed\n // resume data cache instead.\n const prerenderResumeDataCache = createPrerenderResumeDataCache()\n\n const initialServerPrerenderStore: PrerenderStore = (prerenderStore = {\n type: 'prerender',\n phase: 'render',\n rootParams,\n implicitTags: implicitTags,\n renderSignal: initialServerRenderController.signal,\n controller: initialServerPrerenderController,\n cacheSignal,\n dynamicTracking: null,\n revalidate: INFINITE_CACHE,\n expire: INFINITE_CACHE,\n stale: INFINITE_CACHE,\n tags: [...implicitTags],\n prerenderResumeDataCache,\n })\n\n // We're not going to use the result of this render because the only time it could be used\n // is if it completes in a microtask and that's likely very rare for any non-trivial app\n const initialServerPayload = await workUnitAsyncStorage.run(\n initialServerPrerenderStore,\n getRSCPayload,\n tree,\n ctx,\n res.statusCode === 404\n )\n\n const pendingInitialServerResult = workUnitAsyncStorage.run(\n initialServerPrerenderStore,\n ComponentMod.prerender,\n initialServerPayload,\n clientReferenceManifest.clientModules,\n {\n onError: (err) => {\n const digest = getDigestForWellKnownError(err)\n\n if (digest) {\n return digest\n }\n\n if (initialServerPrerenderController.signal.aborted) {\n // The render aborted before this error was handled which indicates\n // the error is caused by unfinished components within the render\n return\n } else if (\n process.env.NEXT_DEBUG_BUILD ||\n process.env.__NEXT_VERBOSE_LOGGING\n ) {\n printDebugThrownValueForProspectiveRender(err, workStore.route)\n }\n },\n // we don't care to track postpones during the prospective render because we need\n // to always do a final render anyway\n onPostpone: undefined,\n // We don't want to stop rendering until the cacheSignal is complete so we pass\n // a different signal to this render call than is used by dynamic APIs to signify\n // transitioning out of the prerender environment\n signal: initialServerRenderController.signal,\n }\n )\n\n await cacheSignal.cacheReady()\n initialServerRenderController.abort()\n initialServerPrerenderController.abort()\n\n let initialServerResult\n try {\n initialServerResult = await createReactServerPrerenderResult(\n pendingInitialServerResult\n )\n } catch (err) {\n if (\n initialServerRenderController.signal.aborted ||\n initialServerPrerenderController.signal.aborted\n ) {\n // These are expected errors that might error the prerender. we ignore them.\n } else if (\n process.env.NEXT_DEBUG_BUILD ||\n process.env.__NEXT_VERBOSE_LOGGING\n ) {\n // We don't normally log these errors because we are going to retry anyway but\n // it can be useful for debugging Next.js itself to get visibility here when needed\n printDebugThrownValueForProspectiveRender(err, workStore.route)\n }\n }\n\n if (initialServerResult) {\n // Before we attempt the SSR initial render we need to ensure all client modules\n // are already loaded.\n await warmFlightResponse(\n initialServerResult.asStream(),\n clientReferenceManifest\n )\n\n const initialClientController = new AbortController()\n const initialClientPrerenderStore: PrerenderStore = {\n type: 'prerender',\n phase: 'render',\n rootParams,\n implicitTags: implicitTags,\n renderSignal: initialClientController.signal,\n controller: initialClientController,\n cacheSignal: null,\n dynamicTracking: null,\n revalidate: INFINITE_CACHE,\n expire: INFINITE_CACHE,\n stale: INFINITE_CACHE,\n tags: [...implicitTags],\n prerenderResumeDataCache,\n }\n\n const prerender = require('react-dom/static.edge')\n .prerender as (typeof import('react-dom/static.edge'))['prerender']\n await prerenderAndAbortInSequentialTasks(\n () =>\n workUnitAsyncStorage.run(\n initialClientPrerenderStore,\n prerender,\n <App\n reactServerStream={initialServerResult.asUnclosingStream()}\n preinitScripts={preinitScripts}\n clientReferenceManifest={clientReferenceManifest}\n ServerInsertedHTMLProvider={ServerInsertedHTMLProvider}\n ServerInsertedMetadataProvider={\n ServerInsertedMetadataProvider\n }\n nonce={ctx.nonce}\n />,\n {\n signal: initialClientController.signal,\n onError: (err) => {\n const digest = getDigestForWellKnownError(err)\n\n if (digest) {\n return digest\n }\n\n if (initialClientController.signal.aborted) {\n // These are expected errors that might error the prerender. we ignore them.\n } else if (\n process.env.NEXT_DEBUG_BUILD ||\n process.env.__NEXT_VERBOSE_LOGGING\n ) {\n // We don't normally log these errors because we are going to retry anyway but\n // it can be useful for debugging Next.js itself to get visibility here when needed\n printDebugThrownValueForProspectiveRender(\n err,\n workStore.route\n )\n }\n },\n bootstrapScripts: [bootstrapScript],\n }\n ),\n () => {\n initialClientController.abort()\n }\n ).catch((err) => {\n if (\n initialServerRenderController.signal.aborted ||\n isPrerenderInterruptedError(err)\n ) {\n // These are expected errors that might error the prerender. we ignore them.\n } else if (\n process.env.NEXT_DEBUG_BUILD ||\n process.env.__NEXT_VERBOSE_LOGGING\n ) {\n // We don't normally log these errors because we are going to retry anyway but\n // it can be useful for debugging Next.js itself to get visibility here when needed\n printDebugThrownValueForProspectiveRender(err, workStore.route)\n }\n })\n }\n\n let serverIsDynamic = false\n const finalServerController = new AbortController()\n const serverDynamicTracking = createDynamicTrackingState(\n renderOpts.isDebugDynamicAccesses\n )\n\n const finalRenderPrerenderStore: PrerenderStore = (prerenderStore = {\n type: 'prerender',\n phase: 'render',\n rootParams,\n implicitTags: implicitTags,\n renderSignal: finalServerController.signal,\n controller: finalServerController,\n // During the final prerender we don't need to track cache access so we omit the signal\n cacheSignal: null,\n dynamicTracking: serverDynamicTracking,\n revalidate: INFINITE_CACHE,\n expire: INFINITE_CACHE,\n stale: INFINITE_CACHE,\n tags: [...implicitTags],\n prerenderResumeDataCache,\n })\n\n const finalAttemptRSCPayload = await workUnitAsyncStorage.run(\n finalRenderPrerenderStore,\n getRSCPayload,\n tree,\n ctx,\n res.statusCode === 404\n )\n let prerenderIsPending = true\n const reactServerResult = (reactServerPrerenderResult =\n await createReactServerPrerenderResult(\n prerenderAndAbortInSequentialTasks(\n async () => {\n const prerenderResult = await workUnitAsyncStorage.run(\n // The store to scope\n finalRenderPrerenderStore,\n // The function to run\n ComponentMod.prerender,\n // ... the arguments for the function to run\n finalAttemptRSCPayload,\n clientReferenceManifest.clientModules,\n {\n onError: (err: unknown) => {\n return serverComponentsErrorHandler(err)\n },\n signal: finalServerController.signal,\n }\n )\n prerenderIsPending = false\n return prerenderResult\n },\n () => {\n if (finalServerController.signal.aborted) {\n // If the server controller is already aborted we must have called something\n // that required aborting the prerender synchronously such as with new Date()\n serverIsDynamic = true\n return\n }\n\n if (prerenderIsPending) {\n // If prerenderIsPending then we have blocked for longer than a Task and we assume\n // there is something unfinished.\n serverIsDynamic = true\n }\n finalServerController.abort()\n }\n )\n ))\n\n const clientDynamicTracking = createDynamicTrackingState(\n renderOpts.isDebugDynamicAccesses\n )\n const finalClientController = new AbortController()\n const finalClientPrerenderStore: PrerenderStore = {\n type: 'prerender',\n phase: 'render',\n rootParams,\n implicitTags: implicitTags,\n renderSignal: finalClientController.signal,\n controller: finalClientController,\n // For HTML Generation we don't need to track cache reads (RSC only)\n cacheSignal: null,\n dynamicTracking: clientDynamicTracking,\n revalidate: INFINITE_CACHE,\n expire: INFINITE_CACHE,\n stale: INFINITE_CACHE,\n tags: [...implicitTags],\n prerenderResumeDataCache,\n }\n\n let clientIsDynamic = false\n let dynamicValidation = createDynamicValidationState()\n\n const prerender = require('react-dom/static.edge')\n .prerender as (typeof import('react-dom/static.edge'))['prerender']\n let { prelude, postponed } = await prerenderAndAbortInSequentialTasks(\n () =>\n workUnitAsyncStorage.run(\n finalClientPrerenderStore,\n prerender,\n <App\n reactServerStream={reactServerResult.asUnclosingStream()}\n preinitScripts={preinitScripts}\n clientReferenceManifest={clientReferenceManifest}\n ServerInsertedHTMLProvider={ServerInsertedHTMLProvider}\n ServerInsertedMetadataProvider={ServerInsertedMetadataProvider}\n nonce={ctx.nonce}\n />,\n {\n signal: finalClientController.signal,\n onError: (err: unknown, errorInfo: ErrorInfo) => {\n if (\n isPrerenderInterruptedError(err) ||\n finalClientController.signal.aborted\n ) {\n clientIsDynamic = true\n\n const componentStack: string | undefined = (\n errorInfo as any\n ).componentStack\n if (typeof componentStack === 'string') {\n trackAllowedDynamicAccess(\n workStore.route,\n componentStack,\n dynamicValidation,\n serverDynamicTracking,\n clientDynamicTracking\n )\n }\n return\n }\n\n return htmlRendererErrorHandler(err, errorInfo)\n },\n onHeaders: (headers: Headers) => {\n headers.forEach((value, key) => {\n appendHeader(key, value)\n })\n },\n maxHeadersLength: renderOpts.reactMaxHeadersLength,\n bootstrapScripts: [bootstrapScript],\n }\n ),\n () => {\n finalClientController.abort()\n }\n )\n\n throwIfDisallowedDynamic(\n workStore.route,\n dynamicValidation,\n serverDynamicTracking,\n clientDynamicTracking\n )\n\n const getServerInsertedHTML = makeGetServerInsertedHTML({\n polyfills,\n renderServerInsertedHTML,\n serverCapturedErrors: allCapturedErrors,\n basePath: renderOpts.basePath,\n tracingMetadata: tracingMetadata,\n })\n\n const flightData = await streamToBuffer(reactServerResult.asStream())\n metadata.flightData = flightData\n metadata.segmentData = await collectSegmentData(\n flightData,\n finalRenderPrerenderStore,\n ComponentMod,\n renderOpts,\n fallbackRouteParams\n )\n\n if (serverIsDynamic || clientIsDynamic) {\n if (postponed != null) {\n // Dynamic HTML case\n metadata.postponed = await getDynamicHTMLPostponedState(\n postponed,\n fallbackRouteParams,\n prerenderResumeDataCache\n )\n } else {\n // Dynamic Data case\n metadata.postponed = await getDynamicDataPostponedState(\n prerenderResumeDataCache\n )\n }\n reactServerResult.consume()\n return {\n digestErrorsMap: reactServerErrorsByDigest,\n ssrErrors: allCapturedErrors,\n stream: await continueDynamicPrerender(prelude, {\n getServerInsertedHTML,\n getServerInsertedMetadata,\n }),\n dynamicAccess: consumeDynamicAccess(\n serverDynamicTracking,\n clientDynamicTracking\n ),\n // TODO: Should this include the SSR pass?\n collectedRevalidate: finalRenderPrerenderStore.revalidate,\n collectedExpire: finalRenderPrerenderStore.expire,\n collectedStale: finalRenderPrerenderStore.stale,\n collectedTags: finalRenderPrerenderStore.tags,\n }\n } else {\n // Static case\n if (workStore.forceDynamic) {\n throw new StaticGenBailoutError(\n 'Invariant: a Page with `dynamic = \"force-dynamic\"` did not trigger the dynamic pathway. This is a bug in Next.js'\n )\n }\n\n let htmlStream = prelude\n if (postponed != null) {\n // We postponed but nothing dynamic was used. We resume the render now and immediately abort it\n // so we can set all the postponed boundaries to client render mode before we store the HTML response\n const resume = require('react-dom/server.edge')\n .resume as (typeof import('react-dom/server.edge'))['resume']\n\n // We don't actually want to render anything so we just pass a stream\n // that never resolves. The resume call is going to abort immediately anyway\n const foreverStream = new ReadableStream<Uint8Array>()\n\n const resumeStream = await resume(\n <App\n reactServerStream={foreverStream}\n preinitScripts={() => {}}\n clientReferenceManifest={clientReferenceManifest}\n ServerInsertedHTMLProvider={ServerInsertedHTMLProvider}\n ServerInsertedMetadataProvider={ServerInsertedMetadataProvider}\n nonce={ctx.nonce}\n />,\n JSON.parse(JSON.stringify(postponed)),\n {\n signal: createPostponedAbortSignal('static prerender resume'),\n onError: htmlRendererErrorHandler,\n nonce: ctx.nonce,\n }\n )\n\n // First we write everything from the prerender, then we write everything from the aborted resume render\n htmlStream = chainStreams(prelude, resumeStream)\n }\n\n return {\n digestErrorsMap: reactServerErrorsByDigest,\n ssrErrors: allCapturedErrors,\n stream: await continueStaticPrerender(htmlStream, {\n inlinedDataStream: createInlinedDataReadableStream(\n reactServerResult.consumeAsStream(),\n ctx.nonce,\n formState\n ),\n getServerInsertedHTML,\n getServerInsertedMetadata,\n }),\n dynamicAccess: consumeDynamicAccess(\n serverDynamicTracking,\n clientDynamicTracking\n ),\n // TODO: Should this include the SSR pass?\n collectedRevalidate: finalRenderPrerenderStore.revalidate,\n collectedExpire: finalRenderPrerenderStore.expire,\n collectedStale: finalRenderPrerenderStore.stale,\n collectedTags: finalRenderPrerenderStore.tags,\n }\n }\n } else {\n /**\n * dynamicIO without PPR\n *\n * The general approach is to render the RSC tree first allowing for any inflight\n * caches to resolve. Once we have settled inflight caches we can check and see if any\n * synchronous dynamic APIs were used. If so we don't need to bother doing anything more\n * because the page will be dynamic on re-render anyway\n *\n * If no sync dynamic APIs were used we then re-render and abort after a single Task.\n * If the render errors we know that the page has some dynamic IO. This assumes and relies\n * upon caches reading from a in process memory cache and resolving in a microtask. While this\n * is true from our own default cache implementation and if you don't exceed our LRU size it\n * might not be true for custom cache implementations.\n *\n * Future implementations can do some different strategies during build like using IPC to\n * synchronously fill caches during this special rendering mode. For now this heuristic should work\n */\n\n const cache = workStore.incrementalCache\n if (!cache) {\n throw new Error(\n 'Expected incremental cache to exist. This is a bug in Next.js'\n )\n }\n\n // Prerender controller represents the lifetime of the prerender.\n // It will be aborted when a Task is complete or a synchronously aborting\n // API is called. Notably during cache-filling renders this does not actually\n // terminate the render itself which will continue until all caches are filled\n const initialServerPrerenderController = new AbortController()\n\n // This controller represents the lifetime of the React render call. Notably\n // during the cache-filling render it is different from the prerender controller\n // because we don't want to end the react render until all caches are filled.\n const initialServerRenderController = new AbortController()\n\n const cacheSignal = new CacheSignal()\n const prerenderResumeDataCache = createPrerenderResumeDataCache()\n\n const initialServerPrerenderStore: PrerenderStore = (prerenderStore = {\n type: 'prerender',\n phase: 'render',\n rootParams,\n implicitTags: implicitTags,\n renderSignal: initialServerRenderController.signal,\n controller: initialServerPrerenderController,\n cacheSignal,\n dynamicTracking: null,\n revalidate: INFINITE_CACHE,\n expire: INFINITE_CACHE,\n stale: INFINITE_CACHE,\n tags: [...implicitTags],\n prerenderResumeDataCache,\n })\n\n const initialClientController = new AbortController()\n const initialClientPrerenderStore: PrerenderStore = (prerenderStore = {\n type: 'prerender',\n phase: 'render',\n rootParams,\n implicitTags: implicitTags,\n renderSignal: initialClientController.signal,\n controller: initialClientController,\n cacheSignal,\n dynamicTracking: null,\n revalidate: INFINITE_CACHE,\n expire: INFINITE_CACHE,\n stale: INFINITE_CACHE,\n tags: [...implicitTags],\n prerenderResumeDataCache,\n })\n\n // We're not going to use the result of this render because the only time it could be used\n // is if it completes in a microtask and that's likely very rare for any non-trivial app\n const firstAttemptRSCPayload = await workUnitAsyncStorage.run(\n initialServerPrerenderStore,\n getRSCPayload,\n tree,\n ctx,\n res.statusCode === 404\n )\n\n let initialServerStream\n try {\n initialServerStream = workUnitAsyncStorage.run(\n initialServerPrerenderStore,\n ComponentMod.renderToReadableStream,\n firstAttemptRSCPayload,\n clientReferenceManifest.clientModules,\n {\n onError: (err) => {\n const digest = getDigestForWellKnownError(err)\n\n if (digest) {\n return digest\n }\n\n if (\n initialServerPrerenderController.signal.aborted ||\n initialServerRenderController.signal.aborted\n ) {\n // The render aborted before this error was handled which indicates\n // the error is caused by unfinished components within the render\n return\n } else if (\n process.env.NEXT_DEBUG_BUILD ||\n process.env.__NEXT_VERBOSE_LOGGING\n ) {\n printDebugThrownValueForProspectiveRender(\n err,\n workStore.route\n )\n }\n },\n signal: initialServerRenderController.signal,\n }\n )\n } catch (err: unknown) {\n if (\n initialServerPrerenderController.signal.aborted ||\n initialServerRenderController.signal.aborted\n ) {\n // These are expected errors that might error the prerender. we ignore them.\n } else if (\n process.env.NEXT_DEBUG_BUILD ||\n process.env.__NEXT_VERBOSE_LOGGING\n ) {\n // We don't normally log these errors because we are going to retry anyway but\n // it can be useful for debugging Next.js itself to get visibility here when needed\n printDebugThrownValueForProspectiveRender(err, workStore.route)\n }\n }\n\n if (initialServerStream) {\n const [warmupStream, renderStream] = initialServerStream.tee()\n initialServerStream = null\n // Before we attempt the SSR initial render we need to ensure all client modules\n // are already loaded.\n await warmFlightResponse(warmupStream, clientReferenceManifest)\n\n const prerender = require('react-dom/static.edge')\n .prerender as (typeof import('react-dom/static.edge'))['prerender']\n const pendingInitialClientResult = workUnitAsyncStorage.run(\n initialClientPrerenderStore,\n prerender,\n <App\n reactServerStream={renderStream}\n preinitScripts={preinitScripts}\n clientReferenceManifest={clientReferenceManifest}\n ServerInsertedHTMLProvider={ServerInsertedHTMLProvider}\n ServerInsertedMetadataProvider={ServerInsertedMetadataProvider}\n nonce={ctx.nonce}\n />,\n {\n signal: initialClientController.signal,\n onError: (err) => {\n const digest = getDigestForWellKnownError(err)\n\n if (digest) {\n return digest\n }\n\n if (initialClientController.signal.aborted) {\n // These are expected errors that might error the prerender. we ignore them.\n } else if (\n process.env.NEXT_DEBUG_BUILD ||\n process.env.__NEXT_VERBOSE_LOGGING\n ) {\n // We don't normally log these errors because we are going to retry anyway but\n // it can be useful for debugging Next.js itself to get visibility here when needed\n printDebugThrownValueForProspectiveRender(\n err,\n workStore.route\n )\n }\n },\n bootstrapScripts: [bootstrapScript],\n }\n )\n pendingInitialClientResult.catch((err: unknown) => {\n if (initialClientController.signal.aborted) {\n // We aborted the render normally and can ignore this error\n } else {\n // We're going to retry to so we normally would suppress this error but\n // when verbose logging is on we print it\n if (process.env.__NEXT_VERBOSE_LOGGING) {\n printDebugThrownValueForProspectiveRender(err, workStore.route)\n }\n }\n })\n }\n\n await cacheSignal.cacheReady()\n // It is important that we abort the SSR render first to avoid\n // connection closed errors from having an incomplete RSC stream\n initialClientController.abort()\n initialServerRenderController.abort()\n initialServerPrerenderController.abort()\n\n // We've now filled caches and triggered any inadvertant sync bailouts\n // due to lazy module initialization. We can restart our render to capture results\n\n let serverIsDynamic = false\n const finalServerController = new AbortController()\n const serverDynamicTracking = createDynamicTrackingState(\n renderOpts.isDebugDynamicAccesses\n )\n\n const finalServerPrerenderStore: PrerenderStore = (prerenderStore = {\n type: 'prerender',\n phase: 'render',\n rootParams,\n implicitTags: implicitTags,\n renderSignal: finalServerController.signal,\n controller: finalServerController,\n // During the final prerender we don't need to track cache access so we omit the signal\n cacheSignal: null,\n dynamicTracking: serverDynamicTracking,\n revalidate: INFINITE_CACHE,\n expire: INFINITE_CACHE,\n stale: INFINITE_CACHE,\n tags: [...implicitTags],\n prerenderResumeDataCache,\n })\n\n let clientIsDynamic = false\n const finalClientController = new AbortController()\n const clientDynamicTracking = createDynamicTrackingState(\n renderOpts.isDebugDynamicAccesses\n )\n const dynamicValidation = createDynamicValidationState()\n\n const finalClientPrerenderStore: PrerenderStore = (prerenderStore = {\n type: 'prerender',\n phase: 'render',\n rootParams,\n implicitTags: implicitTags,\n renderSignal: finalClientController.signal,\n controller: finalClientController,\n // During the final prerender we don't need to track cache access so we omit the signal\n cacheSignal: null,\n dynamicTracking: clientDynamicTracking,\n revalidate: INFINITE_CACHE,\n expire: INFINITE_CACHE,\n stale: INFINITE_CACHE,\n tags: [...implicitTags],\n prerenderResumeDataCache,\n })\n\n const finalServerPayload = await workUnitAsyncStorage.run(\n finalServerPrerenderStore,\n getRSCPayload,\n tree,\n ctx,\n res.statusCode === 404\n )\n\n const serverPrerenderStreamResult = (reactServerPrerenderResult =\n await prerenderServerWithPhases(\n finalServerController.signal,\n () =>\n workUnitAsyncStorage.run(\n finalServerPrerenderStore,\n ComponentMod.renderToReadableStream,\n finalServerPayload,\n clientReferenceManifest.clientModules,\n {\n onError: (err: unknown) => {\n if (finalServerController.signal.aborted) {\n serverIsDynamic = true\n if (isPrerenderInterruptedError(err)) {\n return err.digest\n }\n return getDigestForWellKnownError(err)\n }\n\n return serverComponentsErrorHandler(err)\n },\n signal: finalServerController.signal,\n }\n ),\n () => {\n finalServerController.abort()\n }\n ))\n\n let htmlStream\n const serverPhasedStream = serverPrerenderStreamResult.asPhasedStream()\n try {\n const prerender = require('react-dom/static.edge')\n .prerender as (typeof import('react-dom/static.edge'))['prerender']\n const result = await prerenderClientWithPhases(\n () =>\n workUnitAsyncStorage.run(\n finalClientPrerenderStore,\n prerender,\n <App\n reactServerStream={serverPhasedStream}\n preinitScripts={preinitScripts}\n clientReferenceManifest={clientReferenceManifest}\n ServerInsertedHTMLProvider={ServerInsertedHTMLProvider}\n ServerInsertedMetadataProvider={\n ServerInsertedMetadataProvider\n }\n nonce={ctx.nonce}\n />,\n {\n signal: finalClientController.signal,\n onError: (err: unknown, errorInfo: ErrorInfo) => {\n if (\n isPrerenderInterruptedError(err) ||\n finalClientController.signal.aborted\n ) {\n clientIsDynamic = true\n\n const componentStack: string | undefined = (\n errorInfo as any\n ).componentStack\n if (typeof componentStack === 'string') {\n trackAllowedDynamicAccess(\n workStore.route,\n componentStack,\n dynamicValidation,\n serverDynamicTracking,\n clientDynamicTracking\n )\n }\n return\n }\n\n return htmlRendererErrorHandler(err, errorInfo)\n },\n bootstrapScripts: [bootstrapScript],\n }\n ),\n () => {\n finalClientController.abort()\n serverPhasedStream.assertExhausted()\n }\n )\n htmlStream = result.prelude\n } catch (err) {\n if (\n isPrerenderInterruptedError(err) ||\n finalClientController.signal.aborted\n ) {\n // we don't have a root because the abort errored in the root. We can just ignore this error\n } else {\n // This error is something else and should bubble up\n throw err\n }\n }\n\n throwIfDisallowedDynamic(\n workStore.route,\n dynamicValidation,\n serverDynamicTracking,\n clientDynamicTracking\n )\n\n if (serverIsDynamic || clientIsDynamic) {\n const dynamicReason = serverIsDynamic\n ? getFirstDynamicReason(serverDynamicTracking)\n : getFirstDynamicReason(clientDynamicTracking)\n if (dynamicReason) {\n throw new DynamicServerError(\n `Route \"${workStore.route}\" couldn't be rendered statically because it used \\`${dynamicReason}\\`. See more info here: https://nextjs.org/docs/messages/next-prerender-data`\n )\n } else {\n throw new DynamicServerError(\n `Route \"${workStore.route}\" couldn't be rendered statically it accessed data without explicitly caching it. See more info here: https://nextjs.org/docs/messages/next-prerender-data`\n )\n }\n }\n\n const flightData = await streamToBuffer(\n serverPrerenderStreamResult.asStream()\n )\n metadata.flightData = flightData\n metadata.segmentData = await collectSegmentData(\n flightData,\n finalClientPrerenderStore,\n ComponentMod,\n renderOpts,\n fallbackRouteParams\n )\n\n const getServerInsertedHTML = makeGetServerInsertedHTML({\n polyfills,\n renderServerInsertedHTML,\n serverCapturedErrors: allCapturedErrors,\n basePath: renderOpts.basePath,\n tracingMetadata: tracingMetadata,\n })\n const validateRootLayout = renderOpts.dev\n return {\n digestErrorsMap: reactServerErrorsByDigest,\n ssrErrors: allCapturedErrors,\n stream: await continueFizzStream(htmlStream!, {\n inlinedDataStream: createInlinedDataReadableStream(\n serverPrerenderStreamResult.asStream(),\n ctx.nonce,\n formState\n ),\n isStaticGeneration: true,\n getServerInsertedHTML,\n getServerInsertedMetadata,\n validateRootLayout,\n }),\n dynamicAccess: consumeDynamicAccess(\n serverDynamicTracking,\n clientDynamicTracking\n ),\n // TODO: Should this include the SSR pass?\n collectedRevalidate: finalServerPrerenderStore.revalidate,\n collectedExpire: finalServerPrerenderStore.expire,\n collectedStale: finalServerPrerenderStore.stale,\n collectedTags: finalServerPrerenderStore.tags,\n }\n }\n } else if (renderOpts.experimental.isRoutePPREnabled) {\n // We're statically generating with PPR and need to do dynamic tracking\n let dynamicTracking = createDynamicTrackingState(\n renderOpts.isDebugDynamicAccesses\n )\n\n const prerenderResumeDataCache = createPrerenderResumeDataCache()\n const reactServerPrerenderStore: PrerenderStore = (prerenderStore = {\n type: 'prerender-ppr',\n phase: 'render',\n rootParams,\n implicitTags: implicitTags,\n dynamicTracking,\n revalidate: INFINITE_CACHE,\n expire: INFINITE_CACHE,\n stale: INFINITE_CACHE,\n tags: [...implicitTags],\n prerenderResumeDataCache,\n })\n const RSCPayload = await workUnitAsyncStorage.run(\n reactServerPrerenderStore,\n getRSCPayload,\n tree,\n ctx,\n res.statusCode === 404\n )\n const reactServerResult = (reactServerPrerenderResult =\n await createReactServerPrerenderResultFromRender(\n workUnitAsyncStorage.run(\n reactServerPrerenderStore,\n ComponentMod.renderToReadableStream,\n // ... the arguments for the function to run\n RSCPayload,\n clientReferenceManifest.clientModules,\n {\n onError: serverComponentsErrorHandler,\n }\n )\n ))\n\n const ssrPrerenderStore: PrerenderStore = {\n type: 'prerender-ppr',\n phase: 'render',\n rootParams,\n implicitTags: implicitTags,\n dynamicTracking,\n revalidate: INFINITE_CACHE,\n expire: INFINITE_CACHE,\n stale: INFINITE_CACHE,\n tags: [...implicitTags],\n prerenderResumeDataCache,\n }\n const prerender = require('react-dom/static.edge')\n .prerender as (typeof import('react-dom/static.edge'))['prerender']\n const { prelude, postponed } = await workUnitAsyncStorage.run(\n ssrPrerenderStore,\n prerender,\n <App\n reactServerStream={reactServerResult.asUnclosingStream()}\n preinitScripts={preinitScripts}\n clientReferenceManifest={clientReferenceManifest}\n ServerInsertedHTMLProvider={ServerInsertedHTMLProvider}\n ServerInsertedMetadataProvider={ServerInsertedMetadataProvider}\n nonce={ctx.nonce}\n />,\n {\n onError: htmlRendererErrorHandler,\n onHeaders: (headers: Headers) => {\n headers.forEach((value, key) => {\n appendHeader(key, value)\n })\n },\n maxHeadersLength: renderOpts.reactMaxHeadersLength,\n bootstrapScripts: [bootstrapScript],\n }\n )\n const getServerInsertedHTML = makeGetServerInsertedHTML({\n polyfills,\n renderServerInsertedHTML,\n serverCapturedErrors: allCapturedErrors,\n basePath: renderOpts.basePath,\n tracingMetadata: tracingMetadata,\n })\n\n // After awaiting here we've waited for the entire RSC render to complete. Crucially this means\n // that when we detect whether we've used dynamic APIs below we know we'll have picked up even\n // parts of the React Server render that might not be used in the SSR render.\n const flightData = await streamToBuffer(reactServerResult.asStream())\n\n if (shouldGenerateStaticFlightData(workStore)) {\n metadata.flightData = flightData\n metadata.segmentData = await collectSegmentData(\n flightData,\n ssrPrerenderStore,\n ComponentMod,\n renderOpts,\n fallbackRouteParams\n )\n }\n\n /**\n * When prerendering there are three outcomes to consider\n *\n * Dynamic HTML: The prerender has dynamic holes (caused by using Next.js Dynamic Rendering APIs)\n * We will need to resume this result when requests are handled and we don't include\n * any server inserted HTML or inlined flight data in the static HTML\n *\n * Dynamic Data: The prerender has no dynamic holes but dynamic APIs were used. We will not\n * resume this render when requests are handled but we will generate new inlined\n * flight data since it is dynamic and differences may end up reconciling on the client\n *\n * Static: The prerender has no dynamic holes and no dynamic APIs were used. We statically encode\n * all server inserted HTML and flight data\n */\n // First we check if we have any dynamic holes in our HTML prerender\n if (accessedDynamicData(dynamicTracking.dynamicAccesses)) {\n if (postponed != null) {\n // Dynamic HTML case.\n metadata.postponed = await getDynamicHTMLPostponedState(\n postponed,\n fallbackRouteParams,\n prerenderResumeDataCache\n )\n } else {\n // Dynamic Data case.\n metadata.postponed = await getDynamicDataPostponedState(\n prerenderResumeDataCache\n )\n }\n // Regardless of whether this is the Dynamic HTML or Dynamic Data case we need to ensure we include\n // server inserted html in the static response because the html that is part of the prerender may depend on it\n // It is possible in the set of stream transforms for Dynamic HTML vs Dynamic Data may differ but currently both states\n // require the same set so we unify the code path here\n reactServerResult.consume()\n return {\n digestErrorsMap: reactServerErrorsByDigest,\n ssrErrors: allCapturedErrors,\n stream: await continueDynamicPrerender(prelude, {\n getServerInsertedHTML,\n getServerInsertedMetadata,\n }),\n dynamicAccess: dynamicTracking.dynamicAccesses,\n // TODO: Should this include the SSR pass?\n collectedRevalidate: reactServerPrerenderStore.revalidate,\n collectedExpire: reactServerPrerenderStore.expire,\n collectedStale: reactServerPrerenderStore.stale,\n collectedTags: reactServerPrerenderStore.tags,\n }\n } else if (fallbackRouteParams && fallbackRouteParams.size > 0) {\n // Rendering the fallback case.\n metadata.postponed = await getDynamicDataPostponedState(\n prerenderResumeDataCache\n )\n\n return {\n digestErrorsMap: reactServerErrorsByDigest,\n ssrErrors: allCapturedErrors,\n stream: await continueDynamicPrerender(prelude, {\n getServerInsertedHTML,\n getServerInsertedMetadata,\n }),\n dynamicAccess: dynamicTracking.dynamicAccesses,\n // TODO: Should this include the SSR pass?\n collectedRevalidate: reactServerPrerenderStore.revalidate,\n collectedExpire: reactServerPrerenderStore.expire,\n collectedStale: reactServerPrerenderStore.stale,\n collectedTags: reactServerPrerenderStore.tags,\n }\n } else {\n // Static case\n // We still have not used any dynamic APIs. At this point we can produce an entirely static prerender response\n if (workStore.forceDynamic) {\n throw new StaticGenBailoutError(\n 'Invariant: a Page with `dynamic = \"force-dynamic\"` did not trigger the dynamic pathway. This is a bug in Next.js'\n )\n }\n\n let htmlStream = prelude\n if (postponed != null) {\n // We postponed but nothing dynamic was used. We resume the render now and immediately abort it\n // so we can set all the postponed boundaries to client render mode before we store the HTML response\n const resume = require('react-dom/server.edge')\n .resume as (typeof import('react-dom/server.edge'))['resume']\n\n // We don't actually want to render anything so we just pass a stream\n // that never resolves. The resume call is going to abort immediately anyway\n const foreverStream = new ReadableStream<Uint8Array>()\n\n const resumeStream = await resume(\n <App\n reactServerStream={foreverStream}\n preinitScripts={() => {}}\n clientReferenceManifest={clientReferenceManifest}\n ServerInsertedHTMLProvider={ServerInsertedHTMLProvider}\n ServerInsertedMetadataProvider={ServerInsertedMetadataProvider}\n nonce={ctx.nonce}\n />,\n JSON.parse(JSON.stringify(postponed)),\n {\n signal: createPostponedAbortSignal('static prerender resume'),\n onError: htmlRendererErrorHandler,\n nonce: ctx.nonce,\n }\n )\n\n // First we write everything from the prerender, then we write everything from the aborted resume render\n htmlStream = chainStreams(prelude, resumeStream)\n }\n\n return {\n digestErrorsMap: reactServerErrorsByDigest,\n ssrErrors: allCapturedErrors,\n stream: await continueStaticPrerender(htmlStream, {\n inlinedDataStream: createInlinedDataReadableStream(\n reactServerResult.consumeAsStream(),\n ctx.nonce,\n formState\n ),\n getServerInsertedHTML,\n getServerInsertedMetadata,\n }),\n dynamicAccess: dynamicTracking.dynamicAccesses,\n // TODO: Should this include the SSR pass?\n collectedRevalidate: reactServerPrerenderStore.revalidate,\n collectedExpire: reactServerPrerenderStore.expire,\n collectedStale: reactServerPrerenderStore.stale,\n collectedTags: reactServerPrerenderStore.tags,\n }\n }\n } else {\n const prerenderLegacyStore: PrerenderStore = (prerenderStore = {\n type: 'prerender-legacy',\n phase: 'render',\n rootParams,\n implicitTags: implicitTags,\n revalidate: INFINITE_CACHE,\n expire: INFINITE_CACHE,\n stale: INFINITE_CACHE,\n tags: [...implicitTags],\n })\n // This is a regular static generation. We don't do dynamic tracking because we rely on\n // the old-school dynamic error handling to bail out of static generation\n const RSCPayload = await workUnitAsyncStorage.run(\n prerenderLegacyStore,\n getRSCPayload,\n tree,\n ctx,\n res.statusCode === 404\n )\n const reactServerResult = (reactServerPrerenderResult =\n await createReactServerPrerenderResultFromRender(\n workUnitAsyncStorage.run(\n prerenderLegacyStore,\n ComponentMod.renderToReadableStream,\n RSCPayload,\n clientReferenceManifest.clientModules,\n {\n onError: serverComponentsErrorHandler,\n }\n )\n ))\n\n const renderToReadableStream = require('react-dom/server.edge')\n .renderToReadableStream as (typeof import('react-dom/server.edge'))['renderToReadableStream']\n\n const htmlStream = await workUnitAsyncStorage.run(\n prerenderLegacyStore,\n renderToReadableStream,\n <App\n reactServerStream={reactServerResult.asUnclosingStream()}\n preinitScripts={preinitScripts}\n clientReferenceManifest={clientReferenceManifest}\n ServerInsertedHTMLProvider={ServerInsertedHTMLProvider}\n ServerInsertedMetadataProvider={ServerInsertedMetadataProvider}\n nonce={ctx.nonce}\n />,\n {\n onError: htmlRendererErrorHandler,\n nonce: ctx.nonce,\n bootstrapScripts: [bootstrapScript],\n }\n )\n\n if (shouldGenerateStaticFlightData(workStore)) {\n const flightData = await streamToBuffer(reactServerResult.asStream())\n metadata.flightData = flightData\n metadata.segmentData = await collectSegmentData(\n flightData,\n prerenderLegacyStore,\n ComponentMod,\n renderOpts,\n fallbackRouteParams\n )\n }\n\n const getServerInsertedHTML = makeGetServerInsertedHTML({\n polyfills,\n renderServerInsertedHTML,\n serverCapturedErrors: allCapturedErrors,\n basePath: renderOpts.basePath,\n tracingMetadata: tracingMetadata,\n })\n return {\n digestErrorsMap: reactServerErrorsByDigest,\n ssrErrors: allCapturedErrors,\n stream: await continueFizzStream(htmlStream, {\n inlinedDataStream: createInlinedDataReadableStream(\n reactServerResult.consumeAsStream(),\n ctx.nonce,\n formState\n ),\n isStaticGeneration: true,\n getServerInsertedHTML,\n getServerInsertedMetadata,\n }),\n // TODO: Should this include the SSR pass?\n collectedRevalidate: prerenderLegacyStore.revalidate,\n collectedExpire: prerenderLegacyStore.expire,\n collectedStale: prerenderLegacyStore.stale,\n collectedTags: prerenderLegacyStore.tags,\n }\n }\n } catch (err) {\n if (\n isStaticGenBailoutError(err) ||\n (typeof err === 'object' &&\n err !== null &&\n 'message' in err &&\n typeof err.message === 'string' &&\n err.message.includes(\n 'https://nextjs.org/docs/advanced-features/static-html-export'\n ))\n ) {\n // Ensure that \"next dev\" prints the red error overlay\n throw err\n }\n\n // If this is a static generation error, we need to throw it so that it\n // can be handled by the caller if we're in static generation mode.\n if (isDynamicServerError(err)) {\n throw err\n }\n\n // If a bailout made it to this point, it means it wasn't wrapped inside\n // a suspense boundary.\n const shouldBailoutToCSR = isBailoutToCSRError(err)\n if (shouldBailoutToCSR) {\n const stack = getStackWithoutErrorMessage(err)\n error(\n `${err.reason} should be wrapped in a suspense boundary at page \"${ctx.pagePath}\". Read more: https://nextjs.org/docs/messages/missing-suspense-with-csr-bailout\\n${stack}`\n )\n\n throw err\n }\n\n // If we errored when we did not have an RSC stream to read from. This is\n // not just a render error, we need to throw early.\n if (reactServerPrerenderResult === null) {\n throw err\n }\n\n let errorType: MetadataErrorType | 'redirect' | undefined\n\n if (isHTTPAccessFallbackError(err)) {\n res.statusCode = getAccessFallbackHTTPStatus(err)\n errorType = getAccessFallbackErrorTypeByStatus(res.statusCode)\n } else if (isRedirectError(err)) {\n errorType = 'redirect'\n res.statusCode = getRedirectStatusCodeFromError(err)\n\n const redirectUrl = addPathPrefix(\n getURLFromRedirectError(err),\n renderOpts.basePath\n )\n\n setHeader('location', redirectUrl)\n } else if (!shouldBailoutToCSR) {\n res.statusCode = 500\n }\n\n const [errorPreinitScripts, errorBootstrapScript] = getRequiredScripts(\n renderOpts.buildManifest,\n ctx.assetPrefix,\n renderOpts.crossOrigin,\n renderOpts.subresourceIntegrityManifest,\n getAssetQueryString(ctx, false),\n ctx.nonce,\n '/_not-found/page'\n )\n\n const prerenderLegacyStore: PrerenderStore = (prerenderStore = {\n type: 'prerender-legacy',\n phase: 'render',\n rootParams,\n implicitTags: implicitTags,\n revalidate:\n typeof prerenderStore?.revalidate !== 'undefined'\n ? prerenderStore.revalidate\n : INFINITE_CACHE,\n expire:\n typeof prerenderStore?.expire !== 'undefined'\n ? prerenderStore.expire\n : INFINITE_CACHE,\n stale:\n typeof prerenderStore?.stale !== 'undefined'\n ? prerenderStore.stale\n : INFINITE_CACHE,\n tags: [...(prerenderStore?.tags || implicitTags)],\n })\n const errorRSCPayload = await workUnitAsyncStorage.run(\n prerenderLegacyStore,\n getErrorRSCPayload,\n tree,\n ctx,\n reactServerErrorsByDigest.has((err as any).digest) ? undefined : err,\n errorType\n )\n\n const errorServerStream = workUnitAsyncStorage.run(\n prerenderLegacyStore,\n ComponentMod.renderToReadableStream,\n errorRSCPayload,\n clientReferenceManifest.clientModules,\n {\n onError: serverComponentsErrorHandler,\n }\n )\n\n try {\n const fizzStream = await renderToInitialFizzStream({\n ReactDOMServer: require('react-dom/server.edge'),\n element: (\n <AppWithoutContext\n reactServerStream={errorServerStream}\n preinitScripts={errorPreinitScripts}\n clientReferenceManifest={clientReferenceManifest}\n nonce={ctx.nonce}\n />\n ),\n streamOptions: {\n nonce: ctx.nonce,\n // Include hydration scripts in the HTML\n bootstrapScripts: [errorBootstrapScript],\n formState,\n },\n })\n\n if (shouldGenerateStaticFlightData(workStore)) {\n const flightData = await streamToBuffer(\n reactServerPrerenderResult.asStream()\n )\n metadata.flightData = flightData\n metadata.segmentData = await collectSegmentData(\n flightData,\n prerenderLegacyStore,\n ComponentMod,\n renderOpts,\n fallbackRouteParams\n )\n }\n\n const validateRootLayout = renderOpts.dev\n\n // This is intentionally using the readable datastream from the main\n // render rather than the flight data from the error page render\n const flightStream =\n reactServerPrerenderResult instanceof ServerPrerenderStreamResult\n ? reactServerPrerenderResult.asStream()\n : reactServerPrerenderResult.consumeAsStream()\n\n return {\n // Returning the error that was thrown so it can be used to handle\n // the response in the caller.\n digestErrorsMap: reactServerErrorsByDigest,\n ssrErrors: allCapturedErrors,\n stream: await continueFizzStream(fizzStream, {\n inlinedDataStream: createInlinedDataReadableStream(\n flightStream,\n ctx.nonce,\n formState\n ),\n isStaticGeneration: true,\n getServerInsertedHTML: makeGetServerInsertedHTML({\n polyfills,\n renderServerInsertedHTML,\n serverCapturedErrors: [],\n basePath: renderOpts.basePath,\n tracingMetadata: tracingMetadata,\n }),\n getServerInsertedMetadata,\n validateRootLayout,\n }),\n dynamicAccess: null,\n collectedRevalidate:\n prerenderStore !== null ? prerenderStore.revalidate : INFINITE_CACHE,\n collectedExpire:\n prerenderStore !== null ? prerenderStore.expire : INFINITE_CACHE,\n collectedStale:\n prerenderStore !== null ? prerenderStore.stale : INFINITE_CACHE,\n collectedTags: prerenderStore !== null ? prerenderStore.tags : null,\n }\n } catch (finalErr: any) {\n if (\n process.env.NODE_ENV === 'development' &&\n isHTTPAccessFallbackError(finalErr)\n ) {\n const { bailOnRootNotFound } =\n require('../../client/components/dev-root-http-access-fallback-boundary') as typeof import('../../client/components/dev-root-http-access-fallback-boundary')\n bailOnRootNotFound()\n }\n throw finalErr\n }\n }\n}\n\nconst loadingChunks: Set<Promise<unknown>> = new Set()\nconst chunkListeners: Array<(x?: unknown) => void> = []\n\nfunction trackChunkLoading(load: Promise<unknown>) {\n loadingChunks.add(load)\n load.finally(() => {\n if (loadingChunks.has(load)) {\n loadingChunks.delete(load)\n if (loadingChunks.size === 0) {\n // We are not currently loading any chunks. We can notify all listeners\n for (let i = 0; i < chunkListeners.length; i++) {\n chunkListeners[i]()\n }\n chunkListeners.length = 0\n }\n }\n })\n}\n\nexport async function warmFlightResponse(\n flightStream: ReadableStream<Uint8Array>,\n clientReferenceManifest: DeepReadonly<ClientReferenceManifest>\n) {\n let createFromReadableStream\n if (process.env.TURBOPACK) {\n createFromReadableStream =\n // eslint-disable-next-line import/no-extraneous-dependencies\n require('react-server-dom-turbopack/client.edge').createFromReadableStream\n } else {\n createFromReadableStream =\n // eslint-disable-next-line import/no-extraneous-dependencies\n require('react-server-dom-webpack/client.edge').createFromReadableStream\n }\n\n try {\n createFromReadableStream(flightStream, {\n serverConsumerManifest: {\n moduleLoading: clientReferenceManifest.moduleLoading,\n moduleMap: clientReferenceManifest.ssrModuleMapping,\n serverModuleMap: null,\n },\n })\n } catch {\n // We don't want to handle errors here but we don't want it to\n // interrupt the outer flow. We simply ignore it here and expect\n // it will bubble up during a render\n }\n\n // We'll wait at least one task and then if no chunks have started to load\n // we'll we can infer that there are none to load from this flight response\n trackChunkLoading(waitAtLeastOneReactRenderTask())\n return new Promise((r) => {\n chunkListeners.push(r)\n })\n}\n\nconst getGlobalErrorStyles = async (\n tree: LoaderTree,\n ctx: AppRenderContext\n): Promise<React.ReactNode | undefined> => {\n const {\n modules: { 'global-error': globalErrorModule },\n } = parseLoaderTree(tree)\n\n let globalErrorStyles\n if (globalErrorModule) {\n const [, styles] = await createComponentStylesAndScripts({\n ctx,\n filePath: globalErrorModule[1],\n getComponent: globalErrorModule[0],\n injectedCSS: new Set(),\n injectedJS: new Set(),\n })\n globalErrorStyles = styles\n }\n\n return globalErrorStyles\n}\n\nasync function collectSegmentData(\n fullPageDataBuffer: Buffer,\n prerenderStore: PrerenderStore,\n ComponentMod: AppPageModule,\n renderOpts: RenderOpts,\n fallbackRouteParams: FallbackRouteParams | null\n): Promise<Map<string, Buffer> | undefined> {\n // Per-segment prefetch data\n //\n // All of the segments for a page are generated simultaneously, including\n // during revalidations. This is to ensure consistency, because it's\n // possible for a mismatch between a layout and page segment can cause the\n // client to error during rendering. We want to preserve the ability of the\n // client to recover from such a mismatch by re-requesting all the segments\n // to get a consistent view of the page.\n //\n // For performance, we reuse the Flight output that was created when\n // generating the initial page HTML. The Flight stream for the whole page is\n // decomposed into a separate stream per segment.\n\n const clientReferenceManifest = renderOpts.clientReferenceManifest\n if (!clientReferenceManifest || !renderOpts.experimental.clientSegmentCache) {\n return\n }\n\n // Manifest passed to the Flight client for reading the full-page Flight\n // stream. Based off similar code in use-cache-wrapper.ts.\n const isEdgeRuntime = process.env.NEXT_RUNTIME === 'edge'\n const serverConsumerManifest = {\n // moduleLoading must be null because we don't want to trigger preloads of ClientReferences\n // to be added to the consumer. Instead, we'll wait for any ClientReference to be emitted\n // which themselves will handle the preloading.\n moduleLoading: null,\n moduleMap: isEdgeRuntime\n ? clientReferenceManifest.edgeRscModuleMapping\n : clientReferenceManifest.rscModuleMapping,\n serverModuleMap: null,\n }\n\n // When dynamicIO is enabled, missing data is encoded to an infinitely hanging\n // promise, the absence of which we use to determine if a segment is fully\n // static or partially static. However, when dynamicIO is not enabled, this\n // trick doesn't work.\n //\n // So if PPR is enabled, and dynamicIO is not, we have to be conservative and\n // assume all segments are partial.\n //\n // TODO: When PPR is on, we can at least optimize the case where the entire\n // page is static. Either by passing that as an argument to this function, or\n // by setting a header on the response like the we do for full page RSC\n // prefetches today. The latter approach might be simpler since it requires\n // less plumbing, and the client has to check the header regardless to see if\n // PPR is enabled.\n const shouldAssumePartialData =\n renderOpts.experimental.isRoutePPREnabled === true && // PPR is enabled\n !renderOpts.experimental.dynamicIO // dynamicIO is disabled\n\n const staleTime = prerenderStore.stale\n return await ComponentMod.collectSegmentData(\n shouldAssumePartialData,\n fullPageDataBuffer,\n staleTime,\n clientReferenceManifest.clientModules as ManifestNode,\n serverConsumerManifest,\n fallbackRouteParams\n )\n}\n"],"names":["renderToHTMLOrFlight","warmFlightResponse","flightDataPathHeadKey","parseRequestHeaders","headers","options","isDevWarmupRequest","isDevWarmup","isPrefetchRequest","NEXT_ROUTER_PREFETCH_HEADER","toLowerCase","undefined","isHmrRefresh","NEXT_HMR_REFRESH_HEADER","isRSCRequest","RSC_HEADER","shouldProvideFlightRouterState","isRoutePPREnabled","flightRouterState","parseAndValidateFlightRouterState","NEXT_ROUTER_STATE_TREE_HEADER","isRouteTreePrefetchRequest","NEXT_ROUTER_SEGMENT_PREFETCH_HEADER","csp","nonce","getScriptNonceFromHeader","createNotFoundLoaderTree","loaderTree","components","children","PAGE_SEGMENT_KEY","page","createDivergedMetadataComponents","Metadata","serveStreamingMetadata","EmptyMetadata","StreamingMetadata","StaticMetadata","makeGetDynamicParamFromSegment","params","pagePath","fallbackRouteParams","getDynamicParamFromSegment","segment","segmentParam","getSegmentParam","key","param","value","has","get","Array","isArray","map","i","encodeURIComponent","isCatchall","type","isOptionalCatchall","dynamicParamType","dynamicParamTypes","treeSegment","split","slice","flatMap","pathSegment","parseParameter","join","getShortDynamicParamType","NonIndex","ctx","is404Page","isInvalidStatusCode","res","statusCode","isAction","meta","name","content","generateDynamicRSCPayload","flightData","componentMod","tree","createServerSearchParamsForMetadata","createServerParamsForMetadata","createMetadataComponents","MetadataBoundary","ViewportBoundary","appUsingSizeAdjustment","query","requestId","workStore","url","renderOpts","skipFlight","preloadCallbacks","searchParams","ViewportTree","MetadataTree","getViewportReady","getMetadataReady","StreamingMetadataOutlet","metadataContext","createTrackedMetadataContext","pathname","walkTreeWithFlightRouterState","loaderTreeToFilter","parentParams","rscHead","React","Fragment","injectedCSS","Set","injectedJS","injectedFontPreloadTags","rootLayoutIncluded","path","actionResult","a","f","b","sharedContext","buildId","S","isStaticGeneration","createErrorContext","renderSource","routerKind","routePath","routeType","revalidateReason","getRevalidateReason","generateDynamicFlightRenderResult","req","requestStore","onFlightDataRenderError","err","onInstrumentationRequestError","onError","createFlightReactServerErrorHandler","dev","RSCPayload","workUnitAsyncStorage","run","process","env","NODE_ENV","experimental","dynamicIO","resolveValidation","validationOutlet","createValidationOutlet","_validation","spawnDynamicValidationInDev","clientReferenceManifest","route","flightReadableStream","renderToReadableStream","clientModules","temporaryReferences","FlightRenderResult","fetchMetrics","warmupDevRender","InvariantError","rootParams","getRootParams","prerenderResumeDataCache","createPrerenderResumeDataCache","renderController","AbortController","prerenderController","cacheSignal","CacheSignal","prerenderStore","phase","implicitTags","renderSignal","signal","controller","dynamicTracking","revalidate","INFINITE_CACHE","expire","stale","tags","rscPayload","cacheReady","abort","devRenderResumeDataCache","createRenderResumeDataCache","prepareInitialCanonicalUrl","search","getRSCPayload","is404","missingSlots","GlobalError","initialTree","createFlightRouterStateFromLoaderTree","errorType","seedData","createComponentTree","authInterrupts","varyHeader","getHeader","couldBeIntercepted","includes","NEXT_URL","initialHead","globalErrorStyles","getGlobalErrorStyles","isPossiblyPartialHead","P","Preloads","p","assetPrefix","c","m","G","s","postponed","forEach","preloadFn","getErrorRSCPayload","ssrError","createMetadataContext","isError","Error","html","id","head","body","template","data-next-error-message","message","data-next-error-digest","digest","data-next-error-stack","stack","App","reactServerStream","preinitScripts","ServerInsertedHTMLProvider","ServerInsertedMetadataProvider","response","use","useFlightStream","initialState","createInitialRouterState","initialFlightData","initialCanonicalUrlParts","initialParallelRoutes","Map","location","prerendered","actionQueue","createMutableActionQueue","HeadManagerContext","require","Provider","appDir","AppRouter","globalErrorComponentAndStyles","AppWithoutContext","renderToHTMLOrFlightImpl","parsedRequestHeaders","requestEndedState","postponedState","serverComponentsHmrCache","isNotFoundPath","requestTimestamp","Date","now","serverActionsManifest","ComponentMod","nextFontManifest","serverActions","enableTainting","__next_app__","instrumented","wrapClientComponentLoader","globalThis","__next_require__","__next_chunk_load__","args","loadingChunk","loadChunk","trackChunkLoading","URL","setIsrStatus","NEXT_RUNTIME","isNodeNextRequest","originalRequest","on","ended","metrics","getClientComponentLoaderMetrics","reset","getTracer","startSpan","NextNodeServerSpan","clientComponentLoading","startTime","clientComponentLoadStart","attributes","clientComponentLoadCount","end","clientComponentLoadTimes","metadata","appUsingSizeAdjust","serverModuleMap","createServerModuleMap","setReferenceManifestsSingleton","patchFetch","taintObjectReference","stripInternalQueries","crypto","randomUUID","nanoid","isActionRequest","getServerActionRequestMetadata","isServerAction","isPrefetch","setRootSpanAttribute","prerenderToStreamWithTracing","wrap","AppRenderSpan","getBodyResult","spanName","prerenderToStream","dynamicAccess","accessedDynamicData","isDebugDynamicAccesses","warn","access","formatDynamicAPIAccesses","digestErrorsMap","size","buildFailingError","values","next","ssrErrors","length","find","isUserLandError","pendingRevalidates","pendingRevalidateWrites","revalidatedTags","pendingPromise","Promise","all","incrementalCache","revalidateTag","Object","finally","NEXT_PRIVATE_DEBUG_CACHE","console","log","waitUntil","collectedTags","fetchTags","staleHeader","String","collectedStale","setHeader","NEXT_ROUTER_STALE_TIME_HEADER","forceStatic","collectedRevalidate","cacheControl","collectedExpire","staticBailoutInfo","description","dynamicUsageDescription","dynamicUsageStack","RenderResult","streamToString","stream","renderResumeDataCache","createRequestStoreForRender","onUpdateCookies","previewProps","usedDynamic","forceDynamic","renderToStreamWithTracing","renderToStream","formState","actionRequestResult","handleAction","generateFlight","notFoundLoaderTree","result","assignMetadata","parseRelativeUrl","parsePostponedState","getImplicitTags","routeModule","definition","createWorkStore","workAsyncStorage","renderServerInsertedHTML","createServerInsertedHTML","getServerInsertedMetadata","createServerInsertedMetadata","tracingMetadata","getTracedMetadata","getTracePropagationData","clientTraceMetadata","polyfills","buildManifest","polyfillFiles","filter","polyfill","endsWith","src","getAssetQueryString","integrity","subresourceIntegrityManifest","crossOrigin","noModule","bootstrapScript","getRequiredScripts","reactServerErrorsByDigest","silenceLogger","onHTMLRenderRSCError","serverComponentsErrorHandler","createHTMLReactServerErrorHandler","nextExport","onHTMLRenderSSRError","allCapturedErrors","htmlRendererErrorHandler","createHTMLErrorHandler","reactServerResult","bind","appendHeader","scheduleInSequentialTasks","prerenderPhase","environmentName","filterStackFrame","_functionName","startsWith","ReactServerResult","waitAtLeastOneReactRenderTask","DynamicState","DATA","inlinedReactServerDataStream","createInlinedDataReadableStream","tee","chainStreams","createDocumentClosingStream","getPostponedFromState","resume","htmlStream","getServerInsertedHTML","makeGetServerInsertedHTML","serverCapturedErrors","basePath","continueDynamicHTMLResume","inlinedDataStream","consume","onHeaders","maxHeadersLength","reactMaxHeadersLength","bootstrapScripts","generateStaticHTML","supportsDynamicResponse","shouldWaitOnAllReady","validateRootLayout","continueFizzStream","isStaticGenBailoutError","shouldBailoutToCSR","isBailoutToCSRError","getStackWithoutErrorMessage","error","reason","isHTTPAccessFallbackError","getAccessFallbackHTTPStatus","getAccessFallbackErrorTypeByStatus","isRedirectError","getRedirectStatusCodeFromError","redirectUrl","addPathPrefix","getURLFromRedirectError","Headers","appendMutableCookies","mutableCookies","from","errorPreinitScripts","errorBootstrapScript","errorRSCPayload","errorServerStream","fizzStream","renderToInitialFizzStream","ReactDOMServer","element","streamOptions","finalErr","bailOnRootNotFound","outlet","resolve","isNotFound","initialServerPrerenderController","initialServerRenderController","initialServerPrerenderStore","initialClientController","initialClientPrerenderStore","firstAttemptRSCPayload","initialServerStream","getDigestForWellKnownError","aborted","NEXT_DEBUG_BUILD","__NEXT_VERBOSE_LOGGING","printDebugThrownValueForProspectiveRender","warmupStream","renderStream","prerender","pendingInitialClientResult","catch","finalServerController","serverDynamicTracking","createDynamicTrackingState","finalServerPrerenderStore","finalClientController","clientDynamicTracking","dynamicValidation","createDynamicValidationState","finalClientPrerenderStore","finalServerPayload","serverPrerenderStreamResult","prerenderServerWithPhases","isUseCacheTimeoutError","isPrerenderInterruptedError","rootDidError","serverPhasedStream","asPhasedStream","prerenderClientWithPhases","errorInfo","dynamicErrors","push","componentStack","trackAllowedDynamicAccess","assertExhausted","LogDynamicValidation","throwIfDisallowedDynamic","shouldGenerateStaticFlightData","reactServerPrerenderResult","setMetadataHeader","item","initialServerPayload","pendingInitialServerResult","onPostpone","initialServerResult","createReactServerPrerenderResult","asStream","prerenderAndAbortInSequentialTasks","asUnclosingStream","serverIsDynamic","finalRenderPrerenderStore","finalAttemptRSCPayload","prerenderIsPending","prerenderResult","clientIsDynamic","prelude","streamToBuffer","segmentData","collectSegmentData","getDynamicHTMLPostponedState","getDynamicDataPostponedState","continueDynamicPrerender","consumeDynamicAccess","StaticGenBailoutError","foreverStream","ReadableStream","resumeStream","JSON","parse","stringify","createPostponedAbortSignal","continueStaticPrerender","consumeAsStream","cache","dynamicReason","getFirstDynamicReason","DynamicServerError","reactServerPrerenderStore","createReactServerPrerenderResultFromRender","ssrPrerenderStore","dynamicAccesses","prerenderLegacyStore","isDynamicServerError","flightStream","ServerPrerenderStreamResult","loadingChunks","chunkListeners","load","add","delete","createFromReadableStream","TURBOPACK","serverConsumerManifest","moduleLoading","moduleMap","ssrModuleMapping","r","modules","globalErrorModule","parseLoaderTree","styles","createComponentStylesAndScripts","filePath","getComponent","fullPageDataBuffer","clientSegmentCache","isEdgeRuntime","edgeRscModuleMapping","rscModuleMapping","shouldAssumePartialData","staleTime"],"mappings":"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"}
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists