Fix styled-jsx race condition: styles lost due to concurrent rendering#92459
Fix styled-jsx race condition: styles lost due to concurrent rendering#92459timneutkens merged 1 commit intocanaryfrom
Conversation
…all rendering styledJsxInsertedHTML() was called concurrently with page rendering via Promise.all, so the style registry was read before it was populated by the render. Serialize the two operations so styles are collected after rendering completes. Co-Authored-By: Claude <noreply@anthropic.com>
Stats from current PR✅ No significant changes detected📊 All Metrics📖 Metrics GlossaryDev Server Metrics:
Build Metrics:
Change Thresholds:
⚡ Dev Server
📦 Dev Server (Webpack) (Legacy)📦 Dev Server (Webpack)
⚡ Production Builds
📦 Production Builds (Webpack) (Legacy)📦 Production Builds (Webpack)
📦 Bundle SizesBundle Sizes⚡ TurbopackClient Main Bundles
Server Middleware
Build DetailsBuild Manifests
📦 WebpackClient Main Bundles
Polyfills
Pages
Server Edge SSR
Middleware
Build DetailsBuild Manifests
Build Cache
🔄 Shared (bundler-independent)Runtimes
📝 Changed Files (4 files)Files with changes:
View diffspages-turbo...ntime.dev.js@@ -19,7 +19,7 @@ To revalidate as soon as possible, you can set the value to \`1\`.`),"__NEXT_ERR
To only run getStaticProps at build-time and not revalidate at runtime, you can set \`revalidate\` to \`false\`!`),revalidate=data.revalidate;else throw Object.defineProperty(Error(`A page's revalidate option must be seconds expressed as a natural number for ${req.url}. Mixed numbers, such as '${data.revalidate}', cannot be used.
Try changing the value to '${Math.ceil(data.revalidate)}' or using \`Math.ceil()\` if you're computing the value.`),"__NEXT_ERROR_CODE",{value:"E438",enumerable:!1,configurable:!0});else if(!0===data.revalidate)revalidate=1;else if(!1===data.revalidate||void 0===data.revalidate)revalidate=!1;else throw Object.defineProperty(Error(`A page's revalidate option must be seconds expressed as a natural number. Mixed numbers and strings cannot be used. Received '${JSON.stringify(data.revalidate)}' for ${req.url}`),"__NEXT_ERROR_CODE",{value:"E161",enumerable:!1,configurable:!0})}else revalidate=!1;if(props.pageProps=Object.assign({},props.pageProps,"props"in data?data.props:void 0),metadata.cacheControl={revalidate,expire:void 0},metadata.pageData=props,metadata.isNotFound)return new RenderResult(null,{metadata,contentType:null})}if(getServerSideProps&&(props.__N_SSP=!0),getServerSideProps&&!isFallback){let data,canAccessRes=!0,resOrProxy=res,deferredContent=!1;resOrProxy=new Proxy(res,{get:function(obj,prop){if(!canAccessRes){let message=`You should not access 'res' after getServerSideProps resolves.
Read more: https://nextjs.org/docs/messages/gssp-no-mutating-res`;if(deferredContent)throw Object.defineProperty(Error(message),"__NEXT_ERROR_CODE",{value:"E1028",enumerable:!1,configurable:!0});warn(message)}return reflect.ReflectAdapter.get(obj,prop,res)}});try{data=await (0,tracer_.getTracer)().trace(trace_constants.RenderSpan.getServerSideProps,{spanName:`getServerSideProps ${pathname}`,attributes:{"next.route":pathname}},async()=>getServerSideProps({req:req,res:resOrProxy,query,resolvedUrl:renderOpts.resolvedUrl,...pageIsDynamic?{params}:void 0,...!1!==previewData?{draftMode:!0,preview:!0,previewData:previewData}:void 0,locales:[...renderOpts.locales??[]],locale:renderOpts.locale,defaultLocale:renderOpts.defaultLocale})),canAccessRes=!1,metadata.cacheControl={revalidate:0,expire:void 0}}catch(serverSidePropsError){throw"object"==typeof serverSidePropsError&&null!==serverSidePropsError&&"name"in serverSidePropsError&&"message"in serverSidePropsError&&"ENOENT"===serverSidePropsError.code&&delete serverSidePropsError.code,serverSidePropsError}if(null==data)throw Object.defineProperty(Error(constants.GSSP_NO_RETURNED_VALUE),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});data.props instanceof Promise&&(deferredContent=!0);let invalidKeys=Object.keys(data).filter(key=>"props"!==key&&"redirect"!==key&&"notFound"!==key);if(data.unstable_notFound)throw Object.defineProperty(Error(`unstable_notFound has been renamed to notFound, please update the field to continue. Page: ${pathname}`),"__NEXT_ERROR_CODE",{value:"E516",enumerable:!1,configurable:!0});if(data.unstable_redirect)throw Object.defineProperty(Error(`unstable_redirect has been renamed to redirect, please update the field to continue. Page: ${pathname}`),"__NEXT_ERROR_CODE",{value:"E284",enumerable:!1,configurable:!0});if(invalidKeys.length)throw Object.defineProperty(Error(invalidKeysMsg("getServerSideProps",invalidKeys)),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});if("notFound"in data&&data.notFound){if("/404"===pathname)throw Object.defineProperty(Error('The /404 page can not return notFound in "getStaticProps", please remove it to continue!'),"__NEXT_ERROR_CODE",{value:"E121",enumerable:!1,configurable:!0});return metadata.isNotFound=!0,new RenderResult(null,{metadata,contentType:null})}if("redirect"in data&&"object"==typeof data.redirect&&(checkRedirectValues(data.redirect,req,"getServerSideProps"),data.props={__N_REDIRECT:data.redirect.destination,__N_REDIRECT_STATUS:getRedirectStatus(data.redirect)},void 0!==data.redirect.basePath&&(data.props.__N_REDIRECT_BASE_PATH=data.redirect.basePath),metadata.isRedirect=!0),deferredContent&&(data.props=await data.props),(process.env.__NEXT_DEV_SERVER||isBuildTimeSSG)&&!isSerializableProps(pathname,"getServerSideProps",data.props))throw Object.defineProperty(Error("invariant: getServerSideProps did not return valid props. Please report this."),"__NEXT_ERROR_CODE",{value:"E31",enumerable:!1,configurable:!0});props.pageProps=Object.assign({},props.pageProps,data.props),metadata.pageData=props}if(!isSSG&&!getServerSideProps&&Object.keys((null==props?void 0:props.pageProps)||{}).includes("url")&&console.warn(`The prop \`url\` is a reserved prop in Next.js for legacy reasons and will be overridden on page ${pathname}
-See more info here: https://nextjs.org/docs/messages/reserved-page-prop`),isNextDataRequest&&!isSSG||metadata.isRedirect)return new RenderResult(JSON.stringify(props),{metadata,contentType:constants.JSON_CONTENT_TYPE_HEADER});if(isFallback&&(props.pageProps={}),isResSent(res)&&!isSSG)return RenderResult.EMPTY;let filteredBuildManifest=buildManifest;if(isAutoExport&&pageIsDynamic){let _page,page=(_page=normalizePathSep(normalizePagePath(pathname))).startsWith("/index/")&&!isDynamicRoute(_page)?_page.slice(6):"/index"!==_page?_page:"/";page in filteredBuildManifest.pages&&(filteredBuildManifest={...filteredBuildManifest,pages:{...filteredBuildManifest.pages,[page]:[...filteredBuildManifest.pages[page],...filteredBuildManifest.lowPriorityFiles.filter(f=>f.includes("_buildManifest"))]},lowPriorityFiles:filteredBuildManifest.lowPriorityFiles.filter(f=>!f.includes("_buildManifest"))})}let Body=({children})=>(0,jsx_runtime_namespaceObject.jsx)("div",{id:"__next",children:children}),renderDocument=async()=>{let documentInitialPropsRes,styles,styles1;async function loadDocumentInitialProps(renderShell){let renderPage=async(options={})=>{if(ctx.err&&ErrorDebug)return renderShell&&renderShell(App,Component),{html:await renderToString((0,jsx_runtime_namespaceObject.jsx)(Body,{children:(0,jsx_runtime_namespaceObject.jsx)(ErrorDebug,{})})),head};if(process.env.__NEXT_DEV_SERVER&&(props.router||props.Component))throw Object.defineProperty(Error("'router' and 'Component' can not be returned in getInitialProps from _app.js https://nextjs.org/docs/messages/cant-override-next-props"),"__NEXT_ERROR_CODE",{value:"E230",enumerable:!1,configurable:!0});let{App:EnhancedApp,Component:EnhancedComponent}="function"==typeof options?{App:App,Component:options(Component)}:{App:options.enhanceApp?options.enhanceApp(App):App,Component:options.enhanceComponent?options.enhanceComponent(Component):Component},stream=await renderShell(EnhancedApp,EnhancedComponent);return await stream.allReady,{html:await streamToString(stream),head}},documentCtx={...ctx,renderPage},docProps=await loadGetInitialProps(Document,documentCtx);if(isResSent(res)&&!isSSG)return null;if(!docProps||"string"!=typeof docProps.html)throw Object.defineProperty(Error(`"${getDisplayName(Document)}.getInitialProps()" should resolve to an object with a "html" prop set with a valid html string`),"__NEXT_ERROR_CODE",{value:"E1039",enumerable:!1,configurable:!0});return{docProps,documentCtx}}Document.__NEXT_BUILTIN_DOCUMENT__;let renderShell=async(EnhancedApp,EnhancedComponent)=>{let EnhancedApp1,EnhancedComponent1,content=(EnhancedApp1=EnhancedApp||App,EnhancedComponent1=EnhancedComponent||Component,ctx.err&&ErrorDebug?(0,jsx_runtime_namespaceObject.jsx)(Body,{children:(0,jsx_runtime_namespaceObject.jsx)(ErrorDebug,{})}):(0,jsx_runtime_namespaceObject.jsx)(Body,{children:(0,jsx_runtime_namespaceObject.jsx)(AppContainerWithIsomorphicFiberStructure,{children:renderPageTree(EnhancedApp1,EnhancedComponent1,{...props,router})})}));return await function({ReactDOMServer,element,streamOptions}){return(0,tracer_.getTracer)().trace(trace_constants.AppRenderSpan.renderToReadableStream,async()=>ReactDOMServer.renderToReadableStream(element,streamOptions))}({ReactDOMServer:ReactDOMServerPages_default(),element:content})},hasDocumentGetInitialProps=!!Document.getInitialProps,[rawStyledJsxInsertedHTML,content]=await Promise.all([renderToString((styles1=jsxStyleRegistry.styles(),jsxStyleRegistry.flush(),(0,jsx_runtime_namespaceObject.jsx)(jsx_runtime_namespaceObject.Fragment,{children:styles1}))),(async()=>{if(hasDocumentGetInitialProps){if(null===(documentInitialPropsRes=await loadDocumentInitialProps(renderShell)))return null;let{docProps}=documentInitialPropsRes;return docProps.html}{documentInitialPropsRes={};let stream=await renderShell(App,Component);return await stream.allReady,streamToString(stream)}})()]);if(null===content)return null;let{docProps}=documentInitialPropsRes||{};return hasDocumentGetInitialProps?(styles=docProps.styles,head=docProps.head):(styles=jsxStyleRegistry.styles(),jsxStyleRegistry.flush()),{contentHTML:rawStyledJsxInsertedHTML+content,documentElement:htmlProps=>(0,jsx_runtime_namespaceObject.jsx)(Document,{...htmlProps,...docProps}),head,headTags:[],styles}};(0,tracer_.getTracer)().setRootSpanAttribute("next.route",renderOpts.page);let documentResult=await (0,tracer_.getTracer)().trace(trace_constants.RenderSpan.renderDocument,{spanName:`render route (pages) ${renderOpts.page}`,attributes:{"next.route":renderOpts.page}},async()=>renderDocument());if(!documentResult)return new RenderResult(null,{metadata,contentType:constants.HTML_CONTENT_TYPE_HEADER});let dynamicImportsIds=new Set,dynamicImports=new Set;for(let mod of reactLoadableModules){let manifestItem=reactLoadableManifest[mod];manifestItem&&(dynamicImportsIds.add(manifestItem.id),manifestItem.files.forEach(item=>{dynamicImports.add(item)}))}let docComponentsRendered={},{assetPrefix,defaultLocale,disableOptimizedLoading,domainLocales,locale,locales}=renderOpts,htmlProps={__NEXT_DATA__:{props,page:pathname,query,buildId:sharedContext.buildId,assetPrefix:""===assetPrefix?void 0:assetPrefix,nextExport:!0===nextExport||void 0,autoExport:!0===isAutoExport||void 0,isFallback,isExperimentalCompile,dynamicIds:0===dynamicImportsIds.size?void 0:Array.from(dynamicImportsIds),err:renderOpts.err?function(dev,err){if(dev){let source="server";return source=err[symbolError]||"server",{name:err.name,source,message:strip_ansi_default()(err.message),stack:err.stack,digest:err.digest}}return{name:"Internal Server Error.",message:"500 - Internal Server Error.",statusCode:500}}(!!process.env.__NEXT_DEV_SERVER,renderOpts.err):void 0,gsp:!!getStaticProps||void 0,gssp:!!getServerSideProps||void 0,customServer:sharedContext.customServer,gip:!!hasPageGetInitialProps||void 0,appGip:!defaultAppGetInitialProps||void 0,locale,locales,defaultLocale,domainLocales,isPreview:!0===isPreview||void 0,notFoundSrcPage:notFoundSrcPage&&process.env.__NEXT_DEV_SERVER?notFoundSrcPage:void 0},nonce,buildManifest:filteredBuildManifest,docComponentsRendered,dangerousAsPath:router.asPath,isDevelopment:!!process.env.__NEXT_DEV_SERVER,deploymentId:sharedContext.deploymentId,dynamicImports:Array.from(dynamicImports),dynamicCssManifest:new Set(renderOpts.dynamicCssManifest||[]),assetPrefix,unstable_runtimeJS:void 0,unstable_JsPreload:pageConfig.unstable_JsPreload,assetQueryString:assetQueryString||"",mutableAssetQueryString:mutableAssetQueryString||"",scriptLoader,locale,disableOptimizedLoading,head:documentResult.head,headTags:documentResult.headTags,styles:documentResult.styles,crossOrigin:renderOpts.crossOrigin,optimizeCss:renderOpts.optimizeCss,nextConfigOutput:renderOpts.nextConfigOutput,nextScriptWorkers:renderOpts.nextScriptWorkers,runtime:globalRuntime,largePageDataBytes:renderOpts.largePageDataBytes,nextFontManifest:renderOpts.nextFontManifest,experimentalClientTraceMetadata:renderOpts.experimental.clientTraceMetadata},document=(0,jsx_runtime_namespaceObject.jsx)(HtmlContext.Provider,{value:htmlProps,children:documentResult.documentElement(htmlProps)}),documentHTML=await (0,tracer_.getTracer)().trace(trace_constants.RenderSpan.renderToString,async()=>renderToString(document));{let nonRenderedComponents=[];for(let comp of["Main","Head","NextScript","Html"])docComponentsRendered[comp]||nonRenderedComponents.push(comp);if(nonRenderedComponents.length){let missingComponentList=nonRenderedComponents.map(e=>`<${e} />`).join(", "),plural=1!==nonRenderedComponents.length?"s":"";console.warn(`Your custom Document (pages/_document) did not render all the required subcomponent${plural}.
+See more info here: https://nextjs.org/docs/messages/reserved-page-prop`),isNextDataRequest&&!isSSG||metadata.isRedirect)return new RenderResult(JSON.stringify(props),{metadata,contentType:constants.JSON_CONTENT_TYPE_HEADER});if(isFallback&&(props.pageProps={}),isResSent(res)&&!isSSG)return RenderResult.EMPTY;let filteredBuildManifest=buildManifest;if(isAutoExport&&pageIsDynamic){let _page,page=(_page=normalizePathSep(normalizePagePath(pathname))).startsWith("/index/")&&!isDynamicRoute(_page)?_page.slice(6):"/index"!==_page?_page:"/";page in filteredBuildManifest.pages&&(filteredBuildManifest={...filteredBuildManifest,pages:{...filteredBuildManifest.pages,[page]:[...filteredBuildManifest.pages[page],...filteredBuildManifest.lowPriorityFiles.filter(f=>f.includes("_buildManifest"))]},lowPriorityFiles:filteredBuildManifest.lowPriorityFiles.filter(f=>!f.includes("_buildManifest"))})}let Body=({children})=>(0,jsx_runtime_namespaceObject.jsx)("div",{id:"__next",children:children}),renderDocument=async()=>{let documentInitialPropsRes,content,styles,styles1;async function loadDocumentInitialProps(renderShell){let renderPage=async(options={})=>{if(ctx.err&&ErrorDebug)return renderShell&&renderShell(App,Component),{html:await renderToString((0,jsx_runtime_namespaceObject.jsx)(Body,{children:(0,jsx_runtime_namespaceObject.jsx)(ErrorDebug,{})})),head};if(process.env.__NEXT_DEV_SERVER&&(props.router||props.Component))throw Object.defineProperty(Error("'router' and 'Component' can not be returned in getInitialProps from _app.js https://nextjs.org/docs/messages/cant-override-next-props"),"__NEXT_ERROR_CODE",{value:"E230",enumerable:!1,configurable:!0});let{App:EnhancedApp,Component:EnhancedComponent}="function"==typeof options?{App:App,Component:options(Component)}:{App:options.enhanceApp?options.enhanceApp(App):App,Component:options.enhanceComponent?options.enhanceComponent(Component):Component},stream=await renderShell(EnhancedApp,EnhancedComponent);return await stream.allReady,{html:await streamToString(stream),head}},documentCtx={...ctx,renderPage},docProps=await loadGetInitialProps(Document,documentCtx);if(isResSent(res)&&!isSSG)return null;if(!docProps||"string"!=typeof docProps.html)throw Object.definePropert
729A
y(Error(`"${getDisplayName(Document)}.getInitialProps()" should resolve to an object with a "html" prop set with a valid html string`),"__NEXT_ERROR_CODE",{value:"E1039",enumerable:!1,configurable:!0});return{docProps,documentCtx}}Document.__NEXT_BUILTIN_DOCUMENT__;let renderShell=async(EnhancedApp,EnhancedComponent)=>{let EnhancedApp1,EnhancedComponent1,content=(EnhancedApp1=EnhancedApp||App,EnhancedComponent1=EnhancedComponent||Component,ctx.err&&ErrorDebug?(0,jsx_runtime_namespaceObject.jsx)(Body,{children:(0,jsx_runtime_namespaceObject.jsx)(ErrorDebug,{})}):(0,jsx_runtime_namespaceObject.jsx)(Body,{children:(0,jsx_runtime_namespaceObject.jsx)(AppContainerWithIsomorphicFiberStructure,{children:renderPageTree(EnhancedApp1,EnhancedComponent1,{...props,router})})}));return await function({ReactDOMServer,element,streamOptions}){return(0,tracer_.getTracer)().trace(trace_constants.AppRenderSpan.renderToReadableStream,async()=>ReactDOMServer.renderToReadableStream(element,streamOptions))}({ReactDOMServer:ReactDOMServerPages_default(),element:content})},hasDocumentGetInitialProps=!!Document.getInitialProps;if(hasDocumentGetInitialProps)if(null===(documentInitialPropsRes=await loadDocumentInitialProps(renderShell)))content=null;else{let{docProps}=documentInitialPropsRes;content=docProps.html}else{documentInitialPropsRes={};let stream=await renderShell(App,Component);await stream.allReady,content=await streamToString(stream)}let{docProps}=documentInitialPropsRes||{};hasDocumentGetInitialProps?(styles=docProps.styles,head=docProps.head):(styles=jsxStyleRegistry.styles(),jsxStyleRegistry.flush());let rawStyledJsxInsertedHTML=await renderToString((styles1=jsxStyleRegistry.styles(),jsxStyleRegistry.flush(),(0,jsx_runtime_namespaceObject.jsx)(jsx_runtime_namespaceObject.Fragment,{children:styles1})));return null===content?null:{contentHTML:rawStyledJsxInsertedHTML+content,documentElement:htmlProps=>(0,jsx_runtime_namespaceObject.jsx)(Document,{...htmlProps,...docProps}),head,headTags:[],styles}};(0,tracer_.getTracer)().setRootSpanAttribute("next.route",renderOpts.page);let documentResult=await (0,tracer_.getTracer)().trace(trace_constants.RenderSpan.renderDocument,{spanName:`render route (pages) ${renderOpts.page}`,attributes:{"next.route":renderOpts.page}},async()=>renderDocument());if(!documentResult)return new RenderResult(null,{metadata,contentType:constants.HTML_CONTENT_TYPE_HEADER});let dynamicImportsIds=new Set,dynamicImports=new Set;for(let mod of reactLoadableModules){let manifestItem=reactLoadableManifest[mod];manifestItem&&(dynamicImportsIds.add(manifestItem.id),manifestItem.files.forEach(item=>{dynamicImports.add(item)}))}let docComponentsRendered={},{assetPrefix,defaultLocale,disableOptimizedLoading,domainLocales,locale,locales}=renderOpts,htmlProps={__NEXT_DATA__:{props,page:pathname,query,buildId:sharedContext.buildId,assetPrefix:""===assetPrefix?void 0:assetPrefix,nextExport:!0===nextExport||void 0,autoExport:!0===isAutoExport||void 0,isFallback,isExperimentalCompile,dynamicIds:0===dynamicImportsIds.size?void 0:Array.from(dynamicImportsIds),err:renderOpts.err?function(dev,err){if(dev){let source="server";return source=err[symbolError]||"server",{name:err.name,source,message:strip_ansi_default()(err.message),stack:err.stack,digest:err.digest}}return{name:"Internal Server Error.",message:"500 - Internal Server Error.",statusCode:500}}(!!process.env.__NEXT_DEV_SERVER,renderOpts.err):void 0,gsp:!!getStaticProps||void 0,gssp:!!getServerSideProps||void 0,customServer:sharedContext.customServer,gip:!!hasPageGetInitialProps||void 0,appGip:!defaultAppGetInitialProps||void 0,locale,locales,defaultLocale,domainLocales,isPreview:!0===isPreview||void 0,notFoundSrcPage:notFoundSrcPage&&process.env.__NEXT_DEV_SERVER?notFoundSrcPage:void 0},nonce,buildManifest:filteredBuildManifest,docComponentsRendered,dangerousAsPath:router.asPath,isDevelopment:!!process.env.__NEXT_DEV_SERVER,deploymentId:sharedContext.deploymentId,dynamicImports:Array.from(dynamicImports),dynamicCssManifest:new Set(renderOpts.dynamicCssManifest||[]),assetPrefix,unstable_runtimeJS:void 0,unstable_JsPreload:pageConfig.unstable_JsPreload,assetQueryString:assetQueryString||"",mutableAssetQueryString:mutableAssetQueryString||"",scriptLoader,locale,disableOptimizedLoading,head:documentResult.head,headTags:documentResult.headTags,styles:documentResult.styles,crossOrigin:renderOpts.crossOrigin,optimizeCss:renderOpts.optimizeCss,nextConfigOutput:renderOpts.nextConfigOutput,nextScriptWorkers:renderOpts.nextScriptWorkers,runtime:globalRuntime,largePageDataBytes:renderOpts.largePageDataBytes,nextFontManifest:renderOpts.nextFontManifest,experimentalClientTraceMetadata:renderOpts.experimental.clientTraceMetadata},document=(0,jsx_runtime_namespaceObject.jsx)(HtmlContext.Provider,{value:htmlProps,children:documentResult.documentElement(htmlProps)}),documentHTML=await (0,tracer_.getTracer)().trace(trace_constants.RenderSpan.renderToString,async()=>renderToString(document));{let nonRenderedComponents=[];for(let comp of["Main","Head","NextScript","Html"])docComponentsRendered[comp]||nonRenderedComponents.push(comp);if(nonRenderedComponents.length){let missingComponentList=nonRenderedComponents.map(e=>`<${e} />`).join(", "),plural=1!==nonRenderedComponents.length?"s":"";console.warn(`Your custom Document (pages/_document) did not render all the required subcomponent${plural}.
Missing component${plural}: ${missingComponentList}
Read how to fix here: https://nextjs.org/docs/messages/missing-document-component`)}}let[renderTargetPrefix,renderTargetSuffix]=documentHTML.split("<next-js-internal-body-render-target></next-js-internal-body-render-target>",2),prefix="";documentHTML.startsWith(DOCTYPE)||(prefix+=DOCTYPE);let content=(prefix+=renderTargetPrefix)+documentResult.contentHTML+renderTargetSuffix;return new RenderResult(await postProcessHTML(content,renderOpts),{metadata,contentType:constants.HTML_CONTENT_TYPE_HEADER})}let renderToHTML=(req,res,pathname,query,renderOpts,sharedContext,renderContext)=>renderToHTMLImpl(req,res,pathname,query,renderOpts,renderOpts,sharedContext,renderContext),ServerInsertedHTMLContext=external_react_default().createContext(null);function useServerInsertedHTML(callback){let addInsertedServerHTMLCallback=(0,external_react_namespaceObject.useContext)(ServerInsertedHTMLContext);addInsertedServerHTMLCallback&&addInsertedServerHTMLCallback(callback)}class PagesRouteModule extends RouteModule{constructor(options){super(options),this.components=options.components}render(req,res,context){return renderToHTMLImpl(req,res,context.page,context.query,context.renderOpts,{App:this.components.App,Document:this.components.Document},context.sharedContext,context.renderContext)}}let vendored={contexts:entrypoints_namespaceObject},pages_module=PagesRouteModule})(),module.exports=__webpack_exports__})();
//# sourceMappingURL=pages-turbo.runtime.dev.js.map
\ No newline at end of filepages-turbo...time.prod.js@@ -16,5 +16,5 @@ See more info here: https://nextjs.org/docs/messages/gsp-redirect-during-prerend
To never revalidate, you can set revalidate to \`false\` (only ran once at build-time).
To revalidate as soon as possible, you can set the value to \`1\`.`),"__NEXT_ERROR_CODE",{value:"E311",enumerable:!1,configurable:!0});else e.revalidate>31536e3&&console.warn(`Warning: A page's revalidate option was set to more than a year for ${a.url}. This may have been done in error.
To only run getStaticProps at build-time and not revalidate at runtime, you can set \`revalidate\` to \`false\`!`),t=e.revalidate;else throw Object.defineProperty(Error(`A page's revalidate option must be seconds expressed as a natural number for ${a.url}. Mixed numbers, such as '${e.revalidate}', cannot be used.
-Try changing the value to '${Math.ceil(e.revalidate)}' or using \`Math.ceil()\` if you're computing the value.`),"__NEXT_ERROR_CODE",{value:"E438",enumerable:!1,configurable:!0});else if(!0===e.revalidate)t=1;else if(!1===e.revalidate||void 0===e.revalidate)t=!1;else throw Object.defineProperty(Error(`A page's revalidate option must be seconds expressed as a natural number. Mixed numbers and strings cannot be used. Received '${JSON.stringify(e.revalidate)}' for ${a.url}`),"__NEXT_ERROR_CODE",{value:"E161",enumerable:!1,configurable:!0})}else t=!1;if(h.pageProps=Object.assign({},h.pageProps,"props"in e?e.props:void 0),g.cacheControl={revalidate:t,expire:void 0},g.pageData=h,g.isNotFound)return new e5(null,{metadata:g,contentType:null})}if(R&&(h.__N_SSP=!0),R&&!F){let e,t=!1;try{e=await (0,eL.getTracer)().trace(eU.vr.getServerSideProps,{spanName:`getServerSideProps ${i}`,attributes:{"next.route":i}},async()=>R({req:a,res:n,query:s,resolvedUrl:o.resolvedUrl,...J?{params:C}:void 0,...!1!==d?{draftMode:!0,preview:!0,previewData:d}:void 0,locales:[...o.locales??[]],locale:o.locale,defaultLocale:o.defaultLocale})),g.cacheControl={revalidate:0,expire:void 0}}catch(e){throw"object"==typeof e&&null!==e&&"name"in e&&"message"in e&&"ENOENT"===e.code&&delete e.code,e}if(null==e)throw Object.defineProperty(Error(k.UO),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});e.props instanceof Promise&&(t=!0);let r=Object.keys(e).filter(e=>"props"!==e&&"redirect"!==e&&"notFound"!==e);if(e.unstable_notFound)throw Object.defineProperty(Error(`unstable_notFound has been renamed to notFound, please update the field to continue. Page: ${i}`),"__NEXT_ERROR_CODE",{value:"E516",enumerable:!1,configurable:!0});if(e.unstable_redirect)throw Object.defineProperty(Error(`unstable_redirect has been renamed to redirect, please update the field to continue. Page: ${i}`),"__NEXT_ERROR_CODE",{value:"E284",enumerable:!1,configurable:!0});if(r.length)throw Object.defineProperty(Error(rv("getServerSideProps",r)),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});if("notFound"in e&&e.notFound){if("/404"===i)throw Object.defineProperty(Error('The /404 page can not return notFound in "getStaticProps", please remove it to continue!'),"__NEXT_ERROR_CODE",{value:"E121",enumerable:!1,configurable:!0});return g.isNotFound=!0,new e5(null,{metadata:g,contentType:null})}if("redirect"in e&&"object"==typeof e.redirect&&(ry(e.redirect,a,"getServerSideProps"),e.props={__N_REDIRECT:e.redirect.destination,__N_REDIRECT_STATUS:t2(e.redirect)},void 0!==e.redirect.basePath&&(e.props.__N_REDIRECT_BASE_PATH=e.redirect.basePath),g.isRedirect=!0),t&&(e.props=await e.props),H&&!tH(i,"getServerSideProps",e.props))throw Object.defineProperty(Error("invariant: getServerSideProps did not return valid props. Please report this."),"__NEXT_ERROR_CODE",{value:"E31",enumerable:!1,configurable:!0});h.pageProps=Object.assign({},h.pageProps,e.props),g.pageData=h}if(w&&!U||g.isRedirect)return new e5(JSON.stringify(h),{metadata:g,contentType:k.U2})
992E
;if(F&&(h.pageProps={}),B(n)&&!U)return e5.EMPTY;let eg=b;if(Z&&J){let e,t=(e=eE(eb(i))).startsWith("/index/")&&!A(e)?e.slice(6):"/index"!==e?e:"/";t in eg.pages&&(eg={...eg,pages:{...eg.pages,[t]:[...eg.pages[t],...eg.lowPriorityFiles.filter(e=>e.includes("_buildManifest"))]},lowPriorityFiles:eg.lowPriorityFiles.filter(e=>!e.includes("_buildManifest"))})}let ey=({children:e})=>(0,tj.jsx)("div",{id:"__next",children:e}),ex=async()=>{let e,t,r;async function a(e){let t=async(t={})=>{if(ep.err&&x)return e&&e(N,M),{html:await rf((0,tj.jsx)(ey,{children:(0,tj.jsx)(x,{})})),head:en};let{App:r,Component:a}="function"==typeof t?{App:N,Component:t(M)}:{App:t.enhanceApp?t.enhanceApp(N):N,Component:t.enhanceComponent?t.enhanceComponent(M):M},n=await e(r,a);return await n.allReady,{html:await eG(n),head:en}},r={...ep,renderPage:t},a=await W(I,r);if(B(n)&&!U)return null;if(!a||"string"!=typeof a.html)throw Object.defineProperty(Error(`"${G(I)}.getInitialProps()" should resolve to an object with a "html" prop set with a valid html string`),"__NEXT_ERROR_CODE",{value:"E1039",enumerable:!1,configurable:!0});return{docProps:a,documentCtx:r}}I.__NEXT_BUILTIN_DOCUMENT__;let i=async(e,t)=>{let r,a,n=(r=e||N,a=t||M,ep.err&&x?(0,tj.jsx)(ey,{children:(0,tj.jsx)(x,{})}):(0,tj.jsx)(ey,{children:(0,tj.jsx)(eh,{children:rg(r,a,{...h,router:ee})})}));return await function({ReactDOMServer:e,element:t,streamOptions:r}){return(0,eL.getTracer)().trace(eU.Wc.renderToReadableStream,async()=>e.renderToReadableStream(t,r))}({ReactDOMServer:tk(),element:n})},s=!!I.getInitialProps,[o,l]=await Promise.all([rf((r=ea.styles(),ea.flush(),(0,tj.jsx)(tj.Fragment,{children:r}))),(async()=>{if(s){if(null===(e=await a(i)))return null;let{docProps:t}=e;return t.html}{e={};let t=await i(N,M);return await t.allReady,eG(t)}})()]);if(null===l)return null;let{docProps:c}=e||{};return s?(t=c.styles,en=c.head):(t=ea.styles(),ea.flush()),{contentHTML:o+l,documentElement:e=>(0,tj.jsx)(I,{...e,...c}),head:en,headTags:[],styles:t}};(0,eL.getTracer)().setRootSpanAttribute("next.route",o.page);let e_=await (0,eL.getTracer)().trace(eU.vr.renderDocument,{spanName:`render route (pages) ${o.page}`,attributes:{"next.route":o.page}},async()=>ex());if(!e_)return new e5(null,{metadata:g,contentType:k.j9});let eP=new Set,eR=new Set;for(let e of es){let t=E[e];t&&(eP.add(t.id),t.files.forEach(e=>{eR.add(e)}))}let{assetPrefix:ew,defaultLocale:eC,disableOptimizedLoading:eS,domainLocales:eO,locale:eT,locales:eA}=o,ej={__NEXT_DATA__:{props:h,page:i,query:s,buildId:c.buildId,assetPrefix:""===ew?void 0:ew,nextExport:!0===em||void 0,autoExport:!0===Z||void 0,isFallback:F,isExperimentalCompile:D,dynamicIds:0===eP.size?void 0:Array.from(eP),err:o.err?function(e,t){if(e){let e="server";return e=t[ru]||"server",{name:t.name,source:e,message:t9()(t.message),stack:t.stack,digest:t.digest}}return{name:"Internal Server Error.",message:"500 - Internal Server Error.",statusCode:500}}(!1,o.err):void 0,gsp:!!_||void 0,gssp:!!R||void 0,customServer:c.customServer,gip:!!X||void 0,appGip:!z||void 0,locale:eT,locales:eA,defaultLocale:eC,domainLocales:eO,isPreview:!0===p||void 0,notFoundSrcPage:void 0},nonce:ec,buildManifest:eg,docComponentsRendered:{},dangerousAsPath:ee.asPath,isDevelopment:!1,deploymentId:c.deploymentId,dynamicImports:Array.from(eR),dynamicCssManifest:new Set(o.dynamicCssManifest||[]),assetPrefix:ew,unstable_runtimeJS:y.unstable_runtimeJS,unstable_JsPreload:y.unstable_JsPreload,assetQueryString:m||"",mutableAssetQueryString:f||"",scriptLoader:er,locale:eT,disableOptimizedLoading:eS,head:e_.head,headTags:e_.headTags,styles:e_.styles,crossOrigin:o.crossOrigin,optimizeCss:o.optimizeCss,nextConfigOutput:o.nextConfigOutput,nextScriptWorkers:o.nextScriptWorkers,runtime:j,largePageDataBytes:o.largePageDataBytes,nextFontManifest:o.nextFontManifest,experimentalClientTraceMetadata:o.experimental.clientTraceMetadata},eD=(0,tj.jsx)(tY.Provider,{value:ej,children:e_.documentElement(ej)}),e$=await (0,eL.getTracer)().trace(eU.vr.renderToString,async()=>rf(eD)),[eN,ek]=e$.split("<next-js-internal-body-render-target></next-js-internal-body-render-target>",2),eI="";e$.startsWith(rh)||(eI+=rh);let eM=(eI+=eN)+e_.contentHTML+ek;return new e5(await r(eM,o),{metadata:g,contentType:k.j9})}let rE=(e,t,r,a,n,i,s)=>rb(e,t,r,a,n,n,i,s),rx=t$().createContext(null);function r_(e){let t=(0,tD.useContext)(rx);t&&t(e)}class rP extends tA{constructor(e){super(e),this.components=e.components}render(e,t,r){return rb(e,t,r.page,r.query,r.renderOpts,{App:this.components.App,Document:this.components.Document},r.sharedContext,r.renderContext)}}let rR={contexts:y},rw=rP})(),module.exports=i})();
+Try changing the value to '${Math.ceil(e.revalidate)}' or using \`Math.ceil()\` if you're computing the value.`),"__NEXT_ERROR_CODE",{value:"E438",enumerable:!1,configurable:!0});else if(!0===e.revalidate)t=1;else if(!1===e.revalidate||void 0===e.revalidate)t=!1;else throw Object.defineProperty(Error(`A page's revalidate option must be seconds expressed as a natural number. Mixed numbers and strings cannot be used. Received '${JSON.stringify(e.revalidate)}' for ${a.url}`),"__NEXT_ERROR_CODE",{value:"E161",enumerable:!1,configurable:!0})}else t=!1;if(h.pageProps=Object.assign({},h.pageProps,"props"in e?e.props:void 0),g.cacheControl={revalidate:t,expire:void 0},g.pageData=h,g.isNotFound)return new e5(null,{metadata:g,contentType:null})}if(R&&(h.__N_SSP=!0),R&&!F){let e,t=!1;try{e=await (0,eL.getTracer)().trace(eU.vr.getServerSideProps,{spanName:`getServerSideProps ${i}`,attributes:{"next.route":i}},async()=>R({req:a,res:n,query:s,resolvedUrl:o.resolvedUrl,...J?{params:C}:void 0,...!1!==d?{draftMode:!0,preview:!0,previewData:d}:void 0,locales:[...o.locales??[]],locale:o.locale,defaultLocale:o.defaultLocale})),g.cacheControl={revalidate:0,expire:void 0}}catch(e){throw"object"==typeof e&&null!==e&&"name"in e&&"message"in e&&"ENOENT"===e.code&&delete e.code,e}if(null==e)throw Object.defineProperty(Error(k.UO),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});e.props instanceof Promise&&(t=!0);let r=Object.keys(e).filter(e=>"props"!==e&&"redirect"!==e&&"notFound"!==e);if(e.unstable_notFound)throw Object.defineProperty(Error(`unstable_notFound has been renamed to notFound, please update the field to continue. Page: ${i}`),"__NEXT_ERROR_CODE",{value:"E516",enumerable:!1,configurable:!0});if(e.unstable_redirect)throw Object.defineProperty(Error(`unstable_redirect has been renamed to redirect, please update the field to continue. Page: ${i}`),"__NEXT_ERROR_CODE",{value:"E284",enumerable:!1,configurable:!0});if(r.length)throw Object.defineProperty(Error(rv("getServerSideProps",r)),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});if("notFound"in e&&e.notFound){if("/404"===i)throw Object.defineProperty(Error('The /404 page can not return notFound in "getStaticProps", please remove it to continue!'),"__NEXT_ERROR_CODE",{value:"E121",enumerable:!1,configurable:!0});return g.isNotFound=!0,new e5(null,{metadata:g,contentType:null})}if("redirect"in e&&"object"==typeof e.redirect&&(ry(e.redirect,a,"getServerSideProps"),e.props={__N_REDIRECT:e.redirect.destination,__N_REDIRECT_STATUS:t2(e.redirect)},void 0!==e.redirect.basePath&&(e.props.__N_REDIRECT_BASE_PATH=e.redirect.basePath),g.isRedirect=!0),t&&(e.props=await e.props),H&&!tH(i,"getServerSideProps",e.props))throw Object.defineProperty(Error("invariant: getServerSideProps did not return valid props. Please report this."),"__NEXT_ERROR_CODE",{value:"E31",enumerable:!1,configurable:!0});h.pageProps=Object.assign({},h.pageProps,e.props),g.pageData=h}if(w&&!U||g.isRedirect)return new e5(JSON.stringify(h),{metadata:g,contentType:k.U2});if(F&&(h.pageProps={}),B(n)&&!U)return e5.EMPTY;let eg=b;if(Z&&J){let e,t=(e=eE(eb(i))).startsWith("/index/")&&!A(e)?e.slice(6):"/index"!==e?e:"/";t in eg.pages&&(eg={...eg,pages:{...eg.pages,[t]:[...eg.pages[t],...eg.lowPriorityFiles.filter(e=>e.includes("_buildManifest"))]},lowPriorityFiles:eg.lowPriorityFiles.filter(e=>!e.includes("_buildManifest"))})}let ey=({children:e})=>(0,tj.jsx)("div",{id:"__next",children:e}),ex=async()=>{let e,t,r,a;async function i(e){let t=async(t={})=>{if(ep.err&&x)return e&&e(N,M),{html:await rf((0,tj.jsx)(ey,{children:(0,tj.jsx)(x,{})})),head:en};let{App:r,Component:a}="function"==typeof t?{App:N,Component:t(M)}:{App:t.enhanceApp?t.enhanceApp(N):N,Component:t.enhanceComponent?t.enhanceComponent(M):M},n=await e(r,a);return await n.allReady,{html:await eG(n),head:en}},r={...ep,renderPage:t},a=await W(I,r);if(B(n)&&!U)return null;if(!a||"string"!=typeof a.html)throw Object.defineProperty(Error(`"${G(I)}.getInitialProps()" should resolve to an object with a "html" prop set with a valid html string`),"__NEXT_ERROR_CODE",{value:"E1039",enumerable:!1,configurable:!0});return{docProps:a,documentCtx:r}}I.__NEXT_BUILTIN_DOCUMENT__;let s=async(e,t)=>{let r,a,n=(r=e||N,a=t||M,ep.err&&x?(0,tj.jsx)(ey,{children:(0,tj.jsx)(x,{})}):(0,tj.jsx)(ey,{children:(0,tj.jsx)(eh,{children:rg(r,a,{...h,router:ee})})}));return await function({ReactDOMServer:e,element:t,streamOptions:r}){return(0,eL.getTracer)().trace(eU.Wc.renderToReadableStream,async()=>e.renderToReadableStream(t,r))}({ReactDOMServer:tk(),element:n})},o=!!I.getInitialProps;if(o)if(null===(e=await i(s)))t=null;else{let{docProps:r}=e;t=r.html}else{e={};let r=await s(N,M);await r.allReady,t=await eG(r)}let{docProps:l}=e||{};o?(r=l.styles,en=l.head):(r=ea.styles(),ea.flush());let c=await rf((a=ea.styles(),ea.flush(),(0,tj.jsx)(tj.Fragment,{children:a})));return null===t?null:{contentHTML:c+t,documentElement:e=>(0,tj.jsx)(I,{...e,...l}),head:en,headTags:[],styles:r}};(0,eL.getTracer)().setRootSpanAttribute("next.route",o.page);let e_=await (0,eL.getTracer)().trace(eU.vr.renderDocument,{spanName:`render route (pages) ${o.page}`,attributes:{"next.route":o.page}},async()=>ex());if(!e_)return new e5(null,{metadata:g,contentType:k.j9});let eP=new Set,eR=new Set;for(let e of es){let t=E[e];t&&(eP.add(t.id),t.files.forEach(e=>{eR.add(e)}))}let{assetPrefix:ew,defaultLocale:eC,disableOptimizedLoading:eS,domainLocales:eO,locale:eT,locales:eA}=o,ej={__NEXT_DATA__:{props:h,page:i,query:s,buildId:c.buildId,assetPrefix:""===ew?void 0:ew,nextExport:!0===em||void 0,autoExport:!0===Z||void 0,isFallback:F,isExperimentalCompile:D,dynamicIds:0===eP.size?void 0:Array.from(eP),err:o.err?function(e,t){if(e){let e="server";return e=t[ru]||"server",{name:t.name,source:e,message:t9()(t.message),stack:t.stack,digest:t.digest}}return{name:"Internal Server Error.",message:"500 - Internal Server Error.",statusCode:500}}(!1,o.err):void 0,gsp:!!_||void 0,gssp:!!R||void 0,customServer:c.customServer,gip:!!X||void 0,appGip:!z||void 0,locale:eT,locales:eA,defaultLocale:eC,domainLocales:eO,isPreview:!0===p||void 0,notFoundSrcPage:void 0},nonce:ec,buildManifest:eg,docComponentsRendered:{},dangerousAsPath:ee.asPath,isDevelopment:!1,deploymentId:c.deploymentId,dynamicImports:Array.from(eR),dynamicCssManifest:new Set(o.dynamicCssManifest||[]),assetPrefix:ew,unstable_runtimeJS:y.unstable_runtimeJS,unstable_JsPreload:y.unstable_JsPreload,assetQueryString:m||"",mutableAssetQueryString:f||"",scriptLoader:er,locale:eT,disableOptimizedLoading:eS,head:e_.head,headTags:e_.headTags,styles:e_.styles,crossOrigin:o.crossOrigin,optimizeCss:o.optimizeCss,nextConfigOutput:o.nextConfigOutput,nextScriptWorkers:o.nextScriptWorkers,runtime:j,largePageDataBytes:o.largePageDataBytes,nextFontManifest:o.nextFontManifest,experimentalClientTraceMetadata:o.experimental.clientTraceMetadata},eD=(0,tj.jsx)(tY.Provider,{value:ej,children:e_.documentElement(ej)}),e$=await (0,eL.getTracer)().trace(eU.vr.renderToString,async()=>rf(eD)),[eN,ek]=e$.split("<next-js-internal-body-render-target></next-js-internal-body-render-target>",2),eI="";e$.startsWith(rh)||(eI+=rh);let eM=(eI+=eN)+e_.contentHTML+ek;return new e5(await r(eM,o),{metadata:g,contentType:k.j9})}let rE=(e,t,r,a,n,i,s)=>rb(e,t,r,a,n,n,i,s),rx=t$().createContext(null);function r_(e){let t=(0,tD.useContext)(rx);t&&t(e)}class rP extends tA{constructor(e){super(e),this.components=e.components}render(e,t,r){return rb(e,t,r.page,r.query,r.renderOpts,{App:this.components.App,Document:this.components.Document},r.sharedContext,r.renderContext)}}let rR={contexts:y},rw=rP})(),module.exports=i})();
//# sourceMappingURL=pages-turbo.runtime.prod.js.map
\ No newline at end of filepages.runtime.dev.js@@ -19,7 +19,7 @@ To revalidate as soon as possible, you can set the value to \`1\`.`),"__NEXT_ERR
To only run getStaticProps at build-time and not revalidate at runtime, you can set \`revalidate\` to \`false\`!`),revalidate=data.revalidate;else throw Object.defineProperty(Error(`A page's revalidate option must be seconds expressed as a natural number for ${req.url}. Mixed numbers, such as '${data.revalidate}', cannot be used.
Try changing the value to '${Math.ceil(data.revalidate)}' or using \`Math.ceil()\` if you're computing the value.`),"__NEXT_ERROR_CODE",{value:"E438",enumerable:!1,configurable:!0});else if(!0===data.revalidate)revalidate=1;else if(!1===data.revalidate||void 0===data.revalidate)revalidate=!1;else throw Object.defineProperty(Error(`A page's revalidate option must be seconds expressed as a natural number. Mixed numbers and strings cannot be used. Received '${JSON.stringify(data.revalidate)}' for ${req.url}`),"__NEXT_ERROR_CODE",{value:"E161",enumerable:!1,configurable:!0})}else revalidate=!1;if(props.pageProps=Object.assign({},props.pageProps,"props"in data?data.props:void 0),metadata.cacheControl={revalidate,expire:void 0},metadata.pageData=props,metadata.isNotFound)return new RenderResult(null,{metadata,contentType:null})}if(getServerSideProps&&(props.__N_SSP=!0),getServerSideProps&&!isFallback){let data,canAccessRes=!0,resOrProxy=res,deferredContent=!1;resOrProxy=new Proxy(res,{get:function(obj,prop){if(!canAccessRes){let message=`You should not access 'res' after getServerSideProps resolves.
Read more: https://nextjs.org/docs/messages/gssp-no-mutating-res`;if(deferredContent)throw Object.defineProperty(Error(message),"__NEXT_ERROR_CODE",{value:"E1028",enumerable:!1,configurable:!0});warn(message)}return reflect.ReflectAdapter.get(obj,prop,res)}});try{data=await (0,tracer_.getTracer)().trace(trace_constants.RenderSpan.getServerSideProps,{spanName:`getServerSideProps ${pathname}`,attributes:{"next.route":pathname}},async()=>getServerSideProps({req:req,res:resOrProxy,query,resolvedUrl:renderOpts.resolvedUrl,...pageIsDynamic?{params}:void 0,...!1!==previewData?{draftMode:!0,preview:!0,previewData:previewData}:void 0,locales:[...renderOpts.locales??[]],locale:renderOpts.locale,defaultLocale:renderOpts.defaultLocale})),canAccessRes=!1,metadata.cacheControl={revalidate:0,expire:void 0}}catch(serverSidePropsError){throw"object"==typeof serverSidePropsError&&null!==serverSidePropsError&&"name"in serverSidePropsError&&"message"in serverSidePropsError&&"ENOENT"===serverSidePropsError.code&&delete serverSidePropsError.code,serverSidePropsError}if(null==data)throw Object.defineProperty(Error(constants.GSSP_NO_RETURNED_VALUE),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});data.props instanceof Promise&&(
7292
deferredContent=!0);let invalidKeys=Object.keys(data).filter(key=>"props"!==key&&"redirect"!==key&&"notFound"!==key);if(data.unstable_notFound)throw Object.defineProperty(Error(`unstable_notFound has been renamed to notFound, please update the field to continue. Page: ${pathname}`),"__NEXT_ERROR_CODE",{value:"E516",enumerable:!1,configurable:!0});if(data.unstable_redirect)throw Object.defineProperty(Error(`unstable_redirect has been renamed to redirect, please update the field to continue. Page: ${pathname}`),"__NEXT_ERROR_CODE",{value:"E284",enumerable:!1,configurable:!0});if(invalidKeys.length)throw Object.defineProperty(Error(invalidKeysMsg("getServerSideProps",invalidKeys)),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});if("notFound"in data&&data.notFound){if("/404"===pathname)throw Object.defineProperty(Error('The /404 page can not return notFound in "getStaticProps", please remove it to continue!'),"__NEXT_ERROR_CODE",{value:"E121",enumerable:!1,configurable:!0});return metadata.isNotFound=!0,new RenderResult(null,{metadata,contentType:null})}if("redirect"in data&&"object"==typeof data.redirect&&(checkRedirectValues(data.redirect,req,"getServerSideProps"),data.props={__N_REDIRECT:data.redirect.destination,__N_REDIRECT_STATUS:getRedirectStatus(data.redirect)},void 0!==data.redirect.basePath&&(data.props.__N_REDIRECT_BASE_PATH=data.redirect.basePath),metadata.isRedirect=!0),deferredContent&&(data.props=await data.props),(process.env.__NEXT_DEV_SERVER||isBuildTimeSSG)&&!isSerializableProps(pathname,"getServerSideProps",data.props))throw Object.defineProperty(Error("invariant: getServerSideProps did not return valid props. Please report this."),"__NEXT_ERROR_CODE",{value:"E31",enumerable:!1,configurable:!0});props.pageProps=Object.assign({},props.pageProps,data.props),metadata.pageData=props}if(!isSSG&&!getServerSideProps&&Object.keys((null==props?void 0:props.pageProps)||{}).includes("url")&&console.warn(`The prop \`url\` is a reserved prop in Next.js for legacy reasons and will be overridden on page ${pathname}
-See more info here: https://nextjs.org/docs/messages/reserved-page-prop`),isNextDataRequest&&!isSSG||metadata.isRedirect)return new RenderResult(JSON.stringify(props),{metadata,contentType:constants.JSON_CONTENT_TYPE_HEADER});if(isFallback&&(props.pageProps={}),isResSent(res)&&!isSSG)return RenderResult.EMPTY;let filteredBuildManifest=buildManifest;if(isAutoExport&&pageIsDynamic){let _page,page=(_page=normalizePathSep(normalizePagePath(pathname))).startsWith("/index/")&&!isDynamicRoute(_page)?_page.slice(6):"/index"!==_page?_page:"/";page in filteredBuildManifest.pages&&(filteredBuildManifest={...filteredBuildManifest,pages:{...filteredBuildManifest.pages,[page]:[...filteredBuildManifest.pages[page],...filteredBuildManifest.lowPriorityFiles.filter(f=>f.includes("_buildManifest"))]},lowPriorityFiles:filteredBuildManifest.lowPriorityFiles.filter(f=>!f.includes("_buildManifest"))})}let Body=({children})=>(0,jsx_runtime_namespaceObject.jsx)("div",{id:"__next",children:children}),renderDocument=async()=>{let documentInitialPropsRes,styles,styles1;async function loadDocumentInitialProps(renderShell){let renderPage=async(options={})=>{if(ctx.err&&ErrorDebug)return renderShell&&renderShell(App,Component),{html:await renderToString((0,jsx_runtime_namespaceObject.jsx)(Body,{children:(0,jsx_runtime_namespaceObject.jsx)(ErrorDebug,{})})),head};if(process.env.__NEXT_DEV_SERVER&&(props.router||props.Component))throw Object.defineProperty(Error("'router' and 'Component' can not be returned in getInitialProps from _app.js https://nextjs.org/docs/messages/cant-override-next-props"),"__NEXT_ERROR_CODE",{value:"E230",enumerable:!1,configurable:!0});let{App:EnhancedApp,Component:EnhancedComponent}="function"==typeof options?{App:App,Component:options(Component)}:{App:options.enhanceApp?options.enhanceApp(App):App,Component:options.enhanceComponent?options.enhanceComponent(Component):Component},stream=await renderShell(EnhancedApp,EnhancedComponent);return await stream.allReady,{html:await streamToString(stream),head}},documentCtx={...ctx,renderPage},docProps=await loadGetInitialProps(Document,documentCtx);if(isResSent(res)&&!isSSG)return null;if(!docProps||"string"!=typeof docProps.html)throw Object.defineProperty(Error(`"${getDisplayName(Document)}.getInitialProps()" should resolve to an object with a "html" prop set with a valid html string`),"__NEXT_ERROR_CODE",{value:"E1039",enumerable:!1,configurable:!0});return{docProps,documentCtx}}Document.__NEXT_BUILTIN_DOCUMENT__;let renderShell=async(EnhancedApp,EnhancedComponent)=>{let EnhancedApp1,EnhancedComponent1,content=(EnhancedApp1=EnhancedApp||App,EnhancedComponent1=EnhancedComponent||Component,ctx.err&&ErrorDebug?(0,jsx_runtime_namespaceObject.jsx)(Body,{children:(0,jsx_runtime_namespaceObject.jsx)(ErrorDebug,{})}):(0,jsx_runtime_namespaceObject.jsx)(Body,{children:(0,jsx_runtime_namespaceObject.jsx)(AppContainerWithIsomorphicFiberStructure,{children:renderPageTree(EnhancedApp1,EnhancedComponent1,{...props,router})})}));return await function({ReactDOMServer,element,streamOptions}){return(0,tracer_.getTracer)().trace(trace_constants.AppRenderSpan.renderToReadableStream,async()=>ReactDOMServer.renderToReadableStream(element,streamOptions))}({ReactDOMServer:ReactDOMServerPages_default(),element:content})},hasDocumentGetInitialProps=!!Document.getInitialProps,[rawStyledJsxInsertedHTML,content]=await Promise.all([renderToString((styles1=jsxStyleRegistry.styles(),jsxStyleRegistry.flush(),(0,jsx_runtime_namespaceObject.jsx)(jsx_runtime_namespaceObject.Fragment,{children:styles1}))),(async()=>{if(hasDocumentGetInitialProps){if(null===(documentInitialPropsRes=await loadDocumentInitialProps(renderShell)))return null;let{docProps}=documentInitialPropsRes;return docProps.html}{documentInitialPropsRes={};let stream=await renderShell(App,Component);return await stream.allReady,streamToString(stream)}})()]);if(null===content)return null;let{docProps}=documentInitialPropsRes||{};return hasDocumentGetInitialProps?(styles=docProps.styles,head=docProps.head):(styles=jsxStyleRegistry.styles(),jsxStyleRegistry.flush()),{contentHTML:rawStyledJsxInsertedHTML+content,documentElement:htmlProps=>(0,jsx_runtime_namespaceObject.jsx)(Document,{...htmlProps,...docProps}),head,headTags:[],styles}};(0,tracer_.getTracer)().setRootSpanAttribute("next.route",renderOpts.page);let documentResult=await (0,tracer_.getTracer)().trace(trace_constants.RenderSpan.renderDocument,{spanName:`render route (pages) ${renderOpts.page}`,attributes:{"next.route":renderOpts.page}},async()=>renderDocument());if(!documentResult)return new RenderResult(null,{metadata,contentType:constants.HTML_CONTENT_TYPE_HEADER});let dynamicImportsIds=new Set,dynamicImports=new Set;for(let mod of reactLoadableModules){let manifestItem=reactLoadableManifest[mod];manifestItem&&(dynamicImportsIds.add(manifestItem.id),manifestItem.files.forEach(item=>{dynamicImports.add(item)}))}let docComponentsRendered={},{assetPrefix,defaultLocale,disableOptimizedLoading,domainLocales,locale,locales}=renderOpts,htmlProps={__NEXT_DATA__:{props,page:pathname,query,buildId:sharedContext.buildId,assetPrefix:""===assetPrefix?void 0:assetPrefix,nextExport:!0===nextExport||void 0,autoExport:!0===isAutoExport||void 0,isFallback,isExperimentalCompile,dynamicIds:0===dynamicImportsIds.size?void 0:Array.from(dynamicImportsIds),err:renderOpts.err?function(dev,err){if(dev){let source="server";return source=err[symbolError]||"server",{name:err.name,source,message:strip_ansi_default()(err.message),stack:err.stack,digest:err.digest}}return{name:"Internal Server Error.",message:"500 - Internal Server Error.",statusCode:500}}(!!process.env.__NEXT_DEV_SERVER,renderOpts.err):void 0,gsp:!!getStaticProps||void 0,gssp:!!getServerSideProps||void 0,customServer:sharedContext.customServer,gip:!!hasPageGetInitialProps||void 0,appGip:!defaultAppGetInitialProps||void 0,locale,locales,defaultLocale,domainLocales,isPreview:!0===isPreview||void 0,notFoundSrcPage:notFoundSrcPage&&process.env.__NEXT_DEV_SERVER?notFoundSrcPage:void 0},nonce,buildManifest:filteredBuildManifest,docComponentsRendered,dangerousAsPath:router.asPath,isDevelopment:!!process.env.__NEXT_DEV_SERVER,deploymentId:sharedContext.deploymentId,dynamicImports:Array.from(dynamicImports),dynamicCssManifest:new Set(renderOpts.dynamicCssManifest||[]),assetPrefix,unstable_runtimeJS:void 0,unstable_JsPreload:pageConfig.unstable_JsPreload,assetQueryString:assetQueryString||"",mutableAssetQueryString:mutableAssetQueryString||"",scriptLoader,locale,disableOptimizedLoading,head:documentResult.head,headTags:documentResult.headTags,styles:documentResult.styles,crossOrigin:renderOpts.crossOrigin,optimizeCss:renderOpts.optimizeCss,nextConfigOutput:renderOpts.nextConfigOutput,nextScriptWorkers:renderOpts.nextScriptWorkers,runtime:globalRuntime,largePageDataBytes:renderOpts.largePageDataBytes,nextFontManifest:renderOpts.nextFontManifest,experimentalClientTraceMetadata:renderOpts.experimental.clientTraceMetadata},document=(0,jsx_runtime_namespaceObject.jsx)(HtmlContext.Provider,{value:htmlProps,children:documentResult.documentElement(htmlProps)}),documentHTML=await (0,tracer_.getTracer)().trace(trace_constants.RenderSpan.renderToString,async()=>renderToString(document));{let nonRenderedComponents=[];for(let comp of["Main","Head","NextScript","Html"])docComponentsRendered[comp]||nonRenderedComponents.push(comp);if(nonRenderedComponents.length){let missingComponentList=nonRenderedComponents.map(e=>`<${e} />`).join(", "),plural=1!==nonRenderedComponents.length?"s":"";console.warn(`Your custom Document (pages/_document) did not render all the required subcomponent${plural}.
+See more info here: https://nextjs.org/docs/messages/reserved-page-prop`),isNextDataRequest&&!isSSG||metadata.isRedirect)return new RenderResult(JSON.stringify(props),{metadata,contentType:constants.JSON_CONTENT_TYPE_HEADER});if(isFallback&&(props.pageProps={}),isResSent(res)&&!isSSG)return RenderResult.EMPTY;let filteredBuildManifest=buildManifest;if(isAutoExport&&pageIsDynamic){let _page,page=(_page=normalizePathSep(normalizePagePath(pathname))).startsWith("/index/")&&!isDynamicRoute(_page)?_page.slice(6):"/index"!==_page?_page:"/";page in filteredBuildManifest.pages&&(filteredBuildManifest={...filteredBuildManifest,pages:{...filteredBuildManifest.pages,[page]:[...filteredBuildManifest.pages[page],...filteredBuildManifest.lowPriorityFiles.filter(f=>f.includes("_buildManifest"))]},lowPriorityFiles:filteredBuildManifest.lowPriorityFiles.filter(f=>!f.includes("_buildManifest"))})}let Body=({children})=>(0,jsx_runtime_namespaceObject.jsx)("div",{id:"__next",children:children}),renderDocument=async()=>{let documentInitialPropsRes,content,styles,styles1;async function loadDocumentInitialProps(renderShell){let renderPage=async(options={})=>{if(ctx.err&&ErrorDebug)return renderShell&&renderShell(App,Component),{html:await renderToString((0,jsx_runtime_namespaceObject.jsx)(Body,{children:(0,jsx_runtime_namespaceObject.jsx)(ErrorDebug,{})})),head};if(process.env.__NEXT_DEV_SERVER&&(props.router||props.Component))throw Object.defineProperty(Error("'router' and 'Component' can not be returned in getInitialProps from _app.js https://nextjs.org/docs/messages/cant-override-next-props"),"__NEXT_ERROR_CODE",{value:"E230",enumerable:!1,configurable:!0});let{App:EnhancedApp,Component:EnhancedComponent}="function"==typeof options?{App:App,Component:options(Component)}:{App:options.enhanceApp?options.enhanceApp(App):App,Component:options.enhanceComponent?options.enhanceComponent(Component):Component},stream=await renderShell(EnhancedApp,EnhancedComponent);return await stream.allReady,{html:await streamToString(stream),head}},documentCtx={...ctx,renderPage},docProps=await loadGetInitialProps(Document,documentCtx);if(isResSent(res)&&!isSSG)return null;if(!docProps||"string"!=typeof docProps.html)throw Object.defineProperty(Error(`"${getDisplayName(Document)}.getInitialProps()" should resolve to an object with a "html" prop set with a valid html string`),"__NEXT_ERROR_CODE",{value:"E1039",enumerable:!1,configurable:!0});return{docProps,documentCtx}}Document.__NEXT_BUILTIN_DOCUMENT__;let renderShell=async(EnhancedApp,EnhancedComponent)=>{let EnhancedApp1,EnhancedComponent1,content=(EnhancedApp1=EnhancedApp||App,EnhancedComponent1=EnhancedComponent||Component,ctx.err&&ErrorDebug?(0,jsx_runtime_namespaceObject.jsx)(Body,{children:(0,jsx_runtime_namespaceObject.jsx)(ErrorDebug,{})}):(0,jsx_runtime_namespaceObject.jsx)(Body,{children:(0,jsx_runtime_namespaceObject.jsx)(AppContainerWithIsomorphicFiberStructure,{children:renderPageTree(EnhancedApp1,EnhancedComponent1,{...props,router})})}));return await function({ReactDOMServer,element,streamOptions}){return(0,tracer_.getTracer)().trace(trace_constants.AppRenderSpan.renderToReadableStream,async()=>ReactDOMServer.renderToReadableStream(element,streamOptions))}({ReactDOMServer:ReactDOMServerPages_default(),element:content})},hasDocumentGetInitialProps=!!Document.getInitialProps;if(hasDocumentGetInitialProps)if(null===(documentInitialPropsRes=await loadDocumentInitialProps(renderShell)))content=null;else{let{docProps}=documentInitialPropsRes;content=docProps.html}else{documentInitialPropsRes={};let stream=await renderShell(App,Component);await stream.allReady,content=await streamToString(stream)}let{docProps}=documentInitialPropsRes||{};hasDocumentGetInitialProps?(styles=docProps.styles,head=docProps.head):(styles=jsxStyleRegistry.styles(),jsxStyleRegistry.flush());let rawStyledJsxInsertedHTML=await renderToString((styles1=jsxStyleRegistry.styles(),jsxStyleRegistry.flush(),(0,jsx_runtime_namespaceObject.jsx)(jsx_runtime_namespaceObject.Fragment,{children:styles1})));return null===content?null:{contentHTML:rawStyledJsxInsertedHTML+content,documentElement:htmlProps=>(0,jsx_runtime_namespaceObject.jsx)(Document,{...htmlProps,...docProps}),head,headTags:[],styles}};(0,tracer_.getTracer)().setRootSpanAttribute("next.route",renderOpts.page);let documentResult=await (0,tracer_.getTracer)().trace(trace_constants.RenderSpan.renderDocument,{spanName:`render route (pages) ${renderOpts.page}`,attributes:{"next.route":renderOpts.page}},async()=>renderDocument());if(!documentResult)return new RenderResult(null,{metadata,contentType:constants.HTML_CONTENT_TYPE_HEADER});let dynamicImportsIds=new Set,dynamicImports=new Set;for(let mod of reactLoadableModules){let manifestItem=reactLoadableManifest[mod];manifestItem&&(dynamicImportsIds.add(manifestItem.id),manifestItem.files.forEach(item=>{dynamicImports.add(item)}))}let docComponentsRendered={},{assetPrefix,defaultLocale,disableOptimizedLoading,domainLocales,locale,locales}=renderOpts,htmlProps={__NEXT_DATA__:{props,page:pathname,query,buildId:sharedContext.buildId,assetPrefix:""===assetPrefix?void 0:assetPrefix,nextExport:!0===nextExport||void 0,autoExport:!0===isAutoExport||void 0,isFallback,isExperimentalCompile,dynamicIds:0===dynamicImportsIds.size?void 0:Array.from(dynamicImportsIds),err:renderOpts.err?function(dev,err){if(dev){let source="server";return source=err[symbolError]||"server",{name:err.name,source,message:strip_ansi_default()(err.message),stack:err.stack,digest:err.digest}}return{name:"Internal Server Error.",message:"500 - Internal Server Error.",statusCode:500}}(!!process.env.__NEXT_DEV_SERVER,renderOpts.err):void 0,gsp:!!getStaticProps||void 0,gssp:!!getServerSideProps||void 0,customServer:sharedContext.customServer,gip:!!hasPageGetInitialProps||void 0,appGip:!defaultAppGetInitialProps||void 0,locale,locales,defaultLocale,domainLocales,isPreview:!0===isPreview||void 0,notFoundSrcPage:notFoundSrcPage&&process.env.__NEXT_DEV_SERVER?notFoundSrcPage:void 0},nonce,buildManifest:filteredBuildManifest,docComponentsRendered,dangerousAsPath:router.asPath,isDevelopment:!!process.env.__NEXT_DEV_SERVER,deploymentId:sharedContext.deploymentId,dynamicImports:Array.from(dynamicImports),dynamicCssManifest:new Set(renderOpts.dynamicCssManifest||[]),assetPrefix,unstable_runtimeJS:void 0,unstable_JsPreload:pageConfig.unstable_JsPreload,assetQueryString:assetQueryString||"",mutableAssetQueryString:mutableAssetQueryString||"",scriptLoader,locale,disableOptimizedLoading,head:documentResult.head,headTags:documentResult.headTags,styles:documentResult.styles,crossOrigin:renderOpts.crossOrigin,optimizeCss:renderOpts.optimizeCss,nextConfigOutput:renderOpts.nextConfigOutput,nextScriptWorkers:renderOpts.nextScriptWorkers,runtime:globalRuntime,largePageDataBytes:renderOpts.largePageDataBytes,nextFontManifest:renderOpts.nextFontManifest,experimentalClientTraceMetadata:renderOpts.experimental.clientTraceMetadata},document=(0,jsx_runtime_namespaceObject.jsx)(HtmlContext.Provider,{value:htmlProps,children:documentResult.documentElement(htmlProps)}),documentHTML=await (0,tracer_.getTracer)().trace(trace_constants.RenderSpan.renderToString,async()=>renderToString(document));{let nonRenderedComponents=[];for(let comp of["Main","Head","NextScript","Html"])docComponentsRendered[comp]||nonRenderedComponents.push(comp);if(nonRenderedComponents.length){let missingComponentList=nonRenderedComponents.map(e=>`<${e} />`).join(", "),plural=1!==nonRenderedComponents.length?"s":"";console.warn(`Your custom Document (pages/_document) did not render all the required subcomponent${plural}.
Missing component${plural}: ${missingComponentList}
Read how to fix here: https://nextjs.org/docs/messages/missing-document-component`)}}let[renderTargetPrefix,renderTargetSuffix]=documentHTML.split("<next-js-internal-body-render-target></next-js-internal-body-render-target>",2),prefix="";documentHTML.startsWith(DOCTYPE)||(prefix+=DOCTYPE);let content=(prefix+=renderTargetPrefix)+documentResult.contentHTML+renderTargetSuffix;return new RenderResult(await postProcessHTML(content,renderOpts),{metadata,contentType:constants.HTML_CONTENT_TYPE_HEADER})}let renderToHTML=(req,res,pathname,query,renderOpts,sharedContext,renderContext)=>renderToHTMLImpl(req,res,pathname,query,renderOpts,renderOpts,sharedContext,renderContext),ServerInsertedHTMLContext=external_react_default().createContext(null);function useServerInsertedHTML(callback){let addInsertedServerHTMLCallback=(0,external_react_namespaceObject.useContext)(ServerInsertedHTMLContext);addInsertedServerHTMLCallback&&addInsertedServerHTMLCallback(callback)}class PagesRouteModule extends RouteModule{constructor(options){super(options),this.components=options.components}render(req,res,context){return renderToHTMLImpl(req,res,context.page,context.query,context.renderOpts,{App:this.components.App,Document:this.components.Document},context.sharedContext,context.renderContext)}}let vendored={contexts:entrypoints_namespaceObject},pages_module=PagesRouteModule})(),module.exports=__webpack_exports__})();
//# sourceMappingURL=pages.runtime.dev.js.map
\ No newline at end of filepages.runtime.prod.js@@ -16,5 +16,5 @@ See more info here: https://nextjs.org/docs/messages/gsp-redirect-during-prerend
To never revalidate, you can set revalidate to \`false\` (only ran once at build-time).
To revalidate as soon as possible, you can set the value to \`1\`.`),"__NEXT_ERROR_CODE",{value:"E311",enumerable:!1,configurable:!0});else e.revalidate>31536e3&&console.warn(`Warning: A page's revalidate option was set to more than a year for ${a.url}. This may have been done in error.
To only run getStaticProps at build-time and not revalidate at runtime, you can set \`revalidate\` to \`false\`!`),t=e.revalidate;else throw Object.defineProperty(Error(`A page's revalidate option must be seconds expressed as a natural number for ${a.url}. Mixed numbers, such as '${e.revalidate}', cannot be used.
-Try changing the value to '${Math.ceil(e.revalidate)}' or using \`Math.ceil()\` if you're computing the value.`),"__NEXT_ERROR_CODE",{value:"E438",enumerable:!1,configurable:!0});else if(!0===e.revalidate)t=1;else if(!1===e.revalidate||void 0===e.revalidate)t=!1;else throw Object.defineProperty(Error(`A page's revalidate option must be seconds expressed as a natural number. Mixed numbers and strings cannot be used. Received '${JSON.stringify(e.revalidate)}' for ${a.url}`),"__NEXT_ERROR_CODE",{value:"E161",enumerable:!1,configurable:!0})}else t=!1;if(h.pageProps=Object.assign({},h.pageProps,"props"in e?e.props:void 0),g.cacheControl={revalidate:t,expire:void 0},g.pageData=h,g.isNotFound)return new e5(null,{metadata:g,contentType:null})}if(R&&(h.__N_SSP=!0),R&&!F){let e,t=!1;try{e=await (0,eL.getTracer)().trace(eU.vr.getServerSideProps,{spanName:`getServerSideProps ${i}`,attributes:{"next.route":i}},async()=>R({req:a,res:n,query:s,resolvedUrl:o.resolvedUrl,...J?{params:C}:void 0,...!1!==d?{draftMode:!0,preview:!0,previewData:d}:void 0,locales:[...o.locales??[]],locale:o.locale,defaultLocale:o.defaultLocale})),g.cacheControl={revalidate:0,expire:void 0}}catch(e){throw"object"==typeof e&&null!==e&&"name"in e&&"message"in e&&"ENOENT"===e.code&&delete e.code,e}if(null==e)throw Object.defineProperty(Error(k.UO),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});e.props instanceof Promise&&(t=!0);let r=Object.keys(e).filter(e=>"props"!==e&&"redirect"!==e&&"notFound"!==e);if(e.unstable_notFound)throw Object.defineProperty(Error(`unstable_notFound has been renamed to notFound, please update the field to continue. Page: ${i}`),"__NEXT_ERROR_CODE",{value:"E516",enumerable:!1,configurable:!0});if(e.unstable_redirect)throw Object.defineProperty(Error(`unstable_redirect has been renamed to redirect, please update the field to continue. Page: ${i}`),"__NEXT_ERROR_CODE",{value:"E284",enumerable:!1,configurable:!0});if(r.length)throw Object.defineProperty(Error(rv("getServerSideProps",r)),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});if("notFound"in e&&e.notFound){if("/404"===i)throw Object.defineProperty(Error('The /404 page can not return notFound in "getStaticProps", please remove it to continue!'),"__NEXT_ERROR_CODE",{value:"E121",enumerable:!1,configurable:!0});return g.isNotFound=!0,new e5(null,{metadata:g,contentType:null})}if("redirect"in e&&"object"==typeof e.redirect&&(ry(e.redirect,a,"getServerSideProps"),e.props={__N_REDIRECT:e.redirect.destination,__N_REDIRECT_STATUS:t2(e.redirect)},void 0!==e.redirect.basePath&&(e.props.__N_REDIRECT_BASE_PATH=e.redirect.basePath),g.isRedirect=!0),t&&(e.props=await e.props),H&&!tH(i,"getServerSideProps",e.props))throw Object.defineProperty(Error("invariant: getServerSideProps did not return valid props. Please report this."),"__NEXT_ERROR_CODE",{value:"E31",enumerable:!1,configurable:!0});h.pageProps=Object.assign({},h.pageProps,e.props),g.pageData=h}if(w&&!U||g.isRedirect)return new e5(JSON.stringify(h),{metadata:g,contentType:k.U2});if(F&&(h.pageProps={}),B(n)&&!U)return e5.EMPTY;let eg=b;if(Z&&J){let e,t=(e=eE(eb(i))).startsWith("/index/")&&!A(e)?e.slice(6):"/index"!==e?e:"/";t in eg.pages&&(eg={...eg,pages:{...eg.pages,[t]:[...eg.pages[t],...eg.lowPriorityFiles.filter(e=>e.includes("_buildManifest"))]},lowPriorityFiles:eg.lowPriorityFiles.filter(e=>!e.includes("_buildManifest"))})}let ey=({children:e})=>(0,tj.jsx)("div",{id:"__next",children:e}),ex=async()=>{let e,t,r;async function a(e){let t=async(t={})=>{if(ep.err&&x)return e&&e(N,M),{html:await rf((0,tj.jsx)(ey,{children:(0,tj.jsx)(x,{})})),head:en};let{App:r,Component:a}="function"==typeof t?{App:N,Component:t(M)}:{App:t.enhanceApp?t.enhanceApp(N):N,Component:t.enhanceComponent?t.enhanceComponent(M):M},n=await e(r,a);return await n.allReady,{html:await eG(n),head:en}},r={...ep,renderPage:t},a=await W(I,r);if(B(n)&&!U)return null;if(!a||"string"!=typeof a.html)throw Object.defineProperty(Error(`"${G(I)}.getInitialProps()" should resolve to an object with a "html" prop set with a valid html string`),"__NEXT_ERROR_CODE",{value:"E1039",enumerable:!1,configurable:!0});return{docProps:a,documentCtx:r}}I.__NEXT_BUILTIN_DOCUMENT__;let i=async(e,t)=>{let r,a,n=(r=e||N,a=t||M,ep.err&&x?(0,tj.jsx)(ey,{children:(0,tj.jsx)(x,{})}):(0,tj.jsx)(ey,{children:(0,tj.jsx)(eh,{children:rg(r,a,{...h,router:ee})})}));return await function({ReactDOMServer:e,element:t,streamOptions:r}){return(0,eL.getTracer)().trace(eU.Wc.renderToReadableStream,async()=>e.renderToReadableStream(t,r))}({ReactDOMServer:tk(),element:n})},s=!!I.getInitialProps,[o,l]=await Promise.all([rf((r=ea.styles(),ea.flush(),(0,tj.jsx)(tj.Fragment,{children:r}))),(async()=>{if(s){if(null===(e=await a(i)))return null;let{docProps:t}=e;return t.html}{e={};let t=await i(N,M);return await t.allReady,eG(t)}})()]);if(null===l)return null;let{docProps:c}=e||{};return s?(t=c.styles,en=c.head):(t=ea.styles(),ea.flush()),{contentHTML:o+l,documentElement:e=>(0,tj.jsx)(I,{...e,...c}),head:en,headTags:[],styles:t}};(0,eL.getTracer)().setRootSpanAttribute("next.route",o.page);let e_=await (0,eL.getTracer)().trace(eU.vr.renderDocument,{spanName:`render route (pages) ${o.page}`,attributes:{"next.route":o.page}},async()=>ex());if(!e_)return new e5(null,{metadata:g,contentType:k.j9});let eP=new Set,eR=new Set;for(let e of es){let t=E[e];t&&(eP.add(t.id),t.files.forEach(e=>{eR.add(e)}))}let{assetPrefix:ew,defaultLocale:eC,disableOptimizedLoading:eS,domainLocales:eO,locale:eT,locales:eA}=o,ej={__NEXT_DATA__:{props:h,page:i,query:s,buildId:c.buildId,assetPrefix:""===ew?void 0:ew,nextExport:!0===em||void 0,autoExport:!0===Z||void 0,isFallback:F,isExperimentalCompile:D,dynamicIds:0===eP.size?void 0:Array.from(eP),err:o.err?function(e,t){if(e){let e="server";return e=t[ru]||"server",{name:t.name,source:e,message:t9()(t.message),stack:t.stack,digest:t.digest}}return{name:"Internal Server Error.",message:"500 - Internal Server Error.",statusCode:500}}(!1,o.err):void 0,gsp:!!_||void 0,gssp:!!R||void 0,customServer:c.customServer,gip:!!X||void 0,appGip:!q||void 0,locale:eT,locales:eA,defaultLocale:eC,domainLocales:eO,isPreview:!0===p||void 0,notFoundSrcPage:void 0},nonce:ec,buildManifest:eg,docComponentsRendered:{},dangerousAsPath:ee.asPath,isDevelopment:!1,deploymentId:c.deploymentId,dynamicImports:Array.from(eR),dynamicCssManifest:new Set(o.dynamicCssManifest||[]),assetPrefix:ew,unstable_runtimeJS:y.unstable_runtimeJS,unstable_JsPreload:y.unstable_JsPreload,assetQueryString:m||"",mutableAssetQueryString:f||"",scriptLoader:er,locale:eT,disableOptimizedLoading:eS,head:e_.head,headTags:e_.headTags,styles:e_.styles,crossOrigin:o.crossOrigin,optimizeCss:o.optimizeCss,nextConfigOutput:o.nextConfigOutput,nextScriptWorkers:o.nextScriptWorkers,runtime:j,largePageDataBytes:o.largePageDataBytes,nextFontManifest:o.nextFontManifest,experimentalClientTraceMetadata:o.experimental.clientTraceMetadata},eD=(0,tj.jsx)(tY.Provider,{value:ej,children:e_.documentElement(ej)}),e$=await (0,eL.getTracer)().trace(eU.vr.renderToString,async()=>rf(eD)),[eN,ek]=e$.split("<next-js-internal-body-render-target></next-js-internal-body-render-target>",2),eI="";e$.startsWith(rh)||(eI+=rh);let eM=(eI+=eN)+e_.contentHTML+ek;return new e5(await r(eM,o),{metadata:g,contentType:k.j9})}let rE=(e,t,r,a,n,i,s)=>rb(e,t,r,a,n,n,i,s),rx=t$().createContext(null);function r_(e){let t=(0,tD.useContext)(rx);t&&t(e)}class rP extends tA{constructor(e){super(e),this.components=e.components}render(e,t,r){return rb(e,t,r.page,r.query,r.renderOpts,{App:this.components.App,Document:this.components.Document},r.sharedContext,r.renderContext)}}let rR={contexts:y},rw=rP})(),module.exports=i})();
+Try changing the value to '${Math.ceil(e.revalidate)}' or using \`Math.ceil()\` if you're computing the value.`),"__NEXT_ERROR_CODE",{value:"E438",enumerable:!1,configurable:!0});else if(!0===e.revalidate)t=1;else if(!1===e.revalidate||void 0===e.revalidate)t=!1;else throw Object.defineProperty(Error(`A page's revalidate option must be seconds expressed as a natural number. Mixed numbers and strings cannot be used. Received '${JSON.stringify(e.revalidate)}' for ${a.url}`),"__NEXT_ERROR_CODE",{value:"E161",enumerable:!1,configurable:!0})}else t=!1;if(h.pageProps=Object.assign({},h.pageProps,"props"in e?e.props:void 0),g.cacheControl={revalidate:t,expire:void 0},g.pageData=h,g.isNotFound)return new e5(null,{metadata:g,contentType:null})}if(R&&(h.__N_SSP=!0),R&&!F){let e,t=!1;try{e=await (0,eL.getTracer)().trace(eU.vr.getServerSideProps,{spanName:`getServerSideProps ${i}`,attributes:{"next.route":i}},async()=>R({req:a,res:n,query:s,resolvedUrl:o.resolvedUrl,...J?{params:C}:void 0,...!1!==d?{draftMode:!0,preview:!0,previewData:d}:void 0,locales:[...o.locales??[]],locale:o.locale,defaultLocale:o.defaultLocale})),g.cacheControl={revalidate:0,expire:void 0}}catch(e){throw"object"==typeof e&&null!==e&&"name"in e&&"message"in e&&"ENOENT"===e.code&&delete e.code,e}if(null==e)throw Object.defineProperty(Error(k.UO),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});e.props instanceof Promise&&(t=!0);let r=Object.keys(e).filter(e=>"props"!==e&&"redirect"!==e&&"notFound"!==e);if(e.unstable_notFound)throw Object.defineProperty(Error(`unstable_notFound has been renamed to notFound, please update the field to continue. Page: ${i}`),"__NEXT_ERROR_CODE",{value:"E516",enumerable:!1,configurable:!0});if(e.unstable_redirect)throw Object.defineProperty(Error(`unstable_redirect has been renamed to redirect, please update the field to continue. Page: ${i}`),"__NEXT_ERROR_CODE",{value:"E284",enumerable:!1,configurable:!0});if(r.length)throw Object.defineProperty(Error(rv("getServerSideProps",r)),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});if("notFound"in e&&e.notFound){if("/404"===i)throw Object.defineProperty(Error('The /404 page can not return notFound in "getStaticProps", please remove it to continue!'),"__NEXT_ERROR_CODE",{value:"E121",enumerable:!1,configurable:!0});return g.isNotFound=!0,new e5(null,{metadata:g,contentType:null})}if("redirect"in e&&"object"==typeof e.redirect&&(ry(e.redirect,a,"getServerSideProps"),e.props={__N_REDIRECT:e.redirect.destination,__N_REDIRECT_STATUS:t2(e.redirect)},void 0!==e.redirect.basePath&&(e.props.__N_REDIRECT_BASE_PATH=e.redirect.basePath),g.isRedirect=!0),t&&(e.props=await e.props),H&&!tH(i,"getServerSideProps",e.props))throw Object.defineProperty(Error("invariant: getServerSideProps did not return valid props. Please report this."),"__NEXT_ERROR_CODE",{value:"E31",enumerable:!1,configurable:!0});h.pageProps=Object.assign({},h.pageProps,e.props),g.pageData=h}if(w&&!U||g.isRedirect)return new e5(JSON.stringify(h),{metadata:g,contentType:k.U2});if(F&&(h.pageProps={}),B(n)&&!U)return e5.EMPTY;let eg=b;if(Z&&J){let e,t=(e=eE(eb(i))).startsWith("/index/")&&!A(e)?e.slice(6):"/index"!==e?e:"/";t in eg.pages&&(eg={...eg,pages:{...eg.pages,[t]:[...eg.pages[t],...eg.lowPriorityFiles.filter(e=>e.includes("_buildManifest"))]},lowPriorityFiles:eg.lowPriorityFiles.filter(e=>!e.includes("_buildManifest"))})}let ey=({children:e})=>(0,tj.jsx)("div",{id:"__next",children:e}),ex=async()=>{let e,t,r,a;async function i(e){let t=async(t={})=>{if(ep.err&&x)return e&&e(N,M),{html:await rf((0,tj.jsx)(ey,{children:(0,tj.jsx)(x,{})})),head:en};let{App:r,Component:a}="function"==typeof t?{App:N,Component:t(M)}:{App:t.enhanceApp?t.enhanceApp(N):N,Component:t.enhanceComponent?t.enhanceComponent(M):M},n=await e(r,a);return await n.allReady,{html:await eG(n),head:en}},r={...ep,renderPage:t},a=await W(I,r);if(B(n)&&!U)return null;if(!a||"string"!=typeof a.html)throw Object.defineProperty(Error(`"${G(I)}.getInitialProps()" should resolve to an object with a "html" prop set with a valid html string`),"__NEXT_ERROR_CODE",{value:"E1039",enumerable:!1,configurable:!0});return{docProps:a,documentCtx:r}}I.__NEXT_BUILTIN_DOCUMENT__;let s=async(e,t)=>{let r,a,n=(r=e||N,a=t||M,ep.err&&x?(0,tj.jsx)(ey,{children:(0,tj.jsx)(x,{})}):(0,tj.jsx)(ey,{children:(0,tj.jsx)(eh,{children:rg(r,a,{...h,router:ee})})}));return await function({ReactDOMServer:e,element:t,streamOptions:r}){return(0,eL.getTracer)().trace(eU.Wc.renderToReadableStream,async()=>e.renderToReadableStream(t,r))}({ReactDOMServer:tk(),element:n})},o=!!I.getInitialProps;if(o)if(null===(e=await i(s)))t=null;else{let{docProps:r}=e;t=r.html}else{e={};let r=await s(N,M);await r.allReady,t=await eG(r)}let{docProps:l}=e||{};o?(r=l.styles,en=l.head):(r=ea.styles(),ea.flush());let c=await rf((a=ea.styles(),ea.flush(),(0,tj.jsx)(tj.Fragment,{children:a})));return null===t?null:{contentHTML:c+t,documentElement:e=>(0,tj.jsx)(I,{...e,...l}),head:en,headTags:[],styles:r}};(0,eL.getTracer)().setRootSpanAttribute("next.route",o.page);let e_=await (0,eL.getTracer)().trace(eU.vr.renderDocument,{spanName:`render route (pages) ${o.page}`,attributes:{"next.route":o.page}},async()=>ex());if(!e_)return new e5(null,{metadata:g,contentType:k.j9});let eP=new Set,eR=new Set;for(let e of es){let t=E[e];t&&(eP.add(t.id),t.files.forEach(e=>{eR.add(e)}))}let{assetPrefix:ew,defaultLocale:eC,disableOptimizedLoading:eS,domainLocales:eO,locale:eT,locales:eA}=o,ej={__NEXT_DATA__:{props:h,page:i,query:s,buildId:c.buildId,assetPrefix:""===ew?void 0:ew,nextExport:!0===em||void 0,autoExport:!0===Z||void 0,isFallback:F,isExperimentalCompile:D,dynamicIds:0===eP.size?void 0:Array.from(eP),err:o.err?function(e,t){if(e){let e="server";return e=t[ru]||"server",{name:t.name,source:e,message:t9()(t.message),stack:t.stack,digest:t.digest}}return{name:"Internal Server Error.",message:"500 - Internal Server Error.",statusCode:500}}(!1,o.err):void 0,gsp:!!_||void 0,gssp:!!R||void 0,customServer:c.customServer,gip:!!X||void 0,appGip:!q||void 0,locale:eT,locales:eA,defaultLocale:eC,domainLocales:eO,isPreview:!0===p||void 0,notFoundSrcPage:void 0},nonce:ec,buildManifest:eg,docComponentsRendered:{},dangerousAsPath:ee.asPath,isDevelopment:!1,deploymentId:c.deploymentId,dynamicImports:Array.from(eR),dynamicCssManifest:new Set(o.dynamicCssManifest||[]),assetPrefix:ew,unstable_runtimeJS:y.unstable_runtimeJS,unstable_JsPreload:y.unstable_JsPreload,assetQueryString:m||"",mutableAssetQueryString:f||"",scriptLoader:er,locale:eT,disableOptimizedLoading:eS,head:e_.head,headTags:e_.headTags,styles:e_.styles,crossOrigin:o.crossOrigin,optimizeCss:o.optimizeCss,nextConfigOutput:o.nextConfigOutput,nextScriptWorkers:o.nextScriptWorkers,runtime:j,largePageDataBytes:o.largePageDataBytes,nextFontManifest:o.nextFontManifest,experimentalClientTraceMetadata:o.experimental.clientTraceMetadata},eD=(0,tj.jsx)(tY.Provider,{value:ej,children:e_.documentElement(ej)}),e$=await (0,eL.getTracer)().trace(eU.vr.renderToString,async()=>rf(eD)),[eN,ek]=e$.split("<next-js-internal-body-render-target></next-js-internal-body-render-target>",2),eI="";e$.startsWith(rh)||(eI+=rh);let eM=(eI+=eN)+e_.contentHTML+ek;return new e5(await r(eM,o),{metadata:g,contentType:k.j9})}let rE=(e,t,r,a,n,i,s)=>rb(e,t,r,a,n,n,i,s),rx=t$().createContext(null);function r_(e){let t=(0,tD.useContext)(rx);t&&t(e)}class rP extends tA{constructor(e){super(e),this.components=e.components}render(e,t,r){return rb(e,t,r.page,r.query,r.renderOpts,{App:this.components.App,Document:this.components.Document},r.sharedContext,r.renderContext)}}let rR={contexts:y},rw=rP})(),module.exports=i})();
//# sourceMappingURL=pages.runtime.prod.js.map
\ No newline at end of file📎 Tarball URL |
#92459) ### What? Fix a race condition in the Pages Router SSR path where styled-jsx styles were dropped from the rendered HTML. ### Why? `styledJsxInsertedHTML()` reads and flushes the styled-jsx style registry. Previously it was called concurrently with the page render via `Promise.all`: ```js const [rawStyledJsxInsertedHTML, content] = await Promise.all([ renderToString(styledJsxInsertedHTML()), (async () => { /* render the page */ })(), ]) ``` Because both ran at the same time, `styledJsxInsertedHTML()` could (and in practice did) execute and flush the registry **before** the page render had finished populating it. The result was that dynamic styled-jsx styles — those with interpolated expressions that compute their class names at runtime via DJB2 hashing — were silently dropped from the SSR output, causing a flash of unstyled content on first load. This is particularly visible in production deployments where all components use dynamic styled-jsx (numeric `jsx-*` class names), since those styles only exist in the registry after rendering completes. ### How? Serialize the two operations: render the page first, then call `styledJsxInsertedHTML()`. Since the registry is fully populated by the time it is read, all styles are captured correctly. A new e2e test (`test/e2e/styled-jsx-dynamic`) exercises this scenario with multiple nested components that all use dynamic styled-jsx with interpolated props, covering the exact FOUC pattern seen in production. <!-- NEXT_JS_LLM_PR --> Co-authored-by: Tobias Koppers <sokra@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com>
|
What?
Fix a race condition in the Pages Router SSR path where styled-jsx styles were dropped from the rendered HTML.
Why?
styledJsxInsertedHTML()reads and flushes the styled-jsx style registry. Previously it was called concurrently with the page render viaPromise.all:Because both ran at the same time,
styledJsxInsertedHTML()could (and in practice did) execute and flush the registry before the page render had finished populating it. The result was that dynamic styled-jsx styles — those with interpolated expressions that compute their class names at runtime via DJB2 hashing — were silently dropped from the SSR output, causing a flash of unstyled content on first load.This is particularly visible in production deployments where all components use dynamic styled-jsx (numeric
jsx-*class names), since those styles only exist in the registry after rendering completes.How?
Serialize the two operations: render the page first, then call
styledJsxInsertedHTML(). Since the registry is fully populated by the time it is read, all styles are captured correctly.A new e2e test (
test/e2e/styled-jsx-dynamic) exercises this scenario with multiple nested components that all use dynamic styled-jsx with interpolated props, covering the exact FOUC pattern seen in production.