Rocky_Mountain_Vending/.pnpm-store/v10/files/82/c9e763ec8812560c94bd4b785bf4fd2e35ba1d769a46f06f74d4f79b0d94b64339c3f5388e8058bd0110a5e53cd7c9c627bca3a480b502b2d406e16bde5b10
DMleadgen 46d973904b
Initial commit: Rocky Mountain Vending website
Next.js website for Rocky Mountain Vending company featuring:
- Product catalog with Stripe integration
- Service areas and parts pages
- Admin dashboard with Clerk authentication
- SEO optimized pages with JSON-LD structured data

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-12 16:22:15 -07:00

1 line
No EOL
272 KiB
Text

{"version":3,"sources":["../../../src/server/app-render/app-render.tsx"],"sourcesContent":["import type { ComponentType, ErrorInfo, JSX, ReactNode } from 'react'\nimport type { RenderOpts, PreloadCallbacks } from './types'\nimport type {\n ActionResult,\n DynamicParamTypesShort,\n FlightRouterState,\n Segment,\n CacheNodeSeedData,\n RSCPayload,\n FlightData,\n InitialRSCPayload,\n FlightDataPath,\n} from '../../shared/lib/app-router-types'\nimport {\n workAsyncStorage,\n type WorkStore,\n} from '../app-render/work-async-storage.external'\nimport type {\n PrerenderStoreModernRuntime,\n RequestStore,\n} 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'\nimport * as ReactClient 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 continueStaticFallbackPrerender,\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 NEXT_HMR_REFRESH_HASH_COOKIE,\n NEXT_DID_POSTPONE_HEADER,\n NEXT_REQUEST_ID_HEADER,\n NEXT_HTML_REQUEST_ID_HEADER,\n} from '../../client/components/app-router-headers'\nimport { createMetadataContext } 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, type ImplicitTags } 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 { dynamicParamTypes } from './get-short-dynamic-param-type'\nimport { getSegmentParam } from '../../shared/lib/router/utils/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 {\n getServerModuleMap,\n setReferenceManifestsSingleton,\n} from './encryption-utils'\nimport {\n DynamicState,\n type PostponedState,\n DynamicHTMLPreludeState,\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 createRenderInBrowserAbortSignal,\n formatDynamicAPIAccesses,\n isPrerenderInterruptedError,\n createDynamicTrackingState,\n createDynamicValidationState,\n trackAllowedDynamicAccess,\n throwIfDisallowedDynamic,\n PreludeState,\n consumeDynamicAccess,\n type DynamicAccess,\n logDisallowedDynamicError,\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 { 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 { getIsPossibleServerAction } from '../lib/server-action-request-meta'\nimport { createInitialRouterState } from '../../client/components/router-reducer/create-initial-router-state'\nimport { createMutableActionQueue } from '../../client/components/app-router-instance'\nimport { getRevalidateReason } from '../instrumentation/utils'\nimport { PAGE_SEGMENT_KEY } from '../../shared/lib/segment'\nimport type { OpaqueFallbackRouteParams } from '../request/fallback-params'\nimport {\n prerenderAndAbortInSequentialTasksWithStages,\n processPrelude,\n} from './app-render-prerender-utils'\nimport {\n type ReactServerPrerenderResult,\n ReactServerResult,\n createReactServerPrerenderResult,\n createReactServerPrerenderResultFromRender,\n prerenderAndAbortInSequentialTasks,\n} from './app-render-prerender-utils'\nimport { printDebugThrownValueForProspectiveRender } from './prospective-render-utils'\nimport {\n pipelineInSequentialTasks,\n scheduleInSequentialTasks,\n} from './app-render-render-utils'\nimport { waitAtLeastOneReactRenderTask } from '../../lib/scheduler'\nimport {\n workUnitAsyncStorage,\n type PrerenderStore,\n} from './work-unit-async-storage.external'\nimport { consoleAsyncStorage } from './console-async-storage.external'\nimport { CacheSignal } from './cache-signal'\nimport { getTracedMetadata } from '../lib/trace/utils'\nimport { InvariantError } from '../../shared/lib/invariant-error'\n\nimport { HTML_CONTENT_TYPE_HEADER, INFINITE_CACHE } from '../../lib/constants'\nimport { createComponentStylesAndScripts } from './create-component-styles-and-scripts'\nimport { parseLoaderTree } from '../../shared/lib/router/utils/parse-loader-tree'\nimport {\n createPrerenderResumeDataCache,\n createRenderResumeDataCache,\n type PrerenderResumeDataCache,\n type RenderResumeDataCache,\n} from '../resume-data-cache/resume-data-cache'\nimport type { MetadataErrorType } from '../../lib/metadata/resolve-metadata'\nimport isError from '../../lib/is-error'\nimport { createServerInsertedMetadata } from './metadata-insertion/create-server-inserted-metadata'\nimport { getPreviouslyRevalidatedTags } from '../server-utils'\nimport { executeRevalidates } from '../revalidation-utils'\nimport {\n trackPendingChunkLoad,\n trackPendingImport,\n trackPendingModules,\n} from './module-loading/track-module-loading.external'\nimport { isReactLargeShellError } from './react-large-shell-error'\nimport type { GlobalErrorComponent } from '../../client/components/builtin/global-error'\nimport { normalizeConventionFilePath } from './segment-explorer-path'\nimport { getRequestMeta } from '../request-meta'\nimport {\n getDynamicParam,\n interpolateParallelRouteParams,\n} from '../../shared/lib/router/utils/get-dynamic-param'\nimport type { ExperimentalConfig } from '../config-shared'\nimport type { Params } from '../request/params'\nimport { createPromiseWithResolvers } from '../../shared/lib/promise-with-resolvers'\nimport { ImageConfigContext } from '../../shared/lib/image-config-context.shared-runtime'\nimport { imageConfigDefault } from '../../shared/lib/image-config'\nimport { RenderStage, StagedRenderingController } from './staged-rendering'\nimport { anySegmentHasRuntimePrefetchEnabled } from './staged-validation'\nimport { warnOnce } from '../../shared/lib/utils/warn-once'\n\nexport type GetDynamicParamFromSegment = (\n // [slug] / [[slug]] / [...slug]\n segment: string\n) => DynamicParam | null\n\nexport type DynamicParam = {\n param: string\n value: string | string[] | null\n treeSegment: Segment\n type: DynamicParamTypesShort\n}\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 isPossibleServerAction: boolean\n requestTimestamp: number\n appUsingSizeAdjustment: boolean\n flightRouterState?: FlightRouterState\n requestId: string\n htmlRequestId: string\n pagePath: string\n clientReferenceManifest: DeepReadonly<ClientReferenceManifest>\n assetPrefix: string\n isNotFoundPath: boolean\n nonce: string | undefined\n res: BaseNextResponse\n /**\n * For now, the implicit tags are common for the whole route. If we ever start\n * rendering/revalidating segments independently, they need to move to the\n * work unit store.\n */\n implicitTags: ImplicitTags\n}\n\ninterface ParseRequestHeadersOptions {\n readonly isRoutePPREnabled: boolean\n readonly previewModeId: string | undefined\n}\n\nconst flightDataPathHeadKey = 'h'\nconst getFlightViewportKey = (requestId: string) => requestId + 'v'\nconst getFlightMetadataKey = (requestId: string) => requestId + 'm'\n\nconst filterStackFrame =\n process.env.NODE_ENV !== 'production'\n ? (require('../lib/source-maps') as typeof import('../lib/source-maps'))\n .filterStackFrameDEV\n : undefined\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 isRuntimePrefetchRequest: boolean\n readonly isRouteTreePrefetchRequest: boolean\n readonly isHmrRefresh: boolean\n readonly isRSCRequest: boolean\n readonly nonce: string | undefined\n readonly previouslyRevalidatedTags: string[]\n readonly requestId: string | undefined\n readonly htmlRequestId: string | undefined\n}\n\nfunction parseRequestHeaders(\n headers: IncomingHttpHeaders,\n options: ParseRequestHeadersOptions\n): ParsedRequestHeaders {\n // runtime prefetch requests are *not* treated as prefetch requests\n // (TODO: this is confusing, we should refactor this to express this better)\n const isPrefetchRequest = headers[NEXT_ROUTER_PREFETCH_HEADER] === '1'\n\n const isRuntimePrefetchRequest = headers[NEXT_ROUTER_PREFETCH_HEADER] === '2'\n\n const isHmrRefresh = headers[NEXT_HMR_REFRESH_HEADER] !== undefined\n\n const isRSCRequest = headers[RSC_HEADER] !== undefined\n\n const shouldProvideFlightRouterState =\n isRSCRequest && (!isPrefetchRequest || !options.isRoutePPREnabled)\n\n const flightRouterState = shouldProvideFlightRouterState\n ? parseAndValidateFlightRouterState(headers[NEXT_ROUTER_STATE_TREE_HEADER])\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] === '/_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 const previouslyRevalidatedTags = getPreviouslyRevalidatedTags(\n headers,\n options.previewModeId\n )\n\n let requestId: string | undefined\n let htmlRequestId: string | undefined\n\n if (process.env.NODE_ENV !== 'production') {\n // The request IDs are only used in development mode to send debug\n // information to the matching client (identified by the HTML request ID\n // that was sent to the client with the HTML document) for the current\n // request (identified by the request ID, as defined by the client).\n\n requestId =\n typeof headers[NEXT_REQUEST_ID_HEADER] === 'string'\n ? headers[NEXT_REQUEST_ID_HEADER]\n : undefined\n\n htmlRequestId =\n typeof headers[NEXT_HTML_REQUEST_ID_HEADER] === 'string'\n ? headers[NEXT_HTML_REQUEST_ID_HEADER]\n : undefined\n }\n\n return {\n flightRouterState,\n isPrefetchRequest,\n isRuntimePrefetchRequest,\n isRouteTreePrefetchRequest,\n isHmrRefresh,\n isRSCRequest,\n nonce,\n previouslyRevalidatedTags,\n requestId,\n htmlRequestId,\n }\n}\n\nfunction createNotFoundLoaderTree(loaderTree: LoaderTree): LoaderTree {\n const components = loaderTree[2]\n const hasGlobalNotFound = !!components['global-not-found']\n const notFoundTreeComponents: LoaderTree[2] = hasGlobalNotFound\n ? {\n layout: components['global-not-found']!,\n page: [() => null, 'next/dist/client/components/builtin/empty-stub'],\n }\n : {\n page: components['not-found'],\n }\n\n return [\n '',\n {\n children: [PAGE_SEGMENT_KEY, {}, notFoundTreeComponents],\n },\n // When global-not-found is present, skip layout from components\n hasGlobalNotFound ? components : {},\n ]\n}\n\n/**\n * Returns a function that parses the dynamic segment and return the associated value.\n */\nfunction makeGetDynamicParamFromSegment(\n interpolatedParams: Params,\n fallbackRouteParams: OpaqueFallbackRouteParams | 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 const segmentKey = segmentParam.param\n const dynamicParamType = dynamicParamTypes[segmentParam.type]\n return getDynamicParam(\n interpolatedParams,\n segmentKey,\n dynamicParamType,\n fallbackRouteParams\n )\n }\n}\n\nfunction NonIndex({\n createElement,\n pagePath,\n statusCode,\n isPossibleServerAction,\n}: {\n createElement: typeof ReactClient.createElement\n pagePath: string\n statusCode: number | undefined\n isPossibleServerAction: boolean\n}) {\n const is404Page = pagePath === '/404'\n const isInvalidStatusCode = typeof statusCode === 'number' && statusCode > 400\n\n // Only render noindex for page request, skip for server actions\n // TODO: is this correct if `isPossibleServerAction` is a false positive?\n if (!isPossibleServerAction && (is404Page || isInvalidStatusCode)) {\n return createElement('meta', {\n name: 'robots',\n content: 'noindex',\n })\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 routeModule: {\n userland: { loaderTree },\n },\n createElement,\n createMetadataComponents,\n Fragment,\n },\n getDynamicParamFromSegment,\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 { Viewport, Metadata, MetadataOutlet } = createMetadataComponents({\n tree: loaderTree,\n parsedQuery: query,\n pathname: url.pathname,\n metadataContext: createMetadataContext(ctx.renderOpts),\n getDynamicParamFromSegment,\n workStore,\n serveStreamingMetadata,\n })\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: createElement(\n Fragment,\n {\n key: flightDataPathHeadKey,\n },\n createElement(NonIndex, {\n createElement,\n pagePath: ctx.pagePath,\n statusCode: ctx.res.statusCode,\n isPossibleServerAction: ctx.isPossibleServerAction,\n }),\n createElement(Viewport, {\n key: getFlightViewportKey(requestId),\n }),\n createElement(Metadata, {\n key: getFlightMetadataKey(requestId),\n })\n ),\n injectedCSS: new Set(),\n injectedJS: new Set(),\n injectedFontPreloadTags: new Set(),\n rootLayoutIncluded: false,\n preloadCallbacks,\n MetadataOutlet,\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 // TODO: is this correct if `isPossibleServerAction` is a false positive?\n routeType: ctx.isPossibleServerAction ? 'action' : 'render',\n renderSource,\n revalidateReason: getRevalidateReason(ctx.workStore),\n }\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 {\n clientReferenceManifest,\n componentMod: { renderToReadableStream },\n htmlRequestId,\n renderOpts,\n requestId,\n workStore,\n } = ctx\n\n const {\n dev = false,\n onInstrumentationRequestError,\n setReactDebugChannel,\n } = renderOpts\n\n function onFlightDataRenderError(err: DigestedError) {\n return onInstrumentationRequestError?.(\n err,\n req,\n createErrorContext(ctx, 'react-server-components-payload')\n )\n }\n const onError = createFlightReactServerErrorHandler(\n dev,\n onFlightDataRenderError\n )\n\n const debugChannel = setReactDebugChannel && createDebugChannel()\n\n if (debugChannel) {\n setReactDebugChannel(debugChannel.clientSide, htmlRequestId, requestId)\n }\n\n // For app dir, use the bundled version of Flight server renderer (renderToReadableStream)\n // which contains the subset React.\n const rscPayload = await workUnitAsyncStorage.run(\n requestStore,\n generateDynamicRSCPayload,\n ctx,\n options\n )\n\n const flightReadableStream = workUnitAsyncStorage.run(\n requestStore,\n renderToReadableStream,\n rscPayload,\n clientReferenceManifest.clientModules,\n {\n onError,\n temporaryReferences: options?.temporaryReferences,\n filterStackFrame,\n debugChannel: debugChannel?.serverSide,\n }\n )\n\n return new FlightRenderResult(flightReadableStream, {\n fetchMetrics: workStore.fetchMetrics,\n })\n}\n\ntype RenderToReadableStreamServerOptions = NonNullable<\n Parameters<\n (typeof import('react-server-dom-webpack/server.node'))['renderToReadableStream']\n >[2]\n>\n\nasync function stagedRenderToReadableStreamWithoutCachesInDev(\n ctx: AppRenderContext,\n requestStore: RequestStore,\n getPayload: (requestStore: RequestStore) => Promise<RSCPayload>,\n clientReferenceManifest: NonNullable<RenderOpts['clientReferenceManifest']>,\n options: Omit<RenderToReadableStreamServerOptions, 'environmentName'>\n) {\n const {\n componentMod: { renderToReadableStream },\n } = ctx\n // We're rendering while bypassing caches,\n // so we have no hope of showing a useful runtime stage.\n // But we still want things like `params` to show up in devtools correctly,\n // which relies on mechanisms we've set up for staged rendering,\n // so we do a 2-task version (Static -> Dynamic) instead.\n\n const stageController = new StagedRenderingController()\n const environmentName = () => {\n const currentStage = stageController.currentStage\n switch (currentStage) {\n case RenderStage.Static:\n return 'Prerender'\n case RenderStage.Runtime:\n case RenderStage.Dynamic:\n return 'Server'\n default:\n currentStage satisfies never\n throw new InvariantError(`Invalid render stage: ${currentStage}`)\n }\n }\n\n requestStore.stagedRendering = stageController\n requestStore.asyncApiPromises = createAsyncApiPromisesInDev(\n stageController,\n requestStore.cookies,\n requestStore.mutableCookies,\n requestStore.headers\n )\n\n const rscPayload = await getPayload(requestStore)\n\n return await workUnitAsyncStorage.run(\n requestStore,\n scheduleInSequentialTasks,\n () => {\n return renderToReadableStream(\n rscPayload,\n clientReferenceManifest.clientModules,\n {\n ...options,\n environmentName,\n }\n )\n },\n () => {\n stageController.advanceStage(RenderStage.Dynamic)\n }\n )\n}\n\n/**\n * Fork of `generateDynamicFlightRenderResult` that renders using `renderWithRestartOnCacheMissInDev`\n * to ensure correct separation of environments Prerender/Server (for use in Cache Components)\n */\nasync function generateDynamicFlightRenderResultWithStagesInDev(\n req: BaseNextRequest,\n ctx: AppRenderContext,\n initialRequestStore: RequestStore,\n createRequestStore: (() => RequestStore) | undefined\n): Promise<RenderResult> {\n const {\n htmlRequestId,\n renderOpts,\n requestId,\n workStore,\n componentMod: { createElement },\n } = ctx\n\n const {\n dev = false,\n onInstrumentationRequestError,\n setReactDebugChannel,\n setCacheStatus,\n clientReferenceManifest,\n } = renderOpts\n\n function onFlightDataRenderError(err: DigestedError) {\n return onInstrumentationRequestError?.(\n err,\n req,\n createErrorContext(ctx, 'react-server-components-payload')\n )\n }\n const onError = createFlightReactServerErrorHandler(\n dev,\n onFlightDataRenderError\n )\n\n const getPayload = async (requestStore: RequestStore) => {\n const payload: RSCPayload & RSCPayloadDevProperties =\n await workUnitAsyncStorage.run(\n requestStore,\n generateDynamicRSCPayload,\n ctx,\n undefined\n )\n\n if (isBypassingCachesInDev(renderOpts, requestStore)) {\n // Mark the RSC payload to indicate that caches were bypassed in dev.\n // This lets the client know not to cache anything based on this render.\n payload._bypassCachesInDev = createElement(WarnForBypassCachesInDev, {\n route: workStore.route,\n })\n }\n\n return payload\n }\n\n let debugChannel: DebugChannelPair | undefined\n let stream: ReadableStream<Uint8Array>\n\n if (\n // We only do this flow if we can safely recreate the store from scratch\n // (which is not the case for renders after an action)\n createRequestStore &&\n // We only do this flow if we're not bypassing caches in dev using\n // \"disable cache\" in devtools or a hard refresh (cache-control: \"no-store\")\n !isBypassingCachesInDev(renderOpts, initialRequestStore)\n ) {\n // Before we kick off the render, we set the cache status back to it's initial state\n // in case a previous render bypassed the cache.\n if (setCacheStatus) {\n setCacheStatus('ready', htmlRequestId, requestId)\n }\n\n const result = await renderWithRestartOnCacheMissInDev(\n ctx,\n initialRequestStore,\n createRequestStore,\n getPayload,\n onError\n )\n debugChannel = result.debugChannel\n stream = result.stream\n } else {\n // We're either bypassing caches or we can't restart the render.\n // Do a dynamic render, but with (basic) environment labels.\n\n assertClientReferenceManifest(clientReferenceManifest)\n\n // Set cache status to bypass when specifically bypassing caches in dev\n if (setCacheStatus) {\n setCacheStatus('bypass', htmlRequestId, requestId)\n }\n\n debugChannel = setReactDebugChannel && createDebugChannel()\n\n stream = await stagedRenderToReadableStreamWithoutCachesInDev(\n ctx,\n initialRequestStore,\n getPayload,\n clientReferenceManifest,\n {\n onError: onError,\n filterStackFrame,\n debugChannel: debugChannel?.serverSide,\n }\n )\n }\n\n if (debugChannel && setReactDebugChannel) {\n setReactDebugChannel(debugChannel.clientSide, htmlRequestId, requestId)\n }\n\n return new FlightRenderResult(stream, {\n fetchMetrics: workStore.fetchMetrics,\n })\n}\n\nasync function generateRuntimePrefetchResult(\n req: BaseNextRequest,\n res: BaseNextResponse,\n ctx: AppRenderContext,\n requestStore: RequestStore\n): Promise<RenderResult> {\n const { workStore } = ctx\n const renderOpts = ctx.renderOpts\n\n function onFlightDataRenderError(err: DigestedError) {\n return renderOpts.onInstrumentationRequestError?.(\n err,\n req,\n // TODO(runtime-ppr): should we use a different value?\n createErrorContext(ctx, 'react-server-components-payload')\n )\n }\n const onError = createFlightReactServerErrorHandler(\n false,\n onFlightDataRenderError\n )\n\n const metadata: AppPageRenderResultMetadata = {}\n\n const generatePayload = () => generateDynamicRSCPayload(ctx, undefined)\n\n const {\n componentMod: {\n routeModule: {\n userland: { loaderTree },\n },\n },\n getDynamicParamFromSegment,\n } = ctx\n const rootParams = getRootParams(loaderTree, getDynamicParamFromSegment)\n\n // We need to share caches between the prospective prerender and the final prerender,\n // but we're not going to persist this anywhere.\n const prerenderResumeDataCache = createPrerenderResumeDataCache()\n // We're not resuming an existing render.\n const renderResumeDataCache = null\n\n await prospectiveRuntimeServerPrerender(\n ctx,\n generatePayload,\n prerenderResumeDataCache,\n renderResumeDataCache,\n rootParams,\n requestStore.headers,\n requestStore.cookies,\n requestStore.draftMode\n )\n\n const response = await finalRuntimeServerPrerender(\n ctx,\n generatePayload,\n prerenderResumeDataCache,\n renderResumeDataCache,\n rootParams,\n requestStore.headers,\n requestStore.cookies,\n requestStore.draftMode,\n onError\n )\n\n applyMetadataFromPrerenderResult(response, metadata, workStore)\n metadata.fetchMetrics = ctx.workStore.fetchMetrics\n\n if (response.isPartial) {\n res.setHeader(NEXT_DID_POSTPONE_HEADER, '1')\n }\n\n return new FlightRenderResult(response.result.prelude, metadata)\n}\n\nasync function prospectiveRuntimeServerPrerender(\n ctx: AppRenderContext,\n getPayload: () => any,\n prerenderResumeDataCache: PrerenderResumeDataCache | null,\n renderResumeDataCache: RenderResumeDataCache | null,\n rootParams: Params,\n headers: PrerenderStoreModernRuntime['headers'],\n cookies: PrerenderStoreModernRuntime['cookies'],\n draftMode: PrerenderStoreModernRuntime['draftMode']\n) {\n const { implicitTags, renderOpts, workStore } = ctx\n\n const { clientReferenceManifest, ComponentMod } = renderOpts\n\n assertClientReferenceManifest(clientReferenceManifest)\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 const initialServerPrerenderStore: PrerenderStoreModernRuntime = {\n type: 'prerender-runtime',\n phase: 'render',\n rootParams,\n implicitTags,\n renderSignal: initialServerRenderController.signal,\n controller: initialServerPrerenderController,\n // During the initial prerender we need to track all cache reads to ensure\n // we render long enough to fill every cache it is possible to visit during\n // the final prerender.\n cacheSignal,\n // We only need to track dynamic accesses during the final prerender.\n dynamicTracking: null,\n // Runtime prefetches are never cached server-side, only client-side,\n // so we set `expire` and `revalidate` to their minimum values just in case.\n revalidate: 1,\n expire: 0,\n stale: INFINITE_CACHE,\n tags: [...implicitTags.tags],\n renderResumeDataCache,\n prerenderResumeDataCache,\n hmrRefreshHash: undefined,\n captureOwnerStack: undefined,\n // We only need task sequencing in the final prerender.\n runtimeStagePromise: null,\n // These are not present in regular prerenders, but allowed in a runtime prerender.\n headers,\n cookies,\n draftMode,\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 getPayload\n )\n\n const pendingInitialServerResult = workUnitAsyncStorage.run(\n initialServerPrerenderStore,\n ComponentMod.prerender,\n initialServerPayload,\n clientReferenceManifest.clientModules,\n {\n filterStackFrame,\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 // Wait for all caches to be finished filling and for async imports to resolve\n trackPendingModules(cacheSignal)\n await cacheSignal.cacheReady()\n\n initialServerRenderController.abort()\n initialServerPrerenderController.abort()\n\n // We don't need to continue the prerender process if we already\n // detected invalid dynamic usage in the initial prerender phase.\n if (workStore.invalidDynamicUsageError) {\n throw workStore.invalidDynamicUsageError\n }\n\n try {\n return await createReactServerPrerenderResult(pendingInitialServerResult)\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 return null\n }\n}\n\nasync function finalRuntimeServerPrerender(\n ctx: AppRenderContext,\n getPayload: () => any,\n prerenderResumeDataCache: PrerenderResumeDataCache | null,\n renderResumeDataCache: RenderResumeDataCache | null,\n rootParams: Params,\n headers: PrerenderStoreModernRuntime['headers'],\n cookies: PrerenderStoreModernRuntime['cookies'],\n draftMode: PrerenderStoreModernRuntime['draftMode'],\n onError: (err: unknown) => string | undefined\n) {\n const { implicitTags, renderOpts } = ctx\n\n const {\n clientReferenceManifest,\n ComponentMod,\n experimental,\n isDebugDynamicAccesses,\n } = renderOpts\n\n assertClientReferenceManifest(clientReferenceManifest)\n\n const selectStaleTime = createSelectStaleTime(experimental)\n\n let serverIsDynamic = false\n const finalServerController = new AbortController()\n\n const serverDynamicTracking = createDynamicTrackingState(\n isDebugDynamicAccesses\n )\n\n const { promise: runtimeStagePromise, resolve: resolveBlockedRuntimeAPIs } =\n createPromiseWithResolvers<void>()\n\n const finalServerPrerenderStore: PrerenderStoreModernRuntime = {\n type: 'prerender-runtime',\n phase: 'render',\n rootParams,\n implicitTags,\n renderSignal: finalServerController.signal,\n controller: finalServerController,\n // All caches we could read must already be filled so no tracking is necessary\n cacheSignal: null,\n dynamicTracking: serverDynamicTracking,\n // Runtime prefetches are never cached server-side, only client-side,\n // so we set `expire` and `revalidate` to their minimum values just in case.\n revalidate: 1,\n expire: 0,\n stale: INFINITE_CACHE,\n tags: [...implicitTags.tags],\n prerenderResumeDataCache,\n renderResumeDataCache,\n hmrRefreshHash: undefined,\n captureOwnerStack: undefined,\n // Used to separate the \"Static\" stage from the \"Runtime\" stage.\n runtimeStagePromise,\n // These are not present in regular prerenders, but allowed in a runtime prerender.\n headers,\n cookies,\n draftMode,\n }\n\n const finalRSCPayload = await workUnitAsyncStorage.run(\n finalServerPrerenderStore,\n getPayload\n )\n\n let prerenderIsPending = true\n const result = await prerenderAndAbortInSequentialTasksWithStages(\n async () => {\n // Static stage\n const prerenderResult = await workUnitAsyncStorage.run(\n finalServerPrerenderStore,\n ComponentMod.prerender,\n finalRSCPayload,\n clientReferenceManifest.clientModules,\n {\n filterStackFrame,\n onError,\n signal: finalServerController.signal,\n }\n )\n prerenderIsPending = false\n return prerenderResult\n },\n () => {\n // Advance to the runtime stage.\n //\n // We make runtime APIs hang during the first task (above), and unblock them in the following task (here).\n // This makes sure that, at this point, we'll have finished all the static parts (what we'd prerender statically).\n // We know that they don't contain any incorrect sync IO, because that'd have caused a build error.\n // After we unblock Runtime APIs, if we encounter sync IO (e.g. `await cookies(); Date.now()`),\n // we'll abort, but we'll produce at least as much output as a static prerender would.\n resolveBlockedRuntimeAPIs()\n },\n () => {\n // Abort.\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 return {\n result,\n // TODO(runtime-ppr): do we need to produce a digest map here?\n // digestErrorsMap: ...,\n dynamicAccess: serverDynamicTracking,\n isPartial: serverIsDynamic,\n collectedRevalidate: finalServerPrerenderStore.revalidate,\n collectedExpire: finalServerPrerenderStore.expire,\n collectedStale: selectStaleTime(finalServerPrerenderStore.stale),\n collectedTags: finalServerPrerenderStore.tags,\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\nfunction getRenderedSearch(query: NextParsedUrlQuery): string {\n // Inlined implementation of querystring.encode, which is not available in\n // the Edge runtime.\n const pairs = []\n for (const key in query) {\n const value = query[key]\n if (value == null) continue\n if (Array.isArray(value)) {\n for (const v of value) {\n pairs.push(\n `${encodeURIComponent(key)}=${encodeURIComponent(String(v))}`\n )\n }\n } else {\n pairs.push(\n `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`\n )\n }\n }\n\n // The result should match the format of a web URL's `search` property, since\n // this is the format that's stored in the App Router state.\n // TODO: We're a bit inconsistent about this. The x-nextjs-rewritten-query\n // header omits the leading question mark. Should refactor to always do\n // that instead.\n if (pairs.length === 0) {\n // If the search string is empty, return an empty string.\n return ''\n }\n // Prepend '?' to the search params string.\n return '?' + pairs.join('&')\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: 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: { createMetadataComponents, createElement, Fragment },\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 const hasGlobalNotFound = !!tree[2]['global-not-found']\n\n const { Viewport, Metadata, MetadataOutlet } = createMetadataComponents({\n tree,\n // When it's using global-not-found, metadata errorType is undefined, which will retrieve the\n // metadata from the page.\n // When it's using not-found, metadata errorType is 'not-found', which will retrieve the\n // metadata from the not-found.js boundary.\n // TODO: remove this condition and keep it undefined when global-not-found is stabilized.\n errorType: is404 && !hasGlobalNotFound ? 'not-found' : undefined,\n parsedQuery: query,\n pathname: url.pathname,\n metadataContext: createMetadataContext(ctx.renderOpts),\n getDynamicParamFromSegment,\n workStore,\n serveStreamingMetadata,\n })\n\n const preloadCallbacks: PreloadCallbacks = []\n\n const seedData = await createComponentTree({\n ctx,\n loaderTree: tree,\n parentParams: {},\n injectedCSS,\n injectedJS,\n injectedFontPreloadTags,\n rootLayoutIncluded: false,\n missingSlots,\n preloadCallbacks,\n authInterrupts: ctx.renderOpts.experimental.authInterrupts,\n MetadataOutlet,\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 = createElement(\n Fragment,\n {\n key: flightDataPathHeadKey,\n },\n createElement(NonIndex, {\n createElement,\n pagePath: ctx.pagePath,\n statusCode: ctx.res.statusCode,\n isPossibleServerAction: ctx.isPossibleServerAction,\n }),\n createElement(Viewport, null),\n createElement(Metadata, null),\n appUsingSizeAdjustment\n ? createElement('meta', {\n name: 'next-size-adjust',\n content: '',\n })\n : null\n )\n\n const { GlobalError, styles: globalErrorStyles } = await getGlobalErrorStyles(\n tree,\n ctx\n )\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: createElement(Preloads, {\n preloadCallbacks: preloadCallbacks,\n }),\n b: ctx.sharedContext.buildId,\n c: prepareInitialCanonicalUrl(url),\n q: getRenderedSearch(query),\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 componentMod: { createMetadataComponents, createElement, Fragment },\n url,\n workStore,\n } = ctx\n\n const serveStreamingMetadata = !!ctx.renderOpts.serveStreamingMetadata\n const { Viewport, Metadata } = createMetadataComponents({\n tree,\n parsedQuery: query,\n pathname: url.pathname,\n metadataContext: createMetadataContext(ctx.renderOpts),\n errorType,\n getDynamicParamFromSegment,\n workStore,\n serveStreamingMetadata: serveStreamingMetadata,\n })\n\n const initialHead = createElement(\n Fragment,\n {\n key: flightDataPathHeadKey,\n },\n createElement(NonIndex, {\n createElement,\n pagePath: ctx.pagePath,\n statusCode: ctx.res.statusCode,\n isPossibleServerAction: ctx.isPossibleServerAction,\n }),\n createElement(Viewport, null),\n process.env.NODE_ENV === 'development' &&\n createElement('meta', {\n name: 'next-error',\n content: 'not-found',\n }),\n createElement(Metadata, null)\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 createElement(\n 'html',\n {\n id: '__next_error__',\n },\n createElement('head', null),\n createElement(\n 'body',\n null,\n process.env.NODE_ENV !== 'production' && err\n ? createElement('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 )\n ),\n {},\n null,\n false,\n false, // We don't currently support runtime prefetching for error pages.\n ]\n\n const { GlobalError, styles: globalErrorStyles } = await getGlobalErrorStyles(\n tree,\n ctx\n )\n\n const isPossiblyPartialHead =\n workStore.isStaticGeneration &&\n ctx.renderOpts.experimental.isRoutePPREnabled === true\n\n return {\n b: ctx.sharedContext.buildId,\n c: prepareInitialCanonicalUrl(url),\n q: getRenderedSearch(query),\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\nfunction assertClientReferenceManifest(\n clientReferenceManifest: RenderOpts['clientReferenceManifest']\n): asserts clientReferenceManifest is NonNullable<\n RenderOpts['clientReferenceManifest']\n> {\n if (!clientReferenceManifest) {\n throw new InvariantError('Expected clientReferenceManifest to be defined.')\n }\n}\n\n// This component must run in an SSR context. It will render the RSC root component\nfunction App<T>({\n reactServerStream,\n reactDebugStream,\n preinitScripts,\n clientReferenceManifest,\n ServerInsertedHTMLProvider,\n nonce,\n images,\n}: {\n /* eslint-disable @next/internal/no-ambiguous-jsx -- React Client */\n reactServerStream: BinaryStreamOf<T>\n reactDebugStream: ReadableStream<Uint8Array> | undefined\n preinitScripts: () => void\n clientReferenceManifest: NonNullable<RenderOpts['clientReferenceManifest']>\n ServerInsertedHTMLProvider: ComponentType<{\n children: JSX.Element\n }>\n images: RenderOpts['images']\n nonce?: string\n}): JSX.Element {\n preinitScripts()\n const response = ReactClient.use(\n useFlightStream<InitialRSCPayload>(\n reactServerStream,\n reactDebugStream,\n clientReferenceManifest,\n nonce\n )\n )\n\n const initialState = createInitialRouterState({\n // This is not used during hydration, so we don't have to pass a\n // real timestamp.\n navigatedAt: -1,\n initialFlightData: response.f,\n initialCanonicalUrlParts: response.c,\n initialRenderedSearch: response.q,\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 })\n\n const actionQueue = createMutableActionQueue(initialState, null)\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 <ImageConfigContext.Provider value={images ?? imageConfigDefault}>\n <ServerInsertedHTMLProvider>\n <AppRouter actionQueue={actionQueue} globalErrorState={response.G} />\n </ServerInsertedHTMLProvider>\n </ImageConfigContext.Provider>\n </HeadManagerContext.Provider>\n )\n /* eslint-enable @next/internal/no-ambiguous-jsx -- React Client */\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 ErrorApp<T>({\n reactServerStream,\n reactDebugStream,\n preinitScripts,\n clientReferenceManifest,\n ServerInsertedHTMLProvider,\n nonce,\n images,\n}: {\n reactServerStream: BinaryStreamOf<T>\n reactDebugStream: ReadableStream<Uint8Array> | undefined\n preinitScripts: () => void\n clientReferenceManifest: NonNullable<RenderOpts['clientReferenceManifest']>\n ServerInsertedHTMLProvider: ComponentType<{\n children: JSX.Element\n }>\n nonce?: string\n images: RenderOpts['images']\n}): JSX.Element {\n /* eslint-disable @next/internal/no-ambiguous-jsx -- React Client */\n preinitScripts()\n const response = ReactClient.use(\n useFlightStream<InitialRSCPayload>(\n reactServerStream,\n reactDebugStream,\n clientReferenceManifest,\n nonce\n )\n )\n\n const initialState = createInitialRouterState({\n // This is not used during hydration, so we don't have to pass a\n // real timestamp.\n navigatedAt: -1,\n initialFlightData: response.f,\n initialCanonicalUrlParts: response.c,\n initialRenderedSearch: response.q,\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 })\n\n const actionQueue = createMutableActionQueue(initialState, null)\n\n return (\n <ImageConfigContext.Provider value={images ?? imageConfigDefault}>\n <ServerInsertedHTMLProvider>\n <AppRouter actionQueue={actionQueue} globalErrorState={response.G} />\n </ServerInsertedHTMLProvider>\n </ImageConfigContext.Provider>\n )\n /* eslint-enable @next/internal/no-ambiguous-jsx -- React Client */\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 postponedState: PostponedState | null,\n serverComponentsHmrCache: ServerComponentsHmrCache | undefined,\n sharedContext: AppSharedContext,\n interpolatedParams: Params,\n fallbackRouteParams: OpaqueFallbackRouteParams | null\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 clientReferenceManifest,\n serverActionsManifest,\n ComponentMod,\n nextFontManifest,\n serverActions,\n assetPrefix = '',\n enableTainting,\n cacheComponents,\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\n // When we are prerendering if there is a cacheSignal for tracking\n // cache reads we track calls to `loadChunk` and `require`. This allows us\n // to treat chunk/module loading with similar semantics as cache reads to avoid\n // module loading from causing a prerender to abort too early.\n\n const shouldTrackModuleLoading = () => {\n if (!cacheComponents) {\n return false\n }\n if (renderOpts.dev) {\n return true\n }\n const workUnitStore = workUnitAsyncStorage.getStore()\n\n if (!workUnitStore) {\n return false\n }\n\n switch (workUnitStore.type) {\n case 'prerender':\n case 'prerender-client':\n case 'prerender-runtime':\n case 'cache':\n case 'private-cache':\n return true\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'request':\n case 'unstable-cache':\n return false\n default:\n workUnitStore satisfies never\n }\n }\n\n const __next_require__: typeof instrumented.require = (...args) => {\n const exportsOrPromise = instrumented.require(...args)\n if (shouldTrackModuleLoading()) {\n // requiring an async module returns a promise.\n trackPendingImport(exportsOrPromise)\n }\n return exportsOrPromise\n }\n // @ts-expect-error\n globalThis.__next_require__ = __next_require__\n\n const __next_chunk_load__: typeof instrumented.loadChunk = (...args) => {\n const loadingChunk = instrumented.loadChunk(...args)\n if (shouldTrackModuleLoading()) {\n trackPendingChunkLoad(loadingChunk)\n }\n return loadingChunk\n }\n // @ts-expect-error\n globalThis.__next_chunk_load__ = __next_chunk_load__\n }\n\n if (\n process.env.NODE_ENV === 'development' &&\n renderOpts.setIsrStatus &&\n !cacheComponents\n ) {\n // Reset the ISR status at start of request.\n const { pathname } = new URL(req.url || '/', 'http://n')\n renderOpts.setIsrStatus(\n pathname,\n // Only pages using the Node runtime can use ISR, Edge is always dynamic.\n process.env.NEXT_RUNTIME === 'edge' ? false : undefined\n )\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 res.onClose(() => {\n // We stop tracking fetch metrics when the response closes, since we\n // report them at that time.\n workStore.shouldTrackFetchMetrics = false\n })\n\n req.originalRequest.on('end', () => {\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 statusCode: isNotFoundPath ? 404 : undefined,\n }\n\n const appUsingSizeAdjustment = !!nextFontManifest?.appUsingSizeAdjust\n\n assertClientReferenceManifest(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 {\n routeModule: {\n userland: { loaderTree },\n },\n taintObjectReference,\n } = ComponentMod\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 { isStaticGeneration } = workStore\n\n let requestId: string\n let htmlRequestId: string\n\n const {\n flightRouterState,\n isPrefetchRequest,\n isRuntimePrefetchRequest,\n isRSCRequest,\n isHmrRefresh,\n nonce,\n } = parsedRequestHeaders\n\n if (parsedRequestHeaders.requestId) {\n // If the client has provided a request ID (in development mode), we use it.\n requestId = parsedRequestHeaders.requestId\n } else {\n // Otherwise we generate a new request ID.\n if (isStaticGeneration) {\n requestId = Buffer.from(\n await crypto.subtle.digest('SHA-1', Buffer.from(req.url))\n ).toString('hex')\n } else if (process.env.NEXT_RUNTIME === 'edge') {\n requestId = crypto.randomUUID()\n } else {\n requestId = (\n require('next/dist/compiled/nanoid') as typeof import('next/dist/compiled/nanoid')\n ).nanoid()\n }\n }\n\n // If the client has provided an HTML request ID, we use it to associate the\n // request with the HTML document from which it originated, which is used to\n // send debug information to the associated WebSocket client. Otherwise, this\n // is the request for the HTML document, so we use the request ID also as the\n // HTML request ID.\n htmlRequestId = parsedRequestHeaders.htmlRequestId || requestId\n\n const getDynamicParamFromSegment = makeGetDynamicParamFromSegment(\n interpolatedParams,\n fallbackRouteParams\n )\n\n const isPossibleActionRequest = getIsPossibleServerAction(req)\n\n const implicitTags = await getImplicitTags(\n workStore.page,\n url,\n fallbackRouteParams\n )\n\n const ctx: AppRenderContext = {\n componentMod: ComponentMod,\n url,\n renderOpts,\n workStore,\n parsedRequestHeaders,\n getDynamicParamFromSegment,\n query,\n isPrefetch: isPrefetchRequest,\n isPossibleServerAction: isPossibleActionRequest,\n requestTimestamp,\n appUsingSizeAdjustment,\n flightRouterState,\n requestId,\n htmlRequestId,\n pagePath,\n clientReferenceManifest,\n assetPrefix,\n isNotFoundPath,\n nonce,\n res,\n sharedContext,\n implicitTags,\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 loaderTree,\n fallbackRouteParams\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 (workStore.invalidDynamicUsageError) {\n logDisallowedDynamicError(workStore, workStore.invalidDynamicUsageError)\n throw new StaticGenBailoutError()\n }\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 contentType: HTML_CONTENT_TYPE_HEADER,\n }\n // If we have pending revalidates, wait until they are all resolved.\n if (\n workStore.pendingRevalidates ||\n workStore.pendingRevalidateWrites ||\n workStore.pendingRevalidatedTags\n ) {\n const pendingPromise = executeRevalidates(workStore).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 applyMetadataFromPrerenderResult(response, metadata, workStore)\n\n if (response.renderResumeDataCache) {\n metadata.renderResumeDataCache = response.renderResumeDataCache\n }\n\n return new RenderResult(await streamToString(response.stream), options)\n } else {\n // We're rendering dynamically\n const renderResumeDataCache =\n renderOpts.renderResumeDataCache ??\n postponedState?.renderResumeDataCache ??\n null\n\n const rootParams = getRootParams(loaderTree, ctx.getDynamicParamFromSegment)\n const devValidatingFallbackParams =\n getRequestMeta(req, 'devValidatingFallbackParams') || null\n\n const createRequestStore = createRequestStoreForRender.bind(\n null,\n req,\n res,\n url,\n rootParams,\n implicitTags,\n renderOpts.onUpdateCookies,\n renderOpts.previewProps,\n isHmrRefresh,\n serverComponentsHmrCache,\n renderResumeDataCache,\n devValidatingFallbackParams\n )\n const requestStore = createRequestStore()\n\n if (\n process.env.NODE_ENV === 'development' &&\n renderOpts.setIsrStatus &&\n !cacheComponents &&\n // Only pages using the Node runtime can use ISR, so we only need to\n // update the status for those.\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 const setIsrStatus = renderOpts.setIsrStatus\n req.originalRequest.on('end', () => {\n const { pathname } = new URL(req.url || '/', 'http://n')\n const isStatic = !requestStore.usedDynamic && !workStore.forceDynamic\n setIsrStatus(pathname, isStatic)\n })\n }\n\n if (isRSCRequest) {\n if (isRuntimePrefetchRequest) {\n return generateRuntimePrefetchResult(req, res, ctx, requestStore)\n } else {\n if (\n process.env.NODE_ENV === 'development' &&\n process.env.NEXT_RUNTIME !== 'edge' &&\n cacheComponents\n ) {\n return generateDynamicFlightRenderResultWithStagesInDev(\n req,\n ctx,\n requestStore,\n createRequestStore\n )\n } else {\n return generateDynamicFlightRenderResult(req, ctx, requestStore)\n }\n }\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 didExecuteServerAction = false\n let formState: null | any = null\n if (isPossibleActionRequest) {\n // For action requests, we don't want to use the resume data cache.\n requestStore.renderResumeDataCache = null\n\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 metadata,\n })\n\n if (actionRequestResult) {\n if (actionRequestResult.type === 'not-found') {\n const notFoundLoaderTree = createNotFoundLoaderTree(loaderTree)\n res.statusCode = 404\n metadata.statusCode = 404\n const stream = await renderToStreamWithTracing(\n requestStore,\n req,\n res,\n ctx,\n notFoundLoaderTree,\n formState,\n postponedState,\n metadata,\n undefined, // Prevent restartable-render behavior in dev + Cache Components mode\n devValidatingFallbackParams\n )\n\n return new RenderResult(stream, {\n metadata,\n contentType: HTML_CONTENT_TYPE_HEADER,\n })\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 didExecuteServerAction = true\n // Restore the resume data cache\n requestStore.renderResumeDataCache = renderResumeDataCache\n }\n\n const options: RenderResultOptions = {\n metadata,\n contentType: HTML_CONTENT_TYPE_HEADER,\n }\n\n const stream = await renderToStreamWithTracing(\n // NOTE: in Cache Components (dev), if the render is restarted, it will use a different requestStore\n // than the one that we're passing in here.\n requestStore,\n req,\n res,\n ctx,\n loaderTree,\n formState,\n postponedState,\n metadata,\n // If we're rendering HTML after an action, we don't want restartable-render behavior\n // because the result should be dynamic, like it is in prod.\n // Also, the request store might have been mutated by the action (e.g. enabling draftMode)\n // and we currently we don't copy changes over when creating a new store,\n // so the restarted render wouldn't be correct.\n didExecuteServerAction ? undefined : createRequestStore,\n devValidatingFallbackParams\n )\n\n // Invalid dynamic usages should only error the request in development.\n // In production, it's better to produce a result.\n // (the dynamic error will still be thrown inside the component tree, but it's catchable by error boundaries)\n if (workStore.invalidDynamicUsageError && workStore.dev) {\n throw workStore.invalidDynamicUsageError\n }\n\n // If we have pending revalidates, wait until they are all resolved.\n if (\n workStore.pendingRevalidates ||\n workStore.pendingRevalidateWrites ||\n workStore.pendingRevalidatedTags\n ) {\n const pendingPromise = executeRevalidates(workStore).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: OpaqueFallbackRouteParams | null,\n renderOpts: RenderOpts,\n serverComponentsHmrCache: ServerComponentsHmrCache | undefined,\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 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 isRoutePPREnabled: renderOpts.experimental.isRoutePPREnabled === true,\n previewModeId: renderOpts.previewProps?.previewModeId,\n })\n\n const { isPrefetchRequest, previouslyRevalidatedTags, nonce } =\n parsedRequestHeaders\n\n let interpolatedParams: Params\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 interpolatedParams = interpolateParallelRouteParams(\n renderOpts.ComponentMod.routeModule.userland.loaderTree,\n renderOpts.params ?? {},\n pagePath,\n fallbackRouteParams\n )\n\n postponedState = parsePostponedState(\n renderOpts.postponed,\n interpolatedParams\n )\n } else {\n interpolatedParams = interpolateParallelRouteParams(\n renderOpts.ComponentMod.routeModule.userland.loaderTree,\n renderOpts.params ?? {},\n pagePath,\n fallbackRouteParams\n )\n }\n\n if (\n postponedState?.renderResumeDataCache &&\n renderOpts.renderResumeDataCache\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 workStore = createWorkStore({\n page: renderOpts.routeModule.definition.page,\n renderOpts,\n // @TODO move to workUnitStore of type Request\n isPrefetchRequest,\n buildId: sharedContext.buildId,\n previouslyRevalidatedTags,\n nonce,\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 postponedState,\n serverComponentsHmrCache,\n sharedContext,\n interpolatedParams,\n fallbackRouteParams\n )\n}\n\nfunction applyMetadataFromPrerenderResult(\n response: Pick<\n PrerenderToStreamResult,\n | 'collectedExpire'\n | 'collectedRevalidate'\n | 'collectedStale'\n | 'collectedTags'\n >,\n metadata: AppPageRenderResultMetadata,\n workStore: WorkStore\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 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\ntype RSCPayloadDevProperties = {\n /** Only available during cacheComponents development builds. Used for logging errors. */\n _validation?: Promise<ReactNode>\n _bypassCachesInDev?: ReactNode\n}\n\nasync function renderToStream(\n requestStore: RequestStore,\n req: BaseNextRequest,\n res: BaseNextResponse,\n ctx: AppRenderContext,\n tree: LoaderTree,\n formState: any,\n postponedState: PostponedState | null,\n metadata: AppPageRenderResultMetadata,\n createRequestStore: (() => RequestStore) | undefined,\n devValidatingFallbackParams: OpaqueFallbackRouteParams | null\n): Promise<ReadableStream<Uint8Array>> {\n /* eslint-disable @next/internal/no-ambiguous-jsx -- React Client */\n const {\n assetPrefix,\n htmlRequestId,\n nonce,\n pagePath,\n renderOpts,\n requestId,\n workStore,\n } = ctx\n\n const {\n basePath,\n buildManifest,\n clientReferenceManifest,\n ComponentMod: {\n createElement,\n renderToReadableStream: serverRenderToReadableStream,\n },\n crossOrigin,\n dev = false,\n experimental,\n nextExport = false,\n onInstrumentationRequestError,\n page,\n reactMaxHeadersLength,\n setReactDebugChannel,\n shouldWaitOnAllReady,\n subresourceIntegrityManifest,\n supportsDynamicResponse,\n cacheComponents,\n } = renderOpts\n\n assertClientReferenceManifest(clientReferenceManifest)\n\n const { ServerInsertedHTMLProvider, renderServerInsertedHTML } =\n createServerInsertedHTML()\n const getServerInsertedMetadata = createServerInsertedMetadata(nonce)\n\n const tracingMetadata = getTracedMetadata(\n getTracer().getTracePropagationData(),\n experimental.clientTraceMetadata\n )\n\n const polyfills: JSX.IntrinsicElements['script'][] =\n buildManifest.polyfillFiles\n .filter(\n (polyfill) =>\n polyfill.endsWith('.js') && !polyfill.endsWith('.module.js')\n )\n .map((polyfill) => ({\n src: `${assetPrefix}/_next/${polyfill}${getAssetQueryString(\n ctx,\n false\n )}`,\n integrity: subresourceIntegrityManifest?.[polyfill],\n crossOrigin,\n noModule: true,\n nonce,\n }))\n\n const [preinitScripts, bootstrapScript] = getRequiredScripts(\n 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 assetPrefix,\n crossOrigin,\n subresourceIntegrityManifest,\n getAssetQueryString(ctx, true),\n nonce,\n page\n )\n\n // In development mode, set the request ID as a global variable, before the\n // bootstrap script is executed, which depends on it during hydration.\n const bootstrapScriptContent =\n process.env.NODE_ENV !== 'production'\n ? `self.__next_r=${JSON.stringify(requestId)}`\n : undefined\n\n const reactServerErrorsByDigest: Map<string, DigestedError> = new Map()\n const silenceLogger = false\n function onHTMLRenderRSCError(err: DigestedError) {\n return onInstrumentationRequestError?.(\n err,\n req,\n createErrorContext(ctx, 'react-server-components')\n )\n }\n const serverComponentsErrorHandler = createHTMLReactServerErrorHandler(\n dev,\n nextExport,\n reactServerErrorsByDigest,\n silenceLogger,\n onHTMLRenderRSCError\n )\n\n function onHTMLRenderSSRError(err: DigestedError) {\n return onInstrumentationRequestError?.(\n err,\n req,\n createErrorContext(ctx, 'server-rendering')\n )\n }\n\n const allCapturedErrors: Array<unknown> = []\n const htmlRendererErrorHandler = createHTMLErrorHandler(\n dev,\n nextExport,\n reactServerErrorsByDigest,\n allCapturedErrors,\n silenceLogger,\n onHTMLRenderSSRError\n )\n\n let reactServerResult: null | ReactServerResult = null\n let reactDebugStream: ReadableStream<Uint8Array> | undefined\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 we have React's dev builds available\n process.env.NODE_ENV === 'development' &&\n // We only want this behavior when running `next dev`\n dev &&\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 cacheComponents\n cacheComponents\n ) {\n const [resolveValidation, validationOutlet] = createValidationOutlet()\n let debugChannel: DebugChannelPair | undefined\n const getPayload = async (\n // eslint-disable-next-line @typescript-eslint/no-shadow\n requestStore: RequestStore\n ) => {\n const payload: InitialRSCPayload & RSCPayloadDevProperties =\n await workUnitAsyncStorage.run(\n requestStore,\n getRSCPayload,\n tree,\n ctx,\n res.statusCode === 404\n )\n // Placing the validation outlet in the payload is safe\n // even if we end up discarding a render and restarting,\n // because we're not going to wait for the stream to complete,\n // so leaving the validation unresolved is fine.\n payload._validation = validationOutlet\n\n if (isBypassingCachesInDev(renderOpts, requestStore)) {\n // Mark the RSC payload to indicate that caches were bypassed in dev.\n // This lets the client know not to cache anything based on this render.\n if (renderOpts.setCacheStatus) {\n // we know this is available when cacheComponents is enabled, but typeguard to be safe\n renderOpts.setCacheStatus('bypass', htmlRequestId, requestId)\n }\n payload._bypassCachesInDev = createElement(WarnForBypassCachesInDev, {\n route: workStore.route,\n })\n }\n\n return payload\n }\n\n if (\n // We only do this flow if we can safely recreate the store from scratch\n // (which is not the case for renders after an action)\n createRequestStore &&\n // We only do this flow if we're not bypassing caches in dev using\n // \"disable cache\" in devtools or a hard refresh (cache-control: \"no-store\")\n !isBypassingCachesInDev(renderOpts, requestStore)\n ) {\n const {\n stream: serverStream,\n debugChannel: returnedDebugChannel,\n requestStore: finalRequestStore,\n } = await renderWithRestartOnCacheMissInDev(\n ctx,\n requestStore,\n createRequestStore,\n getPayload,\n serverComponentsErrorHandler\n )\n\n reactServerResult = new ReactServerResult(serverStream)\n requestStore = finalRequestStore\n debugChannel = returnedDebugChannel\n } else {\n // We're either bypassing caches or we can't restart the render.\n // Do a dynamic render, but with (basic) environment labels.\n\n debugChannel = setReactDebugChannel && createDebugChannel()\n\n const serverStream =\n await stagedRenderToReadableStreamWithoutCachesInDev(\n ctx,\n requestStore,\n getPayload,\n clientReferenceManifest,\n {\n onError: serverComponentsErrorHandler,\n filterStackFrame,\n debugChannel: debugChannel?.serverSide,\n }\n )\n reactServerResult = new ReactServerResult(serverStream)\n }\n\n if (debugChannel && setReactDebugChannel) {\n const [readableSsr, readableBrowser] =\n debugChannel.clientSide.readable.tee()\n\n reactDebugStream = readableSsr\n\n setReactDebugChannel(\n { readable: readableBrowser },\n htmlRequestId,\n requestId\n )\n }\n\n // TODO(restart-on-cache-miss):\n // This can probably be optimized to do less work,\n // because we've already made sure that we have warm caches.\n consoleAsyncStorage.run(\n { dim: true },\n spawnDynamicValidationInDev,\n resolveValidation,\n tree,\n ctx,\n res.statusCode === 404,\n clientReferenceManifest,\n requestStore,\n devValidatingFallbackParams\n )\n } else {\n // This is a dynamic render. We don't do dynamic tracking because we're not prerendering\n const RSCPayload: RSCPayload & RSCPayloadDevProperties =\n await workUnitAsyncStorage.run(\n requestStore,\n getRSCPayload,\n tree,\n ctx,\n res.statusCode === 404\n )\n\n const debugChannel = setReactDebugChannel && createDebugChannel()\n\n if (debugChannel) {\n const [readableSsr, readableBrowser] =\n debugChannel.clientSide.readable.tee()\n\n reactDebugStream = readableSsr\n\n setReactDebugChannel(\n { readable: readableBrowser },\n htmlRequestId,\n requestId\n )\n }\n\n reactServerResult = new ReactServerResult(\n workUnitAsyncStorage.run(\n requestStore,\n serverRenderToReadableStream,\n RSCPayload,\n clientReferenceManifest.clientModules,\n {\n filterStackFrame,\n onError: serverComponentsErrorHandler,\n debugChannel: debugChannel?.serverSide,\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 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, preludeState } =\n getPostponedFromState(postponedState)\n const resume = (\n require('react-dom/server') as typeof import('react-dom/server')\n ).resume\n\n const htmlStream = await workUnitAsyncStorage.run(\n requestStore,\n resume,\n <App\n reactServerStream={reactServerResult.tee()}\n reactDebugStream={reactDebugStream}\n preinitScripts={preinitScripts}\n clientReferenceManifest={clientReferenceManifest}\n ServerInsertedHTMLProvider={ServerInsertedHTMLProvider}\n nonce={nonce}\n images={ctx.renderOpts.images}\n />,\n postponed,\n { onError: htmlRendererErrorHandler, nonce }\n )\n\n const getServerInsertedHTML = makeGetServerInsertedHTML({\n polyfills,\n renderServerInsertedHTML,\n serverCapturedErrors: allCapturedErrors,\n basePath,\n tracingMetadata: tracingMetadata,\n })\n return await continueDynamicHTMLResume(htmlStream, {\n // If the prelude is empty (i.e. is no static shell), we should wait for initial HTML to be rendered\n // to avoid injecting RSC data too early.\n // If we have a non-empty-prelude (i.e. a static HTML shell), then it's already been sent separately,\n // so we shouldn't wait for any HTML to be emitted from the resume before sending RSC data.\n delayDataUntilFirstHtmlChunk:\n preludeState === DynamicHTMLPreludeState.Empty,\n inlinedDataStream: createInlinedDataReadableStream(\n reactServerResult.consume(),\n nonce,\n formState\n ),\n getServerInsertedHTML,\n getServerInsertedMetadata,\n })\n }\n }\n\n // This is a regular dynamic render\n const renderToReadableStream = (\n require('react-dom/server') as typeof import('react-dom/server')\n ).renderToReadableStream\n\n const htmlStream = await workUnitAsyncStorage.run(\n requestStore,\n renderToReadableStream,\n <App\n reactServerStream={reactServerResult.tee()}\n reactDebugStream={reactDebugStream}\n preinitScripts={preinitScripts}\n clientReferenceManifest={clientReferenceManifest}\n ServerInsertedHTMLProvider={ServerInsertedHTMLProvider}\n nonce={nonce}\n images={ctx.renderOpts.images}\n />,\n {\n onError: htmlRendererErrorHandler,\n nonce,\n onHeaders: (headers: Headers) => {\n headers.forEach((value, key) => {\n appendHeader(key, value)\n })\n },\n maxHeadersLength: reactMaxHeadersLength,\n bootstrapScriptContent,\n bootstrapScripts: [bootstrapScript],\n formState,\n }\n )\n\n const getServerInsertedHTML = makeGetServerInsertedHTML({\n polyfills,\n renderServerInsertedHTML,\n serverCapturedErrors: allCapturedErrors,\n 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 a static 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 supportsDynamicResponse !== true || !!shouldWaitOnAllReady\n\n return await continueFizzStream(htmlStream, {\n inlinedDataStream: createInlinedDataReadableStream(\n reactServerResult.consume(),\n nonce,\n formState\n ),\n isStaticGeneration: generateStaticHTML,\n isBuildTimePrerendering: ctx.workStore.isBuildTimePrerendering === true,\n buildId: ctx.workStore.buildId,\n getServerInsertedHTML,\n getServerInsertedMetadata,\n validateRootLayout: dev,\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 \"${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 metadata.statusCode = res.statusCode\n errorType = getAccessFallbackErrorTypeByStatus(res.statusCode)\n } else if (isRedirectError(err)) {\n errorType = 'redirect'\n res.statusCode = getRedirectStatusCodeFromError(err)\n metadata.statusCode = res.statusCode\n\n const redirectUrl = addPathPrefix(getURLFromRedirectError(err), basePath)\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 metadata.statusCode = res.statusCode\n }\n\n const [errorPreinitScripts, errorBootstrapScript] = getRequiredScripts(\n buildManifest,\n assetPrefix,\n crossOrigin,\n subresourceIntegrityManifest,\n getAssetQueryString(ctx, false),\n 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 serverRenderToReadableStream,\n errorRSCPayload,\n clientReferenceManifest.clientModules,\n {\n filterStackFrame,\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:\n require('react-dom/server') as typeof import('react-dom/server'),\n element: (\n <ErrorApp\n reactServerStream={errorServerStream}\n reactDebugStream={undefined}\n ServerInsertedHTMLProvider={ServerInsertedHTMLProvider}\n preinitScripts={errorPreinitScripts}\n clientReferenceManifest={clientReferenceManifest}\n nonce={nonce}\n images={ctx.renderOpts.images}\n />\n ),\n streamOptions: {\n nonce,\n bootstrapScriptContent,\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 a static 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 supportsDynamicResponse !== true || !!shouldWaitOnAllReady\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 nonce,\n formState\n ),\n isStaticGeneration: generateStaticHTML,\n isBuildTimePrerendering: ctx.workStore.isBuildTimePrerendering === true,\n buildId: ctx.workStore.buildId,\n getServerInsertedHTML: makeGetServerInsertedHTML({\n polyfills,\n renderServerInsertedHTML,\n serverCapturedErrors: [],\n basePath,\n tracingMetadata: tracingMetadata,\n }),\n getServerInsertedMetadata,\n validateRootLayout: dev,\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 /* eslint-enable @next/internal/no-ambiguous-jsx */\n}\n\nasync function renderWithRestartOnCacheMissInDev(\n ctx: AppRenderContext,\n initialRequestStore: RequestStore,\n createRequestStore: () => RequestStore,\n getPayload: (requestStore: RequestStore) => Promise<RSCPayload>,\n onError: (error: unknown) => void\n) {\n const {\n htmlRequestId,\n renderOpts,\n requestId,\n componentMod: {\n routeModule: {\n userland: { loaderTree },\n },\n },\n } = ctx\n const {\n clientReferenceManifest,\n ComponentMod,\n setCacheStatus,\n setReactDebugChannel,\n } = renderOpts\n assertClientReferenceManifest(clientReferenceManifest)\n\n const hasRuntimePrefetch =\n await anySegmentHasRuntimePrefetchEnabled(loaderTree)\n\n // If the render is restarted, we'll recreate a fresh request store\n let requestStore: RequestStore = initialRequestStore\n\n const environmentName = () => {\n const currentStage = requestStore.stagedRendering!.currentStage\n switch (currentStage) {\n case RenderStage.Static:\n return 'Prerender'\n case RenderStage.Runtime:\n return hasRuntimePrefetch ? 'Prefetch' : 'Prefetchable'\n case RenderStage.Dynamic:\n return 'Server'\n default:\n currentStage satisfies never\n throw new InvariantError(`Invalid render stage: ${currentStage}`)\n }\n }\n\n //===============================================\n // Initial render\n //===============================================\n\n // Try to render the page and see if there's any cache misses.\n // If there are, wait for caches to finish and restart the render.\n\n // This render might end up being used as a prospective render (if there's cache misses),\n // so we need to set it up for filling caches.\n const cacheSignal = new CacheSignal()\n\n // If we encounter async modules that delay rendering, we'll also need to restart.\n // TODO(restart-on-cache-miss): technically, we only need to wait for pending *server* modules here,\n // but `trackPendingModules` doesn't distinguish between client and server.\n trackPendingModules(cacheSignal)\n\n const prerenderResumeDataCache = createPrerenderResumeDataCache()\n\n const initialReactController = new AbortController()\n const initialDataController = new AbortController() // Controls hanging promises we create\n const initialStageController = new StagedRenderingController(\n initialDataController.signal\n )\n\n requestStore.prerenderResumeDataCache = prerenderResumeDataCache\n // `getRenderResumeDataCache` will fall back to using `prerenderResumeDataCache` as `renderResumeDataCache`,\n // so not having a resume data cache won't break any expectations in case we don't need to restart.\n requestStore.renderResumeDataCache = null\n requestStore.stagedRendering = initialStageController\n requestStore.asyncApiPromises = createAsyncApiPromisesInDev(\n initialStageController,\n requestStore.cookies,\n requestStore.mutableCookies,\n requestStore.headers\n )\n requestStore.cacheSignal = cacheSignal\n\n let debugChannel = setReactDebugChannel && createDebugChannel()\n\n const initialRscPayload = await getPayload(requestStore)\n const maybeInitialServerStream = await workUnitAsyncStorage.run(\n requestStore,\n () =>\n pipelineInSequentialTasks(\n () => {\n // Static stage\n const stream = ComponentMod.renderToReadableStream(\n initialRscPayload,\n clientReferenceManifest.clientModules,\n {\n onError,\n environmentName,\n filterStackFrame,\n debugChannel: debugChannel?.serverSide,\n signal: initialReactController.signal,\n }\n )\n // If we abort the render, we want to reject the stage-dependent promises as well.\n // Note that we want to install this listener after the render is started\n // so that it runs after react is finished running its abort code.\n initialReactController.signal.addEventListener('abort', () => {\n initialDataController.abort(initialReactController.signal.reason)\n })\n return stream\n },\n (stream) => {\n // Runtime stage\n initialStageController.advanceStage(RenderStage.Runtime)\n\n // If we had a cache miss in the static stage, we'll have to disard this stream\n // and render again once the caches are warm.\n if (cacheSignal.hasPendingReads()) {\n return null\n }\n\n // If there's no cache misses, we'll continue rendering,\n // and see if there's any cache misses in the runtime stage.\n return stream\n },\n async (maybeStream) => {\n // Dynamic stage\n\n // If we had cache misses in either of the previous stages,\n // then we'll only use this render for filling caches.\n // We won't advance the stage, and thus leave dynamic APIs hanging,\n // because they won't be cached anyway, so it'd be wasted work.\n if (maybeStream === null || cacheSignal.hasPendingReads()) {\n return null\n }\n\n // If there's no cache misses, we'll use this render, so let it advance to the dynamic stage.\n initialStageController.advanceStage(RenderStage.Dynamic)\n return maybeStream\n }\n )\n )\n\n if (maybeInitialServerStream !== null) {\n // No cache misses. We can use the stream as is.\n return {\n stream: maybeInitialServerStream,\n debugChannel,\n requestStore,\n }\n }\n\n if (process.env.NODE_ENV === 'development' && setCacheStatus) {\n setCacheStatus('filling', htmlRequestId, requestId)\n }\n\n // Cache miss. We will use the initial render to fill caches, and discard its result.\n // Then, we can render again with warm caches.\n\n // TODO(restart-on-cache-miss):\n // This might end up waiting for more caches than strictly necessary,\n // because we can't abort the render yet, and we'll let runtime/dynamic APIs resolve.\n // Ideally we'd only wait for caches that are needed in the static stage.\n // This will be optimized in the future by not allowing runtime/dynamic APIs to resolve.\n\n await cacheSignal.cacheReady()\n initialReactController.abort()\n\n //===============================================\n // Final render (restarted)\n //===============================================\n\n // The initial render acted as a prospective render to warm the caches.\n requestStore = createRequestStore()\n\n const finalStageController = new StagedRenderingController()\n\n // We've filled the caches, so now we can render as usual,\n // without any cache-filling mechanics.\n requestStore.prerenderResumeDataCache = null\n requestStore.renderResumeDataCache = createRenderResumeDataCache(\n prerenderResumeDataCache\n )\n requestStore.stagedRendering = finalStageController\n requestStore.cacheSignal = null\n requestStore.asyncApiPromises = createAsyncApiPromisesInDev(\n finalStageController,\n requestStore.cookies,\n requestStore.mutableCookies,\n requestStore.headers\n )\n\n // The initial render already wrote to its debug channel.\n // We're not using it, so we need to create a new one.\n debugChannel = setReactDebugChannel && createDebugChannel()\n\n const finalRscPayload = await getPayload(requestStore)\n const finalServerStream = await workUnitAsyncStorage.run(requestStore, () =>\n pipelineInSequentialTasks(\n () => {\n // Static stage\n return ComponentMod.renderToReadableStream(\n finalRscPayload,\n clientReferenceManifest.clientModules,\n {\n onError,\n environmentName,\n filterStackFrame,\n debugChannel: debugChannel?.serverSide,\n }\n )\n },\n (stream) => {\n // Runtime stage\n finalStageController.advanceStage(RenderStage.Runtime)\n return stream\n },\n (stream) => {\n // Dynamic stage\n finalStageController.advanceStage(RenderStage.Dynamic)\n return stream\n }\n )\n )\n\n if (process.env.NODE_ENV === 'development' && setCacheStatus) {\n setCacheStatus('filled', htmlRequestId, requestId)\n }\n\n return {\n stream: finalServerStream,\n debugChannel,\n requestStore,\n }\n}\n\nfunction createAsyncApiPromisesInDev(\n stagedRendering: StagedRenderingController,\n cookies: RequestStore['cookies'],\n mutableCookies: RequestStore['mutableCookies'],\n headers: RequestStore['headers']\n): NonNullable<RequestStore['asyncApiPromises']> {\n return {\n // Runtime APIs\n cookies: stagedRendering.delayUntilStage(\n RenderStage.Runtime,\n 'cookies',\n cookies\n ),\n mutableCookies: stagedRendering.delayUntilStage(\n RenderStage.Runtime,\n 'cookies',\n mutableCookies as RequestStore['cookies']\n ),\n headers: stagedRendering.delayUntilStage(\n RenderStage.Runtime,\n 'headers',\n headers\n ),\n // These are not used directly, but we chain other `params`/`searchParams` promises off of them.\n sharedParamsParent: stagedRendering.delayUntilStage(\n RenderStage.Runtime,\n undefined,\n '<internal params>'\n ),\n sharedSearchParamsParent: stagedRendering.delayUntilStage(\n RenderStage.Runtime,\n undefined,\n '<internal searchParams>'\n ),\n connection: stagedRendering.delayUntilStage(\n RenderStage.Dynamic,\n 'connection',\n undefined\n ),\n }\n}\n\ntype DebugChannelPair = {\n serverSide: DebugChannelServer\n clientSide: DebugChannelClient\n}\n\ntype DebugChannelServer = {\n readable?: ReadableStream<Uint8Array>\n writable: WritableStream<Uint8Array>\n}\ntype DebugChannelClient = {\n readable: ReadableStream<Uint8Array>\n writable?: WritableStream<Uint8Array>\n}\n\nfunction createDebugChannel(): DebugChannelPair | undefined {\n if (process.env.NODE_ENV === 'production') {\n return undefined\n }\n\n let readableController: ReadableStreamDefaultController | undefined\n\n const clientSideReadable = new ReadableStream<Uint8Array>({\n start(controller) {\n readableController = controller\n },\n })\n\n return {\n serverSide: {\n writable: new WritableStream<Uint8Array>({\n write(chunk) {\n readableController?.enqueue(chunk)\n },\n close() {\n readableController?.close()\n },\n abort(err) {\n readableController?.error(err)\n },\n }),\n },\n clientSide: {\n readable: clientSideReadable,\n },\n }\n}\n\nfunction createValidationOutlet() {\n let resolveValidation: (value: ReactNode) => void\n let outlet = new Promise<ReactNode>((resolve) => {\n resolveValidation = resolve\n })\n return [resolveValidation!, outlet] as const\n}\n\n/**\n * This function is a fork of prerenderToStream cacheComponents branch.\n * While it doesn't return a stream we want it to have identical\n * prerender semantics to prerenderToStream and should update it\n * in conjunction with any changes to that function.\n */\nasync function spawnDynamicValidationInDev(\n resolveValidation: (validatingElement: ReactNode) => void,\n tree: LoaderTree,\n ctx: AppRenderContext,\n isNotFound: boolean,\n clientReferenceManifest: NonNullable<RenderOpts['clientReferenceManifest']>,\n requestStore: RequestStore,\n fallbackRouteParams: OpaqueFallbackRouteParams | null\n): Promise<void> {\n const {\n componentMod: ComponentMod,\n getDynamicParamFromSegment,\n implicitTags,\n nonce,\n renderOpts,\n workStore,\n } = ctx\n\n const { allowEmptyStaticShell = false } = renderOpts\n\n // These values are placeholder values for this validating render\n // that are provided during the actual prerenderToStream.\n const preinitScripts = () => {}\n const { ServerInsertedHTMLProvider } = createServerInsertedHTML()\n\n const rootParams = getRootParams(\n ComponentMod.routeModule.userland.loaderTree,\n getDynamicParamFromSegment\n )\n\n const hmrRefreshHash = requestStore.cookies.get(\n NEXT_HMR_REFRESH_HASH_COOKIE\n )?.value\n\n // The prerender controller represents the lifetime of the prerender. It will\n // be aborted when a task is complete or a synchronously aborting API is\n // called. Notably, during prospective prerenders, this does not actually\n // terminate the prerender itself, which will continue until all caches are\n // filled.\n const initialServerPrerenderController = new AbortController()\n\n // This controller is used to abort the React prerender.\n const initialServerReactController = new AbortController()\n\n // This controller represents the lifetime of the React prerender. Its signal\n // can be used for any I/O operation to abort the I/O and/or to reject, when\n // prerendering aborts. This includes our own hanging promises for accessing\n // request data, and for fetch calls. It might be replaced in the future by\n // React.cacheSignal(). It's aborted after the React controller, so that no\n // pending I/O can register abort listeners that are called before React's\n // abort listener is called. This ensures that pending I/O is not rejected too\n // early when aborting the prerender. Notably, during the prospective\n // prerender, it is different from the prerender controller because we don't\n // want to end the React prerender 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\n // ready to cut the render off.\n const cacheSignal = new CacheSignal()\n\n const captureOwnerStackClient = ReactClient.captureOwnerStack\n const { captureOwnerStack: captureOwnerStackServer, createElement } =\n ComponentMod\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 const initialServerPayloadPrerenderStore: PrerenderStore = {\n type: 'prerender',\n phase: 'render',\n rootParams,\n fallbackRouteParams,\n implicitTags,\n // While this render signal isn't going to be used to abort a React render while getting the RSC payload\n // various request data APIs bind to this controller to reject after completion.\n renderSignal: initialServerRenderController.signal,\n // When we generate the RSC payload we might abort this controller due to sync IO\n // but we don't actually care about sync IO in this phase so we use a throw away controller\n // that isn't connected to anything\n controller: new AbortController(),\n // During the initial prerender we need to track all cache reads to ensure\n // we render long enough to fill every cache it is possible to visit during\n // the final prerender.\n cacheSignal,\n dynamicTracking: null,\n allowEmptyStaticShell,\n revalidate: INFINITE_CACHE,\n expire: INFINITE_CACHE,\n stale: INFINITE_CACHE,\n tags: [...implicitTags.tags],\n prerenderResumeDataCache,\n renderResumeDataCache: null,\n hmrRefreshHash,\n captureOwnerStack: captureOwnerStackServer,\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 initialServerPayloadPrerenderStore,\n getRSCPayload,\n tree,\n ctx,\n isNotFound\n )\n\n const initialServerPrerenderStore: PrerenderStore = {\n type: 'prerender',\n phase: 'render',\n rootParams,\n fallbackRouteParams,\n implicitTags,\n renderSignal: initialServerRenderController.signal,\n controller: initialServerPrerenderController,\n // During the initial prerender we need to track all cache reads to ensure\n // we render long enough to fill every cache it is possible to visit during\n // the final prerender.\n cacheSignal,\n dynamicTracking: null,\n allowEmptyStaticShell,\n revalidate: INFINITE_CACHE,\n expire: INFINITE_CACHE,\n stale: INFINITE_CACHE,\n tags: [...implicitTags.tags],\n prerenderResumeDataCache,\n renderResumeDataCache: null,\n hmrRefreshHash,\n captureOwnerStack: captureOwnerStackServer,\n }\n\n const pendingInitialServerResult = workUnitAsyncStorage.run(\n initialServerPrerenderStore,\n ComponentMod.prerender,\n initialServerPayload,\n clientReferenceManifest.clientModules,\n {\n filterStackFrame,\n onError: (err) => {\n const digest = getDigestForWellKnownError(err)\n\n if (digest) {\n return digest\n }\n\n if (isReactLargeShellError(err)) {\n // TODO: Aggregate\n console.error(err)\n return undefined\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: initialServerReactController.signal,\n }\n )\n\n // The listener to abort our own render controller must be added after React\n // has added its listener, to ensure that pending I/O is not aborted/rejected\n // too early.\n initialServerReactController.signal.addEventListener(\n 'abort',\n () => {\n initialServerRenderController.abort()\n },\n { once: true }\n )\n\n // Wait for all caches to be finished filling and for async imports to resolve\n trackPendingModules(cacheSignal)\n await cacheSignal.cacheReady()\n\n initialServerReactController.abort()\n\n // We don't need to continue the prerender process if we already\n // detected invalid dynamic usage in the initial prerender phase.\n const { invalidDynamicUsageError } = workStore\n if (invalidDynamicUsageError) {\n resolveValidation(\n createElement(LogSafely, {\n fn: () => {\n console.error(invalidDynamicUsageError)\n },\n })\n )\n return\n }\n\n let initialServerResult\n try {\n initialServerResult = await createReactServerPrerenderResult(\n pendingInitialServerResult\n )\n } catch (err) {\n if (\n initialServerReactController.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 const initialClientPrerenderController = new AbortController()\n const initialClientReactController = new AbortController()\n const initialClientRenderController = new AbortController()\n\n const initialClientPrerenderStore: PrerenderStore = {\n type: 'prerender-client',\n phase: 'render',\n rootParams,\n fallbackRouteParams,\n implicitTags,\n renderSignal: initialClientRenderController.signal,\n controller: initialClientPrerenderController,\n // For HTML Generation the only cache tracked activity\n // is module loading, which has it's own cache signal\n cacheSignal: null,\n dynamicTracking: null,\n allowEmptyStaticShell,\n revalidate: INFINITE_CACHE,\n expire: INFINITE_CACHE,\n stale: INFINITE_CACHE,\n tags: [...implicitTags.tags],\n prerenderResumeDataCache,\n renderResumeDataCache: null,\n hmrRefreshHash: undefined,\n captureOwnerStack: captureOwnerStackClient,\n }\n\n const prerender = (\n require('react-dom/static') as typeof import('react-dom/static')\n ).prerender\n const pendingInitialClientResult = workUnitAsyncStorage.run(\n initialClientPrerenderStore,\n prerender,\n // eslint-disable-next-line @next/internal/no-ambiguous-jsx -- React Client\n <App\n reactServerStream={initialServerResult.asUnclosingStream()}\n reactDebugStream={undefined}\n preinitScripts={preinitScripts}\n clientReferenceManifest={clientReferenceManifest}\n ServerInsertedHTMLProvider={ServerInsertedHTMLProvider}\n nonce={nonce}\n images={ctx.renderOpts.images}\n />,\n {\n signal: initialClientReactController.signal,\n onError: (err) => {\n const digest = getDigestForWellKnownError(err)\n\n if (digest) {\n return digest\n }\n\n if (isReactLargeShellError(err)) {\n // TODO: Aggregate\n console.error(err)\n return undefined\n }\n\n if (initialClientReactController.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, workStore.route)\n }\n },\n // We don't need bootstrap scripts in this prerender\n // bootstrapScripts: [bootstrapScript],\n }\n )\n\n // The listener to abort our own render controller must be added after React\n // has added its listener, to ensure that pending I/O is not\n // aborted/rejected too early.\n initialClientReactController.signal.addEventListener(\n 'abort',\n () => {\n initialClientRenderController.abort()\n },\n { once: true }\n )\n\n pendingInitialClientResult.catch((err) => {\n if (\n initialClientReactController.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 // This is mostly needed for dynamic `import()`s in client components.\n // Promises passed to client were already awaited above (assuming that they came from cached functions)\n trackPendingModules(cacheSignal)\n await cacheSignal.cacheReady()\n initialClientReactController.abort()\n }\n\n const finalServerReactController = new AbortController()\n const finalServerRenderController = new AbortController()\n\n const finalServerPayloadPrerenderStore: PrerenderStore = {\n type: 'prerender',\n phase: 'render',\n rootParams,\n fallbackRouteParams,\n implicitTags,\n // While this render signal isn't going to be used to abort a React render while getting the RSC payload\n // various request data APIs bind to this controller to reject after completion.\n renderSignal: finalServerRenderController.signal,\n // When we generate the RSC payload we might abort this controller due to sync IO\n // but we don't actually care about sync IO in this phase so we use a throw away controller\n // that isn't connected to anything\n controller: new AbortController(),\n // All caches we could read must already be filled so no tracking is necessary\n cacheSignal: null,\n dynamicTracking: null,\n allowEmptyStaticShell,\n revalidate: INFINITE_CACHE,\n expire: INFINITE_CACHE,\n stale: INFINITE_CACHE,\n tags: [...implicitTags.tags],\n prerenderResumeDataCache,\n renderResumeDataCache: null,\n hmrRefreshHash,\n captureOwnerStack: captureOwnerStackServer,\n }\n\n const finalAttemptRSCPayload = await workUnitAsyncStorage.run(\n finalServerPayloadPrerenderStore,\n getRSCPayload,\n tree,\n ctx,\n isNotFound\n )\n\n const serverDynamicTracking = createDynamicTrackingState(\n false // isDebugDynamicAccesses\n )\n\n const finalServerPrerenderStore: PrerenderStore = {\n type: 'prerender',\n phase: 'render',\n rootParams,\n fallbackRouteParams,\n implicitTags,\n renderSignal: finalServerRenderController.signal,\n controller: finalServerReactController,\n // All caches we could read must already be filled so no tracking is necessary\n cacheSignal: null,\n dynamicTracking: serverDynamicTracking,\n allowEmptyStaticShell,\n revalidate: INFINITE_CACHE,\n expire: INFINITE_CACHE,\n stale: INFINITE_CACHE,\n tags: [...implicitTags.tags],\n prerenderResumeDataCache,\n renderResumeDataCache: null,\n hmrRefreshHash,\n captureOwnerStack: captureOwnerStackServer,\n }\n\n const reactServerResult = await createReactServerPrerenderResult(\n prerenderAndAbortInSequentialTasks(\n async () => {\n const pendingPrerenderResult = workUnitAsyncStorage.run(\n // The store to scope\n finalServerPrerenderStore,\n // The function to run\n ComponentMod.prerender,\n // ... the arguments for the function to run\n finalAttemptRSCPayload,\n clientReferenceManifest.clientModules,\n {\n filterStackFrame,\n onError: (err: unknown) => {\n if (\n finalServerReactController.signal.aborted &&\n isPrerenderInterruptedError(err)\n ) {\n return err.digest\n }\n\n if (isReactLargeShellError(err)) {\n // TODO: Aggregate\n console.error(err)\n return undefined\n }\n\n return getDigestForWellKnownError(err)\n },\n signal: finalServerReactController.signal,\n }\n )\n\n // The listener to abort our own render controller must be added after\n // React has added its listener, to ensure that pending I/O is not\n // aborted/rejected too early.\n finalServerReactController.signal.addEventListener(\n 'abort',\n () => {\n finalServerRenderController.abort()\n },\n { once: true }\n )\n\n return pendingPrerenderResult\n },\n () => {\n finalServerReactController.abort()\n }\n )\n )\n\n const clientDynamicTracking = createDynamicTrackingState(\n false //isDebugDynamicAccesses\n )\n const finalClientReactController = new AbortController()\n const finalClientRenderController = new AbortController()\n\n const finalClientPrerenderStore: PrerenderStore = {\n type: 'prerender-client',\n phase: 'render',\n rootParams,\n fallbackRouteParams,\n implicitTags,\n renderSignal: finalClientRenderController.signal,\n controller: finalClientReactController,\n // No APIs require a cacheSignal through the workUnitStore during the HTML prerender\n cacheSignal: null,\n dynamicTracking: clientDynamicTracking,\n allowEmptyStaticShell,\n revalidate: INFINITE_CACHE,\n expire: INFINITE_CACHE,\n stale: INFINITE_CACHE,\n tags: [...implicitTags.tags],\n prerenderResumeDataCache,\n renderResumeDataCache: null,\n hmrRefreshHash,\n captureOwnerStack: captureOwnerStackClient,\n }\n\n let dynamicValidation = createDynamicValidationState()\n\n try {\n const prerender = (\n require('react-dom/static') as typeof import('react-dom/static')\n ).prerender\n let { prelude: unprocessedPrelude } =\n await prerenderAndAbortInSequentialTasks(\n () => {\n const pendingFinalClientResult = workUnitAsyncStorage.run(\n finalClientPrerenderStore,\n prerender,\n // eslint-disable-next-line @next/internal/no-ambiguous-jsx -- React Client\n <App\n reactServerStream={reactServerResult.asUnclosingStream()}\n reactDebugStream={undefined}\n preinitScripts={preinitScripts}\n clientReferenceManifest={clientReferenceManifest}\n ServerInsertedHTMLProvider={ServerInsertedHTMLProvider}\n nonce={nonce}\n images={ctx.renderOpts.images}\n />,\n {\n signal: finalClientReactController.signal,\n onError: (err: unknown, errorInfo: ErrorInfo) => {\n if (\n isPrerenderInterruptedError(err) ||\n finalClientReactController.signal.aborted\n ) {\n const componentStack = errorInfo.componentStack\n if (typeof componentStack === 'string') {\n trackAllowedDynamicAccess(\n workStore,\n componentStack,\n dynamicValidation,\n clientDynamicTracking\n )\n }\n return\n }\n\n if (isReactLargeShellError(err)) {\n // TODO: Aggregate\n console.error(err)\n return undefined\n }\n\n return getDigestForWellKnownError(err)\n },\n // We don't need bootstrap scripts in this prerender\n // bootstrapScripts: [bootstrapScript],\n }\n )\n\n // The listener to abort our own render controller must be added after\n // React has added its listener, to ensure that pending I/O is not\n // aborted/rejected too early.\n finalClientReactController.signal.addEventListener(\n 'abort',\n () => {\n finalClientRenderController.abort()\n },\n { once: true }\n )\n\n return pendingFinalClientResult\n },\n () => {\n finalClientReactController.abort()\n }\n )\n\n const { preludeIsEmpty } = await processPrelude(unprocessedPrelude)\n resolveValidation(\n createElement(LogSafely, {\n fn: throwIfDisallowedDynamic.bind(\n null,\n workStore,\n preludeIsEmpty ? PreludeState.Empty : PreludeState.Full,\n dynamicValidation,\n serverDynamicTracking\n ),\n })\n )\n } catch (thrownValue) {\n // Even if the root errors we still want to report any cache components errors\n // that were discovered before the root errored.\n\n let loggingFunction = throwIfDisallowedDynamic.bind(\n null,\n workStore,\n PreludeState.Errored,\n dynamicValidation,\n serverDynamicTracking\n )\n\n if (process.env.NEXT_DEBUG_BUILD || process.env.__NEXT_VERBOSE_LOGGING) {\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 const originalLoggingFunction = loggingFunction\n loggingFunction = () => {\n console.error(\n 'During dynamic validation the root of the page errored. The next logged error is the thrown value. It may be a duplicate of errors reported during the normal development mode render.'\n )\n console.error(thrownValue)\n originalLoggingFunction()\n }\n }\n\n resolveValidation(\n createElement(LogSafely, {\n fn: loggingFunction,\n })\n )\n }\n}\n\nasync function LogSafely({ fn }: { fn: () => unknown }) {\n try {\n await fn()\n } catch {}\n return null\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 renderResumeDataCache?: RenderResumeDataCache\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 tree: LoaderTree,\n fallbackRouteParams: OpaqueFallbackRouteParams | null\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\n const {\n assetPrefix,\n getDynamicParamFromSegment,\n implicitTags,\n nonce,\n pagePath,\n renderOpts,\n workStore,\n } = ctx\n\n const {\n allowEmptyStaticShell = false,\n basePath,\n buildManifest,\n clientReferenceManifest,\n ComponentMod,\n crossOrigin,\n dev = false,\n experimental,\n isDebugDynamicAccesses,\n nextExport = false,\n onInstrumentationRequestError,\n page,\n reactMaxHeadersLength,\n subresourceIntegrityManifest,\n cacheComponents,\n } = renderOpts\n\n assertClientReferenceManifest(clientReferenceManifest)\n\n const rootParams = getRootParams(tree, getDynamicParamFromSegment)\n\n const { ServerInsertedHTMLProvider, renderServerInsertedHTML } =\n createServerInsertedHTML()\n const getServerInsertedMetadata = createServerInsertedMetadata(nonce)\n\n const tracingMetadata = getTracedMetadata(\n getTracer().getTracePropagationData(),\n experimental.clientTraceMetadata\n )\n\n const polyfills: JSX.IntrinsicElements['script'][] =\n buildManifest.polyfillFiles\n .filter(\n (polyfill) =>\n polyfill.endsWith('.js') && !polyfill.endsWith('.module.js')\n )\n .map((polyfill) => ({\n src: `${assetPrefix}/_next/${polyfill}${getAssetQueryString(\n ctx,\n false\n )}`,\n integrity: subresourceIntegrityManifest?.[polyfill],\n crossOrigin,\n noModule: true,\n nonce,\n }))\n\n const [preinitScripts, bootstrapScript] = getRequiredScripts(\n 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 assetPrefix,\n crossOrigin,\n subresourceIntegrityManifest,\n getAssetQueryString(ctx, true),\n nonce,\n 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 = !!experimental.isRoutePPREnabled\n function onHTMLRenderRSCError(err: DigestedError) {\n return onInstrumentationRequestError?.(\n err,\n req,\n createErrorContext(ctx, 'react-server-components')\n )\n }\n const serverComponentsErrorHandler = createHTMLReactServerErrorHandler(\n dev,\n nextExport,\n reactServerErrorsByDigest,\n silenceLogger,\n onHTMLRenderRSCError\n )\n\n function onHTMLRenderSSRError(err: DigestedError) {\n return onInstrumentationRequestError?.(\n err,\n req,\n createErrorContext(ctx, 'server-rendering')\n )\n }\n const allCapturedErrors: Array<unknown> = []\n const htmlRendererErrorHandler = createHTMLErrorHandler(\n dev,\n nextExport,\n reactServerErrorsByDigest,\n allCapturedErrors,\n silenceLogger,\n onHTMLRenderSSRError\n )\n\n let reactServerPrerenderResult: null | ReactServerPrerenderResult = 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 const selectStaleTime = createSelectStaleTime(experimental)\n\n let prerenderStore: PrerenderStore | null = null\n\n try {\n if (cacheComponents) {\n /**\n * cacheComponents 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 // The prerender controller represents the lifetime of the prerender. It\n // will be aborted when a task is complete or a synchronously aborting API\n // is called. Notably, during prospective prerenders, this does not\n // actually terminate the prerender itself, which will continue until all\n // caches are filled.\n const initialServerPrerenderController = new AbortController()\n\n // This controller is used to abort the React prerender.\n const initialServerReactController = new AbortController()\n\n // This controller represents the lifetime of the React prerender. Its\n // signal can be used for any I/O operation to abort the I/O and/or to\n // reject, when prerendering aborts. This includes our own hanging\n // promises for accessing request data, and for fetch calls. It might be\n // replaced in the future by React.cacheSignal(). It's aborted after the\n // React controller, so that no pending I/O can register abort listeners\n // that are called before React's abort listener is called. This ensures\n // that pending I/O is not rejected too early when aborting the prerender.\n // Notably, during the prospective prerender, it is different from the\n // prerender controller because we don't want to end the React prerender\n // 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 let resumeDataCache: RenderResumeDataCache | PrerenderResumeDataCache\n let renderResumeDataCache: RenderResumeDataCache | null = null\n let prerenderResumeDataCache: PrerenderResumeDataCache | null = null\n\n if (renderOpts.renderResumeDataCache) {\n // If a prefilled immutable render resume data cache is provided, e.g.\n // when prerendering an optional fallback shell after having prerendered\n // pages with defined params, we use this instead of a prerender resume\n // data cache.\n resumeDataCache = renderResumeDataCache =\n renderOpts.renderResumeDataCache\n } else {\n // Otherwise we create a new mutable prerender resume data cache.\n resumeDataCache = prerenderResumeDataCache =\n createPrerenderResumeDataCache()\n }\n\n const initialServerPayloadPrerenderStore: PrerenderStore = {\n type: 'prerender',\n phase: 'render',\n rootParams,\n fallbackRouteParams,\n implicitTags,\n // While this render signal isn't going to be used to abort a React render while getting the RSC payload\n // various request data APIs bind to this controller to reject after completion.\n renderSignal: initialServerRenderController.signal,\n // When we generate the RSC payload we might abort this controller due to sync IO\n // but we don't actually care about sync IO in this phase so we use a throw away controller\n // that isn't connected to anything\n controller: new AbortController(),\n // During the initial prerender we need to track all cache reads to ensure\n // we render long enough to fill every cache it is possible to visit during\n // the final prerender.\n cacheSignal,\n dynamicTracking: null,\n allowEmptyStaticShell,\n revalidate: INFINITE_CACHE,\n expire: INFINITE_CACHE,\n stale: INFINITE_CACHE,\n tags: [...implicitTags.tags],\n prerenderResumeDataCache,\n renderResumeDataCache,\n hmrRefreshHash: undefined,\n captureOwnerStack: undefined, // Not available in production.\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 initialServerPayloadPrerenderStore,\n getRSCPayload,\n tree,\n ctx,\n res.statusCode === 404\n )\n\n const initialServerPrerenderStore: PrerenderStore = (prerenderStore = {\n type: 'prerender',\n phase: 'render',\n rootParams,\n fallbackRouteParams,\n implicitTags,\n renderSignal: initialServerRenderController.signal,\n controller: initialServerPrerenderController,\n // During the initial prerender we need to track all cache reads to ensure\n // we render long enough to fill every cache it is possible to visit during\n // the final prerender.\n cacheSignal,\n dynamicTracking: null,\n allowEmptyStaticShell,\n revalidate: INFINITE_CACHE,\n expire: INFINITE_CACHE,\n stale: INFINITE_CACHE,\n tags: [...implicitTags.tags],\n prerenderResumeDataCache,\n renderResumeDataCache,\n hmrRefreshHash: undefined,\n captureOwnerStack: undefined, // Not available in production.\n })\n\n const pendingInitialServerResult = workUnitAsyncStorage.run(\n initialServerPrerenderStore,\n ComponentMod.prerender,\n initialServerPayload,\n clientReferenceManifest.clientModules,\n {\n filterStackFrame,\n onError: (err) => {\n const digest = getDigestForWellKnownError(err)\n\n if (digest) {\n return digest\n }\n\n if (isReactLargeShellError(err)) {\n // TODO: Aggregate\n console.error(err)\n return undefined\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: initialServerReactController.signal,\n }\n )\n\n // The listener to abort our own render controller must be added after\n // React has added its listener, to ensure that pending I/O is not\n // aborted/rejected too early.\n initialServerReactController.signal.addEventListener(\n 'abort',\n () => {\n initialServerRenderController.abort()\n initialServerPrerenderController.abort()\n },\n { once: true }\n )\n\n // Wait for all caches to be finished filling and for async imports to resolve\n trackPendingModules(cacheSignal)\n await cacheSignal.cacheReady()\n\n initialServerReactController.abort()\n\n // We don't need to continue the prerender process if we already\n // detected invalid dynamic usage in the initial prerender phase.\n if (workStore.invalidDynamicUsageError) {\n logDisallowedDynamicError(workStore, workStore.invalidDynamicUsageError)\n throw new StaticGenBailoutError()\n }\n\n let initialServerResult\n try {\n initialServerResult = await createReactServerPrerenderResult(\n pendingInitialServerResult\n )\n } catch (err) {\n if (\n initialServerReactController.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 const initialClientPrerenderController = new AbortController()\n const initialClientReactController = new AbortController()\n const initialClientRenderController = new AbortController()\n\n const initialClientPrerenderStore: PrerenderStore = {\n type: 'prerender-client',\n phase: 'render',\n rootParams,\n fallbackRouteParams,\n implicitTags,\n renderSignal: initialClientRenderController.signal,\n controller: initialClientPrerenderController,\n // For HTML Generation the only cache tracked activity\n // is module loading, which has it's own cache signal\n cacheSignal: null,\n dynamicTracking: null,\n allowEmptyStaticShell,\n revalidate: INFINITE_CACHE,\n expire: INFINITE_CACHE,\n stale: INFINITE_CACHE,\n tags: [...implicitTags.tags],\n prerenderResumeDataCache,\n renderResumeDataCache,\n hmrRefreshHash: undefined,\n captureOwnerStack: undefined, // Not available in production.\n }\n\n const prerender = (\n require('react-dom/static') as typeof import('react-dom/static')\n ).prerender\n const pendingInitialClientResult = workUnitAsyncStorage.run(\n initialClientPrerenderStore,\n prerender,\n // eslint-disable-next-line @next/internal/no-ambiguous-jsx\n <App\n reactServerStream={initialServerResult.asUnclosingStream()}\n reactDebugStream={undefined}\n preinitScripts={preinitScripts}\n clientReferenceManifest={clientReferenceManifest}\n ServerInsertedHTMLProvider={ServerInsertedHTMLProvider}\n nonce={nonce}\n images={ctx.renderOpts.images}\n />,\n {\n signal: initialClientReactController.signal,\n onError: (err) => {\n const digest = getDigestForWellKnownError(err)\n\n if (digest) {\n return digest\n }\n\n if (isReactLargeShellError(err)) {\n // TODO: Aggregate\n console.error(err)\n return undefined\n }\n\n if (initialClientReactController.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, workStore.route)\n }\n },\n bootstrapScripts: [bootstrapScript],\n }\n )\n\n // The listener to abort our own render controller must be added after\n // React has added its listener, to ensure that pending I/O is not\n // aborted/rejected too early.\n initialClientReactController.signal.addEventListener(\n 'abort',\n () => {\n initialClientRenderController.abort()\n },\n { once: true }\n )\n\n pendingInitialClientResult.catch((err) => {\n if (\n initialClientReactController.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 // This is mostly needed for dynamic `import()`s in client components.\n // Promises passed to client were already awaited above (assuming that they came from cached functions)\n trackPendingModules(cacheSignal)\n await cacheSignal.cacheReady()\n initialClientReactController.abort()\n }\n\n const finalServerReactController = new AbortController()\n const finalServerRenderController = new AbortController()\n\n const finalServerPayloadPrerenderStore: PrerenderStore = {\n type: 'prerender',\n phase: 'render',\n rootParams,\n fallbackRouteParams,\n implicitTags,\n // While this render signal isn't going to be used to abort a React render while getting the RSC payload\n // various request data APIs bind to this controller to reject after completion.\n renderSignal: finalServerRenderController.signal,\n // When we generate the RSC payload we might abort this controller due to sync IO\n // but we don't actually care about sync IO in this phase so we use a throw away controller\n // that isn't connected to anything\n controller: new AbortController(),\n // All caches we could read must already be filled so no tracking is necessary\n cacheSignal: null,\n dynamicTracking: null,\n allowEmptyStaticShell,\n revalidate: INFINITE_CACHE,\n expire: INFINITE_CACHE,\n stale: INFINITE_CACHE,\n tags: [...implicitTags.tags],\n prerenderResumeDataCache,\n renderResumeDataCache,\n hmrRefreshHash: undefined,\n captureOwnerStack: undefined, // Not available in production.\n }\n\n const finalAttemptRSCPayload = await workUnitAsyncStorage.run(\n finalServerPayloadPrerenderStore,\n getRSCPayload,\n tree,\n ctx,\n res.statusCode === 404\n )\n\n const serverDynamicTracking = createDynamicTrackingState(\n isDebugDynamicAccesses\n )\n let serverIsDynamic = false\n\n const finalServerPrerenderStore: PrerenderStore = (prerenderStore = {\n type: 'prerender',\n phase: 'render',\n rootParams,\n fallbackRouteParams,\n implicitTags,\n renderSignal: finalServerRenderController.signal,\n controller: finalServerReactController,\n // All caches we could read must already be filled so no tracking is necessary\n cacheSignal: null,\n dynamicTracking: serverDynamicTracking,\n allowEmptyStaticShell,\n revalidate: INFINITE_CACHE,\n expire: INFINITE_CACHE,\n stale: INFINITE_CACHE,\n tags: [...implicitTags.tags],\n prerenderResumeDataCache,\n renderResumeDataCache,\n hmrRefreshHash: undefined,\n captureOwnerStack: undefined, // Not available in production.\n })\n\n let prerenderIsPending = true\n const reactServerResult = (reactServerPrerenderResult =\n await createReactServerPrerenderResult(\n prerenderAndAbortInSequentialTasks(\n async () => {\n const pendingPrerenderResult = workUnitAsyncStorage.run(\n // The store to scope\n finalServerPrerenderStore,\n // The function to run\n ComponentMod.prerender,\n // ... the arguments for the function to run\n finalAttemptRSCPayload,\n clientReferenceManifest.clientModules,\n {\n filterStackFrame,\n onError: (err: unknown) => {\n return serverComponentsErrorHandler(err)\n },\n signal: finalServerReactController.signal,\n }\n )\n\n // The listener to abort our own render controller must be added\n // after React has added its listener, to ensure that pending I/O\n // is not aborted/rejected too early.\n finalServerReactController.signal.addEventListener(\n 'abort',\n () => {\n finalServerRenderController.abort()\n },\n { once: true }\n )\n\n const prerenderResult = await pendingPrerenderResult\n prerenderIsPending = false\n\n return prerenderResult\n },\n () => {\n if (finalServerReactController.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\n finalServerReactController.abort()\n }\n )\n ))\n\n const clientDynamicTracking = createDynamicTrackingState(\n isDebugDynamicAccesses\n )\n\n const finalClientReactController = new AbortController()\n const finalClientRenderController = new AbortController()\n\n const finalClientPrerenderStore: PrerenderStore = {\n type: 'prerender-client',\n phase: 'render',\n rootParams,\n fallbackRouteParams,\n implicitTags,\n renderSignal: finalClientRenderController.signal,\n controller: finalClientReactController,\n // No APIs require a cacheSignal through the workUnitStore during the HTML prerender\n cacheSignal: null,\n dynamicTracking: clientDynamicTracking,\n allowEmptyStaticShell,\n revalidate: INFINITE_CACHE,\n expire: INFINITE_CACHE,\n stale: INFINITE_CACHE,\n tags: [...implicitTags.tags],\n prerenderResumeDataCache,\n renderResumeDataCache,\n hmrRefreshHash: undefined,\n captureOwnerStack: undefined, // Not available in production.\n }\n\n let dynamicValidation = createDynamicValidationState()\n\n const prerender = (\n require('react-dom/static') as typeof import('react-dom/static')\n ).prerender\n let { prelude: unprocessedPrelude, postponed } =\n await prerenderAndAbortInSequentialTasks(\n () => {\n const pendingFinalClientResult = workUnitAsyncStorage.run(\n finalClientPrerenderStore,\n prerender,\n // eslint-disable-next-line @next/internal/no-ambiguous-jsx\n <App\n reactServerStream={reactServerResult.asUnclosingStream()}\n reactDebugStream={undefined}\n preinitScripts={preinitScripts}\n clientReferenceManifest={clientReferenceManifest}\n ServerInsertedHTMLProvider={ServerInsertedHTMLProvider}\n nonce={nonce}\n images={ctx.renderOpts.images}\n />,\n {\n signal: finalClientReactController.signal,\n onError: (err: unknown, errorInfo: ErrorInfo) => {\n if (\n isPrerenderInterruptedError(err) ||\n finalClientReactController.signal.aborted\n ) {\n const componentStack: string | undefined = (\n errorInfo as any\n ).componentStack\n if (typeof componentStack === 'string') {\n trackAllowedDynamicAccess(\n workStore,\n componentStack,\n dynamicValidation,\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: reactMaxHeadersLength,\n bootstrapScripts: [bootstrapScript],\n }\n )\n\n // The listener to abort our own render controller must be added\n // after React has added its listener, to ensure that pending I/O is\n // not aborted/rejected too early.\n finalClientReactController.signal.addEventListener(\n 'abort',\n () => {\n finalClientRenderController.abort()\n },\n { once: true }\n )\n\n return pendingFinalClientResult\n },\n () => {\n finalClientReactController.abort()\n }\n )\n\n const { prelude, preludeIsEmpty } =\n await processPrelude(unprocessedPrelude)\n\n // If we've disabled throwing on empty static shell, then we don't need to\n // track any dynamic access that occurs above the suspense boundary because\n // we'll do so in the route shell.\n if (!allowEmptyStaticShell) {\n throwIfDisallowedDynamic(\n workStore,\n preludeIsEmpty ? PreludeState.Empty : PreludeState.Full,\n dynamicValidation,\n serverDynamicTracking\n )\n }\n\n const getServerInsertedHTML = makeGetServerInsertedHTML({\n polyfills,\n renderServerInsertedHTML,\n serverCapturedErrors: allCapturedErrors,\n 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 finalServerPrerenderStore,\n ComponentMod,\n renderOpts\n )\n\n if (serverIsDynamic) {\n // Dynamic case\n // We will always need to perform a \"resume\" render of some kind when this route is accessed\n // because the RSC data itself is dynamic. We determine if there are any HTML holes or not\n // but generally this is a \"partial\" prerender in that there will be a per-request compute\n // concatenated to the static shell.\n if (postponed != null) {\n // Dynamic HTML case\n metadata.postponed = await getDynamicHTMLPostponedState(\n postponed,\n preludeIsEmpty\n ? DynamicHTMLPreludeState.Empty\n : DynamicHTMLPreludeState.Full,\n fallbackRouteParams,\n resumeDataCache,\n cacheComponents\n )\n } else {\n // Dynamic Data case\n metadata.postponed = await getDynamicDataPostponedState(\n resumeDataCache,\n cacheComponents\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: finalServerPrerenderStore.revalidate,\n collectedExpire: finalServerPrerenderStore.expire,\n collectedStale: selectStaleTime(finalServerPrerenderStore.stale),\n collectedTags: finalServerPrerenderStore.tags,\n renderResumeDataCache: createRenderResumeDataCache(resumeDataCache),\n }\n } else {\n // Static case\n // We will not perform resumption per request. The result can be served statically to the requestor\n // and if there was anything dynamic it will only be rendered in the browser.\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 = (\n require('react-dom/server') as typeof import('react-dom/server')\n ).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 // eslint-disable-next-line @next/internal/no-ambiguous-jsx\n <App\n reactServerStream={foreverStream}\n reactDebugStream={undefined}\n preinitScripts={() => {}}\n clientReferenceManifest={clientReferenceManifest}\n ServerInsertedHTMLProvider={ServerInsertedHTMLProvider}\n nonce={nonce}\n images={ctx.renderOpts.images}\n />,\n JSON.parse(JSON.stringify(postponed)),\n {\n signal: createRenderInBrowserAbortSignal(),\n onError: htmlRendererErrorHandler,\n 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 let finalStream\n const hasFallbackRouteParams =\n fallbackRouteParams && fallbackRouteParams.size > 0\n if (hasFallbackRouteParams) {\n // This is a \"static fallback\" prerender: although the page didn't\n // access any runtime params in a Server Component, it may have\n // accessed a runtime param in a client segment.\n //\n // TODO: If there were no client segments, we can use the fully static\n // path instead.\n //\n // Rather than use a dynamic server resume to fill in the params,\n // we can rely on the client to parse the params from the URL and use\n // that to hydrate the page.\n //\n // Send an empty InitialRSCPayload to the server component renderer\n // The data will be fetched by the client instead.\n // TODO: In the future, rather than defer the entire hydration payload\n // to be fetched by the client, we should only defer the client\n // segments, since those are the only ones whose data is not complete.\n const emptyReactServerResult =\n await createReactServerPrerenderResultFromRender(\n ComponentMod.renderToReadableStream(\n [],\n clientReferenceManifest.clientModules,\n {\n filterStackFrame,\n onError: serverComponentsErrorHandler,\n }\n )\n )\n finalStream = await continueStaticFallbackPrerender(htmlStream, {\n inlinedDataStream: createInlinedDataReadableStream(\n emptyReactServerResult.consumeAsStream(),\n nonce,\n formState\n ),\n getServerInsertedHTML,\n getServerInsertedMetadata,\n isBuildTimePrerendering:\n ctx.workStore.isBuildTimePrerendering === true,\n buildId: ctx.workStore.buildId,\n })\n } else {\n // Normal static prerender case, no fallback param handling needed\n finalStream = await continueStaticPrerender(htmlStream, {\n inlinedDataStream: createInlinedDataReadableStream(\n reactServerResult.consumeAsStream(),\n nonce,\n formState\n ),\n getServerInsertedHTML,\n getServerInsertedMetadata,\n isBuildTimePrerendering:\n ctx.workStore.isBuildTimePrerendering === true,\n buildId: ctx.workStore.buildId,\n })\n }\n\n return {\n digestErrorsMap: reactServerErrorsByDigest,\n ssrErrors: allCapturedErrors,\n stream: finalStream,\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: selectStaleTime(finalServerPrerenderStore.stale),\n collectedTags: finalServerPrerenderStore.tags,\n renderResumeDataCache: createRenderResumeDataCache(resumeDataCache),\n }\n }\n } else if (experimental.isRoutePPREnabled) {\n // We're statically generating with PPR and need to do dynamic tracking\n let dynamicTracking = createDynamicTrackingState(isDebugDynamicAccesses)\n\n const prerenderResumeDataCache = createPrerenderResumeDataCache()\n const reactServerPrerenderStore: PrerenderStore = (prerenderStore = {\n type: 'prerender-ppr',\n phase: 'render',\n rootParams,\n fallbackRouteParams,\n implicitTags,\n dynamicTracking,\n revalidate: INFINITE_CACHE,\n expire: INFINITE_CACHE,\n stale: INFINITE_CACHE,\n tags: [...implicitTags.tags],\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 filterStackFrame,\n onError: serverComponentsErrorHandler,\n }\n )\n ))\n\n const ssrPrerenderStore: PrerenderStore = {\n type: 'prerender-ppr',\n phase: 'render',\n rootParams,\n fallbackRouteParams,\n implicitTags,\n dynamicTracking,\n revalidate: INFINITE_CACHE,\n expire: INFINITE_CACHE,\n stale: INFINITE_CACHE,\n tags: [...implicitTags.tags],\n prerenderResumeDataCache,\n }\n const prerender = (\n require('react-dom/static') as typeof import('react-dom/static')\n ).prerender\n const { prelude: unprocessedPrelude, postponed } =\n await workUnitAsyncStorage.run(\n ssrPrerenderStore,\n prerender,\n // eslint-disable-next-line @next/internal/no-ambiguous-jsx\n <App\n reactServerStream={reactServerResult.asUnclosingStream()}\n reactDebugStream={undefined}\n preinitScripts={preinitScripts}\n clientReferenceManifest={clientReferenceManifest}\n ServerInsertedHTMLProvider={ServerInsertedHTMLProvider}\n nonce={nonce}\n images={ctx.renderOpts.images}\n />,\n {\n onError: htmlRendererErrorHandler,\n onHeaders: (headers: Headers) => {\n headers.forEach((value, key) => {\n appendHeader(key, value)\n })\n },\n maxHeadersLength: reactMaxHeadersLength,\n bootstrapScripts: [bootstrapScript],\n }\n )\n const getServerInsertedHTML = makeGetServerInsertedHTML({\n polyfills,\n renderServerInsertedHTML,\n serverCapturedErrors: allCapturedErrors,\n 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 )\n }\n\n const { prelude, preludeIsEmpty } =\n await processPrelude(unprocessedPrelude)\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 preludeIsEmpty\n ? DynamicHTMLPreludeState.Empty\n : DynamicHTMLPreludeState.Full,\n fallbackRouteParams,\n prerenderResumeDataCache,\n cacheComponents\n )\n } else {\n // Dynamic Data case.\n metadata.postponed = await getDynamicDataPostponedState(\n prerenderResumeDataCache,\n cacheComponents\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: selectStaleTime(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 cacheComponents\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: selectStaleTime(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 = (\n require('react-dom/server') as typeof import('react-dom/server')\n ).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 // eslint-disable-next-line @next/internal/no-ambiguous-jsx\n <App\n reactServerStream={foreverStream}\n reactDebugStream={undefined}\n preinitScripts={() => {}}\n clientReferenceManifest={clientReferenceManifest}\n ServerInsertedHTMLProvider={ServerInsertedHTMLProvider}\n nonce={nonce}\n images={ctx.renderOpts.images}\n />,\n JSON.parse(JSON.stringify(postponed)),\n {\n signal: createRenderInBrowserAbortSignal(),\n onError: htmlRendererErrorHandler,\n 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 nonce,\n formState\n ),\n getServerInsertedHTML,\n getServerInsertedMetadata,\n isBuildTimePrerendering:\n ctx.workStore.isBuildTimePrerendering === true,\n buildId: ctx.workStore.buildId,\n }),\n dynamicAccess: dynamicTracking.dynamicAccesses,\n // TODO: Should this include the SSR pass?\n collectedRevalidate: reactServerPrerenderStore.revalidate,\n collectedExpire: reactServerPrerenderStore.expire,\n collectedStale: selectStaleTime(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,\n revalidate: INFINITE_CACHE,\n expire: INFINITE_CACHE,\n stale: INFINITE_CACHE,\n tags: [...implicitTags.tags],\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\n const reactServerResult = (reactServerPrerenderResult =\n await createReactServerPrerenderResultFromRender(\n workUnitAsyncStorage.run(\n prerenderLegacyStore,\n ComponentMod.renderToReadableStream,\n RSCPayload,\n clientReferenceManifest.clientModules,\n {\n filterStackFrame,\n onError: serverComponentsErrorHandler,\n }\n )\n ))\n\n const renderToReadableStream = (\n require('react-dom/server') as typeof import('react-dom/server')\n ).renderToReadableStream\n const htmlStream = await workUnitAsyncStorage.run(\n prerenderLegacyStore,\n renderToReadableStream,\n // eslint-disable-next-line @next/internal/no-ambiguous-jsx\n <App\n reactServerStream={reactServerResult.asUnclosingStream()}\n reactDebugStream={undefined}\n preinitScripts={preinitScripts}\n clientReferenceManifest={clientReferenceManifest}\n ServerInsertedHTMLProvider={ServerInsertedHTMLProvider}\n nonce={nonce}\n images={ctx.renderOpts.images}\n />,\n {\n onError: htmlRendererErrorHandler,\n 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 )\n }\n\n const getServerInsertedHTML = makeGetServerInsertedHTML({\n polyfills,\n renderServerInsertedHTML,\n serverCapturedErrors: allCapturedErrors,\n 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 nonce,\n formState\n ),\n isStaticGeneration: true,\n isBuildTimePrerendering:\n ctx.workStore.isBuildTimePrerendering === true,\n buildId: ctx.workStore.buildId,\n getServerInsertedHTML,\n getServerInsertedMetadata,\n }),\n // TODO: Should this include the SSR pass?\n collectedRevalidate: prerenderLegacyStore.revalidate,\n collectedExpire: prerenderLegacyStore.expire,\n collectedStale: selectStaleTime(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 \"${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 metadata.statusCode = res.statusCode\n errorType = getAccessFallbackErrorTypeByStatus(res.statusCode)\n } else if (isRedirectError(err)) {\n errorType = 'redirect'\n res.statusCode = getRedirectStatusCodeFromError(err)\n metadata.statusCode = res.statusCode\n\n const redirectUrl = addPathPrefix(getURLFromRedirectError(err), basePath)\n\n setHeader('location', redirectUrl)\n } else if (!shouldBailoutToCSR) {\n res.statusCode = 500\n metadata.statusCode = res.statusCode\n }\n\n const [errorPreinitScripts, errorBootstrapScript] = getRequiredScripts(\n buildManifest,\n assetPrefix,\n crossOrigin,\n subresourceIntegrityManifest,\n getAssetQueryString(ctx, false),\n 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.tags)],\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 filterStackFrame,\n onError: serverComponentsErrorHandler,\n }\n )\n\n try {\n // TODO we should use the same prerender semantics that we initially rendered\n // with in this case too. The only reason why this is ok atm is because it's essentially\n // an empty page and no user code runs.\n const fizzStream = await workUnitAsyncStorage.run(\n prerenderLegacyStore,\n renderToInitialFizzStream,\n {\n ReactDOMServer:\n require('react-dom/server') as typeof import('react-dom/server'),\n element: (\n // eslint-disable-next-line @next/internal/no-ambiguous-jsx\n <ErrorApp\n reactServerStream={errorServerStream}\n reactDebugStream={undefined}\n ServerInsertedHTMLProvider={ServerInsertedHTMLProvider}\n preinitScripts={errorPreinitScripts}\n clientReferenceManifest={clientReferenceManifest}\n nonce={nonce}\n images={ctx.renderOpts.images}\n />\n ),\n streamOptions: {\n nonce,\n // Include hydration scripts in the HTML\n bootstrapScripts: [errorBootstrapScript],\n formState,\n },\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 )\n }\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 = 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 nonce,\n formState\n ),\n isStaticGeneration: true,\n isBuildTimePrerendering:\n ctx.workStore.isBuildTimePrerendering === true,\n buildId: ctx.workStore.buildId,\n getServerInsertedHTML: makeGetServerInsertedHTML({\n polyfills,\n renderServerInsertedHTML,\n serverCapturedErrors: [],\n basePath,\n tracingMetadata: tracingMetadata,\n }),\n getServerInsertedMetadata,\n validateRootLayout: dev,\n }),\n dynamicAccess: null,\n collectedRevalidate:\n prerenderStore !== null ? prerenderStore.revalidate : INFINITE_CACHE,\n collectedExpire:\n prerenderStore !== null ? prerenderStore.expire : INFINITE_CACHE,\n collectedStale: selectStaleTime(\n prerenderStore !== null ? prerenderStore.stale : INFINITE_CACHE\n ),\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 getGlobalErrorStyles = async (\n tree: LoaderTree,\n ctx: AppRenderContext\n): Promise<{\n GlobalError: GlobalErrorComponent\n styles: ReactNode | undefined\n}> => {\n const {\n modules: { 'global-error': globalErrorModule },\n } = parseLoaderTree(tree)\n\n const {\n componentMod: { createElement },\n } = ctx\n const GlobalErrorComponent: GlobalErrorComponent =\n ctx.componentMod.GlobalError\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 if (ctx.renderOpts.dev) {\n const dir =\n (process.env.NEXT_RUNTIME === 'edge'\n ? process.env.__NEXT_EDGE_PROJECT_DIR\n : ctx.renderOpts.dir) || ''\n\n const globalErrorModulePath = normalizeConventionFilePath(\n dir,\n globalErrorModule?.[1]\n )\n if (globalErrorModulePath) {\n const SegmentViewNode = ctx.componentMod.SegmentViewNode\n globalErrorStyles =\n // This will be rendered next to GlobalError component under ErrorBoundary,\n // it requires a key to avoid React warning about duplicate keys.\n createElement(\n SegmentViewNode,\n {\n key: 'ge-svn',\n type: 'global-error',\n pagePath: globalErrorModulePath,\n },\n globalErrorStyles\n )\n }\n }\n\n return {\n GlobalError: GlobalErrorComponent,\n styles: globalErrorStyles,\n }\n}\n\nfunction createSelectStaleTime(experimental: ExperimentalConfig) {\n return (stale: number) =>\n stale === INFINITE_CACHE &&\n typeof experimental.staleTimes?.static === 'number'\n ? experimental.staleTimes.static\n : stale\n}\n\nasync function collectSegmentData(\n fullPageDataBuffer: Buffer,\n prerenderStore: PrerenderStore,\n ComponentMod: AppPageModule,\n renderOpts: RenderOpts\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 (\n !clientReferenceManifest ||\n // Do not generate per-segment data unless the experimental Segment Cache\n // flag is enabled.\n //\n // We also skip generating segment data if flag is set to \"client-only\",\n // rather than true. (The \"client-only\" option only affects the behavior of\n // the client-side implementation; per-segment prefetches are intentionally\n // disabled in that configuration).\n renderOpts.experimental.clientSegmentCache !== true\n ) {\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: getServerModuleMap(),\n }\n\n const selectStaleTime = createSelectStaleTime(renderOpts.experimental)\n const staleTime = selectStaleTime(prerenderStore.stale)\n return await ComponentMod.collectSegmentData(\n renderOpts.cacheComponents,\n fullPageDataBuffer,\n staleTime,\n clientReferenceManifest.clientModules as ManifestNode,\n serverConsumerManifest\n )\n}\n\nfunction isBypassingCachesInDev(\n renderOpts: RenderOpts,\n requestStore: RequestStore\n): boolean {\n return (\n process.env.NODE_ENV === 'development' &&\n !!renderOpts.dev &&\n requestStore.headers.get('cache-control') === 'no-cache'\n )\n}\n\nfunction WarnForBypassCachesInDev({ route }: { route: string }) {\n warnOnce(\n `Route ${route} is rendering with server caches disabled. For this navigation, Component Metadata in React DevTools will not accurately reflect what is statically prerenderable and runtime prefetchable. See more info here: https://nextjs.org/docs/messages/cache-bypass-in-dev`\n )\n return null\n}\n"],"names":["workAsyncStorage","ReactClient","RenderResult","chainStreams","renderToInitialFizzStream","createDocumentClosingStream","continueFizzStream","continueDynamicPrerender","continueStaticPrerender","continueDynamicHTMLResume","streamToBuffer","streamToString","continueStaticFallbackPrerender","stripInternalQueries","NEXT_HMR_REFRESH_HEADER","NEXT_ROUTER_PREFETCH_HEADER","NEXT_ROUTER_STATE_TREE_HEADER","NEXT_ROUTER_STALE_TIME_HEADER","NEXT_URL","RSC_HEADER","NEXT_ROUTER_SEGMENT_PREFETCH_HEADER","NEXT_HMR_REFRESH_HASH_COOKIE","NEXT_DID_POSTPONE_HEADER","NEXT_REQUEST_ID_HEADER","NEXT_HTML_REQUEST_ID_HEADER","createMetadataContext","createRequestStoreForRender","createWorkStore","getAccessFallbackErrorTypeByStatus","getAccessFallbackHTTPStatus","isHTTPAccessFallbackError","getURLFromRedirectError","getRedirectStatusCodeFromError","isRedirectError","getImplicitTags","AppRenderSpan","NextNodeServerSpan","getTracer","FlightRenderResult","createFlightReactServerErrorHandler","createHTMLReactServerErrorHandler","createHTMLErrorHandler","isUserLandError","getDigestForWellKnownError","dynamicParamTypes","getSegmentParam","getScriptNonceFromHeader","parseAndValidateFlightRouterState","createFlightRouterStateFromLoaderTree","handleAction","isBailoutToCSRError","warn","error","appendMutableCookies","createServerInsertedHTML","getRequiredScripts","addPathPrefix","makeGetServerInsertedHTML","walkTreeWithFlightRouterState","createComponentTree","getRootParams","getAssetQueryString","getServerModuleMap","setReferenceManifestsSingleton","DynamicState","DynamicHTMLPreludeState","parsePostponedState","getDynamicDataPostponedState","getDynamicHTMLPostponedState","getPostponedFromState","isDynamicServerError","useFlightStream","createInlinedDataReadableStream","StaticGenBailoutError","isStaticGenBailoutError","getStackWithoutErrorMessage","accessedDynamicData","createRenderInBrowserAbortSignal","formatDynamicAPIAccesses","isPrerenderInterruptedError","createDynamicTrackingState","createDynamicValidationState","trackAllowedDynamicAccess","throwIfDisallowedDynamic","PreludeState","consumeDynamicAccess","logDisallowedDynamicError","getClientComponentLoaderMetrics","wrapClientComponentLoader","createServerModuleMap","isNodeNextRequest","parseRelativeUrl","AppRouter","getIsPossibleServerAction","createInitialRouterState","createMutableActionQueue","getRevalidateReason","PAGE_SEGMENT_KEY","prerenderAndAbortInSequentialTasksWithStages","processPrelude","ReactServerResult","createReactServerPrerenderResult","createReactServerPrerenderResultFromRender","prerenderAndAbortInSequentialTasks","printDebugThrownValueForProspectiveRender","pipelineInSequentialTasks","scheduleInSequentialTasks","waitAtLeastOneReactRenderTask","workUnitAsyncStorage","consoleAsyncStorage","CacheSignal","getTracedMetadata","InvariantError","HTML_CONTENT_TYPE_HEADER","INFINITE_CACHE","createComponentStylesAndScripts","parseLoaderTree","createPrerenderResumeDataCache","createRenderResumeDataCache","isError","createServerInsertedMetadata","getPreviouslyRevalidatedTags","executeRevalidates","trackPendingChunkLoad","trackPendingImport","trackPendingModules","isReactLargeShellError","normalizeConventionFilePath","getRequestMeta","getDynamicParam","interpolateParallelRouteParams","createPromiseWithResolvers","ImageConfigContext","imageConfigDefault","RenderStage","StagedRenderingController","anySegmentHasRuntimePrefetchEnabled","warnOnce","flightDataPathHeadKey","getFlightViewportKey","requestId","getFlightMetadataKey","filterStackFrame","process","env","NODE_ENV","require","filterStackFrameDEV","undefined","parseRequestHeaders","headers","options","isPrefetchRequest","isRuntimePrefetchRequest","isHmrRefresh","isRSCRequest","shouldProvideFlightRouterState","isRoutePPREnabled","flightRouterState","isRouteTreePrefetchRequest","csp","nonce","previouslyRevalidatedTags","previewModeId","htmlRequestId","createNotFoundLoaderTree","loaderTree","components","hasGlobalNotFound","notFoundTreeComponents","layout","page","children","makeGetDynamicParamFromSegment","interpolatedParams","fallbackRouteParams","getDynamicParamFromSegment","segment","segmentParam","segmentKey","param","dynamicParamType","type","NonIndex","createElement","pagePath","statusCode","isPossibleServerAction","is404Page","isInvalidStatusCode","name","content","generateDynamicRSCPayload","ctx","flightData","componentMod","routeModule","userland","createMetadataComponents","Fragment","query","workStore","url","serveStreamingMetadata","renderOpts","skipFlight","preloadCallbacks","Viewport","Metadata","MetadataOutlet","tree","parsedQuery","pathname","metadataContext","loaderTreeToFilter","parentParams","rscHead","key","res","injectedCSS","Set","injectedJS","injectedFontPreloadTags","rootLayoutIncluded","map","path","slice","actionResult","a","f","b","sharedContext","buildId","S","isStaticGeneration","createErrorContext","renderSource","routerKind","routePath","routeType","revalidateReason","generateDynamicFlightRenderResult","req","requestStore","clientReferenceManifest","renderToReadableStream","dev","onInstrumentationRequestError","setReactDebugChannel","onFlightDataRenderError","err","onError","debugChannel","createDebugChannel","clientSide","rscPayload","run","flightReadableStream","clientModules","temporaryReferences","serverSide","fetchMetrics","stagedRenderToReadableStreamWithoutCachesInDev","getPayload","stageController","environmentName","currentStage","Static","Runtime","Dynamic","stagedRendering","asyncApiPromises","createAsyncApiPromisesInDev","cookies","mutableCookies","advanceStage","generateDynamicFlightRenderResultWithStagesInDev","initialRequestStore","createRequestStore","setCacheStatus","payload","isBypassingCachesInDev","_bypassCachesInDev","WarnForBypassCachesInDev","route","stream","result","renderWithRestartOnCacheMissInDev","assertClientReferenceManifest","generateRuntimePrefetchResult","metadata","generatePayload","rootParams","prerenderResumeDataCache","renderResumeDataCache","prospectiveRuntimeServerPrerender","draftMode","response","finalRuntimeServerPrerender","applyMetadataFromPrerenderResult","isPartial","setHeader","prelude","implicitTags","ComponentMod","initialServerPrerenderController","AbortController","initialServerRenderController","cacheSignal","initialServerPrerenderStore","phase","renderSignal","signal","controller","dynamicTracking","revalidate","expire","stale","tags","hmrRefreshHash","captureOwnerStack","runtimeStagePromise","initialServerPayload","pendingInitialServerResult","prerender","digest","aborted","NEXT_DEBUG_BUILD","__NEXT_VERBOSE_LOGGING","onPostpone","cacheReady","abort","invalidDynamicUsageError","experimental","isDebugDynamicAccesses","selectStaleTime","createSelectStaleTime","serverIsDynamic","finalServerController","serverDynamicTracking","promise","resolve","resolveBlockedRuntimeAPIs","finalServerPrerenderStore","finalRSCPayload","prerenderIsPending","prerenderResult","dynamicAccess","collectedRevalidate","collectedExpire","collectedStale","collectedTags","prepareInitialCanonicalUrl","search","split","getRenderedSearch","pairs","value","Array","isArray","v","push","encodeURIComponent","String","length","join","getRSCPayload","is404","missingSlots","appUsingSizeAdjustment","initialTree","errorType","seedData","authInterrupts","varyHeader","getHeader","couldBeIntercepted","includes","initialHead","GlobalError","styles","globalErrorStyles","getGlobalErrorStyles","isPossiblyPartialHead","P","Preloads","c","q","i","m","G","s","postponed","forEach","preloadFn","getErrorRSCPayload","ssrError","Error","id","message","stack","App","reactServerStream","reactDebugStream","preinitScripts","ServerInsertedHTMLProvider","images","use","initialState","navigatedAt","initialFlightData","initialCanonicalUrlParts","initialRenderedSearch","initialParallelRoutes","Map","location","actionQueue","HeadManagerContext","Provider","appDir","globalErrorState","ErrorApp","renderToHTMLOrFlightImpl","parsedRequestHeaders","postponedState","serverComponentsHmrCache","isNotFoundPath","requestTimestamp","Date","now","serverActionsManifest","nextFontManifest","serverActions","assetPrefix","enableTainting","cacheComponents","__next_app__","instrumented","shouldTrackModuleLoading","workUnitStore","getStore","__next_require__","args","exportsOrPromise","globalThis","__next_chunk_load__","loadingChunk","loadChunk","setIsrStatus","URL","NEXT_RUNTIME","onClose","shouldTrackFetchMetrics","originalRequest","on","metrics","reset","startSpan","clientComponentLoading","startTime","clientComponentLoadStart","attributes","clientComponentLoadCount","end","clientComponentLoadTimes","appUsingSizeAdjust","serverModuleMap","patchFetch","taintObjectReference","Buffer","from","crypto","subtle","toString","randomUUID","nanoid","isPossibleActionRequest","isPrefetch","setRootSpanAttribute","prerenderToStreamWithTracing","wrap","getBodyResult","spanName","prerenderToStream","access","digestErrorsMap","size","buildFailingError","values","next","ssrErrors","find","contentType","pendingRevalidates","pendingRevalidateWrites","pendingRevalidatedTags","pendingPromise","finally","NEXT_PRIVATE_DEBUG_CACHE","console","log","waitUntil","devValidatingFallbackParams","bind","onUpdateCookies","previewProps","isStatic","usedDynamic","forceDynamic","renderToStreamWithTracing","renderToStream","didExecuteServerAction","formState","actionRequestResult","generateFlight","notFoundLoaderTree","assignMetadata","renderToHTMLOrFlight","params","definition","fetchTags","staleHeader","forceStatic","cacheControl","staticBailoutInfo","description","dynamicUsageDescription","dynamicUsageStack","basePath","buildManifest","serverRenderToReadableStream","crossOrigin","nextExport","reactMaxHeadersLength","shouldWaitOnAllReady","subresourceIntegrityManifest","supportsDynamicResponse","renderServerInsertedHTML","getServerInsertedMetadata","tracingMetadata","getTracePropagationData","clientTraceMetadata","polyfills","polyfillFiles","filter","polyfill","endsWith","src","integrity","noModule","bootstrapScript","bootstrapScriptContent","JSON","stringify","reactServerErrorsByDigest","silenceLogger","onHTMLRenderRSCError","serverComponentsErrorHandler","onHTMLRenderSSRError","allCapturedErrors","htmlRendererErrorHandler","reactServerResult","appendHeader","resolveValidation","validationOutlet","createValidationOutlet","_validation","serverStream","returnedDebugChannel","finalRequestStore","readableSsr","readableBrowser","readable","tee","dim","spawnDynamicValidationInDev","RSCPayload","DATA","inlinedReactServerDataStream","preludeState","resume","htmlStream","getServerInsertedHTML","serverCapturedErrors","delayDataUntilFirstHtmlChunk","Empty","inlinedDataStream","consume","onHeaders","maxHeadersLength","bootstrapScripts","generateStaticHTML","isBuildTimePrerendering","validateRootLayout","shouldBailoutToCSR","reason","redirectUrl","Headers","errorPreinitScripts","errorBootstrapScript","errorRSCPayload","has","errorServerStream","fizzStream","ReactDOMServer","element","streamOptions","finalErr","bailOnRootNotFound","hasRuntimePrefetch","initialReactController","initialDataController","initialStageController","initialRscPayload","maybeInitialServerStream","addEventListener","hasPendingReads","maybeStream","finalStageController","finalRscPayload","finalServerStream","delayUntilStage","sharedParamsParent","sharedSearchParamsParent","connection","readableController","clientSideReadable","ReadableStream","start","writable","WritableStream","write","chunk","enqueue","close","outlet","Promise","isNotFound","allowEmptyStaticShell","get","initialServerReactController","captureOwnerStackClient","captureOwnerStackServer","initialServerPayloadPrerenderStore","once","LogSafely","fn","initialServerResult","initialClientPrerenderController","initialClientReactController","initialClientRenderController","initialClientPrerenderStore","pendingInitialClientResult","asUnclosingStream","catch","finalServerReactController","finalServerRenderController","finalServerPayloadPrerenderStore","finalAttemptRSCPayload","pendingPrerenderResult","clientDynamicTracking","finalClientReactController","finalClientRenderController","finalClientPrerenderStore","dynamicValidation","unprocessedPrelude","pendingFinalClientResult","errorInfo","componentStack","preludeIsEmpty","Full","thrownValue","loggingFunction","Errored","originalLoggingFunction","shouldGenerateStaticFlightData","reactServerPrerenderResult","setMetadataHeader","item","prerenderStore","resumeDataCache","asStream","segmentData","collectSegmentData","foreverStream","resumeStream","parse","finalStream","hasFallbackRouteParams","emptyReactServerResult","consumeAsStream","reactServerPrerenderStore","ssrPrerenderStore","dynamicAccesses","prerenderLegacyStore","flightStream","modules","globalErrorModule","GlobalErrorComponent","filePath","getComponent","dir","__NEXT_EDGE_PROJECT_DIR","globalErrorModulePath","SegmentViewNode","staleTimes","static","fullPageDataBuffer","clientSegmentCache","isEdgeRuntime","serverConsumerManifest","moduleLoading","moduleMap","edgeRscModuleMapping","rscModuleMapping","staleTime"],"mappings":"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","ignoreList":[0]}