| "use strict"; |
| Object.defineProperty(exports, "__esModule", { |
| value: true |
| }); |
| Object.defineProperty(exports, "renderToHTMLOrFlight", { |
| enumerable: true, |
| get: function() { |
| return renderToHTMLOrFlight; |
| } |
| }); |
| const _jsxruntime = require("react/jsx-runtime"); |
| const _workasyncstorageexternal = require("../app-render/work-async-storage.external"); |
| const _react = _interop_require_default(require("react")); |
| const _renderresult = _interop_require_default(require("../render-result")); |
| const _nodewebstreamshelper = require("../stream-utils/node-web-streams-helper"); |
| const _internalutils = require("../internal-utils"); |
| const _approuterheaders = require("../../client/components/app-router-headers"); |
| const _metadatacontext = require("../../lib/metadata/metadata-context"); |
| const _requeststore = require("../async-storage/request-store"); |
| const _workstore = require("../async-storage/work-store"); |
| const _httpaccessfallback = require("../../client/components/http-access-fallback/http-access-fallback"); |
| const _redirect = require("../../client/components/redirect"); |
| const _redirecterror = require("../../client/components/redirect-error"); |
| const _implicittags = require("../lib/implicit-tags"); |
| const _constants = require("../lib/trace/constants"); |
| const _tracer = require("../lib/trace/tracer"); |
| const _flightrenderresult = require("./flight-render-result"); |
| const _createerrorhandler = require("./create-error-handler"); |
| const _getshortdynamicparamtype = require("./get-short-dynamic-param-type"); |
| const _getsegmentparam = require("./get-segment-param"); |
| const _getscriptnoncefromheader = require("./get-script-nonce-from-header"); |
| const _parseandvalidateflightrouterstate = require("./parse-and-validate-flight-router-state"); |
| const _createflightrouterstatefromloadertree = require("./create-flight-router-state-from-loader-tree"); |
| const _actionhandler = require("./action-handler"); |
| const _bailouttocsr = require("../../shared/lib/lazy-dynamic/bailout-to-csr"); |
| const _log = require("../../build/output/log"); |
| const _requestcookies = require("../web/spec-extension/adapters/request-cookies"); |
| const _serverinsertedhtml = require("./server-inserted-html"); |
| const _requiredscripts = require("./required-scripts"); |
| const _addpathprefix = require("../../shared/lib/router/utils/add-path-prefix"); |
| const _makegetserverinsertedhtml = require("./make-get-server-inserted-html"); |
| const _walktreewithflightrouterstate = require("./walk-tree-with-flight-router-state"); |
| const _createcomponenttree = require("./create-component-tree"); |
| const _getassetquerystring = require("./get-asset-query-string"); |
| const _encryptionutils = require("./encryption-utils"); |
| const _postponedstate = require("./postponed-state"); |
| const _hooksservercontext = require("../../client/components/hooks-server-context"); |
| const _useflightresponse = require("./use-flight-response"); |
| const _staticgenerationbailout = require("../../client/components/static-generation-bailout"); |
| const _formatservererror = require("../../lib/format-server-error"); |
| const _dynamicrendering = require("./dynamic-rendering"); |
| const _clientcomponentrendererlogger = require("../client-component-renderer-logger"); |
| const _actionutils = require("./action-utils"); |
| const _helpers = require("../base-http/helpers"); |
| const _parserelativeurl = require("../../shared/lib/router/utils/parse-relative-url"); |
| const _approuter = _interop_require_default(require("../../client/components/app-router")); |
| const _serveractionrequestmeta = require("../lib/server-action-request-meta"); |
| const _createinitialrouterstate = require("../../client/components/router-reducer/create-initial-router-state"); |
| const _approuterinstance = require("../../client/components/app-router-instance"); |
| const _utils = require("../instrumentation/utils"); |
| const _segment = require("../../shared/lib/segment"); |
| const _apprenderprerenderutils = require("./app-render-prerender-utils"); |
| const _prospectiverenderutils = require("./prospective-render-utils"); |
| const _apprenderrenderutils = require("./app-render-render-utils"); |
| const _scheduler = require("../../lib/scheduler"); |
| const _workunitasyncstorageexternal = require("./work-unit-async-storage.external"); |
| const _cachesignal = require("./cache-signal"); |
| const _utils1 = require("../lib/trace/utils"); |
| const _invarianterror = require("../../shared/lib/invariant-error"); |
| const _constants1 = require("../../lib/constants"); |
| const _createcomponentstylesandscripts = require("./create-component-styles-and-scripts"); |
| const _parseloadertree = require("./parse-loader-tree"); |
| const _resumedatacache = require("../resume-data-cache/resume-data-cache"); |
| const _iserror = _interop_require_default(require("../../lib/is-error")); |
| const _createserverinsertedmetadata = require("./metadata-insertion/create-server-inserted-metadata"); |
| const _serverutils = require("../server-utils"); |
| const _revalidationutils = require("../revalidation-utils"); |
| const _trackmoduleloadingexternal = require("./module-loading/track-module-loading.external"); |
| const _reactlargeshellerror = require("./react-large-shell-error"); |
| const _segmentexplorerpath = require("./segment-explorer-path"); |
| const _requestmeta = require("../request-meta"); |
| const _getdynamicparam = require("../../shared/lib/router/utils/get-dynamic-param"); |
| const _promisewithresolvers = require("../../shared/lib/promise-with-resolvers"); |
| function _interop_require_default(obj) { |
| return obj && obj.__esModule ? obj : { |
| default: obj |
| }; |
| } |
| const flightDataPathHeadKey = 'h'; |
| const getFlightViewportKey = (requestId)=>requestId + 'v'; |
| const getFlightMetadataKey = (requestId)=>requestId + 'm'; |
| const filterStackFrame = process.env.NODE_ENV !== 'production' ? require('../lib/source-maps').filterStackFrameDEV : undefined; |
| function parseRequestHeaders(headers, options) { |
| const isDevWarmupRequest = options.isDevWarmup === true; |
| |
| |
| |
| const isPrefetchRequest = isDevWarmupRequest || headers[_approuterheaders.NEXT_ROUTER_PREFETCH_HEADER] === '1'; |
| const isRuntimePrefetchRequest = headers[_approuterheaders.NEXT_ROUTER_PREFETCH_HEADER] === '2'; |
| const isHmrRefresh = headers[_approuterheaders.NEXT_HMR_REFRESH_HEADER] !== undefined; |
| |
| const isRSCRequest = isDevWarmupRequest || headers[_approuterheaders.RSC_HEADER] !== undefined; |
| const shouldProvideFlightRouterState = isRSCRequest && (!isPrefetchRequest || !options.isRoutePPREnabled); |
| const flightRouterState = shouldProvideFlightRouterState ? (0, _parseandvalidateflightrouterstate.parseAndValidateFlightRouterState)(headers[_approuterheaders.NEXT_ROUTER_STATE_TREE_HEADER]) : undefined; |
| |
| const isRouteTreePrefetchRequest = headers[_approuterheaders.NEXT_ROUTER_SEGMENT_PREFETCH_HEADER] === '/_tree'; |
| const csp = headers['content-security-policy'] || headers['content-security-policy-report-only']; |
| const nonce = typeof csp === 'string' ? (0, _getscriptnoncefromheader.getScriptNonceFromHeader)(csp) : undefined; |
| const previouslyRevalidatedTags = (0, _serverutils.getPreviouslyRevalidatedTags)(headers, options.previewModeId); |
| return { |
| flightRouterState, |
| isPrefetchRequest, |
| isRuntimePrefetchRequest, |
| isRouteTreePrefetchRequest, |
| isHmrRefresh, |
| isRSCRequest, |
| isDevWarmupRequest, |
| nonce, |
| previouslyRevalidatedTags |
| }; |
| } |
| function createNotFoundLoaderTree(loaderTree) { |
| const components = loaderTree[2]; |
| const hasGlobalNotFound = !!components['global-not-found']; |
| return [ |
| '', |
| { |
| children: [ |
| _segment.PAGE_SEGMENT_KEY, |
| {}, |
| { |
| page: components['global-not-found'] ?? components['not-found'] |
| } |
| ] |
| }, |
| |
| hasGlobalNotFound ? components : {} |
| ]; |
| } |
| |
| |
| function makeGetDynamicParamFromSegment(params, pagePath, fallbackRouteParams) { |
| return function getDynamicParamFromSegment( |
| segment) { |
| const segmentParam = (0, _getsegmentparam.getSegmentParam)(segment); |
| if (!segmentParam) { |
| return null; |
| } |
| const segmentKey = segmentParam.param; |
| const dynamicParamType = _getshortdynamicparamtype.dynamicParamTypes[segmentParam.type]; |
| return (0, _getdynamicparam.getDynamicParam)(params, segmentKey, dynamicParamType, pagePath, fallbackRouteParams); |
| }; |
| } |
| function NonIndex({ pagePath, statusCode, isPossibleServerAction }) { |
| const is404Page = pagePath === '/404'; |
| const isInvalidStatusCode = typeof statusCode === 'number' && statusCode > 400; |
| |
| |
| if (!isPossibleServerAction && (is404Page || isInvalidStatusCode)) { |
| return (0, _jsxruntime.jsx)("meta", { |
| name: "robots", |
| content: "noindex" |
| }); |
| } |
| return null; |
| } |
| |
| |
| |
| |
| async function generateDynamicRSCPayload(ctx, options) { |
| |
| |
| |
| |
| |
| |
| let flightData = ''; |
| const { componentMod: { tree: loaderTree, createMetadataComponents, MetadataBoundary, ViewportBoundary }, getDynamicParamFromSegment, appUsingSizeAdjustment, query, requestId, flightRouterState, workStore, url } = ctx; |
| const serveStreamingMetadata = !!ctx.renderOpts.serveStreamingMetadata; |
| if (!(options == null ? void 0 : options.skipFlight)) { |
| const preloadCallbacks = []; |
| const { ViewportTree, MetadataTree, getViewportReady, getMetadataReady, StreamingMetadataOutlet } = createMetadataComponents({ |
| tree: loaderTree, |
| parsedQuery: query, |
| pathname: url.pathname, |
| metadataContext: (0, _metadatacontext.createMetadataContext)(ctx.renderOpts), |
| getDynamicParamFromSegment, |
| appUsingSizeAdjustment, |
| workStore, |
| MetadataBoundary, |
| ViewportBoundary, |
| serveStreamingMetadata |
| }); |
| flightData = (await (0, _walktreewithflightrouterstate.walkTreeWithFlightRouterState)({ |
| ctx, |
| loaderTreeToFilter: loaderTree, |
| parentParams: {}, |
| flightRouterState, |
| |
| rscHead: (0, _jsxruntime.jsxs)(_react.default.Fragment, { |
| children: [ |
| (0, _jsxruntime.jsx)(NonIndex, { |
| pagePath: ctx.pagePath, |
| statusCode: ctx.res.statusCode, |
| isPossibleServerAction: ctx.isPossibleServerAction |
| }), |
| (0, _jsxruntime.jsx)(ViewportTree, {}, getFlightViewportKey(requestId)), |
| (0, _jsxruntime.jsx)(MetadataTree, {}, getFlightMetadataKey(requestId)) |
| ] |
| }, flightDataPathHeadKey), |
| injectedCSS: new Set(), |
| injectedJS: new Set(), |
| injectedFontPreloadTags: new Set(), |
| rootLayoutIncluded: false, |
| getViewportReady, |
| getMetadataReady, |
| preloadCallbacks, |
| StreamingMetadataOutlet |
| })).map((path)=>path.slice(1)) |
| ; |
| } |
| |
| |
| |
| if (options == null ? void 0 : options.actionResult) { |
| return { |
| a: options.actionResult, |
| f: flightData, |
| b: ctx.sharedContext.buildId |
| }; |
| } |
| |
| return { |
| b: ctx.sharedContext.buildId, |
| f: flightData, |
| S: workStore.isStaticGeneration |
| }; |
| } |
| function createErrorContext(ctx, renderSource) { |
| return { |
| routerKind: 'App Router', |
| routePath: ctx.pagePath, |
| |
| routeType: ctx.isPossibleServerAction ? 'action' : 'render', |
| renderSource, |
| revalidateReason: (0, _utils.getRevalidateReason)(ctx.workStore) |
| }; |
| } |
| |
| |
| |
| async function generateDynamicFlightRenderResult(req, ctx, requestStore, options) { |
| const renderOpts = ctx.renderOpts; |
| function onFlightDataRenderError(err) { |
| return renderOpts.onInstrumentationRequestError == null ? void 0 : renderOpts.onInstrumentationRequestError.call(renderOpts, err, req, createErrorContext(ctx, 'react-server-components-payload')); |
| } |
| const onError = (0, _createerrorhandler.createFlightReactServerErrorHandler)(!!renderOpts.dev, onFlightDataRenderError); |
| const RSCPayload = await _workunitasyncstorageexternal.workUnitAsyncStorage.run(requestStore, generateDynamicRSCPayload, ctx, options); |
| |
| |
| const flightReadableStream = _workunitasyncstorageexternal.workUnitAsyncStorage.run(requestStore, ctx.componentMod.renderToReadableStream, RSCPayload, ctx.clientReferenceManifest.clientModules, { |
| onError, |
| temporaryReferences: options == null ? void 0 : options.temporaryReferences, |
| filterStackFrame |
| }); |
| return new _flightrenderresult.FlightRenderResult(flightReadableStream, { |
| fetchMetrics: ctx.workStore.fetchMetrics |
| }); |
| } |
| async function generateRuntimePrefetchResult(req, res, ctx, requestStore) { |
| const { workStore } = ctx; |
| const renderOpts = ctx.renderOpts; |
| function onFlightDataRenderError(err) { |
| return renderOpts.onInstrumentationRequestError == null ? void 0 : renderOpts.onInstrumentationRequestError.call(renderOpts, err, req, |
| createErrorContext(ctx, 'react-server-components-payload')); |
| } |
| const onError = (0, _createerrorhandler.createFlightReactServerErrorHandler)(false, onFlightDataRenderError); |
| const metadata = {}; |
| const generatePayload = ()=>generateDynamicRSCPayload(ctx, undefined); |
| const { componentMod: { tree }, getDynamicParamFromSegment } = ctx; |
| const rootParams = (0, _createcomponenttree.getRootParams)(tree, getDynamicParamFromSegment); |
| |
| |
| const prerenderResumeDataCache = (0, _resumedatacache.createPrerenderResumeDataCache)(); |
| |
| const renderResumeDataCache = null; |
| await prospectiveRuntimeServerPrerender(ctx, generatePayload, prerenderResumeDataCache, renderResumeDataCache, rootParams, requestStore.cookies, requestStore.draftMode); |
| const response = await finalRuntimeServerPrerender(ctx, generatePayload, prerenderResumeDataCache, renderResumeDataCache, rootParams, requestStore.cookies, requestStore.draftMode, onError); |
| applyMetadataFromPrerenderResult(response, metadata, workStore); |
| metadata.fetchMetrics = ctx.workStore.fetchMetrics; |
| if (response.isPartial) { |
| res.setHeader(_approuterheaders.NEXT_DID_POSTPONE_HEADER, '1'); |
| } |
| return new _flightrenderresult.FlightRenderResult(response.result.prelude, metadata); |
| } |
| async function prospectiveRuntimeServerPrerender(ctx, getPayload, prerenderResumeDataCache, renderResumeDataCache, rootParams, cookies, draftMode) { |
| const { implicitTags, renderOpts, workStore } = ctx; |
| const { clientReferenceManifest, ComponentMod } = renderOpts; |
| assertClientReferenceManifest(clientReferenceManifest); |
| |
| |
| |
| |
| const initialServerPrerenderController = new AbortController(); |
| |
| |
| |
| const initialServerRenderController = new AbortController(); |
| |
| |
| const cacheSignal = new _cachesignal.CacheSignal(); |
| const initialServerPrerenderStore = { |
| type: 'prerender-runtime', |
| phase: 'render', |
| rootParams, |
| implicitTags, |
| renderSignal: initialServerRenderController.signal, |
| controller: initialServerPrerenderController, |
| |
| |
| |
| cacheSignal, |
| |
| dynamicTracking: null, |
| |
| |
| revalidate: 1, |
| expire: 0, |
| stale: _constants1.INFINITE_CACHE, |
| tags: [ |
| ...implicitTags.tags |
| ], |
| renderResumeDataCache, |
| prerenderResumeDataCache, |
| hmrRefreshHash: undefined, |
| captureOwnerStack: undefined, |
| |
| runtimeStagePromise: null, |
| |
| cookies, |
| draftMode |
| }; |
| |
| |
| const initialServerPayload = await _workunitasyncstorageexternal.workUnitAsyncStorage.run(initialServerPrerenderStore, getPayload); |
| const pendingInitialServerResult = _workunitasyncstorageexternal.workUnitAsyncStorage.run(initialServerPrerenderStore, ComponentMod.prerender, initialServerPayload, clientReferenceManifest.clientModules, { |
| filterStackFrame, |
| onError: (err)=>{ |
| const digest = (0, _createerrorhandler.getDigestForWellKnownError)(err); |
| if (digest) { |
| return digest; |
| } |
| if (initialServerPrerenderController.signal.aborted) { |
| |
| |
| return; |
| } else if (process.env.NEXT_DEBUG_BUILD || process.env.__NEXT_VERBOSE_LOGGING) { |
| (0, _prospectiverenderutils.printDebugThrownValueForProspectiveRender)(err, workStore.route); |
| } |
| }, |
| |
| |
| onPostpone: undefined, |
| |
| |
| |
| signal: initialServerRenderController.signal |
| }); |
| |
| (0, _trackmoduleloadingexternal.trackPendingModules)(cacheSignal); |
| await cacheSignal.cacheReady(); |
| initialServerRenderController.abort(); |
| initialServerPrerenderController.abort(); |
| |
| |
| if (workStore.invalidDynamicUsageError) { |
| throw workStore.invalidDynamicUsageError; |
| } |
| try { |
| return await (0, _apprenderprerenderutils.createReactServerPrerenderResult)(pendingInitialServerResult); |
| } catch (err) { |
| if (initialServerRenderController.signal.aborted || initialServerPrerenderController.signal.aborted) { |
| |
| } else if (process.env.NEXT_DEBUG_BUILD || process.env.__NEXT_VERBOSE_LOGGING) { |
| |
| |
| (0, _prospectiverenderutils.printDebugThrownValueForProspectiveRender)(err, workStore.route); |
| } |
| return null; |
| } |
| } |
| async function finalRuntimeServerPrerender(ctx, getPayload, prerenderResumeDataCache, renderResumeDataCache, rootParams, cookies, draftMode, onError) { |
| const { implicitTags, renderOpts } = ctx; |
| const { clientReferenceManifest, ComponentMod, experimental, isDebugDynamicAccesses } = renderOpts; |
| assertClientReferenceManifest(clientReferenceManifest); |
| const selectStaleTime = createSelectStaleTime(experimental); |
| let serverIsDynamic = false; |
| const finalServerController = new AbortController(); |
| const serverDynamicTracking = (0, _dynamicrendering.createDynamicTrackingState)(isDebugDynamicAccesses); |
| const { promise: runtimeStagePromise, resolve: resolveBlockedRuntimeAPIs } = (0, _promisewithresolvers.createPromiseWithResolvers)(); |
| const finalServerPrerenderStore = { |
| type: 'prerender-runtime', |
| phase: 'render', |
| rootParams, |
| implicitTags, |
| renderSignal: finalServerController.signal, |
| controller: finalServerController, |
| |
| cacheSignal: null, |
| dynamicTracking: serverDynamicTracking, |
| |
| |
| revalidate: 1, |
| expire: 0, |
| stale: _constants1.INFINITE_CACHE, |
| tags: [ |
| ...implicitTags.tags |
| ], |
| prerenderResumeDataCache, |
| renderResumeDataCache, |
| hmrRefreshHash: undefined, |
| captureOwnerStack: undefined, |
| |
| runtimeStagePromise, |
| |
| cookies, |
| draftMode |
| }; |
| const finalRSCPayload = await _workunitasyncstorageexternal.workUnitAsyncStorage.run(finalServerPrerenderStore, getPayload); |
| let prerenderIsPending = true; |
| const result = await (0, _apprenderprerenderutils.prerenderAndAbortInSequentialTasksWithStages)(async ()=>{ |
| |
| const prerenderResult = await _workunitasyncstorageexternal.workUnitAsyncStorage.run(finalServerPrerenderStore, ComponentMod.prerender, finalRSCPayload, clientReferenceManifest.clientModules, { |
| filterStackFrame, |
| onError, |
| signal: finalServerController.signal |
| }); |
| prerenderIsPending = false; |
| return prerenderResult; |
| }, ()=>{ |
| |
| |
| |
| |
| |
| |
| |
| resolveBlockedRuntimeAPIs(); |
| }, ()=>{ |
| |
| if (finalServerController.signal.aborted) { |
| |
| |
| serverIsDynamic = true; |
| return; |
| } |
| if (prerenderIsPending) { |
| |
| |
| serverIsDynamic = true; |
| } |
| finalServerController.abort(); |
| }); |
| (0, _dynamicrendering.warnOnSyncDynamicError)(serverDynamicTracking); |
| return { |
| result, |
| |
| |
| dynamicAccess: serverDynamicTracking, |
| isPartial: serverIsDynamic, |
| collectedRevalidate: finalServerPrerenderStore.revalidate, |
| collectedExpire: finalServerPrerenderStore.expire, |
| collectedStale: selectStaleTime(finalServerPrerenderStore.stale), |
| collectedTags: finalServerPrerenderStore.tags |
| }; |
| } |
| |
| |
| |
| |
| |
| |
| async function warmupDevRender(req, ctx) { |
| const { clientReferenceManifest, componentMod: ComponentMod, getDynamicParamFromSegment, implicitTags, renderOpts, workStore } = ctx; |
| const { allowEmptyStaticShell = false, dev, onInstrumentationRequestError } = renderOpts; |
| if (!dev) { |
| throw Object.defineProperty(new _invarianterror.InvariantError('generateDynamicFlightRenderResult should never be called in `next start` mode.'), "__NEXT_ERROR_CODE", { |
| value: "E523", |
| enumerable: false, |
| configurable: true |
| }); |
| } |
| const rootParams = (0, _createcomponenttree.getRootParams)(ComponentMod.tree, getDynamicParamFromSegment); |
| function onFlightDataRenderError(err) { |
| return onInstrumentationRequestError == null ? void 0 : onInstrumentationRequestError(err, req, createErrorContext(ctx, 'react-server-components-payload')); |
| } |
| const onError = (0, _createerrorhandler.createFlightReactServerErrorHandler)(true, onFlightDataRenderError); |
| |
| |
| const prerenderResumeDataCache = (0, _resumedatacache.createPrerenderResumeDataCache)(); |
| const renderController = new AbortController(); |
| const prerenderController = new AbortController(); |
| const reactController = new AbortController(); |
| const cacheSignal = new _cachesignal.CacheSignal(); |
| const prerenderStore = { |
| type: 'prerender', |
| phase: 'render', |
| rootParams, |
| implicitTags, |
| renderSignal: renderController.signal, |
| controller: prerenderController, |
| cacheSignal, |
| dynamicTracking: null, |
| allowEmptyStaticShell, |
| revalidate: _constants1.INFINITE_CACHE, |
| expire: _constants1.INFINITE_CACHE, |
| stale: _constants1.INFINITE_CACHE, |
| tags: [], |
| prerenderResumeDataCache, |
| renderResumeDataCache: null, |
| hmrRefreshHash: req.cookies[_approuterheaders.NEXT_HMR_REFRESH_HASH_COOKIE], |
| captureOwnerStack: ComponentMod.captureOwnerStack, |
| |
| |
| |
| fallbackRouteParams: null |
| }; |
| const rscPayload = await _workunitasyncstorageexternal.workUnitAsyncStorage.run(prerenderStore, generateDynamicRSCPayload, ctx); |
| |
| |
| _workunitasyncstorageexternal.workUnitAsyncStorage.run(prerenderStore, ComponentMod.renderToReadableStream, rscPayload, clientReferenceManifest.clientModules, { |
| filterStackFrame, |
| onError, |
| signal: renderController.signal |
| }); |
| |
| (0, _trackmoduleloadingexternal.trackPendingModules)(cacheSignal); |
| await cacheSignal.cacheReady(); |
| |
| prerenderStore.prerenderResumeDataCache = null; |
| |
| reactController.abort(); |
| renderController.abort(); |
| |
| |
| |
| return new _flightrenderresult.FlightRenderResult('', { |
| fetchMetrics: workStore.fetchMetrics, |
| renderResumeDataCache: (0, _resumedatacache.createRenderResumeDataCache)(prerenderResumeDataCache) |
| }); |
| } |
| |
| |
| |
| |
| |
| function prepareInitialCanonicalUrl(url) { |
| return (url.pathname + url.search).split('/'); |
| } |
| |
| async function getRSCPayload(tree, ctx, is404) { |
| const injectedCSS = new Set(); |
| const injectedJS = new Set(); |
| const injectedFontPreloadTags = new Set(); |
| let missingSlots; |
| |
| if (process.env.NODE_ENV === 'development') { |
| missingSlots = new Set(); |
| } |
| const { getDynamicParamFromSegment, query, appUsingSizeAdjustment, componentMod: { createMetadataComponents, MetadataBoundary, ViewportBoundary }, url, workStore } = ctx; |
| const initialTree = (0, _createflightrouterstatefromloadertree.createFlightRouterStateFromLoaderTree)(tree, getDynamicParamFromSegment, query); |
| const serveStreamingMetadata = !!ctx.renderOpts.serveStreamingMetadata; |
| const hasGlobalNotFound = !!tree[2]['global-not-found']; |
| const { ViewportTree, MetadataTree, getViewportReady, getMetadataReady, StreamingMetadataOutlet } = createMetadataComponents({ |
| tree, |
| |
| |
| |
| |
| |
| errorType: is404 && !hasGlobalNotFound ? 'not-found' : undefined, |
| parsedQuery: query, |
| pathname: url.pathname, |
| metadataContext: (0, _metadatacontext.createMetadataContext)(ctx.renderOpts), |
| getDynamicParamFromSegment, |
| appUsingSizeAdjustment, |
| workStore, |
| MetadataBoundary, |
| ViewportBoundary, |
| serveStreamingMetadata |
| }); |
| const preloadCallbacks = []; |
| const seedData = await (0, _createcomponenttree.createComponentTree)({ |
| ctx, |
| loaderTree: tree, |
| parentParams: {}, |
| injectedCSS, |
| injectedJS, |
| injectedFontPreloadTags, |
| rootLayoutIncluded: false, |
| getViewportReady, |
| getMetadataReady, |
| missingSlots, |
| preloadCallbacks, |
| authInterrupts: ctx.renderOpts.experimental.authInterrupts, |
| StreamingMetadataOutlet |
| }); |
| |
| |
| |
| const varyHeader = ctx.res.getHeader('vary'); |
| const couldBeIntercepted = typeof varyHeader === 'string' && varyHeader.includes(_approuterheaders.NEXT_URL); |
| const initialHead = (0, _jsxruntime.jsxs)(_react.default.Fragment, { |
| children: [ |
| (0, _jsxruntime.jsx)(NonIndex, { |
| pagePath: ctx.pagePath, |
| statusCode: ctx.res.statusCode, |
| isPossibleServerAction: ctx.isPossibleServerAction |
| }), |
| (0, _jsxruntime.jsx)(ViewportTree, {}), |
| (0, _jsxruntime.jsx)(MetadataTree, {}) |
| ] |
| }, flightDataPathHeadKey); |
| const { GlobalError, styles: globalErrorStyles } = await getGlobalErrorStyles(tree, ctx); |
| |
| |
| |
| |
| |
| |
| const isPossiblyPartialHead = workStore.isStaticGeneration && ctx.renderOpts.experimental.isRoutePPREnabled === true; |
| return { |
| |
| P: (0, _jsxruntime.jsx)(Preloads, { |
| preloadCallbacks: preloadCallbacks |
| }), |
| b: ctx.sharedContext.buildId, |
| p: ctx.assetPrefix, |
| c: prepareInitialCanonicalUrl(url), |
| i: !!couldBeIntercepted, |
| f: [ |
| [ |
| initialTree, |
| seedData, |
| initialHead, |
| isPossiblyPartialHead |
| ] |
| ], |
| m: missingSlots, |
| G: [ |
| GlobalError, |
| globalErrorStyles |
| ], |
| s: typeof ctx.renderOpts.postponed === 'string', |
| S: workStore.isStaticGeneration |
| }; |
| } |
| |
| |
| |
| |
| |
| function Preloads({ preloadCallbacks }) { |
| preloadCallbacks.forEach((preloadFn)=>preloadFn()); |
| return null; |
| } |
| |
| async function getErrorRSCPayload(tree, ctx, ssrError, errorType) { |
| const { getDynamicParamFromSegment, query, appUsingSizeAdjustment, componentMod: { createMetadataComponents, MetadataBoundary, ViewportBoundary }, url, workStore } = ctx; |
| const serveStreamingMetadata = !!ctx.renderOpts.serveStreamingMetadata; |
| const { MetadataTree, ViewportTree } = createMetadataComponents({ |
| tree, |
| parsedQuery: query, |
| pathname: url.pathname, |
| metadataContext: (0, _metadatacontext.createMetadataContext)(ctx.renderOpts), |
| errorType, |
| getDynamicParamFromSegment, |
| appUsingSizeAdjustment, |
| workStore, |
| MetadataBoundary, |
| ViewportBoundary, |
| serveStreamingMetadata: serveStreamingMetadata |
| }); |
| const initialHead = (0, _jsxruntime.jsxs)(_react.default.Fragment, { |
| children: [ |
| (0, _jsxruntime.jsx)(NonIndex, { |
| pagePath: ctx.pagePath, |
| statusCode: ctx.res.statusCode, |
| isPossibleServerAction: ctx.isPossibleServerAction |
| }), |
| (0, _jsxruntime.jsx)(ViewportTree, {}), |
| process.env.NODE_ENV === 'development' && (0, _jsxruntime.jsx)("meta", { |
| name: "next-error", |
| content: "not-found" |
| }), |
| (0, _jsxruntime.jsx)(MetadataTree, {}) |
| ] |
| }, flightDataPathHeadKey); |
| const initialTree = (0, _createflightrouterstatefromloadertree.createFlightRouterStateFromLoaderTree)(tree, getDynamicParamFromSegment, query); |
| let err = undefined; |
| if (ssrError) { |
| err = (0, _iserror.default)(ssrError) ? ssrError : Object.defineProperty(new Error(ssrError + ''), "__NEXT_ERROR_CODE", { |
| value: "E394", |
| enumerable: false, |
| configurable: true |
| }); |
| } |
| |
| |
| const seedData = [ |
| initialTree[0], |
| (0, _jsxruntime.jsxs)("html", { |
| id: "__next_error__", |
| children: [ |
| (0, _jsxruntime.jsx)("head", {}), |
| (0, _jsxruntime.jsx)("body", { |
| children: process.env.NODE_ENV !== 'production' && err ? (0, _jsxruntime.jsx)("template", { |
| "data-next-error-message": err.message, |
| "data-next-error-digest": 'digest' in err ? err.digest : '', |
| "data-next-error-stack": err.stack |
| }) : null |
| }) |
| ] |
| }), |
| {}, |
| null, |
| false |
| ]; |
| const { GlobalError, styles: globalErrorStyles } = await getGlobalErrorStyles(tree, ctx); |
| const isPossiblyPartialHead = workStore.isStaticGeneration && ctx.renderOpts.experimental.isRoutePPREnabled === true; |
| return { |
| b: ctx.sharedContext.buildId, |
| p: ctx.assetPrefix, |
| c: prepareInitialCanonicalUrl(url), |
| m: undefined, |
| i: false, |
| f: [ |
| [ |
| initialTree, |
| seedData, |
| initialHead, |
| isPossiblyPartialHead |
| ] |
| ], |
| G: [ |
| GlobalError, |
| globalErrorStyles |
| ], |
| s: typeof ctx.renderOpts.postponed === 'string', |
| S: workStore.isStaticGeneration |
| }; |
| } |
| function assertClientReferenceManifest(clientReferenceManifest) { |
| if (!clientReferenceManifest) { |
| throw Object.defineProperty(new _invarianterror.InvariantError('Expected clientReferenceManifest to be defined.'), "__NEXT_ERROR_CODE", { |
| value: "E692", |
| enumerable: false, |
| configurable: true |
| }); |
| } |
| } |
| |
| function App({ reactServerStream, preinitScripts, clientReferenceManifest, ServerInsertedHTMLProvider, nonce }) { |
| preinitScripts(); |
| const response = _react.default.use((0, _useflightresponse.useFlightStream)(reactServerStream, clientReferenceManifest, nonce)); |
| const initialState = (0, _createinitialrouterstate.createInitialRouterState)({ |
| |
| |
| navigatedAt: -1, |
| initialFlightData: response.f, |
| initialCanonicalUrlParts: response.c, |
| initialParallelRoutes: new Map(), |
| |
| |
| location: null, |
| couldBeIntercepted: response.i, |
| postponed: response.s, |
| prerendered: response.S |
| }); |
| const actionQueue = (0, _approuterinstance.createMutableActionQueue)(initialState, null); |
| const { HeadManagerContext } = require('../../shared/lib/head-manager-context.shared-runtime'); |
| return (0, _jsxruntime.jsx)(HeadManagerContext.Provider, { |
| value: { |
| appDir: true, |
| nonce |
| }, |
| children: (0, _jsxruntime.jsx)(ServerInsertedHTMLProvider, { |
| children: (0, _jsxruntime.jsx)(_approuter.default, { |
| actionQueue: actionQueue, |
| globalErrorState: response.G, |
| assetPrefix: response.p |
| }) |
| }) |
| }); |
| } |
| |
| |
| |
| function ErrorApp({ reactServerStream, preinitScripts, clientReferenceManifest, ServerInsertedHTMLProvider, nonce }) { |
| preinitScripts(); |
| const response = _react.default.use((0, _useflightresponse.useFlightStream)(reactServerStream, clientReferenceManifest, nonce)); |
| const initialState = (0, _createinitialrouterstate.createInitialRouterState)({ |
| |
| |
| navigatedAt: -1, |
| initialFlightData: response.f, |
| initialCanonicalUrlParts: response.c, |
| initialParallelRoutes: new Map(), |
| |
| |
| location: null, |
| couldBeIntercepted: response.i, |
| postponed: response.s, |
| prerendered: response.S |
| }); |
| const actionQueue = (0, _approuterinstance.createMutableActionQueue)(initialState, null); |
| return (0, _jsxruntime.jsx)(ServerInsertedHTMLProvider, { |
| children: (0, _jsxruntime.jsx)(_approuter.default, { |
| actionQueue: actionQueue, |
| globalErrorState: response.G, |
| assetPrefix: response.p |
| }) |
| }); |
| } |
| async function renderToHTMLOrFlightImpl(req, res, url, pagePath, query, renderOpts, workStore, parsedRequestHeaders, postponedState, serverComponentsHmrCache, sharedContext, fallbackRouteParams) { |
| const isNotFoundPath = pagePath === '/404'; |
| if (isNotFoundPath) { |
| res.statusCode = 404; |
| } |
| |
| |
| |
| |
| const requestTimestamp = Date.now(); |
| const { clientReferenceManifest, serverActionsManifest, ComponentMod, nextFontManifest, serverActions, assetPrefix = '', enableTainting } = renderOpts; |
| |
| |
| if (ComponentMod.__next_app__) { |
| const instrumented = (0, _clientcomponentrendererlogger.wrapClientComponentLoader)(ComponentMod); |
| |
| |
| |
| |
| const shouldTrackModuleLoading = ()=>{ |
| if (!renderOpts.experimental.cacheComponents) { |
| return false; |
| } |
| if (renderOpts.dev) { |
| return true; |
| } |
| const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore(); |
| if (!workUnitStore) { |
| return false; |
| } |
| switch(workUnitStore.type){ |
| case 'prerender': |
| case 'prerender-client': |
| case 'prerender-runtime': |
| case 'cache': |
| case 'private-cache': |
| return true; |
| case 'prerender-ppr': |
| case 'prerender-legacy': |
| case 'request': |
| case 'unstable-cache': |
| return false; |
| default: |
| workUnitStore; |
| } |
| }; |
| const __next_require__ = (...args)=>{ |
| const exportsOrPromise = instrumented.require(...args); |
| if (shouldTrackModuleLoading()) { |
| |
| (0, _trackmoduleloadingexternal.trackPendingImport)(exportsOrPromise); |
| } |
| return exportsOrPromise; |
| }; |
| |
| globalThis.__next_require__ = __next_require__; |
| const __next_chunk_load__ = (...args)=>{ |
| const loadingChunk = instrumented.loadChunk(...args); |
| if (shouldTrackModuleLoading()) { |
| (0, _trackmoduleloadingexternal.trackPendingChunkLoad)(loadingChunk); |
| } |
| return loadingChunk; |
| }; |
| |
| globalThis.__next_chunk_load__ = __next_chunk_load__; |
| } |
| if (process.env.NODE_ENV === 'development') { |
| |
| const { pathname } = new URL(req.url || '/', 'http://n'); |
| renderOpts.setIsrStatus == null ? void 0 : renderOpts.setIsrStatus.call(renderOpts, pathname, null); |
| } |
| if ( |
| |
| process.env.NEXT_RUNTIME !== 'edge' && (0, _helpers.isNodeNextRequest)(req)) { |
| res.onClose(()=>{ |
| |
| |
| workStore.shouldTrackFetchMetrics = false; |
| }); |
| req.originalRequest.on('end', ()=>{ |
| if ('performance' in globalThis) { |
| const metrics = (0, _clientcomponentrendererlogger.getClientComponentLoaderMetrics)({ |
| reset: true |
| }); |
| if (metrics) { |
| (0, _tracer.getTracer)().startSpan(_constants.NextNodeServerSpan.clientComponentLoading, { |
| startTime: metrics.clientComponentLoadStart, |
| attributes: { |
| 'next.clientComponentLoadCount': metrics.clientComponentLoadCount, |
| 'next.span_type': _constants.NextNodeServerSpan.clientComponentLoading |
| } |
| }).end(metrics.clientComponentLoadStart + metrics.clientComponentLoadTimes); |
| } |
| } |
| }); |
| } |
| const metadata = { |
| statusCode: isNotFoundPath ? 404 : undefined |
| }; |
| const appUsingSizeAdjustment = !!(nextFontManifest == null ? void 0 : nextFontManifest.appUsingSizeAdjust); |
| assertClientReferenceManifest(clientReferenceManifest); |
| const serverModuleMap = (0, _actionutils.createServerModuleMap)({ |
| serverActionsManifest |
| }); |
| (0, _encryptionutils.setReferenceManifestsSingleton)({ |
| page: workStore.page, |
| clientReferenceManifest, |
| serverActionsManifest, |
| serverModuleMap |
| }); |
| ComponentMod.patchFetch(); |
| |
| const { tree: loaderTree, taintObjectReference } = ComponentMod; |
| if (enableTainting) { |
| taintObjectReference('Do not pass process.env to Client Components since it will leak sensitive data', process.env); |
| } |
| workStore.fetchMetrics = []; |
| metadata.fetchMetrics = workStore.fetchMetrics; |
| |
| query = { |
| ...query |
| }; |
| (0, _internalutils.stripInternalQueries)(query); |
| const { flightRouterState, isPrefetchRequest, isRuntimePrefetchRequest, isRSCRequest, isDevWarmupRequest, isHmrRefresh, nonce } = parsedRequestHeaders; |
| const { isStaticGeneration } = workStore; |
| |
| |
| |
| let requestId; |
| if (isStaticGeneration) { |
| requestId = Buffer.from(await crypto.subtle.digest('SHA-1', Buffer.from(req.url))).toString('hex'); |
| } else if (process.env.NEXT_RUNTIME === 'edge') { |
| requestId = crypto.randomUUID(); |
| } else { |
| requestId = require('next/dist/compiled/nanoid').nanoid(); |
| } |
| |
| |
| const params = renderOpts.params ?? {}; |
| const getDynamicParamFromSegment = makeGetDynamicParamFromSegment(params, pagePath, fallbackRouteParams); |
| const isPossibleActionRequest = (0, _serveractionrequestmeta.getIsPossibleServerAction)(req); |
| const implicitTags = await (0, _implicittags.getImplicitTags)(workStore.page, url, fallbackRouteParams); |
| const ctx = { |
| componentMod: ComponentMod, |
| url, |
| renderOpts, |
| workStore, |
| parsedRequestHeaders, |
| getDynamicParamFromSegment, |
| query, |
| isPrefetch: isPrefetchRequest, |
| isPossibleServerAction: isPossibleActionRequest, |
| requestTimestamp, |
| appUsingSizeAdjustment, |
| flightRouterState, |
| requestId, |
| pagePath, |
| clientReferenceManifest, |
| assetPrefix, |
| isNotFoundPath, |
| nonce, |
| res, |
| sharedContext, |
| implicitTags |
| }; |
| (0, _tracer.getTracer)().setRootSpanAttribute('next.route', pagePath); |
| if (isStaticGeneration) { |
| |
| |
| const prerenderToStreamWithTracing = (0, _tracer.getTracer)().wrap(_constants.AppRenderSpan.getBodyResult, { |
| spanName: `prerender route (app) ${pagePath}`, |
| attributes: { |
| 'next.route': pagePath |
| } |
| }, prerenderToStream); |
| const response = await prerenderToStreamWithTracing(req, res, ctx, metadata, loaderTree, fallbackRouteParams); |
| |
| |
| |
| if (response.dynamicAccess && (0, _dynamicrendering.accessedDynamicData)(response.dynamicAccess) && renderOpts.isDebugDynamicAccesses) { |
| (0, _log.warn)('The following dynamic usage was detected:'); |
| for (const access of (0, _dynamicrendering.formatDynamicAPIAccesses)(response.dynamicAccess)){ |
| (0, _log.warn)(access); |
| } |
| } |
| |
| |
| if (workStore.invalidDynamicUsageError) { |
| (0, _dynamicrendering.logDisallowedDynamicError)(workStore, workStore.invalidDynamicUsageError); |
| throw new _staticgenerationbailout.StaticGenBailoutError(); |
| } |
| if (response.digestErrorsMap.size) { |
| const buildFailingError = response.digestErrorsMap.values().next().value; |
| if (buildFailingError) throw buildFailingError; |
| } |
| |
| if (response.ssrErrors.length) { |
| const buildFailingError = response.ssrErrors.find((err)=>(0, _createerrorhandler.isUserLandError)(err)); |
| if (buildFailingError) throw buildFailingError; |
| } |
| const options = { |
| metadata, |
| contentType: _constants1.HTML_CONTENT_TYPE_HEADER |
| }; |
| |
| if (workStore.pendingRevalidates || workStore.pendingRevalidateWrites || workStore.pendingRevalidatedTags) { |
| const pendingPromise = (0, _revalidationutils.executeRevalidates)(workStore).finally(()=>{ |
| if (process.env.NEXT_PRIVATE_DEBUG_CACHE) { |
| console.log('pending revalidates promise finished for:', url); |
| } |
| }); |
| if (renderOpts.waitUntil) { |
| renderOpts.waitUntil(pendingPromise); |
| } else { |
| options.waitUntil = pendingPromise; |
| } |
| } |
| applyMetadataFromPrerenderResult(response, metadata, workStore); |
| if (response.renderResumeDataCache) { |
| metadata.renderResumeDataCache = response.renderResumeDataCache; |
| } |
| return new _renderresult.default(await (0, _nodewebstreamshelper.streamToString)(response.stream), options); |
| } else { |
| |
| const renderResumeDataCache = renderOpts.renderResumeDataCache ?? (postponedState == null ? void 0 : postponedState.renderResumeDataCache); |
| const rootParams = (0, _createcomponenttree.getRootParams)(loaderTree, ctx.getDynamicParamFromSegment); |
| const devValidatingFallbackParams = (0, _requestmeta.getRequestMeta)(req, 'devValidatingFallbackParams') || null; |
| const requestStore = (0, _requeststore.createRequestStoreForRender)(req, res, url, rootParams, implicitTags, renderOpts.onUpdateCookies, renderOpts.previewProps, isHmrRefresh, serverComponentsHmrCache, renderResumeDataCache, devValidatingFallbackParams); |
| if (process.env.NODE_ENV === 'development' && renderOpts.setIsrStatus && |
| |
| process.env.NEXT_RUNTIME !== 'edge' && (0, _helpers.isNodeNextRequest)(req) && !isDevWarmupRequest) { |
| const setIsrStatus = renderOpts.setIsrStatus; |
| req.originalRequest.on('end', ()=>{ |
| if (!requestStore.usedDynamic && !workStore.forceDynamic) { |
| |
| const { pathname } = new URL(req.url || '/', 'http://n'); |
| setIsrStatus(pathname, true); |
| } |
| }); |
| } |
| if (isDevWarmupRequest) { |
| return warmupDevRender(req, ctx); |
| } else if (isRSCRequest) { |
| if (isRuntimePrefetchRequest) { |
| return generateRuntimePrefetchResult(req, res, ctx, requestStore); |
| } else { |
| return generateDynamicFlightRenderResult(req, ctx, requestStore); |
| } |
| } |
| const renderToStreamWithTracing = (0, _tracer.getTracer)().wrap(_constants.AppRenderSpan.getBodyResult, { |
| spanName: `render route (app) ${pagePath}`, |
| attributes: { |
| 'next.route': pagePath |
| } |
| }, renderToStream); |
| let formState = null; |
| if (isPossibleActionRequest) { |
| |
| const actionRequestResult = await (0, _actionhandler.handleAction)({ |
| req, |
| res, |
| ComponentMod, |
| serverModuleMap, |
| generateFlight: generateDynamicFlightRenderResult, |
| workStore, |
| requestStore, |
| serverActions, |
| ctx, |
| metadata |
| }); |
| if (actionRequestResult) { |
| if (actionRequestResult.type === 'not-found') { |
| const notFoundLoaderTree = createNotFoundLoaderTree(loaderTree); |
| res.statusCode = 404; |
| metadata.statusCode = 404; |
| const stream = await renderToStreamWithTracing(requestStore, req, res, ctx, notFoundLoaderTree, formState, postponedState, metadata, devValidatingFallbackParams); |
| return new _renderresult.default(stream, { |
| metadata, |
| contentType: _constants1.HTML_CONTENT_TYPE_HEADER |
| }); |
| } else if (actionRequestResult.type === 'done') { |
| if (actionRequestResult.result) { |
| actionRequestResult.result.assignMetadata(metadata); |
| return actionRequestResult.result; |
| } else if (actionRequestResult.formState) { |
| formState = actionRequestResult.formState; |
| } |
| } |
| } |
| } |
| const options = { |
| metadata, |
| contentType: _constants1.HTML_CONTENT_TYPE_HEADER |
| }; |
| const stream = await renderToStreamWithTracing(requestStore, req, res, ctx, loaderTree, formState, postponedState, metadata, devValidatingFallbackParams); |
| |
| |
| |
| if (workStore.invalidDynamicUsageError && workStore.dev) { |
| throw workStore.invalidDynamicUsageError; |
| } |
| |
| if (workStore.pendingRevalidates || workStore.pendingRevalidateWrites || workStore.pendingRevalidatedTags) { |
| const pendingPromise = (0, _revalidationutils.executeRevalidates)(workStore).finally(()=>{ |
| if (process.env.NEXT_PRIVATE_DEBUG_CACHE) { |
| console.log('pending revalidates promise finished for:', url); |
| } |
| }); |
| if (renderOpts.waitUntil) { |
| renderOpts.waitUntil(pendingPromise); |
| } else { |
| options.waitUntil = pendingPromise; |
| } |
| } |
| |
| return new _renderresult.default(stream, options); |
| } |
| } |
| const renderToHTMLOrFlight = (req, res, pagePath, query, fallbackRouteParams, renderOpts, serverComponentsHmrCache, isDevWarmup, sharedContext)=>{ |
| var _renderOpts_previewProps; |
| if (!req.url) { |
| throw Object.defineProperty(new Error('Invalid URL'), "__NEXT_ERROR_CODE", { |
| value: "E182", |
| enumerable: false, |
| configurable: true |
| }); |
| } |
| const url = (0, _parserelativeurl.parseRelativeUrl)(req.url, undefined, false); |
| |
| |
| const parsedRequestHeaders = parseRequestHeaders(req.headers, { |
| isDevWarmup, |
| isRoutePPREnabled: renderOpts.experimental.isRoutePPREnabled === true, |
| previewModeId: (_renderOpts_previewProps = renderOpts.previewProps) == null ? void 0 : _renderOpts_previewProps.previewModeId |
| }); |
| const { isPrefetchRequest, previouslyRevalidatedTags } = parsedRequestHeaders; |
| let postponedState = null; |
| |
| |
| if (typeof renderOpts.postponed === 'string') { |
| if (fallbackRouteParams) { |
| throw Object.defineProperty(new _invarianterror.InvariantError('postponed state should not be provided when fallback params are provided'), "__NEXT_ERROR_CODE", { |
| value: "E592", |
| enumerable: false, |
| configurable: true |
| }); |
| } |
| postponedState = (0, _postponedstate.parsePostponedState)(renderOpts.postponed, renderOpts.params); |
| } |
| if ((postponedState == null ? void 0 : postponedState.renderResumeDataCache) && renderOpts.renderResumeDataCache) { |
| throw Object.defineProperty(new _invarianterror.InvariantError('postponed state and dev warmup immutable resume data cache should not be provided together'), "__NEXT_ERROR_CODE", { |
| value: "E589", |
| enumerable: false, |
| configurable: true |
| }); |
| } |
| const workStore = (0, _workstore.createWorkStore)({ |
| page: renderOpts.routeModule.definition.page, |
| renderOpts, |
| |
| isPrefetchRequest, |
| buildId: sharedContext.buildId, |
| previouslyRevalidatedTags |
| }); |
| return _workasyncstorageexternal.workAsyncStorage.run(workStore, |
| renderToHTMLOrFlightImpl, |
| req, res, url, pagePath, query, renderOpts, workStore, parsedRequestHeaders, postponedState, serverComponentsHmrCache, sharedContext, fallbackRouteParams); |
| }; |
| function applyMetadataFromPrerenderResult(response, metadata, workStore) { |
| var _metadata_cacheControl; |
| if (response.collectedTags) { |
| metadata.fetchTags = response.collectedTags.join(','); |
| } |
| |
| const staleHeader = String(response.collectedStale); |
| metadata.headers ??= {}; |
| metadata.headers[_approuterheaders.NEXT_ROUTER_STALE_TIME_HEADER] = staleHeader; |
| |
| |
| if (workStore.forceStatic === false || response.collectedRevalidate === 0) { |
| metadata.cacheControl = { |
| revalidate: 0, |
| expire: undefined |
| }; |
| } else { |
| |
| metadata.cacheControl = { |
| revalidate: response.collectedRevalidate >= _constants1.INFINITE_CACHE ? false : response.collectedRevalidate, |
| expire: response.collectedExpire >= _constants1.INFINITE_CACHE ? undefined : response.collectedExpire |
| }; |
| } |
| |
| if (((_metadata_cacheControl = metadata.cacheControl) == null ? void 0 : _metadata_cacheControl.revalidate) === 0) { |
| metadata.staticBailoutInfo = { |
| description: workStore.dynamicUsageDescription, |
| stack: workStore.dynamicUsageStack |
| }; |
| } |
| } |
| async function renderToStream(requestStore, req, res, ctx, tree, formState, postponedState, metadata, devValidatingFallbackParams) { |
| const { assetPrefix, nonce, pagePath, renderOpts } = ctx; |
| const { basePath, buildManifest, clientReferenceManifest, ComponentMod, crossOrigin, dev = false, experimental, nextExport = false, onInstrumentationRequestError, page, reactMaxHeadersLength, shouldWaitOnAllReady, subresourceIntegrityManifest, supportsDynamicResponse } = renderOpts; |
| assertClientReferenceManifest(clientReferenceManifest); |
| const { ServerInsertedHTMLProvider, renderServerInsertedHTML } = (0, _serverinsertedhtml.createServerInsertedHTML)(); |
| const getServerInsertedMetadata = (0, _createserverinsertedmetadata.createServerInsertedMetadata)(nonce); |
| const tracingMetadata = (0, _utils1.getTracedMetadata)((0, _tracer.getTracer)().getTracePropagationData(), experimental.clientTraceMetadata); |
| const polyfills = buildManifest.polyfillFiles.filter((polyfill)=>polyfill.endsWith('.js') && !polyfill.endsWith('.module.js')).map((polyfill)=>({ |
| src: `${assetPrefix}/_next/${polyfill}${(0, _getassetquerystring.getAssetQueryString)(ctx, false)}`, |
| integrity: subresourceIntegrityManifest == null ? void 0 : subresourceIntegrityManifest[polyfill], |
| crossOrigin, |
| noModule: true, |
| nonce |
| })); |
| const [preinitScripts, bootstrapScript] = (0, _requiredscripts.getRequiredScripts)(buildManifest, |
| |
| assetPrefix, crossOrigin, subresourceIntegrityManifest, (0, _getassetquerystring.getAssetQueryString)(ctx, true), nonce, page); |
| const reactServerErrorsByDigest = new Map(); |
| const silenceLogger = false; |
| function onHTMLRenderRSCError(err) { |
| return onInstrumentationRequestError == null ? void 0 : onInstrumentationRequestError(err, req, createErrorContext(ctx, 'react-server-components')); |
| } |
| const serverComponentsErrorHandler = (0, _createerrorhandler.createHTMLReactServerErrorHandler)(dev, nextExport, reactServerErrorsByDigest, silenceLogger, onHTMLRenderRSCError); |
| function onHTMLRenderSSRError(err) { |
| return onInstrumentationRequestError == null ? void 0 : onInstrumentationRequestError(err, req, createErrorContext(ctx, 'server-rendering')); |
| } |
| const allCapturedErrors = []; |
| const htmlRendererErrorHandler = (0, _createerrorhandler.createHTMLErrorHandler)(dev, nextExport, reactServerErrorsByDigest, allCapturedErrors, silenceLogger, onHTMLRenderSSRError); |
| let reactServerResult = null; |
| const setHeader = res.setHeader.bind(res); |
| const appendHeader = res.appendHeader.bind(res); |
| try { |
| if ( |
| dev && |
| process.env.NODE_ENV === 'development' && |
| process.env.NEXT_RUNTIME !== 'edge' && |
| experimental.cacheComponents) { |
| |
| const RSCPayload = await _workunitasyncstorageexternal.workUnitAsyncStorage.run(requestStore, getRSCPayload, tree, ctx, res.statusCode === 404); |
| const [resolveValidation, validationOutlet] = createValidationOutlet(); |
| RSCPayload._validation = validationOutlet; |
| const reactServerStream = await _workunitasyncstorageexternal.workUnitAsyncStorage.run(requestStore, _apprenderrenderutils.scheduleInSequentialTasks, ()=>{ |
| requestStore.prerenderPhase = true; |
| return ComponentMod.renderToReadableStream(RSCPayload, clientReferenceManifest.clientModules, { |
| onError: serverComponentsErrorHandler, |
| environmentName: ()=>requestStore.prerenderPhase === true ? 'Prerender' : 'Server', |
| filterStackFrame |
| }); |
| }, ()=>{ |
| requestStore.prerenderPhase = false; |
| }); |
| spawnDynamicValidationInDev(resolveValidation, tree, ctx, res.statusCode === 404, clientReferenceManifest, requestStore, devValidatingFallbackParams); |
| reactServerResult = new _apprenderprerenderutils.ReactServerResult(reactServerStream); |
| } else { |
| |
| const RSCPayload = await _workunitasyncstorageexternal.workUnitAsyncStorage.run(requestStore, getRSCPayload, tree, ctx, res.statusCode === 404); |
| reactServerResult = new _apprenderprerenderutils.ReactServerResult(_workunitasyncstorageexternal.workUnitAsyncStorage.run(requestStore, ComponentMod.renderToReadableStream, RSCPayload, clientReferenceManifest.clientModules, { |
| filterStackFrame, |
| onError: serverComponentsErrorHandler |
| })); |
| } |
| |
| |
| |
| await (0, _scheduler.waitAtLeastOneReactRenderTask)(); |
| |
| |
| if (typeof renderOpts.postponed === 'string') { |
| if ((postponedState == null ? void 0 : postponedState.type) === _postponedstate.DynamicState.DATA) { |
| |
| |
| |
| const inlinedReactServerDataStream = (0, _useflightresponse.createInlinedDataReadableStream)(reactServerResult.tee(), nonce, formState); |
| return (0, _nodewebstreamshelper.chainStreams)(inlinedReactServerDataStream, (0, _nodewebstreamshelper.createDocumentClosingStream)()); |
| } else if (postponedState) { |
| |
| const { postponed, preludeState } = (0, _postponedstate.getPostponedFromState)(postponedState); |
| const resume = require('react-dom/server').resume; |
| const htmlStream = await _workunitasyncstorageexternal.workUnitAsyncStorage.run(requestStore, resume, (0, _jsxruntime.jsx)(App, { |
| reactServerStream: reactServerResult.tee(), |
| preinitScripts: preinitScripts, |
| clientReferenceManifest: clientReferenceManifest, |
| ServerInsertedHTMLProvider: ServerInsertedHTMLProvider, |
| nonce: nonce |
| }), postponed, { |
| onError: htmlRendererErrorHandler, |
| nonce |
| }); |
| const getServerInsertedHTML = (0, _makegetserverinsertedhtml.makeGetServerInsertedHTML)({ |
| polyfills, |
| renderServerInsertedHTML, |
| serverCapturedErrors: allCapturedErrors, |
| basePath, |
| tracingMetadata: tracingMetadata |
| }); |
| return await (0, _nodewebstreamshelper.continueDynamicHTMLResume)(htmlStream, { |
| |
| |
| |
| |
| delayDataUntilFirstHtmlChunk: preludeState === _postponedstate.DynamicHTMLPreludeState.Empty, |
| inlinedDataStream: (0, _useflightresponse.createInlinedDataReadableStream)(reactServerResult.consume(), nonce, formState), |
| getServerInsertedHTML, |
| getServerInsertedMetadata |
| }); |
| } |
| } |
| |
| const renderToReadableStream = require('react-dom/server').renderToReadableStream; |
| const htmlStream = await _workunitasyncstorageexternal.workUnitAsyncStorage.run(requestStore, renderToReadableStream, (0, _jsxruntime.jsx)(App, { |
| reactServerStream: reactServerResult.tee(), |
| preinitScripts: preinitScripts, |
| clientReferenceManifest: clientReferenceManifest, |
| ServerInsertedHTMLProvider: ServerInsertedHTMLProvider, |
| nonce: nonce |
| }), { |
| onError: htmlRendererErrorHandler, |
| nonce, |
| onHeaders: (headers)=>{ |
| headers.forEach((value, key)=>{ |
| appendHeader(key, value); |
| }); |
| }, |
| maxHeadersLength: reactMaxHeadersLength, |
| bootstrapScripts: [ |
| bootstrapScript |
| ], |
| formState |
| }); |
| const getServerInsertedHTML = (0, _makegetserverinsertedhtml.makeGetServerInsertedHTML)({ |
| polyfills, |
| renderServerInsertedHTML, |
| serverCapturedErrors: allCapturedErrors, |
| basePath, |
| tracingMetadata: tracingMetadata |
| }); |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| const generateStaticHTML = supportsDynamicResponse !== true || !!shouldWaitOnAllReady; |
| return await (0, _nodewebstreamshelper.continueFizzStream)(htmlStream, { |
| inlinedDataStream: (0, _useflightresponse.createInlinedDataReadableStream)(reactServerResult.consume(), nonce, formState), |
| isStaticGeneration: generateStaticHTML, |
| isBuildTimePrerendering: ctx.workStore.isBuildTimePrerendering === true, |
| buildId: ctx.workStore.buildId, |
| getServerInsertedHTML, |
| getServerInsertedMetadata, |
| validateRootLayout: dev |
| }); |
| } catch (err) { |
| if ((0, _staticgenerationbailout.isStaticGenBailoutError)(err) || typeof err === 'object' && err !== null && 'message' in err && typeof err.message === 'string' && err.message.includes('https://nextjs.org/docs/advanced-features/static-html-export')) { |
| |
| throw err; |
| } |
| |
| |
| const shouldBailoutToCSR = (0, _bailouttocsr.isBailoutToCSRError)(err); |
| if (shouldBailoutToCSR) { |
| const stack = (0, _formatservererror.getStackWithoutErrorMessage)(err); |
| (0, _log.error)(`${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}`); |
| throw err; |
| } |
| let errorType; |
| if ((0, _httpaccessfallback.isHTTPAccessFallbackError)(err)) { |
| res.statusCode = (0, _httpaccessfallback.getAccessFallbackHTTPStatus)(err); |
| metadata.statusCode = res.statusCode; |
| errorType = (0, _httpaccessfallback.getAccessFallbackErrorTypeByStatus)(res.statusCode); |
| } else if ((0, _redirecterror.isRedirectError)(err)) { |
| errorType = 'redirect'; |
| res.statusCode = (0, _redirect.getRedirectStatusCodeFromError)(err); |
| metadata.statusCode = res.statusCode; |
| const redirectUrl = (0, _addpathprefix.addPathPrefix)((0, _redirect.getURLFromRedirectError)(err), basePath); |
| |
| |
| const headers = new Headers(); |
| if ((0, _requestcookies.appendMutableCookies)(headers, requestStore.mutableCookies)) { |
| setHeader('set-cookie', Array.from(headers.values())); |
| } |
| setHeader('location', redirectUrl); |
| } else if (!shouldBailoutToCSR) { |
| res.statusCode = 500; |
| metadata.statusCode = res.statusCode; |
| } |
| const [errorPreinitScripts, errorBootstrapScript] = (0, _requiredscripts.getRequiredScripts)(buildManifest, assetPrefix, crossOrigin, subresourceIntegrityManifest, (0, _getassetquerystring.getAssetQueryString)(ctx, false), nonce, '/_not-found/page'); |
| const errorRSCPayload = await _workunitasyncstorageexternal.workUnitAsyncStorage.run(requestStore, getErrorRSCPayload, tree, ctx, reactServerErrorsByDigest.has(err.digest) ? null : err, errorType); |
| const errorServerStream = _workunitasyncstorageexternal.workUnitAsyncStorage.run(requestStore, ComponentMod.renderToReadableStream, errorRSCPayload, clientReferenceManifest.clientModules, { |
| filterStackFrame, |
| onError: serverComponentsErrorHandler |
| }); |
| if (reactServerResult === null) { |
| |
| |
| throw err; |
| } |
| try { |
| const fizzStream = await _workunitasyncstorageexternal.workUnitAsyncStorage.run(requestStore, _nodewebstreamshelper.renderToInitialFizzStream, { |
| ReactDOMServer: require('react-dom/server'), |
| element: (0, _jsxruntime.jsx)(ErrorApp, { |
| reactServerStream: errorServerStream, |
| ServerInsertedHTMLProvider: ServerInsertedHTMLProvider, |
| preinitScripts: errorPreinitScripts, |
| clientReferenceManifest: clientReferenceManifest, |
| nonce: nonce |
| }), |
| streamOptions: { |
| nonce, |
| |
| bootstrapScripts: [ |
| errorBootstrapScript |
| ], |
| formState |
| } |
| }); |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| const generateStaticHTML = supportsDynamicResponse !== true || !!shouldWaitOnAllReady; |
| return await (0, _nodewebstreamshelper.continueFizzStream)(fizzStream, { |
| inlinedDataStream: (0, _useflightresponse.createInlinedDataReadableStream)( |
| |
| |
| reactServerResult.consume(), nonce, formState), |
| isStaticGeneration: generateStaticHTML, |
| isBuildTimePrerendering: ctx.workStore.isBuildTimePrerendering === true, |
| buildId: ctx.workStore.buildId, |
| getServerInsertedHTML: (0, _makegetserverinsertedhtml.makeGetServerInsertedHTML)({ |
| polyfills, |
| renderServerInsertedHTML, |
| serverCapturedErrors: [], |
| basePath, |
| tracingMetadata: tracingMetadata |
| }), |
| getServerInsertedMetadata, |
| validateRootLayout: dev |
| }); |
| } catch (finalErr) { |
| if (process.env.NODE_ENV === 'development' && (0, _httpaccessfallback.isHTTPAccessFallbackError)(finalErr)) { |
| const { bailOnRootNotFound } = require('../../client/components/dev-root-http-access-fallback-boundary'); |
| bailOnRootNotFound(); |
| } |
| throw finalErr; |
| } |
| } |
| } |
| function createValidationOutlet() { |
| let resolveValidation; |
| let outlet = new Promise((resolve)=>{ |
| resolveValidation = resolve; |
| }); |
| return [ |
| resolveValidation, |
| outlet |
| ]; |
| } |
| |
| |
| |
| |
| |
| async function spawnDynamicValidationInDev(resolveValidation, tree, ctx, isNotFound, clientReferenceManifest, requestStore, fallbackRouteParams) { |
| var _requestStore_cookies_get; |
| const { componentMod: ComponentMod, getDynamicParamFromSegment, implicitTags, nonce, renderOpts, workStore } = ctx; |
| const { allowEmptyStaticShell = false } = renderOpts; |
| |
| |
| const preinitScripts = ()=>{}; |
| const { ServerInsertedHTMLProvider } = (0, _serverinsertedhtml.createServerInsertedHTML)(); |
| const rootParams = (0, _createcomponenttree.getRootParams)(ComponentMod.tree, getDynamicParamFromSegment); |
| const hmrRefreshHash = (_requestStore_cookies_get = requestStore.cookies.get(_approuterheaders.NEXT_HMR_REFRESH_HASH_COOKIE)) == null ? void 0 : _requestStore_cookies_get.value; |
| |
| |
| |
| |
| |
| const initialServerPrerenderController = new AbortController(); |
| |
| const initialServerReactController = new AbortController(); |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| const initialServerRenderController = new AbortController(); |
| |
| |
| const cacheSignal = new _cachesignal.CacheSignal(); |
| const captureOwnerStackClient = _react.default.captureOwnerStack; |
| const captureOwnerStackServer = ComponentMod.captureOwnerStack; |
| |
| |
| |
| |
| const prerenderResumeDataCache = (0, _resumedatacache.createPrerenderResumeDataCache)(); |
| const initialServerPayloadPrerenderStore = { |
| type: 'prerender', |
| phase: 'render', |
| rootParams, |
| fallbackRouteParams, |
| implicitTags, |
| |
| |
| renderSignal: initialServerRenderController.signal, |
| |
| |
| |
| controller: new AbortController(), |
| |
| |
| |
| cacheSignal, |
| dynamicTracking: null, |
| allowEmptyStaticShell, |
| revalidate: _constants1.INFINITE_CACHE, |
| expire: _constants1.INFINITE_CACHE, |
| stale: _constants1.INFINITE_CACHE, |
| tags: [ |
| ...implicitTags.tags |
| ], |
| prerenderResumeDataCache, |
| renderResumeDataCache: null, |
| hmrRefreshHash, |
| captureOwnerStack: captureOwnerStackServer |
| }; |
| |
| |
| const initialServerPayload = await _workunitasyncstorageexternal.workUnitAsyncStorage.run(initialServerPayloadPrerenderStore, getRSCPayload, tree, ctx, isNotFound); |
| const initialServerPrerenderStore = { |
| type: 'prerender', |
| phase: 'render', |
| rootParams, |
| fallbackRouteParams, |
| implicitTags, |
| renderSignal: initialServerRenderController.signal, |
| controller: initialServerPrerenderController, |
| |
| |
| |
| cacheSignal, |
| dynamicTracking: null, |
| allowEmptyStaticShell, |
| revalidate: _constants1.INFINITE_CACHE, |
| expire: _constants1.INFINITE_CACHE, |
| stale: _constants1.INFINITE_CACHE, |
| tags: [ |
| ...implicitTags.tags |
| ], |
| prerenderResumeDataCache, |
| renderResumeDataCache: null, |
| hmrRefreshHash, |
| captureOwnerStack: captureOwnerStackServer |
| }; |
| const pendingInitialServerResult = _workunitasyncstorageexternal.workUnitAsyncStorage.run(initialServerPrerenderStore, ComponentMod.prerender, initialServerPayload, clientReferenceManifest.clientModules, { |
| filterStackFrame, |
| onError: (err)=>{ |
| const digest = (0, _createerrorhandler.getDigestForWellKnownError)(err); |
| if (digest) { |
| return digest; |
| } |
| if ((0, _reactlargeshellerror.isReactLargeShellError)(err)) { |
| |
| console.error(err); |
| return undefined; |
| } |
| if (initialServerPrerenderController.signal.aborted) { |
| |
| |
| return; |
| } else if (process.env.NEXT_DEBUG_BUILD || process.env.__NEXT_VERBOSE_LOGGING) { |
| (0, _prospectiverenderutils.printDebugThrownValueForProspectiveRender)(err, workStore.route); |
| } |
| }, |
| |
| |
| onPostpone: undefined, |
| |
| |
| |
| signal: initialServerReactController.signal |
| }); |
| |
| |
| |
| initialServerReactController.signal.addEventListener('abort', ()=>{ |
| initialServerRenderController.abort(); |
| }, { |
| once: true |
| }); |
| |
| (0, _trackmoduleloadingexternal.trackPendingModules)(cacheSignal); |
| await cacheSignal.cacheReady(); |
| initialServerReactController.abort(); |
| |
| |
| const { invalidDynamicUsageError } = workStore; |
| if (invalidDynamicUsageError) { |
| resolveValidation( (0, _jsxruntime.jsx)(LogSafely, { |
| fn: ()=>{ |
| console.error(invalidDynamicUsageError); |
| } |
| })); |
| return; |
| } |
| let initialServerResult; |
| try { |
| initialServerResult = await (0, _apprenderprerenderutils.createReactServerPrerenderResult)(pendingInitialServerResult); |
| } catch (err) { |
| if (initialServerReactController.signal.aborted || initialServerPrerenderController.signal.aborted) { |
| |
| } else if (process.env.NEXT_DEBUG_BUILD || process.env.__NEXT_VERBOSE_LOGGING) { |
| |
| |
| (0, _prospectiverenderutils.printDebugThrownValueForProspectiveRender)(err, workStore.route); |
| } |
| } |
| if (initialServerResult) { |
| const initialClientPrerenderController = new AbortController(); |
| const initialClientReactController = new AbortController(); |
| const initialClientRenderController = new AbortController(); |
| const initialClientPrerenderStore = { |
| type: 'prerender-client', |
| phase: 'render', |
| rootParams, |
| fallbackRouteParams, |
| implicitTags, |
| renderSignal: initialClientRenderController.signal, |
| controller: initialClientPrerenderController, |
| |
| |
| cacheSignal: null, |
| dynamicTracking: null, |
| allowEmptyStaticShell, |
| revalidate: _constants1.INFINITE_CACHE, |
| expire: _constants1.INFINITE_CACHE, |
| stale: _constants1.INFINITE_CACHE, |
| tags: [ |
| ...implicitTags.tags |
| ], |
| prerenderResumeDataCache, |
| renderResumeDataCache: null, |
| hmrRefreshHash: undefined, |
| captureOwnerStack: captureOwnerStackClient |
| }; |
| const prerender = require('react-dom/static').prerender; |
| const pendingInitialClientResult = _workunitasyncstorageexternal.workUnitAsyncStorage.run(initialClientPrerenderStore, prerender, (0, _jsxruntime.jsx)(App, { |
| reactServerStream: initialServerResult.asUnclosingStream(), |
| preinitScripts: preinitScripts, |
| clientReferenceManifest: clientReferenceManifest, |
| ServerInsertedHTMLProvider: ServerInsertedHTMLProvider, |
| nonce: nonce |
| }), { |
| signal: initialClientReactController.signal, |
| onError: (err)=>{ |
| const digest = (0, _createerrorhandler.getDigestForWellKnownError)(err); |
| if (digest) { |
| return digest; |
| } |
| if ((0, _reactlargeshellerror.isReactLargeShellError)(err)) { |
| |
| console.error(err); |
| return undefined; |
| } |
| if (initialClientReactController.signal.aborted) { |
| |
| } else if (process.env.NEXT_DEBUG_BUILD || process.env.__NEXT_VERBOSE_LOGGING) { |
| |
| |
| (0, _prospectiverenderutils.printDebugThrownValueForProspectiveRender)(err, workStore.route); |
| } |
| } |
| }); |
| |
| |
| |
| initialClientReactController.signal.addEventListener('abort', ()=>{ |
| initialClientRenderController.abort(); |
| }, { |
| once: true |
| }); |
| pendingInitialClientResult.catch((err)=>{ |
| if (initialClientReactController.signal.aborted || (0, _dynamicrendering.isPrerenderInterruptedError)(err)) { |
| |
| } else if (process.env.NEXT_DEBUG_BUILD || process.env.__NEXT_VERBOSE_LOGGING) { |
| |
| |
| (0, _prospectiverenderutils.printDebugThrownValueForProspectiveRender)(err, workStore.route); |
| } |
| }); |
| |
| |
| (0, _trackmoduleloadingexternal.trackPendingModules)(cacheSignal); |
| await cacheSignal.cacheReady(); |
| initialClientReactController.abort(); |
| } |
| const finalServerReactController = new AbortController(); |
| const finalServerRenderController = new AbortController(); |
| const finalServerPayloadPrerenderStore = { |
| type: 'prerender', |
| phase: 'render', |
| rootParams, |
| fallbackRouteParams, |
| implicitTags, |
| |
| |
| renderSignal: finalServerRenderController.signal, |
| |
| |
| |
| controller: new AbortController(), |
| |
| cacheSignal: null, |
| dynamicTracking: null, |
| allowEmptyStaticShell, |
| revalidate: _constants1.INFINITE_CACHE, |
| expire: _constants1.INFINITE_CACHE, |
| stale: _constants1.INFINITE_CACHE, |
| tags: [ |
| ...implicitTags.tags |
| ], |
| prerenderResumeDataCache, |
| renderResumeDataCache: null, |
| hmrRefreshHash, |
| captureOwnerStack: captureOwnerStackServer |
| }; |
| const finalAttemptRSCPayload = await _workunitasyncstorageexternal.workUnitAsyncStorage.run(finalServerPayloadPrerenderStore, getRSCPayload, tree, ctx, isNotFound); |
| const serverDynamicTracking = (0, _dynamicrendering.createDynamicTrackingState)(false |
| ); |
| const finalServerPrerenderStore = { |
| type: 'prerender', |
| phase: 'render', |
| rootParams, |
| fallbackRouteParams, |
| implicitTags, |
| renderSignal: finalServerRenderController.signal, |
| controller: finalServerReactController, |
| |
| cacheSignal: null, |
| dynamicTracking: serverDynamicTracking, |
| allowEmptyStaticShell, |
| revalidate: _constants1.INFINITE_CACHE, |
| expire: _constants1.INFINITE_CACHE, |
| stale: _constants1.INFINITE_CACHE, |
| tags: [ |
| ...implicitTags.tags |
| ], |
| prerenderResumeDataCache, |
| renderResumeDataCache: null, |
| hmrRefreshHash, |
| captureOwnerStack: captureOwnerStackServer |
| }; |
| const reactServerResult = await (0, _apprenderprerenderutils.createReactServerPrerenderResult)((0, _apprenderprerenderutils.prerenderAndAbortInSequentialTasks)(async ()=>{ |
| const pendingPrerenderResult = _workunitasyncstorageexternal.workUnitAsyncStorage.run( |
| finalServerPrerenderStore, |
| ComponentMod.prerender, |
| finalAttemptRSCPayload, clientReferenceManifest.clientModules, { |
| filterStackFrame, |
| onError: (err)=>{ |
| if (finalServerReactController.signal.aborted && (0, _dynamicrendering.isPrerenderInterruptedError)(err)) { |
| return err.digest; |
| } |
| if ((0, _reactlargeshellerror.isReactLargeShellError)(err)) { |
| |
| console.error(err); |
| return undefined; |
| } |
| return (0, _createerrorhandler.getDigestForWellKnownError)(err); |
| }, |
| signal: finalServerReactController.signal |
| }); |
| |
| |
| |
| finalServerReactController.signal.addEventListener('abort', ()=>{ |
| finalServerRenderController.abort(); |
| }, { |
| once: true |
| }); |
| return pendingPrerenderResult; |
| }, ()=>{ |
| finalServerReactController.abort(); |
| })); |
| const clientDynamicTracking = (0, _dynamicrendering.createDynamicTrackingState)(false |
| ); |
| const finalClientReactController = new AbortController(); |
| const finalClientRenderController = new AbortController(); |
| const finalClientPrerenderStore = { |
| type: 'prerender-client', |
| phase: 'render', |
| rootParams, |
| fallbackRouteParams, |
| implicitTags, |
| renderSignal: finalClientRenderController.signal, |
| controller: finalClientReactController, |
| |
| cacheSignal: null, |
| dynamicTracking: clientDynamicTracking, |
| allowEmptyStaticShell, |
| revalidate: _constants1.INFINITE_CACHE, |
| expire: _constants1.INFINITE_CACHE, |
| stale: _constants1.INFINITE_CACHE, |
| tags: [ |
| ...implicitTags.tags |
| ], |
| prerenderResumeDataCache, |
| renderResumeDataCache: null, |
| hmrRefreshHash, |
| captureOwnerStack: captureOwnerStackClient |
| }; |
| let dynamicValidation = (0, _dynamicrendering.createDynamicValidationState)(); |
| try { |
| const prerender = require('react-dom/static').prerender; |
| let { prelude: unprocessedPrelude } = await (0, _apprenderprerenderutils.prerenderAndAbortInSequentialTasks)(()=>{ |
| const pendingFinalClientResult = _workunitasyncstorageexternal.workUnitAsyncStorage.run(finalClientPrerenderStore, prerender, (0, _jsxruntime.jsx)(App, { |
| reactServerStream: reactServerResult.asUnclosingStream(), |
| preinitScripts: preinitScripts, |
| clientReferenceManifest: clientReferenceManifest, |
| ServerInsertedHTMLProvider: ServerInsertedHTMLProvider, |
| nonce: nonce |
| }), { |
| signal: finalClientReactController.signal, |
| onError: (err, errorInfo)=>{ |
| if ((0, _dynamicrendering.isPrerenderInterruptedError)(err) || finalClientReactController.signal.aborted) { |
| const componentStack = errorInfo.componentStack; |
| if (typeof componentStack === 'string') { |
| (0, _dynamicrendering.trackAllowedDynamicAccess)(workStore, componentStack, dynamicValidation, clientDynamicTracking); |
| } |
| return; |
| } |
| if ((0, _reactlargeshellerror.isReactLargeShellError)(err)) { |
| |
| console.error(err); |
| return undefined; |
| } |
| return (0, _createerrorhandler.getDigestForWellKnownError)(err); |
| } |
| }); |
| |
| |
| |
| finalClientReactController.signal.addEventListener('abort', ()=>{ |
| finalClientRenderController.abort(); |
| }, { |
| once: true |
| }); |
| return pendingFinalClientResult; |
| }, ()=>{ |
| finalClientReactController.abort(); |
| }); |
| const { preludeIsEmpty } = await (0, _apprenderprerenderutils.processPrelude)(unprocessedPrelude); |
| resolveValidation( (0, _jsxruntime.jsx)(LogSafely, { |
| fn: _dynamicrendering.throwIfDisallowedDynamic.bind(null, workStore, preludeIsEmpty ? _dynamicrendering.PreludeState.Empty : _dynamicrendering.PreludeState.Full, dynamicValidation, serverDynamicTracking) |
| })); |
| } catch (thrownValue) { |
| |
| |
| let loggingFunction = _dynamicrendering.throwIfDisallowedDynamic.bind(null, workStore, _dynamicrendering.PreludeState.Errored, dynamicValidation, serverDynamicTracking); |
| if (process.env.NEXT_DEBUG_BUILD || process.env.__NEXT_VERBOSE_LOGGING) { |
| |
| |
| const originalLoggingFunction = loggingFunction; |
| loggingFunction = ()=>{ |
| console.error('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.'); |
| console.error(thrownValue); |
| originalLoggingFunction(); |
| }; |
| } |
| resolveValidation( (0, _jsxruntime.jsx)(LogSafely, { |
| fn: loggingFunction |
| })); |
| } |
| } |
| async function LogSafely({ fn }) { |
| try { |
| await fn(); |
| } catch {} |
| return null; |
| } |
| |
| |
| function shouldGenerateStaticFlightData(workStore) { |
| const { isStaticGeneration } = workStore; |
| if (!isStaticGeneration) return false; |
| return true; |
| } |
| async function prerenderToStream(req, res, ctx, metadata, tree, fallbackRouteParams) { |
| |
| |
| |
| const formState = null; |
| const { assetPrefix, getDynamicParamFromSegment, implicitTags, nonce, pagePath, renderOpts, workStore } = ctx; |
| const { allowEmptyStaticShell = false, basePath, buildManifest, clientReferenceManifest, ComponentMod, crossOrigin, dev = false, experimental, isDebugDynamicAccesses, nextExport = false, onInstrumentationRequestError, page, reactMaxHeadersLength, subresourceIntegrityManifest } = renderOpts; |
| assertClientReferenceManifest(clientReferenceManifest); |
| const rootParams = (0, _createcomponenttree.getRootParams)(tree, getDynamicParamFromSegment); |
| const { ServerInsertedHTMLProvider, renderServerInsertedHTML } = (0, _serverinsertedhtml.createServerInsertedHTML)(); |
| const getServerInsertedMetadata = (0, _createserverinsertedmetadata.createServerInsertedMetadata)(nonce); |
| const tracingMetadata = (0, _utils1.getTracedMetadata)((0, _tracer.getTracer)().getTracePropagationData(), experimental.clientTraceMetadata); |
| const polyfills = buildManifest.polyfillFiles.filter((polyfill)=>polyfill.endsWith('.js') && !polyfill.endsWith('.module.js')).map((polyfill)=>({ |
| src: `${assetPrefix}/_next/${polyfill}${(0, _getassetquerystring.getAssetQueryString)(ctx, false)}`, |
| integrity: subresourceIntegrityManifest == null ? void 0 : subresourceIntegrityManifest[polyfill], |
| crossOrigin, |
| noModule: true, |
| nonce |
| })); |
| const [preinitScripts, bootstrapScript] = (0, _requiredscripts.getRequiredScripts)(buildManifest, |
| |
| assetPrefix, crossOrigin, subresourceIntegrityManifest, (0, _getassetquerystring.getAssetQueryString)(ctx, true), nonce, page); |
| const reactServerErrorsByDigest = new Map(); |
| |
| const silenceLogger = !!experimental.isRoutePPREnabled; |
| function onHTMLRenderRSCError(err) { |
| return onInstrumentationRequestError == null ? void 0 : onInstrumentationRequestError(err, req, createErrorContext(ctx, 'react-server-components')); |
| } |
| const serverComponentsErrorHandler = (0, _createerrorhandler.createHTMLReactServerErrorHandler)(dev, nextExport, reactServerErrorsByDigest, silenceLogger, onHTMLRenderRSCError); |
| function onHTMLRenderSSRError(err) { |
| return onInstrumentationRequestError == null ? void 0 : onInstrumentationRequestError(err, req, createErrorContext(ctx, 'server-rendering')); |
| } |
| const allCapturedErrors = []; |
| const htmlRendererErrorHandler = (0, _createerrorhandler.createHTMLErrorHandler)(dev, nextExport, reactServerErrorsByDigest, allCapturedErrors, silenceLogger, onHTMLRenderSSRError); |
| let reactServerPrerenderResult = null; |
| const setMetadataHeader = (name)=>{ |
| metadata.headers ??= {}; |
| metadata.headers[name] = res.getHeader(name); |
| }; |
| const setHeader = (name, value)=>{ |
| res.setHeader(name, value); |
| setMetadataHeader(name); |
| return res; |
| }; |
| const appendHeader = (name, value)=>{ |
| if (Array.isArray(value)) { |
| value.forEach((item)=>{ |
| res.appendHeader(name, item); |
| }); |
| } else { |
| res.appendHeader(name, value); |
| } |
| setMetadataHeader(name); |
| }; |
| const selectStaleTime = createSelectStaleTime(experimental); |
| let prerenderStore = null; |
| try { |
| if (experimental.cacheComponents) { |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| const initialServerPrerenderController = new AbortController(); |
| |
| const initialServerReactController = new AbortController(); |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| const initialServerRenderController = new AbortController(); |
| |
| |
| const cacheSignal = new _cachesignal.CacheSignal(); |
| let resumeDataCache; |
| let renderResumeDataCache = null; |
| let prerenderResumeDataCache = null; |
| if (renderOpts.renderResumeDataCache) { |
| |
| |
| |
| |
| resumeDataCache = renderResumeDataCache = renderOpts.renderResumeDataCache; |
| } else { |
| |
| resumeDataCache = prerenderResumeDataCache = (0, _resumedatacache.createPrerenderResumeDataCache)(); |
| } |
| const initialServerPayloadPrerenderStore = { |
| type: 'prerender', |
| phase: 'render', |
| rootParams, |
| fallbackRouteParams, |
| implicitTags, |
| |
| |
| renderSignal: initialServerRenderController.signal, |
| |
| |
| |
| controller: new AbortController(), |
| |
| |
| |
| cacheSignal, |
| dynamicTracking: null, |
| allowEmptyStaticShell, |
| revalidate: _constants1.INFINITE_CACHE, |
| expire: _constants1.INFINITE_CACHE, |
| stale: _constants1.INFINITE_CACHE, |
| tags: [ |
| ...implicitTags.tags |
| ], |
| prerenderResumeDataCache, |
| renderResumeDataCache, |
| hmrRefreshHash: undefined, |
| captureOwnerStack: undefined |
| }; |
| |
| |
| const initialServerPayload = await _workunitasyncstorageexternal.workUnitAsyncStorage.run(initialServerPayloadPrerenderStore, getRSCPayload, tree, ctx, res.statusCode === 404); |
| const initialServerPrerenderStore = prerenderStore = { |
| type: 'prerender', |
| phase: 'render', |
| rootParams, |
| fallbackRouteParams, |
| implicitTags, |
| renderSignal: initialServerRenderController.signal, |
| controller: initialServerPrerenderController, |
| |
| |
| |
| cacheSignal, |
| dynamicTracking: null, |
| allowEmptyStaticShell, |
| revalidate: _constants1.INFINITE_CACHE, |
| expire: _constants1.INFINITE_CACHE, |
| stale: _constants1.INFINITE_CACHE, |
| tags: [ |
| ...implicitTags.tags |
| ], |
| prerenderResumeDataCache, |
| renderResumeDataCache, |
| hmrRefreshHash: undefined, |
| captureOwnerStack: undefined |
| }; |
| const pendingInitialServerResult = _workunitasyncstorageexternal.workUnitAsyncStorage.run(initialServerPrerenderStore, ComponentMod.prerender, initialServerPayload, clientReferenceManifest.clientModules, { |
| filterStackFrame, |
| onError: (err)=>{ |
| const digest = (0, _createerrorhandler.getDigestForWellKnownError)(err); |
| if (digest) { |
| return digest; |
| } |
| if ((0, _reactlargeshellerror.isReactLargeShellError)(err)) { |
| |
| console.error(err); |
| return undefined; |
| } |
| if (initialServerPrerenderController.signal.aborted) { |
| |
| |
| return; |
| } else if (process.env.NEXT_DEBUG_BUILD || process.env.__NEXT_VERBOSE_LOGGING) { |
| (0, _prospectiverenderutils.printDebugThrownValueForProspectiveRender)(err, workStore.route); |
| } |
| }, |
| |
| |
| onPostpone: undefined, |
| |
| |
| |
| signal: initialServerReactController.signal |
| }); |
| |
| |
| |
| initialServerReactController.signal.addEventListener('abort', ()=>{ |
| initialServerRenderController.abort(); |
| }, { |
| once: true |
| }); |
| |
| (0, _trackmoduleloadingexternal.trackPendingModules)(cacheSignal); |
| await cacheSignal.cacheReady(); |
| initialServerReactController.abort(); |
| |
| |
| if (workStore.invalidDynamicUsageError) { |
| (0, _dynamicrendering.logDisallowedDynamicError)(workStore, workStore.invalidDynamicUsageError); |
| throw new _staticgenerationbailout.StaticGenBailoutError(); |
| } |
| let initialServerResult; |
| try { |
| initialServerResult = await (0, _apprenderprerenderutils.createReactServerPrerenderResult)(pendingInitialServerResult); |
| } catch (err) { |
| if (initialServerReactController.signal.aborted || initialServerPrerenderController.signal.aborted) { |
| |
| } else if (process.env.NEXT_DEBUG_BUILD || process.env.__NEXT_VERBOSE_LOGGING) { |
| |
| |
| (0, _prospectiverenderutils.printDebugThrownValueForProspectiveRender)(err, workStore.route); |
| } |
| } |
| if (initialServerResult) { |
| const initialClientPrerenderController = new AbortController(); |
| const initialClientReactController = new AbortController(); |
| const initialClientRenderController = new AbortController(); |
| const initialClientPrerenderStore = { |
| type: 'prerender-client', |
| phase: 'render', |
| rootParams, |
| fallbackRouteParams, |
| implicitTags, |
| renderSignal: initialClientRenderController.signal, |
| controller: initialClientPrerenderController, |
| |
| |
| cacheSignal: null, |
| dynamicTracking: null, |
| allowEmptyStaticShell, |
| revalidate: _constants1.INFINITE_CACHE, |
| expire: _constants1.INFINITE_CACHE, |
| stale: _constants1.INFINITE_CACHE, |
| tags: [ |
| ...implicitTags.tags |
| ], |
| prerenderResumeDataCache, |
| renderResumeDataCache, |
| hmrRefreshHash: undefined, |
| captureOwnerStack: undefined |
| }; |
| const prerender = require('react-dom/static').prerender; |
| const pendingInitialClientResult = _workunitasyncstorageexternal.workUnitAsyncStorage.run(initialClientPrerenderStore, prerender, (0, _jsxruntime.jsx)(App, { |
| reactServerStream: initialServerResult.asUnclosingStream(), |
| preinitScripts: preinitScripts, |
| clientReferenceManifest: clientReferenceManifest, |
| ServerInsertedHTMLProvider: ServerInsertedHTMLProvider, |
| nonce: nonce |
| }), { |
| signal: initialClientReactController.signal, |
| onError: (err)=>{ |
| const digest = (0, _createerrorhandler.getDigestForWellKnownError)(err); |
| if (digest) { |
| return digest; |
| } |
| if ((0, _reactlargeshellerror.isReactLargeShellError)(err)) { |
| |
| console.error(err); |
| return undefined; |
| } |
| if (initialClientReactController.signal.aborted) { |
| |
| } else if (process.env.NEXT_DEBUG_BUILD || process.env.__NEXT_VERBOSE_LOGGING) { |
| |
| |
| (0, _prospectiverenderutils.printDebugThrownValueForProspectiveRender)(err, workStore.route); |
| } |
| }, |
| bootstrapScripts: [ |
| bootstrapScript |
| ] |
| }); |
| |
| |
| |
| initialClientReactController.signal.addEventListener('abort', ()=>{ |
| initialClientRenderController.abort(); |
| }, { |
| once: true |
| }); |
| pendingInitialClientResult.catch((err)=>{ |
| if (initialClientReactController.signal.aborted || (0, _dynamicrendering.isPrerenderInterruptedError)(err)) { |
| |
| } else if (process.env.NEXT_DEBUG_BUILD || process.env.__NEXT_VERBOSE_LOGGING) { |
| |
| |
| (0, _prospectiverenderutils.printDebugThrownValueForProspectiveRender)(err, workStore.route); |
| } |
| }); |
| |
| |
| (0, _trackmoduleloadingexternal.trackPendingModules)(cacheSignal); |
| await cacheSignal.cacheReady(); |
| initialClientReactController.abort(); |
| } |
| const finalServerReactController = new AbortController(); |
| const finalServerRenderController = new AbortController(); |
| const finalServerPayloadPrerenderStore = { |
| type: 'prerender', |
| phase: 'render', |
| rootParams, |
| fallbackRouteParams, |
| implicitTags, |
| |
| |
| renderSignal: finalServerRenderController.signal, |
| |
| |
| |
| controller: new AbortController(), |
| |
| cacheSignal: null, |
| dynamicTracking: null, |
| allowEmptyStaticShell, |
| revalidate: _constants1.INFINITE_CACHE, |
| expire: _constants1.INFINITE_CACHE, |
| stale: _constants1.INFINITE_CACHE, |
| tags: [ |
| ...implicitTags.tags |
| ], |
| prerenderResumeDataCache, |
| renderResumeDataCache, |
| hmrRefreshHash: undefined, |
| captureOwnerStack: undefined |
| }; |
| const finalAttemptRSCPayload = await _workunitasyncstorageexternal.workUnitAsyncStorage.run(finalServerPayloadPrerenderStore, getRSCPayload, tree, ctx, res.statusCode === 404); |
| const serverDynamicTracking = (0, _dynamicrendering.createDynamicTrackingState)(isDebugDynamicAccesses); |
| let serverIsDynamic = false; |
| const finalServerPrerenderStore = prerenderStore = { |
| type: 'prerender', |
| phase: 'render', |
| rootParams, |
| fallbackRouteParams, |
| implicitTags, |
| renderSignal: finalServerRenderController.signal, |
| controller: finalServerReactController, |
| |
| cacheSignal: null, |
| dynamicTracking: serverDynamicTracking, |
| allowEmptyStaticShell, |
| revalidate: _constants1.INFINITE_CACHE, |
| expire: _constants1.INFINITE_CACHE, |
| stale: _constants1.INFINITE_CACHE, |
| tags: [ |
| ...implicitTags.tags |
| ], |
| prerenderResumeDataCache, |
| renderResumeDataCache, |
| hmrRefreshHash: undefined, |
| captureOwnerStack: undefined |
| }; |
| let prerenderIsPending = true; |
| const reactServerResult = reactServerPrerenderResult = await (0, _apprenderprerenderutils.createReactServerPrerenderResult)((0, _apprenderprerenderutils.prerenderAndAbortInSequentialTasks)(async ()=>{ |
| const pendingPrerenderResult = _workunitasyncstorageexternal.workUnitAsyncStorage.run( |
| finalServerPrerenderStore, |
| ComponentMod.prerender, |
| finalAttemptRSCPayload, clientReferenceManifest.clientModules, { |
| filterStackFrame, |
| onError: (err)=>{ |
| return serverComponentsErrorHandler(err); |
| }, |
| signal: finalServerReactController.signal |
| }); |
| |
| |
| |
| finalServerReactController.signal.addEventListener('abort', ()=>{ |
| finalServerRenderController.abort(); |
| }, { |
| once: true |
| }); |
| const prerenderResult = await pendingPrerenderResult; |
| prerenderIsPending = false; |
| return prerenderResult; |
| }, ()=>{ |
| if (finalServerReactController.signal.aborted) { |
| |
| |
| serverIsDynamic = true; |
| return; |
| } |
| if (prerenderIsPending) { |
| |
| |
| serverIsDynamic = true; |
| } |
| finalServerReactController.abort(); |
| })); |
| const clientDynamicTracking = (0, _dynamicrendering.createDynamicTrackingState)(isDebugDynamicAccesses); |
| const finalClientReactController = new AbortController(); |
| const finalClientRenderController = new AbortController(); |
| const finalClientPrerenderStore = { |
| type: 'prerender-client', |
| phase: 'render', |
| rootParams, |
| fallbackRouteParams, |
| implicitTags, |
| renderSignal: finalClientRenderController.signal, |
| controller: finalClientReactController, |
| |
| cacheSignal: null, |
| dynamicTracking: clientDynamicTracking, |
| allowEmptyStaticShell, |
| revalidate: _constants1.INFINITE_CACHE, |
| expire: _constants1.INFINITE_CACHE, |
| stale: _constants1.INFINITE_CACHE, |
| tags: [ |
| ...implicitTags.tags |
| ], |
| prerenderResumeDataCache, |
| renderResumeDataCache, |
| hmrRefreshHash: undefined, |
| captureOwnerStack: undefined |
| }; |
| let dynamicValidation = (0, _dynamicrendering.createDynamicValidationState)(); |
| const prerender = require('react-dom/static').prerender; |
| let { prelude: unprocessedPrelude, postponed } = await (0, _apprenderprerenderutils.prerenderAndAbortInSequentialTasks)(()=>{ |
| const pendingFinalClientResult = _workunitasyncstorageexternal.workUnitAsyncStorage.run(finalClientPrerenderStore, prerender, (0, _jsxruntime.jsx)(App, { |
| reactServerStream: reactServerResult.asUnclosingStream(), |
| preinitScripts: preinitScripts, |
| clientReferenceManifest: clientReferenceManifest, |
| ServerInsertedHTMLProvider: ServerInsertedHTMLProvider, |
| nonce: nonce |
| }), { |
| signal: finalClientReactController.signal, |
| onError: (err, errorInfo)=>{ |
| if ((0, _dynamicrendering.isPrerenderInterruptedError)(err) || finalClientReactController.signal.aborted) { |
| const componentStack = errorInfo.componentStack; |
| if (typeof componentStack === 'string') { |
| (0, _dynamicrendering.trackAllowedDynamicAccess)(workStore, componentStack, dynamicValidation, clientDynamicTracking); |
| } |
| return; |
| } |
| return htmlRendererErrorHandler(err, errorInfo); |
| }, |
| onHeaders: (headers)=>{ |
| headers.forEach((value, key)=>{ |
| appendHeader(key, value); |
| }); |
| }, |
| maxHeadersLength: reactMaxHeadersLength, |
| bootstrapScripts: [ |
| bootstrapScript |
| ] |
| }); |
| |
| |
| |
| finalClientReactController.signal.addEventListener('abort', ()=>{ |
| finalClientRenderController.abort(); |
| }, { |
| once: true |
| }); |
| return pendingFinalClientResult; |
| }, ()=>{ |
| finalClientReactController.abort(); |
| }); |
| const { prelude, preludeIsEmpty } = await (0, _apprenderprerenderutils.processPrelude)(unprocessedPrelude); |
| |
| |
| |
| if (!allowEmptyStaticShell) { |
| (0, _dynamicrendering.throwIfDisallowedDynamic)(workStore, preludeIsEmpty ? _dynamicrendering.PreludeState.Empty : _dynamicrendering.PreludeState.Full, dynamicValidation, serverDynamicTracking); |
| } |
| const getServerInsertedHTML = (0, _makegetserverinsertedhtml.makeGetServerInsertedHTML)({ |
| polyfills, |
| renderServerInsertedHTML, |
| serverCapturedErrors: allCapturedErrors, |
| basePath, |
| tracingMetadata: tracingMetadata |
| }); |
| const flightData = await (0, _nodewebstreamshelper.streamToBuffer)(reactServerResult.asStream()); |
| metadata.flightData = flightData; |
| metadata.segmentData = await collectSegmentData(flightData, finalServerPrerenderStore, ComponentMod, renderOpts); |
| |
| |
| |
| |
| const hasFallbackRouteParams = fallbackRouteParams && fallbackRouteParams.size > 0; |
| if (serverIsDynamic || hasFallbackRouteParams) { |
| |
| |
| |
| |
| |
| if (postponed != null) { |
| |
| metadata.postponed = await (0, _postponedstate.getDynamicHTMLPostponedState)(postponed, preludeIsEmpty ? _postponedstate.DynamicHTMLPreludeState.Empty : _postponedstate.DynamicHTMLPreludeState.Full, fallbackRouteParams, resumeDataCache); |
| } else { |
| |
| metadata.postponed = await (0, _postponedstate.getDynamicDataPostponedState)(resumeDataCache); |
| } |
| reactServerResult.consume(); |
| return { |
| digestErrorsMap: reactServerErrorsByDigest, |
| ssrErrors: allCapturedErrors, |
| stream: await (0, _nodewebstreamshelper.continueDynamicPrerender)(prelude, { |
| getServerInsertedHTML, |
| getServerInsertedMetadata |
| }), |
| dynamicAccess: (0, _dynamicrendering.consumeDynamicAccess)(serverDynamicTracking, clientDynamicTracking), |
| |
| collectedRevalidate: finalServerPrerenderStore.revalidate, |
| collectedExpire: finalServerPrerenderStore.expire, |
| collectedStale: selectStaleTime(finalServerPrerenderStore.stale), |
| collectedTags: finalServerPrerenderStore.tags, |
| renderResumeDataCache: (0, _resumedatacache.createRenderResumeDataCache)(resumeDataCache) |
| }; |
| } else { |
| |
| |
| |
| if (workStore.forceDynamic) { |
| throw Object.defineProperty(new _staticgenerationbailout.StaticGenBailoutError('Invariant: a Page with `dynamic = "force-dynamic"` did not trigger the dynamic pathway. This is a bug in Next.js'), "__NEXT_ERROR_CODE", { |
| value: "E598", |
| enumerable: false, |
| configurable: true |
| }); |
| } |
| let htmlStream = prelude; |
| if (postponed != null) { |
| |
| |
| const resume = require('react-dom/server').resume; |
| |
| |
| const foreverStream = new ReadableStream(); |
| const resumeStream = await resume( (0, _jsxruntime.jsx)(App, { |
| reactServerStream: foreverStream, |
| preinitScripts: ()=>{}, |
| clientReferenceManifest: clientReferenceManifest, |
| ServerInsertedHTMLProvider: ServerInsertedHTMLProvider, |
| nonce: nonce |
| }), JSON.parse(JSON.stringify(postponed)), { |
| signal: (0, _dynamicrendering.createRenderInBrowserAbortSignal)(), |
| onError: htmlRendererErrorHandler, |
| nonce |
| }); |
| |
| htmlStream = (0, _nodewebstreamshelper.chainStreams)(prelude, resumeStream); |
| } |
| return { |
| digestErrorsMap: reactServerErrorsByDigest, |
| ssrErrors: allCapturedErrors, |
| stream: await (0, _nodewebstreamshelper.continueStaticPrerender)(htmlStream, { |
| inlinedDataStream: (0, _useflightresponse.createInlinedDataReadableStream)(reactServerResult.consumeAsStream(), nonce, formState), |
| getServerInsertedHTML, |
| getServerInsertedMetadata, |
| isBuildTimePrerendering: ctx.workStore.isBuildTimePrerendering === true, |
| buildId: ctx.workStore.buildId |
| }), |
| dynamicAccess: (0, _dynamicrendering.consumeDynamicAccess)(serverDynamicTracking, clientDynamicTracking), |
| |
| collectedRevalidate: finalServerPrerenderStore.revalidate, |
| collectedExpire: finalServerPrerenderStore.expire, |
| collectedStale: selectStaleTime(finalServerPrerenderStore.stale), |
| collectedTags: finalServerPrerenderStore.tags, |
| renderResumeDataCache: (0, _resumedatacache.createRenderResumeDataCache)(resumeDataCache) |
| }; |
| } |
| } else if (experimental.isRoutePPREnabled) { |
| |
| let dynamicTracking = (0, _dynamicrendering.createDynamicTrackingState)(isDebugDynamicAccesses); |
| const prerenderResumeDataCache = (0, _resumedatacache.createPrerenderResumeDataCache)(); |
| const reactServerPrerenderStore = prerenderStore = { |
| type: 'prerender-ppr', |
| phase: 'render', |
| rootParams, |
| fallbackRouteParams, |
| implicitTags, |
| dynamicTracking, |
| revalidate: _constants1.INFINITE_CACHE, |
| expire: _constants1.INFINITE_CACHE, |
| stale: _constants1.INFINITE_CACHE, |
| tags: [ |
| ...implicitTags.tags |
| ], |
| prerenderResumeDataCache |
| }; |
| const RSCPayload = await _workunitasyncstorageexternal.workUnitAsyncStorage.run(reactServerPrerenderStore, getRSCPayload, tree, ctx, res.statusCode === 404); |
| const reactServerResult = reactServerPrerenderResult = await (0, _apprenderprerenderutils.createReactServerPrerenderResultFromRender)(_workunitasyncstorageexternal.workUnitAsyncStorage.run(reactServerPrerenderStore, ComponentMod.renderToReadableStream, |
| RSCPayload, clientReferenceManifest.clientModules, { |
| filterStackFrame, |
| onError: serverComponentsErrorHandler |
| })); |
| const ssrPrerenderStore = { |
| type: 'prerender-ppr', |
| phase: 'render', |
| rootParams, |
| fallbackRouteParams, |
| implicitTags, |
| dynamicTracking, |
| revalidate: _constants1.INFINITE_CACHE, |
| expire: _constants1.INFINITE_CACHE, |
| stale: _constants1.INFINITE_CACHE, |
| tags: [ |
| ...implicitTags.tags |
| ], |
| prerenderResumeDataCache |
| }; |
| const prerender = require('react-dom/static').prerender; |
| const { prelude: unprocessedPrelude, postponed } = await _workunitasyncstorageexternal.workUnitAsyncStorage.run(ssrPrerenderStore, prerender, (0, _jsxruntime.jsx)(App, { |
| reactServerStream: reactServerResult.asUnclosingStream(), |
| preinitScripts: preinitScripts, |
| clientReferenceManifest: clientReferenceManifest, |
| ServerInsertedHTMLProvider: ServerInsertedHTMLProvider, |
| nonce: nonce |
| }), { |
| onError: htmlRendererErrorHandler, |
| onHeaders: (headers)=>{ |
| headers.forEach((value, key)=>{ |
| appendHeader(key, value); |
| }); |
| }, |
| maxHeadersLength: reactMaxHeadersLength, |
| bootstrapScripts: [ |
| bootstrapScript |
| ] |
| }); |
| const getServerInsertedHTML = (0, _makegetserverinsertedhtml.makeGetServerInsertedHTML)({ |
| polyfills, |
| renderServerInsertedHTML, |
| serverCapturedErrors: allCapturedErrors, |
| basePath, |
| tracingMetadata: tracingMetadata |
| }); |
| |
| |
| |
| const flightData = await (0, _nodewebstreamshelper.streamToBuffer)(reactServerResult.asStream()); |
| if (shouldGenerateStaticFlightData(workStore)) { |
| metadata.flightData = flightData; |
| metadata.segmentData = await collectSegmentData(flightData, ssrPrerenderStore, ComponentMod, renderOpts); |
| } |
| const { prelude, preludeIsEmpty } = await (0, _apprenderprerenderutils.processPrelude)(unprocessedPrelude); |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| if ((0, _dynamicrendering.accessedDynamicData)(dynamicTracking.dynamicAccesses)) { |
| if (postponed != null) { |
| |
| metadata.postponed = await (0, _postponedstate.getDynamicHTMLPostponedState)(postponed, preludeIsEmpty ? _postponedstate.DynamicHTMLPreludeState.Empty : _postponedstate.DynamicHTMLPreludeState.Full, fallbackRouteParams, prerenderResumeDataCache); |
| } else { |
| |
| metadata.postponed = await (0, _postponedstate.getDynamicDataPostponedState)(prerenderResumeDataCache); |
| } |
| |
| |
| |
| |
| reactServerResult.consume(); |
| return { |
| digestErrorsMap: reactServerErrorsByDigest, |
| ssrErrors: allCapturedErrors, |
| stream: await (0, _nodewebstreamshelper.continueDynamicPrerender)(prelude, { |
| getServerInsertedHTML, |
| getServerInsertedMetadata |
| }), |
| dynamicAccess: dynamicTracking.dynamicAccesses, |
| |
| collectedRevalidate: reactServerPrerenderStore.revalidate, |
| collectedExpire: reactServerPrerenderStore.expire, |
| collectedStale: selectStaleTime(reactServerPrerenderStore.stale), |
| collectedTags: reactServerPrerenderStore.tags |
| }; |
| } else if (fallbackRouteParams && fallbackRouteParams.size > 0) { |
| |
| metadata.postponed = await (0, _postponedstate.getDynamicDataPostponedState)(prerenderResumeDataCache); |
| return { |
| digestErrorsMap: reactServerErrorsByDigest, |
| ssrErrors: allCapturedErrors, |
| stream: await (0, _nodewebstreamshelper.continueDynamicPrerender)(prelude, { |
| getServerInsertedHTML, |
| getServerInsertedMetadata |
| }), |
| dynamicAccess: dynamicTracking.dynamicAccesses, |
| |
| collectedRevalidate: reactServerPrerenderStore.revalidate, |
| collectedExpire: reactServerPrerenderStore.expire, |
| collectedStale: selectStaleTime(reactServerPrerenderStore.stale), |
| collectedTags: reactServerPrerenderStore.tags |
| }; |
| } else { |
| |
| |
| if (workStore.forceDynamic) { |
| throw Object.defineProperty(new _staticgenerationbailout.StaticGenBailoutError('Invariant: a Page with `dynamic = "force-dynamic"` did not trigger the dynamic pathway. This is a bug in Next.js'), "__NEXT_ERROR_CODE", { |
| value: "E598", |
| enumerable: false, |
| configurable: true |
| }); |
| } |
| let htmlStream = prelude; |
| if (postponed != null) { |
| |
| |
| const resume = require('react-dom/server').resume; |
| |
| |
| const foreverStream = new ReadableStream(); |
| const resumeStream = await resume( (0, _jsxruntime.jsx)(App, { |
| reactServerStream: foreverStream, |
| preinitScripts: ()=>{}, |
| clientReferenceManifest: clientReferenceManifest, |
| ServerInsertedHTMLProvider: ServerInsertedHTMLProvider, |
| nonce: nonce |
| }), JSON.parse(JSON.stringify(postponed)), { |
| signal: (0, _dynamicrendering.createRenderInBrowserAbortSignal)(), |
| onError: htmlRendererErrorHandler, |
| nonce |
| }); |
| |
| htmlStream = (0, _nodewebstreamshelper.chainStreams)(prelude, resumeStream); |
| } |
| return { |
| digestErrorsMap: reactServerErrorsByDigest, |
| ssrErrors: allCapturedErrors, |
| stream: await (0, _nodewebstreamshelper.continueStaticPrerender)(htmlStream, { |
| inlinedDataStream: (0, _useflightresponse.createInlinedDataReadableStream)(reactServerResult.consumeAsStream(), nonce, formState), |
| getServerInsertedHTML, |
| getServerInsertedMetadata, |
| isBuildTimePrerendering: ctx.workStore.isBuildTimePrerendering === true, |
| buildId: ctx.workStore.buildId |
| }), |
| dynamicAccess: dynamicTracking.dynamicAccesses, |
| |
| collectedRevalidate: reactServerPrerenderStore.revalidate, |
| collectedExpire: reactServerPrerenderStore.expire, |
| collectedStale: selectStaleTime(reactServerPrerenderStore.stale), |
| collectedTags: reactServerPrerenderStore.tags |
| }; |
| } |
| } else { |
| const prerenderLegacyStore = prerenderStore = { |
| type: 'prerender-legacy', |
| phase: 'render', |
| rootParams, |
| implicitTags, |
| revalidate: _constants1.INFINITE_CACHE, |
| expire: _constants1.INFINITE_CACHE, |
| stale: _constants1.INFINITE_CACHE, |
| tags: [ |
| ...implicitTags.tags |
| ] |
| }; |
| |
| |
| const RSCPayload = await _workunitasyncstorageexternal.workUnitAsyncStorage.run(prerenderLegacyStore, getRSCPayload, tree, ctx, res.statusCode === 404); |
| const reactServerResult = reactServerPrerenderResult = await (0, _apprenderprerenderutils.createReactServerPrerenderResultFromRender)(_workunitasyncstorageexternal.workUnitAsyncStorage.run(prerenderLegacyStore, ComponentMod.renderToReadableStream, RSCPayload, clientReferenceManifest.clientModules, { |
| filterStackFrame, |
| onError: serverComponentsErrorHandler |
| })); |
| const renderToReadableStream = require('react-dom/server').renderToReadableStream; |
| const htmlStream = await _workunitasyncstorageexternal.workUnitAsyncStorage.run(prerenderLegacyStore, renderToReadableStream, (0, _jsxruntime.jsx)(App, { |
| reactServerStream: reactServerResult.asUnclosingStream(), |
| preinitScripts: preinitScripts, |
| clientReferenceManifest: clientReferenceManifest, |
| ServerInsertedHTMLProvider: ServerInsertedHTMLProvider, |
| nonce: nonce |
| }), { |
| onError: htmlRendererErrorHandler, |
| nonce, |
| bootstrapScripts: [ |
| bootstrapScript |
| ] |
| }); |
| if (shouldGenerateStaticFlightData(workStore)) { |
| const flightData = await (0, _nodewebstreamshelper.streamToBuffer)(reactServerResult.asStream()); |
| metadata.flightData = flightData; |
| metadata.segmentData = await collectSegmentData(flightData, prerenderLegacyStore, ComponentMod, renderOpts); |
| } |
| const getServerInsertedHTML = (0, _makegetserverinsertedhtml.makeGetServerInsertedHTML)({ |
| polyfills, |
| renderServerInsertedHTML, |
| serverCapturedErrors: allCapturedErrors, |
| basePath, |
| tracingMetadata: tracingMetadata |
| }); |
| return { |
| digestErrorsMap: reactServerErrorsByDigest, |
| ssrErrors: allCapturedErrors, |
| stream: await (0, _nodewebstreamshelper.continueFizzStream)(htmlStream, { |
| inlinedDataStream: (0, _useflightresponse.createInlinedDataReadableStream)(reactServerResult.consumeAsStream(), nonce, formState), |
| isStaticGeneration: true, |
| isBuildTimePrerendering: ctx.workStore.isBuildTimePrerendering === true, |
| buildId: ctx.workStore.buildId, |
| getServerInsertedHTML, |
| getServerInsertedMetadata |
| }), |
| |
| collectedRevalidate: prerenderLegacyStore.revalidate, |
| collectedExpire: prerenderLegacyStore.expire, |
| collectedStale: selectStaleTime(prerenderLegacyStore.stale), |
| collectedTags: prerenderLegacyStore.tags |
| }; |
| } |
| } catch (err) { |
| if ((0, _staticgenerationbailout.isStaticGenBailoutError)(err) || typeof err === 'object' && err !== null && 'message' in err && typeof err.message === 'string' && err.message.includes('https://nextjs.org/docs/advanced-features/static-html-export')) { |
| |
| throw err; |
| } |
| |
| |
| if ((0, _hooksservercontext.isDynamicServerError)(err)) { |
| throw err; |
| } |
| |
| |
| const shouldBailoutToCSR = (0, _bailouttocsr.isBailoutToCSRError)(err); |
| if (shouldBailoutToCSR) { |
| const stack = (0, _formatservererror.getStackWithoutErrorMessage)(err); |
| (0, _log.error)(`${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}`); |
| throw err; |
| } |
| |
| |
| if (reactServerPrerenderResult === null) { |
| throw err; |
| } |
| let errorType; |
| if ((0, _httpaccessfallback.isHTTPAccessFallbackError)(err)) { |
| res.statusCode = (0, _httpaccessfallback.getAccessFallbackHTTPStatus)(err); |
| metadata.statusCode = res.statusCode; |
| errorType = (0, _httpaccessfallback.getAccessFallbackErrorTypeByStatus)(res.statusCode); |
| } else if ((0, _redirecterror.isRedirectError)(err)) { |
| errorType = 'redirect'; |
| res.statusCode = (0, _redirect.getRedirectStatusCodeFromError)(err); |
| metadata.statusCode = res.statusCode; |
| const redirectUrl = (0, _addpathprefix.addPathPrefix)((0, _redirect.getURLFromRedirectError)(err), basePath); |
| setHeader('location', redirectUrl); |
| } else if (!shouldBailoutToCSR) { |
| res.statusCode = 500; |
| metadata.statusCode = res.statusCode; |
| } |
| const [errorPreinitScripts, errorBootstrapScript] = (0, _requiredscripts.getRequiredScripts)(buildManifest, assetPrefix, crossOrigin, subresourceIntegrityManifest, (0, _getassetquerystring.getAssetQueryString)(ctx, false), nonce, '/_not-found/page'); |
| const prerenderLegacyStore = prerenderStore = { |
| type: 'prerender-legacy', |
| phase: 'render', |
| rootParams, |
| implicitTags: implicitTags, |
| revalidate: typeof (prerenderStore == null ? void 0 : prerenderStore.revalidate) !== 'undefined' ? prerenderStore.revalidate : _constants1.INFINITE_CACHE, |
| expire: typeof (prerenderStore == null ? void 0 : prerenderStore.expire) !== 'undefined' ? prerenderStore.expire : _constants1.INFINITE_CACHE, |
| stale: typeof (prerenderStore == null ? void 0 : prerenderStore.stale) !== 'undefined' ? prerenderStore.stale : _constants1.INFINITE_CACHE, |
| tags: [ |
| ...(prerenderStore == null ? void 0 : prerenderStore.tags) || implicitTags.tags |
| ] |
| }; |
| const errorRSCPayload = await _workunitasyncstorageexternal.workUnitAsyncStorage.run(prerenderLegacyStore, getErrorRSCPayload, tree, ctx, reactServerErrorsByDigest.has(err.digest) ? undefined : err, errorType); |
| const errorServerStream = _workunitasyncstorageexternal.workUnitAsyncStorage.run(prerenderLegacyStore, ComponentMod.renderToReadableStream, errorRSCPayload, clientReferenceManifest.clientModules, { |
| filterStackFrame, |
| onError: serverComponentsErrorHandler |
| }); |
| try { |
| |
| |
| |
| const fizzStream = await _workunitasyncstorageexternal.workUnitAsyncStorage.run(prerenderLegacyStore, _nodewebstreamshelper.renderToInitialFizzStream, { |
| ReactDOMServer: require('react-dom/server'), |
| element: (0, _jsxruntime.jsx)(ErrorApp, { |
| reactServerStream: errorServerStream, |
| ServerInsertedHTMLProvider: ServerInsertedHTMLProvider, |
| preinitScripts: errorPreinitScripts, |
| clientReferenceManifest: clientReferenceManifest, |
| nonce: nonce |
| }), |
| streamOptions: { |
| nonce, |
| |
| bootstrapScripts: [ |
| errorBootstrapScript |
| ], |
| formState |
| } |
| }); |
| if (shouldGenerateStaticFlightData(workStore)) { |
| const flightData = await (0, _nodewebstreamshelper.streamToBuffer)(reactServerPrerenderResult.asStream()); |
| metadata.flightData = flightData; |
| metadata.segmentData = await collectSegmentData(flightData, prerenderLegacyStore, ComponentMod, renderOpts); |
| } |
| |
| |
| const flightStream = reactServerPrerenderResult.consumeAsStream(); |
| return { |
| |
| |
| digestErrorsMap: reactServerErrorsByDigest, |
| ssrErrors: allCapturedErrors, |
| stream: await (0, _nodewebstreamshelper.continueFizzStream)(fizzStream, { |
| inlinedDataStream: (0, _useflightresponse.createInlinedDataReadableStream)(flightStream, nonce, formState), |
| isStaticGeneration: true, |
| isBuildTimePrerendering: ctx.workStore.isBuildTimePrerendering === true, |
| buildId: ctx.workStore.buildId, |
| getServerInsertedHTML: (0, _makegetserverinsertedhtml.makeGetServerInsertedHTML)({ |
| polyfills, |
| renderServerInsertedHTML, |
| serverCapturedErrors: [], |
| basePath, |
| tracingMetadata: tracingMetadata |
| }), |
| getServerInsertedMetadata, |
| validateRootLayout: dev |
| }), |
| dynamicAccess: null, |
| collectedRevalidate: prerenderStore !== null ? prerenderStore.revalidate : _constants1.INFINITE_CACHE, |
| collectedExpire: prerenderStore !== null ? prerenderStore.expire : _constants1.INFINITE_CACHE, |
| collectedStale: selectStaleTime(prerenderStore !== null ? prerenderStore.stale : _constants1.INFINITE_CACHE), |
| collectedTags: prerenderStore !== null ? prerenderStore.tags : null |
| }; |
| } catch (finalErr) { |
| if (process.env.NODE_ENV === 'development' && (0, _httpaccessfallback.isHTTPAccessFallbackError)(finalErr)) { |
| const { bailOnRootNotFound } = require('../../client/components/dev-root-http-access-fallback-boundary'); |
| bailOnRootNotFound(); |
| } |
| throw finalErr; |
| } |
| } |
| } |
| const getGlobalErrorStyles = async (tree, ctx)=>{ |
| const { modules: { 'global-error': globalErrorModule } } = (0, _parseloadertree.parseLoaderTree)(tree); |
| const GlobalErrorComponent = ctx.componentMod.GlobalError; |
| let globalErrorStyles; |
| if (globalErrorModule) { |
| const [, styles] = await (0, _createcomponentstylesandscripts.createComponentStylesAndScripts)({ |
| ctx, |
| filePath: globalErrorModule[1], |
| getComponent: globalErrorModule[0], |
| injectedCSS: new Set(), |
| injectedJS: new Set() |
| }); |
| globalErrorStyles = styles; |
| } |
| if (ctx.renderOpts.dev) { |
| const dir = (process.env.NEXT_RUNTIME === 'edge' ? process.env.__NEXT_EDGE_PROJECT_DIR : ctx.renderOpts.dir) || ''; |
| const globalErrorModulePath = (0, _segmentexplorerpath.normalizeConventionFilePath)(dir, globalErrorModule == null ? void 0 : globalErrorModule[1]); |
| if (ctx.renderOpts.devtoolSegmentExplorer && globalErrorModulePath) { |
| const SegmentViewNode = ctx.componentMod.SegmentViewNode; |
| globalErrorStyles = |
| |
| (0, _jsxruntime.jsx)(SegmentViewNode, { |
| type: "global-error", |
| pagePath: globalErrorModulePath, |
| children: globalErrorStyles |
| }, "ge-svn"); |
| } |
| } |
| return { |
| GlobalError: GlobalErrorComponent, |
| styles: globalErrorStyles |
| }; |
| }; |
| function createSelectStaleTime(experimental) { |
| return (stale)=>{ |
| var _experimental_staleTimes; |
| return stale === _constants1.INFINITE_CACHE && typeof ((_experimental_staleTimes = experimental.staleTimes) == null ? void 0 : _experimental_staleTimes.static) === 'number' ? experimental.staleTimes.static : stale; |
| }; |
| } |
| async function collectSegmentData(fullPageDataBuffer, prerenderStore, ComponentMod, renderOpts) { |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| const clientReferenceManifest = renderOpts.clientReferenceManifest; |
| if (!clientReferenceManifest || |
| |
| |
| |
| |
| |
| |
| renderOpts.experimental.clientSegmentCache !== true) { |
| return; |
| } |
| |
| |
| const isEdgeRuntime = process.env.NEXT_RUNTIME === 'edge'; |
| const serverConsumerManifest = { |
| |
| |
| |
| moduleLoading: null, |
| moduleMap: isEdgeRuntime ? clientReferenceManifest.edgeRscModuleMapping : clientReferenceManifest.rscModuleMapping, |
| serverModuleMap: (0, _encryptionutils.getServerModuleMap)() |
| }; |
| const staleTime = prerenderStore.stale; |
| return await ComponentMod.collectSegmentData(renderOpts.experimental.clientParamParsing, fullPageDataBuffer, staleTime, clientReferenceManifest.clientModules, serverConsumerManifest); |
| } |
|
|
| |