module.exports = [ "[project]/node_modules/next/dist/esm/server/route-modules/pages/module.compiled.js [ssr] (ecmascript)", ((__turbopack_context__, module, exports) => { if ("TURBOPACK compile-time falsy", 0) //TURBOPACK unreachable ; else { if ("TURBOPACK compile-time truthy", 1) { if ("TURBOPACK compile-time truthy", 1) { module.exports = __turbopack_context__.r("[externals]/next/dist/compiled/next-server/pages-turbo.runtime.dev.js [external] (next/dist/compiled/next-server/pages-turbo.runtime.dev.js, cjs)"); } else //TURBOPACK unreachable ; } else //TURBOPACK unreachable ; } }), "[project]/node_modules/next/dist/esm/server/route-kind.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "RouteKind", ()=>RouteKind ]); var RouteKind = /*#__PURE__*/ function(RouteKind) { /** * `PAGES` represents all the React pages that are under `pages/`. */ RouteKind["PAGES"] = "PAGES"; /** * `PAGES_API` represents all the API routes under `pages/api/`. */ RouteKind["PAGES_API"] = "PAGES_API"; /** * `APP_PAGE` represents all the React pages that are under `app/` with the * filename of `page.{j,t}s{,x}`. */ RouteKind["APP_PAGE"] = "APP_PAGE"; /** * `APP_ROUTE` represents all the API routes and metadata routes that are under `app/` with the * filename of `route.{j,t}s{,x}`. */ RouteKind["APP_ROUTE"] = "APP_ROUTE"; /** * `IMAGE` represents all the images that are generated by `next/image`. */ RouteKind["IMAGE"] = "IMAGE"; return RouteKind; }({}); }), "[project]/node_modules/next/dist/esm/build/templates/helpers.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; /** * Hoists a name from a module or promised module. * * @param module the module to hoist the name from * @param name the name to hoist * @returns the value on the module (or promised module) */ __turbopack_context__.s([ "hoist", ()=>hoist ]); function hoist(module, name) { // If the name is available in the module, return it. if (name in module) { return module[name]; } // If a property called `then` exists, assume it's a promise and // return a promise that resolves to the name. if ('then' in module && typeof module.then === 'function') { return module.then((mod)=>hoist(mod, name)); } // If we're trying to hoise the default export, and the module is a function, // return the module itself. if (typeof module === 'function' && name === 'default') { return module; } // Otherwise, return undefined. return undefined; } }), "[project]/node_modules/@swc/helpers/cjs/_interop_require_wildcard.cjs [ssr] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interop_require_wildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) return obj; if (obj === null || typeof obj !== "object" && typeof obj !== "function") return { default: obj }; var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) return cache.get(obj); var newObj = { __proto__: null }; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for(var key in obj){ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) Object.defineProperty(newObj, key, desc); else newObj[key] = obj[key]; } } newObj.default = obj; if (cache) cache.set(obj, newObj); return newObj; } exports._ = _interop_require_wildcard; }), "[project]/node_modules/next/dist/shared/lib/side-effect.js [ssr] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "default", { enumerable: true, get: function() { return SideEffect; } }); const _react = __turbopack_context__.r("[externals]/react [external] (react, cjs)"); const isServer = ("TURBOPACK compile-time value", "undefined") === 'undefined'; const useClientOnlyLayoutEffect = ("TURBOPACK compile-time truthy", 1) ? ()=>{} : "TURBOPACK unreachable"; const useClientOnlyEffect = ("TURBOPACK compile-time truthy", 1) ? ()=>{} : "TURBOPACK unreachable"; function SideEffect(props) { const { headManager, reduceComponentsToState } = props; function emitChange() { if (headManager && headManager.mountedInstances) { const headElements = _react.Children.toArray(Array.from(headManager.mountedInstances).filter(Boolean)); headManager.updateHead(reduceComponentsToState(headElements)); } } if ("TURBOPACK compile-time truthy", 1) { headManager?.mountedInstances?.add(props.children); emitChange(); } useClientOnlyLayoutEffect(()=>{ headManager?.mountedInstances?.add(props.children); return ()=>{ headManager?.mountedInstances?.delete(props.children); }; }); // We need to call `updateHead` method whenever the `SideEffect` is trigger in all // life-cycles: mount, update, unmount. However, if there are multiple `SideEffect`s // being rendered, we only trigger the method from the last one. // This is ensured by keeping the last unflushed `updateHead` in the `_pendingUpdate` // singleton in the layout effect pass, and actually trigger it in the effect pass. useClientOnlyLayoutEffect(()=>{ if (headManager) { headManager._pendingUpdate = emitChange; } return ()=>{ if (headManager) { headManager._pendingUpdate = emitChange; } }; }); useClientOnlyEffect(()=>{ if (headManager && headManager._pendingUpdate) { headManager._pendingUpdate(); headManager._pendingUpdate = null; } return ()=>{ if (headManager && headManager._pendingUpdate) { headManager._pendingUpdate(); headManager._pendingUpdate = null; } }; }); return null; } }), "[project]/node_modules/next/dist/server/route-modules/pages/vendored/contexts/head-manager-context.js [ssr] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; module.exports = __turbopack_context__.r("[project]/node_modules/next/dist/server/route-modules/pages/module.compiled.js [ssr] (ecmascript)").vendored['contexts'].HeadManagerContext; }), "[project]/node_modules/next/dist/shared/lib/utils/warn-once.js [ssr] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "warnOnce", { enumerable: true, get: function() { return warnOnce; } }); let warnOnce = (_)=>{}; if ("TURBOPACK compile-time truthy", 1) { const warnings = new Set(); warnOnce = (msg)=>{ if (!warnings.has(msg)) { console.warn(msg); } warnings.add(msg); }; } }), "[project]/node_modules/next/dist/shared/lib/head.js [ssr] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { default: null, defaultHead: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { default: function() { return _default; }, defaultHead: function() { return defaultHead; } }); const _interop_require_default = __turbopack_context__.r("[project]/node_modules/@swc/helpers/cjs/_interop_require_default.cjs [ssr] (ecmascript)"); const _interop_require_wildcard = __turbopack_context__.r("[project]/node_modules/@swc/helpers/cjs/_interop_require_wildcard.cjs [ssr] (ecmascript)"); const _jsxruntime = __turbopack_context__.r("[externals]/react/jsx-runtime [external] (react/jsx-runtime, cjs)"); const _react = /*#__PURE__*/ _interop_require_wildcard._(__turbopack_context__.r("[externals]/react [external] (react, cjs)")); const _sideeffect = /*#__PURE__*/ _interop_require_default._(__turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/side-effect.js [ssr] (ecmascript)")); const _headmanagercontextsharedruntime = __turbopack_context__.r("[project]/node_modules/next/dist/server/route-modules/pages/vendored/contexts/head-manager-context.js [ssr] (ecmascript)"); const _warnonce = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/utils/warn-once.js [ssr] (ecmascript)"); function defaultHead() { const head = [ /*#__PURE__*/ (0, _jsxruntime.jsx)("meta", { charSet: "utf-8" }, "charset"), /*#__PURE__*/ (0, _jsxruntime.jsx)("meta", { name: "viewport", content: "width=device-width" }, "viewport") ]; return head; } function onlyReactElement(list, child) { // React children can be "string" or "number" in this case we ignore them for backwards compat if (typeof child === 'string' || typeof child === 'number') { return list; } // Adds support for React.Fragment if (child.type === _react.default.Fragment) { return list.concat(_react.default.Children.toArray(child.props.children).reduce((fragmentList, fragmentChild)=>{ if (typeof fragmentChild === 'string' || typeof fragmentChild === 'number') { return fragmentList; } return fragmentList.concat(fragmentChild); }, [])); } return list.concat(child); } const METATYPES = [ 'name', 'httpEquiv', 'charSet', 'itemProp' ]; /* returns a function for filtering head child elements which shouldn't be duplicated, like Also adds support for deduplicated `key` properties */ function unique() { const keys = new Set(); const tags = new Set(); const metaTypes = new Set(); const metaCategories = {}; return (h)=>{ let isUnique = true; let hasKey = false; if (h.key && typeof h.key !== 'number' && h.key.indexOf('$') > 0) { hasKey = true; const key = h.key.slice(h.key.indexOf('$') + 1); if (keys.has(key)) { isUnique = false; } else { keys.add(key); } } // eslint-disable-next-line default-case switch(h.type){ case 'title': case 'base': if (tags.has(h.type)) { isUnique = false; } else { tags.add(h.type); } break; case 'meta': for(let i = 0, len = METATYPES.length; i < len; i++){ const metatype = METATYPES[i]; if (!h.props.hasOwnProperty(metatype)) continue; if (metatype === 'charSet') { if (metaTypes.has(metatype)) { isUnique = false; } else { metaTypes.add(metatype); } } else { const category = h.props[metatype]; const categories = metaCategories[metatype] || new Set(); if ((metatype !== 'name' || !hasKey) && categories.has(category)) { isUnique = false; } else { categories.add(category); metaCategories[metatype] = categories; } } } break; } return isUnique; }; } /** * * @param headChildrenElements List of children of <Head> */ function reduceComponents(headChildrenElements) { return headChildrenElements.reduce(onlyReactElement, []).reverse().concat(defaultHead().reverse()).filter(unique()).reverse().map((c, i)=>{ const key = c.key || i; if ("TURBOPACK compile-time truthy", 1) { // omit JSON-LD structured data snippets from the warning if (c.type === 'script' && c.props['type'] !== 'application/ld+json') { const srcMessage = c.props['src'] ? `<script> tag with src="${c.props['src']}"` : `inline <script>`; (0, _warnonce.warnOnce)(`Do not add <script> tags using next/head (see ${srcMessage}). Use next/script instead. \nSee more info here: https://nextjs.org/docs/messages/no-script-tags-in-head-component`); } else if (c.type === 'link' && c.props['rel'] === 'stylesheet') { (0, _warnonce.warnOnce)(`Do not add stylesheets using next/head (see <link rel="stylesheet"> tag with href="${c.props['href']}"). Use Document instead. \nSee more info here: https://nextjs.org/docs/messages/no-stylesheets-in-head-component`); } } return /*#__PURE__*/ _react.default.cloneElement(c, { key }); }); } /** * This component injects elements to `<head>` of your page. * To avoid duplicated `tags` in `<head>` you can use the `key` property, which will make sure every tag is only rendered once. */ function Head({ children }) { const headManager = (0, _react.useContext)(_headmanagercontextsharedruntime.HeadManagerContext); return /*#__PURE__*/ (0, _jsxruntime.jsx)(_sideeffect.default, { reduceComponentsToState: reduceComponents, headManager: headManager, children: children }); } const _default = Head; if ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') { Object.defineProperty(exports.default, '__esModule', { value: true }); Object.assign(exports.default, exports); module.exports = exports.default; } }), "[project]/node_modules/next/dist/server/request-meta.js [ssr] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { NEXT_REQUEST_META: null, addRequestMeta: null, getRequestMeta: null, removeRequestMeta: null, setRequestMeta: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { NEXT_REQUEST_META: function() { return NEXT_REQUEST_META; }, addRequestMeta: function() { return addRequestMeta; }, getRequestMeta: function() { return getRequestMeta; }, removeRequestMeta: function() { return removeRequestMeta; }, setRequestMeta: function() { return setRequestMeta; } }); const NEXT_REQUEST_META = Symbol.for('NextInternalRequestMeta'); function getRequestMeta(req, key) { const meta = req[NEXT_REQUEST_META] || {}; return typeof key === 'string' ? meta[key] : meta; } function setRequestMeta(req, meta) { req[NEXT_REQUEST_META] = meta; return meta; } function addRequestMeta(request, key, value) { const meta = getRequestMeta(request); meta[key] = value; return setRequestMeta(request, meta); } function removeRequestMeta(request, key) { const meta = getRequestMeta(request); delete meta[key]; return setRequestMeta(request, meta); } }), "[project]/node_modules/next/dist/pages/_error.js [ssr] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, /** * `Error` component used for handling errors. */ "default", { enumerable: true, get: function() { return Error; } }); const _interop_require_default = __turbopack_context__.r("[project]/node_modules/@swc/helpers/cjs/_interop_require_default.cjs [ssr] (ecmascript)"); const _jsxruntime = __turbopack_context__.r("[externals]/react/jsx-runtime [external] (react/jsx-runtime, cjs)"); const _react = /*#__PURE__*/ _interop_require_default._(__turbopack_context__.r("[externals]/react [external] (react, cjs)")); const _head = /*#__PURE__*/ _interop_require_default._(__turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/head.js [ssr] (ecmascript)")); const statusCodes = { 400: 'Bad Request', 404: 'This page could not be found', 405: 'Method Not Allowed', 500: 'Internal Server Error' }; function _getInitialProps({ req, res, err }) { const statusCode = res && res.statusCode ? res.statusCode : err ? err.statusCode : 404; let hostname; if ("TURBOPACK compile-time falsy", 0) //TURBOPACK unreachable ; else if (req) { const { getRequestMeta } = __turbopack_context__.r("[project]/node_modules/next/dist/server/request-meta.js [ssr] (ecmascript)"); const initUrl = getRequestMeta(req, 'initURL'); if (initUrl) { const url = new URL(initUrl); hostname = url.hostname; } } return { statusCode, hostname }; } const styles = { error: { // https://github.com/sindresorhus/modern-normalize/blob/main/modern-normalize.css#L38-L52 fontFamily: 'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"', height: '100vh', textAlign: 'center', display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center' }, desc: { lineHeight: '48px' }, h1: { display: 'inline-block', margin: '0 20px 0 0', paddingRight: 23, fontSize: 24, fontWeight: 500, verticalAlign: 'top' }, h2: { fontSize: 14, fontWeight: 400, lineHeight: '28px' }, wrap: { display: 'inline-block' } }; class Error extends _react.default.Component { static{ this.displayName = 'ErrorPage'; } static{ this.getInitialProps = _getInitialProps; } static{ this.origGetInitialProps = _getInitialProps; } render() { const { statusCode, withDarkMode = true } = this.props; const title = this.props.title || statusCodes[statusCode] || 'An unexpected error has occurred'; return /*#__PURE__*/ (0, _jsxruntime.jsxs)("div", { style: styles.error, children: [ /*#__PURE__*/ (0, _jsxruntime.jsx)(_head.default, { children: /*#__PURE__*/ (0, _jsxruntime.jsx)("title", { children: statusCode ? `${statusCode}: ${title}` : 'Application error: a client-side exception has occurred' }) }), /*#__PURE__*/ (0, _jsxruntime.jsxs)("div", { style: styles.desc, children: [ /*#__PURE__*/ (0, _jsxruntime.jsx)("style", { dangerouslySetInnerHTML: { /* CSS minified from body { margin: 0; color: #000; background: #fff; } .next-error-h1 { border-right: 1px solid rgba(0, 0, 0, .3); } ${ withDarkMode ? `@media (prefers-color-scheme: dark) { body { color: #fff; background: #000; } .next-error-h1 { border-right: 1px solid rgba(255, 255, 255, .3); } }` : '' } */ __html: `body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}${withDarkMode ? '@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}' : ''}` } }), statusCode ? /*#__PURE__*/ (0, _jsxruntime.jsx)("h1", { className: "next-error-h1", style: styles.h1, children: statusCode }) : null, /*#__PURE__*/ (0, _jsxruntime.jsx)("div", { style: styles.wrap, children: /*#__PURE__*/ (0, _jsxruntime.jsxs)("h2", { style: styles.h2, children: [ this.props.title || statusCode ? title : /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, { children: [ "Application error: a client-side exception has occurred", ' ', Boolean(this.props.hostname) && /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, { children: [ "while loading ", this.props.hostname ] }), ' ', "(see the browser console for more information)" ] }), "." ] }) }) ] }) ] }); } } if ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') { Object.defineProperty(exports.default, '__esModule', { value: true }); Object.assign(exports.default, exports); module.exports = exports.default; } }), "[project]/node_modules/next/dist/esm/server/lib/trace/constants.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "AppRenderSpan", ()=>AppRenderSpan, "AppRouteRouteHandlersSpan", ()=>AppRouteRouteHandlersSpan, "BaseServerSpan", ()=>BaseServerSpan, "LoadComponentsSpan", ()=>LoadComponentsSpan, "LogSpanAllowList", ()=>LogSpanAllowList, "MiddlewareSpan", ()=>MiddlewareSpan, "NextNodeServerSpan", ()=>NextNodeServerSpan, "NextServerSpan", ()=>NextServerSpan, "NextVanillaSpanAllowlist", ()=>NextVanillaSpanAllowlist, "NodeSpan", ()=>NodeSpan, "RenderSpan", ()=>RenderSpan, "ResolveMetadataSpan", ()=>ResolveMetadataSpan, "RouterSpan", ()=>RouterSpan, "StartServerSpan", ()=>StartServerSpan ]); /** * Contains predefined constants for the trace span name in next/server. * * Currently, next/server/tracer is internal implementation only for tracking * next.js's implementation only with known span names defined here. **/ // eslint typescript has a bug with TS enums var BaseServerSpan = /*#__PURE__*/ function(BaseServerSpan) { BaseServerSpan["handleRequest"] = "BaseServer.handleRequest"; BaseServerSpan["run"] = "BaseServer.run"; BaseServerSpan["pipe"] = "BaseServer.pipe"; BaseServerSpan["getStaticHTML"] = "BaseServer.getStaticHTML"; BaseServerSpan["render"] = "BaseServer.render"; BaseServerSpan["renderToResponseWithComponents"] = "BaseServer.renderToResponseWithComponents"; BaseServerSpan["renderToResponse"] = "BaseServer.renderToResponse"; BaseServerSpan["renderToHTML"] = "BaseServer.renderToHTML"; BaseServerSpan["renderError"] = "BaseServer.renderError"; BaseServerSpan["renderErrorToResponse"] = "BaseServer.renderErrorToResponse"; BaseServerSpan["renderErrorToHTML"] = "BaseServer.renderErrorToHTML"; BaseServerSpan["render404"] = "BaseServer.render404"; return BaseServerSpan; }(BaseServerSpan || {}); var LoadComponentsSpan = /*#__PURE__*/ function(LoadComponentsSpan) { LoadComponentsSpan["loadDefaultErrorComponents"] = "LoadComponents.loadDefaultErrorComponents"; LoadComponentsSpan["loadComponents"] = "LoadComponents.loadComponents"; return LoadComponentsSpan; }(LoadComponentsSpan || {}); var NextServerSpan = /*#__PURE__*/ function(NextServerSpan) { NextServerSpan["getRequestHandler"] = "NextServer.getRequestHandler"; NextServerSpan["getRequestHandlerWithMetadata"] = "NextServer.getRequestHandlerWithMetadata"; NextServerSpan["getServer"] = "NextServer.getServer"; NextServerSpan["getServerRequestHandler"] = "NextServer.getServerRequestHandler"; NextServerSpan["createServer"] = "createServer.createServer"; return NextServerSpan; }(NextServerSpan || {}); var NextNodeServerSpan = /*#__PURE__*/ function(NextNodeServerSpan) { NextNodeServerSpan["compression"] = "NextNodeServer.compression"; NextNodeServerSpan["getBuildId"] = "NextNodeServer.getBuildId"; NextNodeServerSpan["createComponentTree"] = "NextNodeServer.createComponentTree"; NextNodeServerSpan["clientComponentLoading"] = "NextNodeServer.clientComponentLoading"; NextNodeServerSpan["getLayoutOrPageModule"] = "NextNodeServer.getLayoutOrPageModule"; NextNodeServerSpan["generateStaticRoutes"] = "NextNodeServer.generateStaticRoutes"; NextNodeServerSpan["generateFsStaticRoutes"] = "NextNodeServer.generateFsStaticRoutes"; NextNodeServerSpan["generatePublicRoutes"] = "NextNodeServer.generatePublicRoutes"; NextNodeServerSpan["generateImageRoutes"] = "NextNodeServer.generateImageRoutes.route"; NextNodeServerSpan["sendRenderResult"] = "NextNodeServer.sendRenderResult"; NextNodeServerSpan["proxyRequest"] = "NextNodeServer.proxyRequest"; NextNodeServerSpan["runApi"] = "NextNodeServer.runApi"; NextNodeServerSpan["render"] = "NextNodeServer.render"; NextNodeServerSpan["renderHTML"] = "NextNodeServer.renderHTML"; NextNodeServerSpan["imageOptimizer"] = "NextNodeServer.imageOptimizer"; NextNodeServerSpan["getPagePath"] = "NextNodeServer.getPagePath"; NextNodeServerSpan["getRoutesManifest"] = "NextNodeServer.getRoutesManifest"; NextNodeServerSpan["findPageComponents"] = "NextNodeServer.findPageComponents"; NextNodeServerSpan["getFontManifest"] = "NextNodeServer.getFontManifest"; NextNodeServerSpan["getServerComponentManifest"] = "NextNodeServer.getServerComponentManifest"; NextNodeServerSpan["getRequestHandler"] = "NextNodeServer.getRequestHandler"; NextNodeServerSpan["renderToHTML"] = "NextNodeServer.renderToHTML"; NextNodeServerSpan["renderError"] = "NextNodeServer.renderError"; NextNodeServerSpan["renderErrorToHTML"] = "NextNodeServer.renderErrorToHTML"; NextNodeServerSpan["render404"] = "NextNodeServer.render404"; NextNodeServerSpan["startResponse"] = "NextNodeServer.startResponse"; // nested inner span, does not require parent scope name NextNodeServerSpan["route"] = "route"; NextNodeServerSpan["onProxyReq"] = "onProxyReq"; NextNodeServerSpan["apiResolver"] = "apiResolver"; NextNodeServerSpan["internalFetch"] = "internalFetch"; return NextNodeServerSpan; }(NextNodeServerSpan || {}); var StartServerSpan = /*#__PURE__*/ function(StartServerSpan) { StartServerSpan["startServer"] = "startServer.startServer"; return StartServerSpan; }(StartServerSpan || {}); var RenderSpan = /*#__PURE__*/ function(RenderSpan) { RenderSpan["getServerSideProps"] = "Render.getServerSideProps"; RenderSpan["getStaticProps"] = "Render.getStaticProps"; RenderSpan["renderToString"] = "Render.renderToString"; RenderSpan["renderDocument"] = "Render.renderDocument"; RenderSpan["createBodyResult"] = "Render.createBodyResult"; return RenderSpan; }(RenderSpan || {}); var AppRenderSpan = /*#__PURE__*/ function(AppRenderSpan) { AppRenderSpan["renderToString"] = "AppRender.renderToString"; AppRenderSpan["renderToReadableStream"] = "AppRender.renderToReadableStream"; AppRenderSpan["getBodyResult"] = "AppRender.getBodyResult"; AppRenderSpan["fetch"] = "AppRender.fetch"; return AppRenderSpan; }(AppRenderSpan || {}); var RouterSpan = /*#__PURE__*/ function(RouterSpan) { RouterSpan["executeRoute"] = "Router.executeRoute"; return RouterSpan; }(RouterSpan || {}); var NodeSpan = /*#__PURE__*/ function(NodeSpan) { NodeSpan["runHandler"] = "Node.runHandler"; return NodeSpan; }(NodeSpan || {}); var AppRouteRouteHandlersSpan = /*#__PURE__*/ function(AppRouteRouteHandlersSpan) { AppRouteRouteHandlersSpan["runHandler"] = "AppRouteRouteHandlers.runHandler"; return AppRouteRouteHandlersSpan; }(AppRouteRouteHandlersSpan || {}); var ResolveMetadataSpan = /*#__PURE__*/ function(ResolveMetadataSpan) { ResolveMetadataSpan["generateMetadata"] = "ResolveMetadata.generateMetadata"; ResolveMetadataSpan["generateViewport"] = "ResolveMetadata.generateViewport"; return ResolveMetadataSpan; }(ResolveMetadataSpan || {}); var MiddlewareSpan = /*#__PURE__*/ function(MiddlewareSpan) { MiddlewareSpan["execute"] = "Middleware.execute"; return MiddlewareSpan; }(MiddlewareSpan || {}); const NextVanillaSpanAllowlist = new Set([ "Middleware.execute", "BaseServer.handleRequest", "Render.getServerSideProps", "Render.getStaticProps", "AppRender.fetch", "AppRender.getBodyResult", "Render.renderDocument", "Node.runHandler", "AppRouteRouteHandlers.runHandler", "ResolveMetadata.generateMetadata", "ResolveMetadata.generateViewport", "NextNodeServer.createComponentTree", "NextNodeServer.findPageComponents", "NextNodeServer.getLayoutOrPageModule", "NextNodeServer.startResponse", "NextNodeServer.clientComponentLoading" ]); const LogSpanAllowList = new Set([ "NextNodeServer.findPageComponents", "NextNodeServer.createComponentTree", "NextNodeServer.clientComponentLoading" ]); ; }), "[project]/node_modules/next/dist/esm/shared/lib/is-thenable.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; /** * Check to see if a value is Thenable. * * @param promise the maybe-thenable value * @returns true if the value is thenable */ __turbopack_context__.s([ "isThenable", ()=>isThenable ]); function isThenable(promise) { return promise !== null && typeof promise === 'object' && 'then' in promise && typeof promise.then === 'function'; } }), "[project]/node_modules/next/dist/esm/server/lib/trace/tracer.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "BubbledError", ()=>BubbledError, "SpanKind", ()=>SpanKind, "SpanStatusCode", ()=>SpanStatusCode, "getTracer", ()=>getTracer, "isBubbledError", ()=>isBubbledError ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$constants$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/lib/trace/constants.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$is$2d$thenable$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/is-thenable.js [ssr] (ecmascript)"); ; ; const NEXT_OTEL_PERFORMANCE_PREFIX = process.env.NEXT_OTEL_PERFORMANCE_PREFIX; let api; // we want to allow users to use their own version of @opentelemetry/api if they // want to, so we try to require it first, and if it fails we fall back to the // version that is bundled with Next.js // this is because @opentelemetry/api has to be synced with the version of // @opentelemetry/tracing that is used, and we don't want to force users to use // the version that is bundled with Next.js. // the API is ~stable, so this should be fine if ("TURBOPACK compile-time falsy", 0) //TURBOPACK unreachable ; else { try { api = __turbopack_context__.r("[externals]/next/dist/compiled/@opentelemetry/api [external] (next/dist/compiled/@opentelemetry/api, cjs)"); } catch (err) { api = __turbopack_context__.r("[project]/node_modules/next/dist/compiled/@opentelemetry/api/index.js [ssr] (ecmascript)"); } } const { context, propagation, trace, SpanStatusCode, SpanKind, ROOT_CONTEXT } = api; class BubbledError extends Error { constructor(bubble, result){ super(), this.bubble = bubble, this.result = result; } } function isBubbledError(error) { if (typeof error !== 'object' || error === null) return false; return error instanceof BubbledError; } const closeSpanWithError = (span, error)=>{ if (isBubbledError(error) && error.bubble) { span.setAttribute('next.bubble', true); } else { if (error) { span.recordException(error); span.setAttribute('error.type', error.name); } span.setStatus({ code: SpanStatusCode.ERROR, message: error == null ? void 0 : error.message }); } span.end(); }; /** we use this map to propagate attributes from nested spans to the top span */ const rootSpanAttributesStore = new Map(); const rootSpanIdKey = api.createContextKey('next.rootSpanId'); let lastSpanId = 0; const getSpanId = ()=>lastSpanId++; const clientTraceDataSetter = { set (carrier, key, value) { carrier.push({ key, value }); } }; class NextTracerImpl { /** * Returns an instance to the trace with configured name. * Since wrap / trace can be defined in any place prior to actual trace subscriber initialization, * This should be lazily evaluated. */ getTracerInstance() { return trace.getTracer('next.js', '0.0.1'); } getContext() { return context; } getTracePropagationData() { const activeContext = context.active(); const entries = []; propagation.inject(activeContext, entries, clientTraceDataSetter); return entries; } getActiveScopeSpan() { return trace.getSpan(context == null ? void 0 : context.active()); } withPropagatedContext(carrier, fn, getter, force = false) { const activeContext = context.active(); if (force) { const remoteContext = propagation.extract(ROOT_CONTEXT, carrier, getter); if (trace.getSpanContext(remoteContext)) { return context.with(remoteContext, fn); } // Preserve the current active span while still merging any extracted // baggage/context values from the carrier. const mergedContext = propagation.extract(activeContext, carrier, getter); return context.with(mergedContext, fn); } if (trace.getSpanContext(activeContext)) { // Active span is already set, too late to propagate. return fn(); } const remoteContext = propagation.extract(activeContext, carrier, getter); return context.with(remoteContext, fn); } trace(...args) { const [type, fnOrOptions, fnOrEmpty] = args; // coerce options form overload const { fn, options } = typeof fnOrOptions === 'function' ? { fn: fnOrOptions, options: {} } : { fn: fnOrEmpty, options: { ...fnOrOptions } }; const spanName = options.spanName ?? type; if (!__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$constants$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["NextVanillaSpanAllowlist"].has(type) && process.env.NEXT_OTEL_VERBOSE !== '1' || options.hideSpan) { return fn(); } // Trying to get active scoped span to assign parent. If option specifies parent span manually, will try to use it. let spanContext = this.getSpanContext((options == null ? void 0 : options.parentSpan) ?? this.getActiveScopeSpan()); if (!spanContext) { spanContext = (context == null ? void 0 : context.active()) ?? ROOT_CONTEXT; } // Check if there's already a root span in the store for this trace // We are intentionally not checking whether there is an active context // from outside of nextjs to ensure that we can provide the same level // of telemetry when using a custom server const existingRootSpanId = spanContext.getValue(rootSpanIdKey); const isRootSpan = typeof existingRootSpanId !== 'number' || !rootSpanAttributesStore.has(existingRootSpanId); const spanId = getSpanId(); options.attributes = { 'next.span_name': spanName, 'next.span_type': type, ...options.attributes }; return context.with(spanContext.setValue(rootSpanIdKey, spanId), ()=>this.getTracerInstance().startActiveSpan(spanName, options, (span)=>{ let startTime; if (NEXT_OTEL_PERFORMANCE_PREFIX && type && __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$constants$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["LogSpanAllowList"].has(type)) { startTime = 'performance' in globalThis && 'measure' in performance ? globalThis.performance.now() : undefined; } let cleanedUp = false; const onCleanup = ()=>{ if (cleanedUp) return; cleanedUp = true; rootSpanAttributesStore.delete(spanId); if (startTime) { performance.measure(`${NEXT_OTEL_PERFORMANCE_PREFIX}:next-${(type.split('.').pop() || '').replace(/[A-Z]/g, (match)=>'-' + match.toLowerCase())}`, { start: startTime, end: performance.now() }); } }; if (isRootSpan) { rootSpanAttributesStore.set(spanId, new Map(Object.entries(options.attributes ?? {}))); } if (fn.length > 1) { try { return fn(span, (err)=>closeSpanWithError(span, err)); } catch (err) { closeSpanWithError(span, err); throw err; } finally{ onCleanup(); } } try { const result = fn(span); if ((0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$is$2d$thenable$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["isThenable"])(result)) { // If there's error make sure it throws return result.then((res)=>{ span.end(); // Need to pass down the promise result, // it could be react stream response with error { error, stream } return res; }).catch((err)=>{ closeSpanWithError(span, err); throw err; }).finally(onCleanup); } else { span.end(); onCleanup(); } return result; } catch (err) { closeSpanWithError(span, err); onCleanup(); throw err; } })); } wrap(...args) { const tracer = this; const [name, options, fn] = args.length === 3 ? args : [ args[0], {}, args[1] ]; if (!__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$constants$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["NextVanillaSpanAllowlist"].has(name) && process.env.NEXT_OTEL_VERBOSE !== '1') { return fn; } return function() { let optionsObj = options; if (typeof optionsObj === 'function' && typeof fn === 'function') { optionsObj = optionsObj.apply(this, arguments); } const lastArgId = arguments.length - 1; const cb = arguments[lastArgId]; if (typeof cb === 'function') { const scopeBoundCb = tracer.getContext().bind(context.active(), cb); return tracer.trace(name, optionsObj, (_span, done)=>{ arguments[lastArgId] = function(err) { done == null ? void 0 : done(err); return scopeBoundCb.apply(this, arguments); }; return fn.apply(this, arguments); }); } else { return tracer.trace(name, optionsObj, ()=>fn.apply(this, arguments)); } }; } startSpan(...args) { const [type, options] = args; const spanContext = this.getSpanContext((options == null ? void 0 : options.parentSpan) ?? this.getActiveScopeSpan()); return this.getTracerInstance().startSpan(type, options, spanContext); } getSpanContext(parentSpan) { const spanContext = parentSpan ? trace.setSpan(context.active(), parentSpan) : undefined; return spanContext; } getRootSpanAttributes() { const spanId = context.active().getValue(rootSpanIdKey); return rootSpanAttributesStore.get(spanId); } setRootSpanAttribute(key, value) { const spanId = context.active().getValue(rootSpanIdKey); const attributes = rootSpanAttributesStore.get(spanId); if (attributes && !attributes.has(key)) { attributes.set(key, value); } } withSpan(span, fn) { const spanContext = trace.setSpan(context.active(), span); return context.with(spanContext, fn); } } const getTracer = (()=>{ const tracer = new NextTracerImpl(); return ()=>tracer; })(); ; }), "[project]/node_modules/next/dist/esm/shared/lib/router/utils/querystring.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "assign", ()=>assign, "searchParamsToUrlQuery", ()=>searchParamsToUrlQuery, "urlQueryToSearchParams", ()=>urlQueryToSearchParams ]); function searchParamsToUrlQuery(searchParams) { const query = {}; for (const [key, value] of searchParams.entries()){ const existing = query[key]; if (typeof existing === 'undefined') { query[key] = value; } else if (Array.isArray(existing)) { existing.push(value); } else { query[key] = [ existing, value ]; } } return query; } function stringifyUrlQueryParam(param) { if (typeof param === 'string') { return param; } if (typeof param === 'number' && !isNaN(param) || typeof param === 'boolean') { return String(param); } else { return ''; } } function urlQueryToSearchParams(query) { const searchParams = new URLSearchParams(); for (const [key, value] of Object.entries(query)){ if (Array.isArray(value)) { for (const item of value){ searchParams.append(key, stringifyUrlQueryParam(item)); } } else { searchParams.set(key, stringifyUrlQueryParam(value)); } } return searchParams; } function assign(target, ...searchParamsList) { for (const searchParams of searchParamsList){ for (const key of searchParams.keys()){ target.delete(key); } for (const [key, value] of searchParams.entries()){ target.append(key, value); } } return target; } }), "[project]/node_modules/next/dist/esm/shared/lib/router/utils/format-url.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "formatUrl", ()=>formatUrl, "formatWithValidation", ()=>formatWithValidation, "urlObjectKeys", ()=>urlObjectKeys ]); // Format function modified from nodejs // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a // copy of this software and associated documentation files (the // "Software"), to deal in the Software without restriction, including // without limitation the rights to use, copy, modify, merge, publish, // distribute, sublicense, and/or sell copies of the Software, and to permit // persons to whom the Software is furnished to do so, subject to the // following conditions: // // The above copyright notice and this permission notice shall be included // in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE // USE OR OTHER DEALINGS IN THE SOFTWARE. var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$querystring$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/querystring.js [ssr] (ecmascript)"); ; const slashedProtocols = /https?|ftp|gopher|file/; function formatUrl(urlObj) { let { auth, hostname } = urlObj; let protocol = urlObj.protocol || ''; let pathname = urlObj.pathname || ''; let hash = urlObj.hash || ''; let query = urlObj.query || ''; let host = false; auth = auth ? encodeURIComponent(auth).replace(/%3A/i, ':') + '@' : ''; if (urlObj.host) { host = auth + urlObj.host; } else if (hostname) { host = auth + (~hostname.indexOf(':') ? `[${hostname}]` : hostname); if (urlObj.port) { host += ':' + urlObj.port; } } if (query && typeof query === 'object') { query = String(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$querystring$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["urlQueryToSearchParams"](query)); } let search = urlObj.search || query && `?${query}` || ''; if (protocol && !protocol.endsWith(':')) protocol += ':'; if (urlObj.slashes || (!protocol || slashedProtocols.test(protocol)) && host !== false) { host = '//' + (host || ''); if (pathname && pathname[0] !== '/') pathname = '/' + pathname; } else if (!host) { host = ''; } if (hash && hash[0] !== '#') hash = '#' + hash; if (search && search[0] !== '?') search = '?' + search; pathname = pathname.replace(/[?#]/g, encodeURIComponent); search = search.replace('#', '%23'); return `${protocol}${host}${pathname}${search}${hash}`; } const urlObjectKeys = [ 'auth', 'hash', 'host', 'hostname', 'href', 'path', 'pathname', 'port', 'protocol', 'query', 'search', 'slashes' ]; function formatWithValidation(url) { if ("TURBOPACK compile-time truthy", 1) { if (url !== null && typeof url === 'object') { Object.keys(url).forEach((key)=>{ if (!urlObjectKeys.includes(key)) { console.warn(`Unknown key passed via urlObject into url.format: ${key}`); } }); } } return formatUrl(url); } }), "[project]/node_modules/next/dist/esm/server/request-meta.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; // FIXME: (wyattjoh) this is a temporary solution to allow us to pass data between bundled modules __turbopack_context__.s([ "NEXT_REQUEST_META", ()=>NEXT_REQUEST_META, "addRequestMeta", ()=>addRequestMeta, "getRequestMeta", ()=>getRequestMeta, "removeRequestMeta", ()=>removeRequestMeta, "setRequestMeta", ()=>setRequestMeta ]); const NEXT_REQUEST_META = Symbol.for('NextInternalRequestMeta'); function getRequestMeta(req, key) { const meta = req[NEXT_REQUEST_META] || {}; return typeof key === 'string' ? meta[key] : meta; } function setRequestMeta(req, meta) { req[NEXT_REQUEST_META] = meta; return meta; } function addRequestMeta(request, key, value) { const meta = getRequestMeta(request); meta[key] = value; return setRequestMeta(request, meta); } function removeRequestMeta(request, key) { const meta = getRequestMeta(request); delete meta[key]; return setRequestMeta(request, meta); } }), "[project]/node_modules/next/dist/esm/server/app-render/interop-default.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; /** * Interop between "export default" and "module.exports". */ __turbopack_context__.s([ "interopDefault", ()=>interopDefault ]); function interopDefault(mod) { return mod.default || mod; } }), "[project]/node_modules/next/dist/esm/server/instrumentation/utils.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "getRevalidateReason", ()=>getRevalidateReason ]); function getRevalidateReason(params) { if (params.isOnDemandRevalidate) { return 'on-demand'; } if (params.isStaticGeneration) { return 'stale'; } return undefined; } }), "[project]/node_modules/next/dist/esm/shared/lib/router/utils/parse-path.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; /** * Given a path this function will find the pathname, query and hash and return * them. This is useful to parse full paths on the client side. * @param path A path to parse e.g. /foo/bar?id=1#hash */ __turbopack_context__.s([ "parsePath", ()=>parsePath ]); function parsePath(path) { const hashIndex = path.indexOf('#'); const queryIndex = path.indexOf('?'); const hasQuery = queryIndex > -1 && (hashIndex < 0 || queryIndex < hashIndex); if (hasQuery || hashIndex > -1) { return { pathname: path.substring(0, hasQuery ? queryIndex : hashIndex), query: hasQuery ? path.substring(queryIndex, hashIndex > -1 ? hashIndex : undefined) : '', hash: hashIndex > -1 ? path.slice(hashIndex) : '' }; } return { pathname: path, query: '', hash: '' }; } }), "[project]/node_modules/next/dist/esm/shared/lib/router/utils/path-has-prefix.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "pathHasPrefix", ()=>pathHasPrefix ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$parse$2d$path$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/parse-path.js [ssr] (ecmascript)"); ; function pathHasPrefix(path, prefix) { if (typeof path !== 'string') { return false; } const { pathname } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$parse$2d$path$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["parsePath"])(path); return pathname === prefix || pathname.startsWith(prefix + '/'); } }), "[project]/node_modules/next/dist/esm/shared/lib/page-path/normalize-data-path.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "normalizeDataPath", ()=>normalizeDataPath ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$path$2d$has$2d$prefix$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/path-has-prefix.js [ssr] (ecmascript)"); ; function normalizeDataPath(pathname) { if (!(0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$path$2d$has$2d$prefix$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["pathHasPrefix"])(pathname || '/', '/_next/data')) { return pathname; } pathname = pathname.replace(/\/_next\/data\/[^/]{1,}/, '').replace(/\.json$/, ''); if (pathname === '/index') { return '/'; } return pathname; } }), "[project]/node_modules/next/dist/esm/lib/detached-promise.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; /** * A `Promise.withResolvers` implementation that exposes the `resolve` and * `reject` functions on a `Promise`. * * @see https://tc39.es/proposal-promise-with-resolvers/ */ __turbopack_context__.s([ "DetachedPromise", ()=>DetachedPromise ]); class DetachedPromise { constructor(){ let resolve; let reject; // Create the promise and assign the resolvers to the object. this.promise = new Promise((res, rej)=>{ resolve = res; reject = rej; }); // We know that resolvers is defined because the Promise constructor runs // synchronously. this.resolve = resolve; this.reject = reject; } } }), "[project]/node_modules/next/dist/esm/lib/batcher.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "Batcher", ()=>Batcher ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$detached$2d$promise$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/lib/detached-promise.js [ssr] (ecmascript)"); ; class Batcher { constructor(cacheKeyFn, /** * A function that will be called to schedule the wrapped function to be * executed. This defaults to a function that will execute the function * immediately. */ schedulerFn = (fn)=>fn()){ this.cacheKeyFn = cacheKeyFn; this.schedulerFn = schedulerFn; this.pending = new Map(); } static create(options) { return new Batcher(options == null ? void 0 : options.cacheKeyFn, options == null ? void 0 : options.schedulerFn); } /** * Wraps a function in a promise that will be resolved or rejected only once * for a given key. This will allow multiple calls to the function to be * made, but only one will be executed at a time. The result of the first * call will be returned to all callers. * * @param key the key to use for the cache * @param fn the function to wrap * @returns a promise that resolves to the result of the function */ async batch(key, fn) { const cacheKey = this.cacheKeyFn ? await this.cacheKeyFn(key) : key; if (cacheKey === null) { return fn({ resolve: (value)=>Promise.resolve(value), key }); } const pending = this.pending.get(cacheKey); if (pending) return pending; const { promise, resolve, reject } = new __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$detached$2d$promise$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["DetachedPromise"](); this.pending.set(cacheKey, promise); this.schedulerFn(async ()=>{ try { const result = await fn({ resolve, key }); // Resolving a promise multiple times is a no-op, so we can safely // resolve all pending promises with the same result. resolve(result); } catch (err) { reject(err); } finally{ this.pending.delete(cacheKey); } }); return promise; } } }), "[project]/node_modules/next/dist/esm/server/lib/lru-cache.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "LRUCache", ()=>LRUCache ]); /** * Node in the doubly-linked list used for LRU tracking. * Each node represents a cache entry with bidirectional pointers. */ class LRUNode { constructor(key, data, size){ this.prev = null; this.next = null; this.key = key; this.data = data; this.size = size; } } /** * Sentinel node used for head/tail boundaries. * These nodes don't contain actual cache data but simplify list operations. */ class SentinelNode { constructor(){ this.prev = null; this.next = null; } } class LRUCache { constructor(maxSize, calculateSize, onEvict){ this.cache = new Map(); this.totalSize = 0; this.maxSize = maxSize; this.calculateSize = calculateSize; this.onEvict = onEvict; // Create sentinel nodes to simplify doubly-linked list operations // HEAD <-> TAIL (empty list) this.head = new SentinelNode(); this.tail = new SentinelNode(); this.head.next = this.tail; this.tail.prev = this.head; } /** * Adds a node immediately after the head (marks as most recently used). * Used when inserting new items or when an item is accessed. * PRECONDITION: node must be disconnected (prev/next should be null) */ addToHead(node) { node.prev = this.head; node.next = this.head.next; // head.next is always non-null (points to tail or another node) this.head.next.prev = node; this.head.next = node; } /** * Removes a node from its current position in the doubly-linked list. * Updates the prev/next pointers of adjacent nodes to maintain list integrity. * PRECONDITION: node must be connected (prev/next are non-null) */ removeNode(node) { // Connected nodes always have non-null prev/next node.prev.next = node.next; node.next.prev = node.prev; } /** * Moves an existing node to the head position (marks as most recently used). * This is the core LRU operation - accessed items become most recent. */ moveToHead(node) { this.removeNode(node); this.addToHead(node); } /** * Removes and returns the least recently used node (the one before tail). * This is called during eviction when the cache exceeds capacity. * PRECONDITION: cache is not empty (ensured by caller) */ removeTail() { const lastNode = this.tail.prev; // tail.prev is always non-null and always LRUNode when cache is not empty this.removeNode(lastNode); return lastNode; } /** * Sets a key-value pair in the cache. * If the key exists, updates the value and moves to head. * If new, adds at head and evicts from tail if necessary. * * Time Complexity: * - O(1) for uniform item sizes * - O(k) where k is the number of items evicted (can be O(N) for variable sizes) */ set(key, value) { const size = (this.calculateSize == null ? void 0 : this.calculateSize.call(this, value)) ?? 1; if (size <= 0) { throw Object.defineProperty(new Error(`LRUCache: calculateSize returned ${size}, but size must be > 0. ` + `Items with size 0 would never be evicted, causing unbounded cache growth.`), "__NEXT_ERROR_CODE", { value: "E1045", enumerable: false, configurable: true }); } if (size > this.maxSize) { console.warn('Single item size exceeds maxSize'); return false; } const existing = this.cache.get(key); if (existing) { // Update existing node: adjust size and move to head (most recent) existing.data = value; this.totalSize = this.totalSize - existing.size + size; existing.size = size; this.moveToHead(existing); } else { // Add new node at head (most recent position) const newNode = new LRUNode(key, value, size); this.cache.set(key, newNode); this.addToHead(newNode); this.totalSize += size; } // Evict least recently used items until under capacity while(this.totalSize > this.maxSize && this.cache.size > 0){ const tail = this.removeTail(); this.cache.delete(tail.key); this.totalSize -= tail.size; this.onEvict == null ? void 0 : this.onEvict.call(this, tail.key, tail.data); } return true; } /** * Checks if a key exists in the cache. * This is a pure query operation - does NOT update LRU order. * * Time Complexity: O(1) */ has(key) { return this.cache.has(key); } /** * Retrieves a value by key and marks it as most recently used. * Moving to head maintains the LRU property for future evictions. * * Time Complexity: O(1) */ get(key) { const node = this.cache.get(key); if (!node) return undefined; // Mark as most recently used by moving to head this.moveToHead(node); return node.data; } /** * Returns an iterator over the cache entries. The order is outputted in the * order of most recently used to least recently used. */ *[Symbol.iterator]() { let current = this.head.next; while(current && current !== this.tail){ // Between head and tail, current is always LRUNode const node = current; yield [ node.key, node.data ]; current = current.next; } } /** * Removes a specific key from the cache. * Updates both the hash map and doubly-linked list. * * Note: This is an explicit removal and does NOT trigger the `onEvict` * callback. Use this for intentional deletions where eviction tracking * is not needed. * * Time Complexity: O(1) */ remove(key) { const node = this.cache.get(key); if (!node) return; this.removeNode(node); this.cache.delete(key); this.totalSize -= node.size; } /** * Returns the number of items in the cache. */ get size() { return this.cache.size; } /** * Returns the current total size of all cached items. * This uses the custom size calculation if provided. */ get currentSize() { return this.totalSize; } } }), "[project]/node_modules/next/dist/esm/lib/picocolors.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "bgBlack", ()=>bgBlack, "bgBlue", ()=>bgBlue, "bgCyan", ()=>bgCyan, "bgGreen", ()=>bgGreen, "bgMagenta", ()=>bgMagenta, "bgRed", ()=>bgRed, "bgWhite", ()=>bgWhite, "bgYellow", ()=>bgYellow, "black", ()=>black, "blue", ()=>blue, "bold", ()=>bold, "cyan", ()=>cyan, "dim", ()=>dim, "gray", ()=>gray, "green", ()=>green, "hidden", ()=>hidden, "inverse", ()=>inverse, "italic", ()=>italic, "magenta", ()=>magenta, "purple", ()=>purple, "red", ()=>red, "reset", ()=>reset, "strikethrough", ()=>strikethrough, "underline", ()=>underline, "white", ()=>white, "yellow", ()=>yellow ]); // ISC License // Copyright (c) 2021 Alexey Raspopov, Kostiantyn Denysov, Anton Verinov // Permission to use, copy, modify, and/or distribute this software for any // purpose with or without fee is hereby granted, provided that the above // copyright notice and this permission notice appear in all copies. // THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES // WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF // MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR // ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES // WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN // ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. // // https://github.com/alexeyraspopov/picocolors/blob/b6261487e7b81aaab2440e397a356732cad9e342/picocolors.js#L1 var _globalThis; const { env, stdout } = ((_globalThis = globalThis) == null ? void 0 : _globalThis.process) ?? {}; const enabled = env && !env.NO_COLOR && (env.FORCE_COLOR || (stdout == null ? void 0 : stdout.isTTY) && !env.CI && env.TERM !== 'dumb'); const replaceClose = (str, close, replace, index)=>{ const start = str.substring(0, index) + replace; const end = str.substring(index + close.length); const nextIndex = end.indexOf(close); return ~nextIndex ? start + replaceClose(end, close, replace, nextIndex) : start + end; }; const formatter = (open, close, replace = open)=>{ if (!enabled) return String; return (input)=>{ const string = '' + input; const index = string.indexOf(close, open.length); return ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close; }; }; const reset = enabled ? (s)=>`\x1b[0m${s}\x1b[0m` : String; const bold = formatter('\x1b[1m', '\x1b[22m', '\x1b[22m\x1b[1m'); const dim = formatter('\x1b[2m', '\x1b[22m', '\x1b[22m\x1b[2m'); const italic = formatter('\x1b[3m', '\x1b[23m'); const underline = formatter('\x1b[4m', '\x1b[24m'); const inverse = formatter('\x1b[7m', '\x1b[27m'); const hidden = formatter('\x1b[8m', '\x1b[28m'); const strikethrough = formatter('\x1b[9m', '\x1b[29m'); const black = formatter('\x1b[30m', '\x1b[39m'); const red = formatter('\x1b[31m', '\x1b[39m'); const green = formatter('\x1b[32m', '\x1b[39m'); const yellow = formatter('\x1b[33m', '\x1b[39m'); const blue = formatter('\x1b[34m', '\x1b[39m'); const magenta = formatter('\x1b[35m', '\x1b[39m'); const purple = formatter('\x1b[38;2;173;127;168m', '\x1b[39m'); const cyan = formatter('\x1b[36m', '\x1b[39m'); const white = formatter('\x1b[37m', '\x1b[39m'); const gray = formatter('\x1b[90m', '\x1b[39m'); const bgBlack = formatter('\x1b[40m', '\x1b[49m'); const bgRed = formatter('\x1b[41m', '\x1b[49m'); const bgGreen = formatter('\x1b[42m', '\x1b[49m'); const bgYellow = formatter('\x1b[43m', '\x1b[49m'); const bgBlue = formatter('\x1b[44m', '\x1b[49m'); const bgMagenta = formatter('\x1b[45m', '\x1b[49m'); const bgCyan = formatter('\x1b[46m', '\x1b[49m'); const bgWhite = formatter('\x1b[47m', '\x1b[49m'); }), "[project]/node_modules/next/dist/esm/build/output/log.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "bootstrap", ()=>bootstrap, "error", ()=>error, "errorOnce", ()=>errorOnce, "event", ()=>event, "info", ()=>info, "prefixes", ()=>prefixes, "ready", ()=>ready, "trace", ()=>trace, "wait", ()=>wait, "warn", ()=>warn, "warnOnce", ()=>warnOnce ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$picocolors$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/lib/picocolors.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$lru$2d$cache$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/lib/lru-cache.js [ssr] (ecmascript)"); ; ; const prefixes = { wait: (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$picocolors$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["white"])((0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$picocolors$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["bold"])('○')), error: (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$picocolors$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["red"])((0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$picocolors$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["bold"])('⨯')), warn: (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$picocolors$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["yellow"])((0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$picocolors$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["bold"])('⚠')), ready: '▲', info: (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$picocolors$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["white"])((0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$picocolors$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["bold"])(' ')), event: (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$picocolors$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["green"])((0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$picocolors$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["bold"])('✓')), trace: (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$picocolors$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["magenta"])((0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$picocolors$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["bold"])('»')) }; const LOGGING_METHOD = { log: 'log', warn: 'warn', error: 'error' }; function prefixedLog(prefixType, ...message) { if ((message[0] === '' || message[0] === undefined) && message.length === 1) { message.shift(); } const consoleMethod = prefixType in LOGGING_METHOD ? LOGGING_METHOD[prefixType] : 'log'; const prefix = prefixes[prefixType]; // If there's no message, don't print the prefix but a new line if (message.length === 0) { console[consoleMethod](''); } else { // Ensure if there's ANSI escape codes it's concatenated into one string. // Chrome DevTool can only handle color if it's in one string. if (message.length === 1 && typeof message[0] === 'string') { console[consoleMethod](prefix + ' ' + message[0]); } else { console[consoleMethod](prefix, ...message); } } } function bootstrap(message) { console.log(message); } function wait(...message) { prefixedLog('wait', ...message); } function error(...message) { prefixedLog('error', ...message); } function warn(...message) { prefixedLog('warn', ...message); } function ready(...message) { prefixedLog('ready', ...message); } function info(...message) { prefixedLog('info', ...message); } function event(...message) { prefixedLog('event', ...message); } function trace(...message) { prefixedLog('trace', ...message); } const warnOnceCache = new __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$lru$2d$cache$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["LRUCache"](10000, (value)=>value.length); function warnOnce(...message) { const key = message.join(' '); if (!warnOnceCache.has(key)) { warnOnceCache.set(key, key); warn(...message); } } const errorOnceCache = new __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$lru$2d$cache$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["LRUCache"](10000, (value)=>value.length); function errorOnce(...message) { const key = message.join(' '); if (!errorOnceCache.has(key)) { errorOnceCache.set(key, key); error(...message); } } }), "[project]/node_modules/next/dist/esm/lib/scheduler.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; /** * Schedules a function to be called on the next tick after the other promises * have been resolved. * * @param cb the function to schedule */ __turbopack_context__.s([ "atLeastOneTask", ()=>atLeastOneTask, "scheduleImmediate", ()=>scheduleImmediate, "scheduleOnNextTick", ()=>scheduleOnNextTick, "waitAtLeastOneReactRenderTask", ()=>waitAtLeastOneReactRenderTask ]); const scheduleOnNextTick = (cb)=>{ // We use Promise.resolve().then() here so that the operation is scheduled at // the end of the promise job queue, we then add it to the next process tick // to ensure it's evaluated afterwards. // // This was inspired by the implementation of the DataLoader interface: https://github.com/graphql/dataloader/blob/d336bd15282664e0be4b4a657cb796f09bafbc6b/src/index.js#L213-L255 // Promise.resolve().then(()=>{ if ("TURBOPACK compile-time falsy", 0) //TURBOPACK unreachable ; else { process.nextTick(cb); } }); }; const scheduleImmediate = (cb)=>{ if ("TURBOPACK compile-time falsy", 0) //TURBOPACK unreachable ; else { setImmediate(cb); } }; function atLeastOneTask() { return new Promise((resolve)=>scheduleImmediate(resolve)); } function waitAtLeastOneReactRenderTask() { if ("TURBOPACK compile-time falsy", 0) //TURBOPACK unreachable ; else { return new Promise((r)=>setImmediate(r)); } } }), "[project]/node_modules/next/dist/esm/server/response-cache/types.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "CachedRouteKind", ()=>CachedRouteKind, "IncrementalCacheKind", ()=>IncrementalCacheKind ]); var CachedRouteKind = /*#__PURE__*/ function(CachedRouteKind) { CachedRouteKind["APP_PAGE"] = "APP_PAGE"; CachedRouteKind["APP_ROUTE"] = "APP_ROUTE"; CachedRouteKind["PAGES"] = "PAGES"; CachedRouteKind["FETCH"] = "FETCH"; CachedRouteKind["REDIRECT"] = "REDIRECT"; CachedRouteKind["IMAGE"] = "IMAGE"; return CachedRouteKind; }({}); var IncrementalCacheKind = /*#__PURE__*/ function(IncrementalCacheKind) { IncrementalCacheKind["APP_PAGE"] = "APP_PAGE"; IncrementalCacheKind["APP_ROUTE"] = "APP_ROUTE"; IncrementalCacheKind["PAGES"] = "PAGES"; IncrementalCacheKind["FETCH"] = "FETCH"; IncrementalCacheKind["IMAGE"] = "IMAGE"; return IncrementalCacheKind; }({}); }), "[project]/node_modules/next/dist/esm/server/stream-utils/encoded-tags.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "ENCODED_TAGS", ()=>ENCODED_TAGS ]); const ENCODED_TAGS = { // opening tags do not have the closing `>` since they can contain other attributes such as `<body className=''>` OPENING: { // <html HTML: new Uint8Array([ 60, 104, 116, 109, 108 ]), // <head HEAD: new Uint8Array([ 60, 104, 101, 97, 100 ]), // <body BODY: new Uint8Array([ 60, 98, 111, 100, 121 ]) }, CLOSED: { // </head> HEAD: new Uint8Array([ 60, 47, 104, 101, 97, 100, 62 ]), // </body> BODY: new Uint8Array([ 60, 47, 98, 111, 100, 121, 62 ]), // </html> HTML: new Uint8Array([ 60, 47, 104, 116, 109, 108, 62 ]), // </body></html> BODY_AND_HTML: new Uint8Array([ 60, 47, 98, 111, 100, 121, 62, 60, 47, 104, 116, 109, 108, 62 ]) }, META: { // Only the match the prefix cause the suffix can be different wether it's xml compatible or not ">" or "/>" // <meta name="«nxt-icon»" // This is a special mark that will be replaced by the icon insertion script tag. ICON_MARK: new Uint8Array([ 60, 109, 101, 116, 97, 32, 110, 97, 109, 101, 61, 34, 194, 171, 110, 120, 116, 45, 105, 99, 111, 110, 194, 187, 34 ]) } }; }), "[project]/node_modules/next/dist/esm/server/stream-utils/uint8array-helpers.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; /** * Find the starting index of Uint8Array `b` within Uint8Array `a`. */ __turbopack_context__.s([ "indexOfUint8Array", ()=>indexOfUint8Array, "isEquivalentUint8Arrays", ()=>isEquivalentUint8Arrays, "removeFromUint8Array", ()=>removeFromUint8Array ]); function indexOfUint8Array(a, b) { if (b.length === 0) return 0; if (a.length === 0 || b.length > a.length) return -1; // Use Node's native implementation when available. if (typeof Buffer !== 'undefined') { const haystack = Buffer.isBuffer(a) ? a : Buffer.from(a.buffer, a.byteOffset, a.byteLength); return haystack.indexOf(b); } // start iterating through `a` for(let i = 0; i <= a.length - b.length; i++){ let completeMatch = true; // from index `i`, iterate through `b` and check for mismatch for(let j = 0; j < b.length; j++){ // if the values do not match, then this isn't a complete match, exit `b` iteration early and iterate to next index of `a`. if (a[i + j] !== b[j]) { completeMatch = false; break; } } if (completeMatch) { return i; } } return -1; } function isEquivalentUint8Arrays(a, b) { if (a.length !== b.length) return false; for(let i = 0; i < a.length; i++){ if (a[i] !== b[i]) return false; } return true; } function removeFromUint8Array(a, b) { const tagIndex = indexOfUint8Array(a, b); if (tagIndex === 0) return a.subarray(b.length); if (tagIndex > -1) { const removed = new Uint8Array(a.length - b.length); removed.set(a.subarray(0, tagIndex)); removed.set(a.subarray(tagIndex + b.length), tagIndex); return removed; } else { return a; } } }), "[project]/node_modules/next/dist/esm/shared/lib/errors/constants.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "MISSING_ROOT_TAGS_ERROR", ()=>MISSING_ROOT_TAGS_ERROR ]); const MISSING_ROOT_TAGS_ERROR = 'NEXT_MISSING_ROOT_TAGS'; }), "[project]/node_modules/next/dist/esm/client/components/app-router-headers.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "ACTION_HEADER", ()=>ACTION_HEADER, "FLIGHT_HEADERS", ()=>FLIGHT_HEADERS, "NEXT_ACTION_NOT_FOUND_HEADER", ()=>NEXT_ACTION_NOT_FOUND_HEADER, "NEXT_ACTION_REVALIDATED_HEADER", ()=>NEXT_ACTION_REVALIDATED_HEADER, "NEXT_DID_POSTPONE_HEADER", ()=>NEXT_DID_POSTPONE_HEADER, "NEXT_HMR_REFRESH_HASH_COOKIE", ()=>NEXT_HMR_REFRESH_HASH_COOKIE, "NEXT_HMR_REFRESH_HEADER", ()=>NEXT_HMR_REFRESH_HEADER, "NEXT_HTML_REQUEST_ID_HEADER", ()=>NEXT_HTML_REQUEST_ID_HEADER, "NEXT_INSTANT_PREFETCH_HEADER", ()=>NEXT_INSTANT_PREFETCH_HEADER, "NEXT_INSTANT_TEST_COOKIE", ()=>NEXT_INSTANT_TEST_COOKIE, "NEXT_IS_PRERENDER_HEADER", ()=>NEXT_IS_PRERENDER_HEADER, "NEXT_REQUEST_ID_HEADER", ()=>NEXT_REQUEST_ID_HEADER, "NEXT_REWRITTEN_PATH_HEADER", ()=>NEXT_REWRITTEN_PATH_HEADER, "NEXT_REWRITTEN_QUERY_HEADER", ()=>NEXT_REWRITTEN_QUERY_HEADER, "NEXT_ROUTER_PREFETCH_HEADER", ()=>NEXT_ROUTER_PREFETCH_HEADER, "NEXT_ROUTER_SEGMENT_PREFETCH_HEADER", ()=>NEXT_ROUTER_SEGMENT_PREFETCH_HEADER, "NEXT_ROUTER_STALE_TIME_HEADER", ()=>NEXT_ROUTER_STALE_TIME_HEADER, "NEXT_ROUTER_STATE_TREE_HEADER", ()=>NEXT_ROUTER_STATE_TREE_HEADER, "NEXT_RSC_UNION_QUERY", ()=>NEXT_RSC_UNION_QUERY, "NEXT_URL", ()=>NEXT_URL, "RSC_CONTENT_TYPE_HEADER", ()=>RSC_CONTENT_TYPE_HEADER, "RSC_HEADER", ()=>RSC_HEADER ]); const RSC_HEADER = 'rsc'; const ACTION_HEADER = 'next-action'; const NEXT_ROUTER_STATE_TREE_HEADER = 'next-router-state-tree'; const NEXT_ROUTER_PREFETCH_HEADER = 'next-router-prefetch'; const NEXT_ROUTER_SEGMENT_PREFETCH_HEADER = 'next-router-segment-prefetch'; const NEXT_HMR_REFRESH_HEADER = 'next-hmr-refresh'; const NEXT_HMR_REFRESH_HASH_COOKIE = '__next_hmr_refresh_hash__'; const NEXT_URL = 'next-url'; const RSC_CONTENT_TYPE_HEADER = 'text/x-component'; const NEXT_INSTANT_PREFETCH_HEADER = 'next-instant-navigation-testing-prefetch'; const NEXT_INSTANT_TEST_COOKIE = 'next-instant-navigation-testing'; const FLIGHT_HEADERS = [ RSC_HEADER, NEXT_ROUTER_STATE_TREE_HEADER, NEXT_ROUTER_PREFETCH_HEADER, NEXT_HMR_REFRESH_HEADER, NEXT_ROUTER_SEGMENT_PREFETCH_HEADER ]; const NEXT_RSC_UNION_QUERY = '_rsc'; const NEXT_ROUTER_STALE_TIME_HEADER = 'x-nextjs-stale-time'; const NEXT_DID_POSTPONE_HEADER = 'x-nextjs-postponed'; const NEXT_REWRITTEN_PATH_HEADER = 'x-nextjs-rewritten-path'; const NEXT_REWRITTEN_QUERY_HEADER = 'x-nextjs-rewritten-query'; const NEXT_IS_PRERENDER_HEADER = 'x-nextjs-prerender'; const NEXT_ACTION_NOT_FOUND_HEADER = 'x-nextjs-action-not-found'; const NEXT_REQUEST_ID_HEADER = 'x-nextjs-request-id'; const NEXT_HTML_REQUEST_ID_HEADER = 'x-nextjs-html-request-id'; const NEXT_ACTION_REVALIDATED_HEADER = 'x-action-revalidated'; }), "[project]/node_modules/next/dist/esm/shared/lib/hash.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; // http://www.cse.yorku.ca/~oz/hash.html // More specifically, 32-bit hash via djbxor // (ref: https://gist.github.com/eplawless/52813b1d8ad9af510d85?permalink_comment_id=3367765#gistcomment-3367765) // This is due to number type differences between rust for turbopack to js number types, // where rust does not have easy way to repreesnt js's 53-bit float number type for the matching // overflow behavior. This is more `correct` in terms of having canonical hash across different runtime / implementation // as can gaurantee determinstic output from 32bit hash. __turbopack_context__.s([ "djb2Hash", ()=>djb2Hash, "hexHash", ()=>hexHash ]); function djb2Hash(str) { let hash = 5381; for(let i = 0; i < str.length; i++){ const char = str.charCodeAt(i); hash = (hash << 5) + hash + char & 0xffffffff; } return hash >>> 0; } function hexHash(str) { return djb2Hash(str).toString(36).slice(0, 5); } }), "[project]/node_modules/next/dist/esm/shared/lib/router/utils/cache-busting-search-param.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "computeCacheBustingSearchParam", ()=>computeCacheBustingSearchParam, "computeLegacyCacheBustingSearchParam", ()=>computeLegacyCacheBustingSearchParam ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$hash$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/hash.js [ssr] (ecmascript)"); ; const CACHE_BUSTING_SEARCH_PARAM_DIGEST_BYTES = 12; const textEncoder = new TextEncoder(); function encodeCacheBustingSearchParam(bytes) { let binary = ''; for(let i = 0; i < bytes.length; i++){ binary += String.fromCharCode(bytes[i]); } return btoa(binary).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, ''); } function normalizeCacheBustingInput(value) { if (value === undefined) { return '0'; } return Array.isArray(value) ? value.join(',') : value; } function createCacheBustingSearchParamInput(prefetchHeader, segmentPrefetchHeader, stateTreeHeader, nextUrlHeader) { if ((prefetchHeader === undefined || prefetchHeader === '0') && segmentPrefetchHeader === undefined && stateTreeHeader === undefined && nextUrlHeader === undefined) { return null; } return [ prefetchHeader ?? '0', normalizeCacheBustingInput(segmentPrefetchHeader), normalizeCacheBustingInput(stateTreeHeader), normalizeCacheBustingInput(nextUrlHeader) ].join(','); } async function computeCacheBustingSearchParamFromInput(input) { // Truncate SHA-256 to 96 bits to keep `_rsc` compact const digest = await globalThis.crypto.subtle.digest('SHA-256', textEncoder.encode(input)); return encodeCacheBustingSearchParam(new Uint8Array(digest).subarray(0, CACHE_BUSTING_SEARCH_PARAM_DIGEST_BYTES)); } async function computeCacheBustingSearchParam(prefetchHeader, segmentPrefetchHeader, stateTreeHeader, nextUrlHeader) { const input = createCacheBustingSearchParamInput(prefetchHeader, segmentPrefetchHeader, stateTreeHeader, nextUrlHeader); if (input === null) { return ''; } return computeCacheBustingSearchParamFromInput(input); } function computeLegacyCacheBustingSearchParam(prefetchHeader, segmentPrefetchHeader, stateTreeHeader, nextUrlHeader) { const input = createCacheBustingSearchParamInput(prefetchHeader, segmentPrefetchHeader, stateTreeHeader, nextUrlHeader); if (input === null) { return ''; } return (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$hash$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["hexHash"])(input); } }), "[project]/node_modules/next/dist/esm/server/stream-utils/node-web-streams-helper.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "chainStreams", ()=>chainStreams, "continueDynamicHTMLResume", ()=>continueDynamicHTMLResume, "continueDynamicPrerender", ()=>continueDynamicPrerender, "continueFizzStream", ()=>continueFizzStream, "continueStaticFallbackPrerender", ()=>continueStaticFallbackPrerender, "continueStaticPrerender", ()=>continueStaticPrerender, "createBufferedTransformStream", ()=>createBufferedTransformStream, "createDocumentClosingStream", ()=>createDocumentClosingStream, "createInstantTestScriptInsertionTransformStream", ()=>createInstantTestScriptInsertionTransformStream, "createRootLayoutValidatorStream", ()=>createRootLayoutValidatorStream, "createRuntimePrefetchTransformStream", ()=>createRuntimePrefetchTransformStream, "renderToInitialFizzStream", ()=>renderToInitialFizzStream, "streamFromBuffer", ()=>streamFromBuffer, "streamFromString", ()=>streamFromString, "streamToBuffer", ()=>streamToBuffer, "streamToString", ()=>streamToString, "streamToUint8Array", ()=>streamToUint8Array ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$tracer$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/lib/trace/tracer.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$constants$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/lib/trace/constants.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$detached$2d$promise$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/lib/detached-promise.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$scheduler$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/lib/scheduler.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/stream-utils/encoded-tags.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$uint8array$2d$helpers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/stream-utils/uint8array-helpers.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$errors$2f$constants$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/errors/constants.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$app$2d$router$2d$headers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/client/components/app-router-headers.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$cache$2d$busting$2d$search$2d$param$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/cache-busting-search-param.js [ssr] (ecmascript)"); ; ; ; ; ; ; ; ; ; function voidCatch() { // this catcher is designed to be used with pipeTo where we expect the underlying // pipe implementation to forward errors but we don't want the pipeTo promise to reject // and be unhandled } // We can share the same encoder instance everywhere // Notably we cannot do the same for TextDecoder because it is stateful // when handling streaming data const encoder = new TextEncoder(); function chainStreams(...streams) { // If we have no streams, return an empty stream. This behavior is // intentional as we're now providing the `RenderResult.EMPTY` value. if (streams.length === 0) { return new ReadableStream({ start (controller) { controller.close(); } }); } // If we only have 1 stream we fast path it by returning just this stream if (streams.length === 1) { return streams[0]; } const { readable, writable } = new TransformStream(); // We always initiate pipeTo immediately. We know we have at least 2 streams // so we need to avoid closing the writable when this one finishes. let promise = streams[0].pipeTo(writable, { preventClose: true }); let i = 1; for(; i < streams.length - 1; i++){ const nextStream = streams[i]; promise = promise.then(()=>nextStream.pipeTo(writable, { preventClose: true })); } // We can omit the length check because we halted before the last stream and there // is at least two streams so the lastStream here will always be defined const lastStream = streams[i]; promise = promise.then(()=>lastStream.pipeTo(writable)); // Catch any errors from the streams and ignore them, they will be handled // by whatever is consuming the readable stream. promise.catch(voidCatch); return readable; } function streamFromString(str) { return new ReadableStream({ start (controller) { controller.enqueue(encoder.encode(str)); controller.close(); } }); } function streamFromBuffer(chunk) { return new ReadableStream({ start (controller) { controller.enqueue(chunk); controller.close(); } }); } async function streamToChunks(stream) { const reader = stream.getReader(); const chunks = []; while(true){ const { done, value } = await reader.read(); if (done) { break; } chunks.push(value); } return chunks; } function concatUint8Arrays(chunks) { const totalLength = chunks.reduce((sum, chunk)=>sum + chunk.length, 0); const result = new Uint8Array(totalLength); let offset = 0; for (const chunk of chunks){ result.set(chunk, offset); offset += chunk.length; } return result; } async function streamToUint8Array(stream) { return concatUint8Arrays(await streamToChunks(stream)); } async function streamToBuffer(stream) { return Buffer.concat(await streamToChunks(stream)); } async function streamToString(stream, signal) { const decoder = new TextDecoder('utf-8', { fatal: true }); let string = ''; for await (const chunk of stream){ if (signal == null ? void 0 : signal.aborted) { return string; } string += decoder.decode(chunk, { stream: true }); } string += decoder.decode(); return string; } function createBufferedTransformStream(options = {}) { const { maxBufferByteLength = Infinity } = options; let bufferedChunks = []; let bufferByteLength = 0; let pending; const flush = (controller)=>{ try { if (bufferedChunks.length === 0) { return; } const chunk = new Uint8Array(bufferByteLength); let copiedBytes = 0; for(let i = 0; i < bufferedChunks.length; i++){ const bufferedChunk = bufferedChunks[i]; chunk.set(bufferedChunk, copiedBytes); copiedBytes += bufferedChunk.byteLength; } // We just wrote all the buffered chunks so we need to reset the bufferedChunks array // and our bufferByteLength to prepare for the next round of buffered chunks bufferedChunks.length = 0; bufferByteLength = 0; controller.enqueue(chunk); } catch { // If an error occurs while enqueuing, it can't be due to this // transformer. It's most likely caused by the controller having been // errored (for example, if the stream was cancelled). } }; const scheduleFlush = (controller)=>{ if (pending) { return; } const detached = new __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$detached$2d$promise$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["DetachedPromise"](); pending = detached; (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$scheduler$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["scheduleImmediate"])(()=>{ try { flush(controller); } finally{ pending = undefined; detached.resolve(); } }); }; return new TransformStream({ transform (chunk, controller) { // Combine the previous buffer with the new chunk. bufferedChunks.push(chunk); bufferByteLength += chunk.byteLength; if (bufferByteLength >= maxBufferByteLength) { flush(controller); } else { scheduleFlush(controller); } }, flush () { return pending == null ? void 0 : pending.promise; } }); } function renderToInitialFizzStream({ ReactDOMServer, element, streamOptions }) { return (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$tracer$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["getTracer"])().trace(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$constants$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["AppRenderSpan"].renderToReadableStream, async ()=>ReactDOMServer.renderToReadableStream(element, streamOptions)); } function createMetadataTransformStream(insert) { let chunkIndex = -1; let isMarkRemoved = false; return new TransformStream({ async transform (chunk, controller) { let iconMarkIndex = -1; let closedHeadIndex = -1; chunkIndex++; if (isMarkRemoved) { controller.enqueue(chunk); return; } let iconMarkLength = 0; // Only search for the closed head tag once if (iconMarkIndex === -1) { iconMarkIndex = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$uint8array$2d$helpers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["indexOfUint8Array"])(chunk, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].META.ICON_MARK); if (iconMarkIndex === -1) { controller.enqueue(chunk); return; } else { // When we found the `<meta name="«nxt-icon»"` tag prefix, we will remove it from the chunk. // Its close tag could either be `/>` or `>`, checking the next char to ensure we cover both cases. iconMarkLength = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].META.ICON_MARK.length; // Check if next char is /, this is for xml mode. if (chunk[iconMarkIndex + iconMarkLength] === 47) { iconMarkLength += 2; } else { // The last char is `>` iconMarkLength++; } } } // Check if icon mark is inside <head> tag in the first chunk. if (chunkIndex === 0) { closedHeadIndex = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$uint8array$2d$helpers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["indexOfUint8Array"])(chunk, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].CLOSED.HEAD); if (iconMarkIndex !== -1) { // The mark icon is located in the 1st chunk before the head tag. // We do not need to insert the script tag in this case because it's in the head. // Just remove the icon mark from the chunk. if (iconMarkIndex < closedHeadIndex) { const replaced = new Uint8Array(chunk.length - iconMarkLength); // Remove the icon mark from the chunk. replaced.set(chunk.subarray(0, iconMarkIndex)); replaced.set(chunk.subarray(iconMarkIndex + iconMarkLength), iconMarkIndex); chunk = replaced; } else { // The icon mark is after the head tag, replace and insert the script tag at that position. const insertion = await insert(); const encodedInsertion = encoder.encode(insertion); const insertionLength = encodedInsertion.length; const replaced = new Uint8Array(chunk.length - iconMarkLength + insertionLength); replaced.set(chunk.subarray(0, iconMarkIndex)); replaced.set(encodedInsertion, iconMarkIndex); replaced.set(chunk.subarray(iconMarkIndex + iconMarkLength), iconMarkIndex + insertionLength); chunk = replaced; } isMarkRemoved = true; } // If there's no icon mark located, it will be handled later when if present in the following chunks. } else { // When it's appeared in the following chunks, we'll need to // remove the mark and then insert the script tag at that position. const insertion = await insert(); const encodedInsertion = encoder.encode(insertion); const insertionLength = encodedInsertion.length; // Replace the icon mark with the hoist script or empty string. const replaced = new Uint8Array(chunk.length - iconMarkLength + insertionLength); // Set the first part of the chunk, before the icon mark. replaced.set(chunk.subarray(0, iconMarkIndex)); // Set the insertion after the icon mark. replaced.set(encodedInsertion, iconMarkIndex); // Set the rest of the chunk after the icon mark. replaced.set(chunk.subarray(iconMarkIndex + iconMarkLength), iconMarkIndex + insertionLength); chunk = replaced; isMarkRemoved = true; } controller.enqueue(chunk); } }); } function createHeadInsertionTransformStream(insert) { let inserted = false; // We need to track if this transform saw any bytes because if it didn't // we won't want to insert any server HTML at all let hasBytes = false; return new TransformStream({ async transform (chunk, controller) { hasBytes = true; const insertion = await insert(); if (inserted) { if (insertion) { const encodedInsertion = encoder.encode(insertion); controller.enqueue(encodedInsertion); } controller.enqueue(chunk); } else { // TODO (@Ethan-Arrowood): Replace the generic `indexOfUint8Array` method with something finely tuned for the subset of things actually being checked for. const index = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$uint8array$2d$helpers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["indexOfUint8Array"])(chunk, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].CLOSED.HEAD); // In fully static rendering or non PPR rendering cases: // `/head>` will always be found in the chunk in first chunk rendering. if (index !== -1) { if (insertion) { const encodedInsertion = encoder.encode(insertion); // Get the total count of the bytes in the chunk and the insertion // e.g. // chunk = <head><meta charset="utf-8"></head> // insertion = <script>...</script> // output = <head><meta charset="utf-8"> [ <script>...</script> ] </head> const insertedHeadContent = new Uint8Array(chunk.length + encodedInsertion.length); // Append the first part of the chunk, before the head tag insertedHeadContent.set(chunk.slice(0, index)); // Append the server inserted content insertedHeadContent.set(encodedInsertion, index); // Append the rest of the chunk insertedHeadContent.set(chunk.slice(index), index + encodedInsertion.length); controller.enqueue(insertedHeadContent); } else { controller.enqueue(chunk); } inserted = true; } else { // This will happens in PPR rendering during next start, when the page is partially rendered. // When the page resumes, the head tag will be found in the middle of the chunk. // Where we just need to append the insertion and chunk to the current stream. // e.g. // PPR-static: <head>...</head><body> [ resume content ] </body> // PPR-resume: [ insertion ] [ rest content ] if (insertion) { controller.enqueue(encoder.encode(insertion)); } controller.enqueue(chunk); inserted = true; } } }, async flush (controller) { // Check before closing if there's anything remaining to insert. if (hasBytes) { const insertion = await insert(); if (insertion) { controller.enqueue(encoder.encode(insertion)); } } } }); } async function createClientResumeScriptInsertionTransformStream() { const segmentPath = '/_full'; const cacheBustingHeader = await (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$cache$2d$busting$2d$search$2d$param$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["computeCacheBustingSearchParam"])('1', '/_full', undefined, undefined // headers[NEXT_URL] ); const searchStr = `${__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$app$2d$router$2d$headers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["NEXT_RSC_UNION_QUERY"]}=${cacheBustingHeader}`; const NEXT_CLIENT_RESUME_SCRIPT = `<script>__NEXT_CLIENT_RESUME=fetch(location.pathname+'?${searchStr}',{credentials:'same-origin',headers:{'${__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$app$2d$router$2d$headers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["RSC_HEADER"]}': '1','${__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$app$2d$router$2d$headers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["NEXT_ROUTER_PREFETCH_HEADER"]}': '1','${__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$app$2d$router$2d$headers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["NEXT_ROUTER_SEGMENT_PREFETCH_HEADER"]}': '${segmentPath}'}})</script>`; let didAlreadyInsert = false; return new TransformStream({ transform (chunk, controller) { if (didAlreadyInsert) { // Already inserted the script into the head. Pass through. controller.enqueue(chunk); return; } // TODO (@Ethan-Arrowood): Replace the generic `indexOfUint8Array` method with something finely tuned for the subset of things actually being checked for. const headClosingTagIndex = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$uint8array$2d$helpers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["indexOfUint8Array"])(chunk, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].CLOSED.HEAD); if (headClosingTagIndex === -1) { // In fully static rendering or non PPR rendering cases: // `/head>` will always be found in the chunk in first chunk rendering. controller.enqueue(chunk); return; } const encodedInsertion = encoder.encode(NEXT_CLIENT_RESUME_SCRIPT); // Get the total count of the bytes in the chunk and the insertion // e.g. // chunk = <head><meta charset="utf-8"></head> // insertion = <script>...</script> // output = <head><meta charset="utf-8"> [ <script>...</script> ] </head> const insertedHeadContent = new Uint8Array(chunk.length + encodedInsertion.length); // Append the first part of the chunk, before the head tag insertedHeadContent.set(chunk.slice(0, headClosingTagIndex)); // Append the server inserted content insertedHeadContent.set(encodedInsertion, headClosingTagIndex); // Append the rest of the chunk insertedHeadContent.set(chunk.slice(headClosingTagIndex), headClosingTagIndex + encodedInsertion.length); controller.enqueue(insertedHeadContent); didAlreadyInsert = true; } }); } async function createInstantTestScriptInsertionTransformStream(requestId) { // Kick off a fetch for the static RSC payload. This is the hydration // source for the locked static shell — same as the __NEXT_CLIENT_RESUME // fetch used for fallback routes, but with NEXT_INSTANT_PREFETCH_HEADER // so the server returns static-only data. // // The fetch promise is stored as self.__next_instant_test, which doubles // as the feature flag (truthy = instant test mode). The client processes // this as a fallback prerender payload for hydration. const segmentPath = '/_full'; const cacheBustingHeader = await (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$cache$2d$busting$2d$search$2d$param$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["computeCacheBustingSearchParam"])('1', segmentPath, undefined, undefined); const searchStr = `${__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$app$2d$router$2d$headers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["NEXT_RSC_UNION_QUERY"]}=${cacheBustingHeader}`; // In dev mode, inject self.__next_r (request ID) so that HMR WebSocket // and debug channel initialization don't crash. The static shell // bypasses renderToFizzStream which normally injects this via // bootstrapScriptContent. const requestIdScript = requestId !== null ? `self.__next_r=${JSON.stringify(requestId)};` : ''; const INSTANT_TEST_SCRIPT = `<script>${requestIdScript}self.__next_instant_test=fetch(location.pathname+'?${searchStr}',{credentials:'same-origin',headers:{'${__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$app$2d$router$2d$headers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["RSC_HEADER"]}':'1','${__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$app$2d$router$2d$headers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["NEXT_ROUTER_PREFETCH_HEADER"]}':'1','${__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$app$2d$router$2d$headers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["NEXT_ROUTER_SEGMENT_PREFETCH_HEADER"]}':'${segmentPath}','${__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$app$2d$router$2d$headers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["NEXT_INSTANT_PREFETCH_HEADER"]}':'1'}})</script>`; let didAlreadyInsert = false; return new TransformStream({ transform (chunk, controller) { if (didAlreadyInsert) { // Already inserted the script into the head. Pass through. controller.enqueue(chunk); return; } // Find the opening <head tag (may have attributes like <head class="...">) const headOpenIndex = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$uint8array$2d$helpers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["indexOfUint8Array"])(chunk, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].OPENING.HEAD); if (headOpenIndex === -1) { controller.enqueue(chunk); return; } // Find the closing > of the <head ...> tag const headCloseAngle = chunk.indexOf(62, headOpenIndex + __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].OPENING.HEAD.length); if (headCloseAngle === -1) { controller.enqueue(chunk); return; } const encodedInsertion = encoder.encode(INSTANT_TEST_SCRIPT); const insertionPoint = headCloseAngle + 1; // e.g. // chunk = <!DOCTYPE html><html><head><meta charset="utf-8">... // insertion = <script>self.__next_instant_test=fetch(...)</script> // output = <!DOCTYPE html><html><head> [ <script>...</script> ] <meta charset="utf-8">... const insertedHeadContent = new Uint8Array(chunk.length + encodedInsertion.length); insertedHeadContent.set(chunk.slice(0, insertionPoint)); insertedHeadContent.set(encodedInsertion, insertionPoint); insertedHeadContent.set(chunk.slice(insertionPoint), insertionPoint + encodedInsertion.length); controller.enqueue(insertedHeadContent); didAlreadyInsert = true; }, flush (controller) { // Append closing tags so the browser can parse the full document. controller.enqueue(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].CLOSED.BODY_AND_HTML); } }); } // Suffix after main body content - scripts before </body>, // but wait for the major chunks to be enqueued. function createDeferredSuffixStream(suffix) { let flushed = false; let pending; const flush = (controller)=>{ const detached = new __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$detached$2d$promise$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["DetachedPromise"](); pending = detached; (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$scheduler$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["scheduleImmediate"])(()=>{ try { controller.enqueue(encoder.encode(suffix)); } catch { // If an error occurs while enqueuing it can't be due to this // transformers fault. It's likely due to the controller being // errored due to the stream being cancelled. } finally{ pending = undefined; detached.resolve(); } }); }; return new TransformStream({ transform (chunk, controller) { controller.enqueue(chunk); // If we've already flushed, we're done. if (flushed) return; // Schedule the flush to happen. flushed = true; flush(controller); }, flush (controller) { if (pending) return pending.promise; if (flushed) return; // Flush now. controller.enqueue(encoder.encode(suffix)); } }); } function createFlightDataInjectionTransformStream(stream, delayDataUntilFirstHtmlChunk) { let htmlStreamFinished = false; let pull = null; let donePulling = false; function startOrContinuePulling(controller) { if (!pull) { pull = startPulling(controller); } return pull; } async function startPulling(controller) { const reader = stream.getReader(); if (delayDataUntilFirstHtmlChunk) { // NOTE: streaming flush // We are buffering here for the inlined data stream because the // "shell" stream might be chunkenized again by the underlying stream // implementation, e.g. with a specific high-water mark. To ensure it's // the safe timing to pipe the data stream, this extra tick is // necessary. // We don't start reading until we've left the current Task to ensure // that it's inserted after flushing the shell. Note that this implementation // might get stale if impl details of Fizz change in the future. await (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$scheduler$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["atLeastOneTask"])(); } try { while(true){ const { done, value } = await reader.read(); if (done) { donePulling = true; return; } // We want to prioritize HTML over RSC data. // The SSR render is based on the same RSC stream, so when we get a new RSC chunk, // we're likely to produce an HTML chunk as well, so give it a chance to flush first. if (!delayDataUntilFirstHtmlChunk && !htmlStreamFinished) { await (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$scheduler$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["atLeastOneTask"])(); } controller.enqueue(value); } } catch (err) { controller.error(err); } } return new TransformStream({ start (controller) { if (!delayDataUntilFirstHtmlChunk) { startOrContinuePulling(controller); } }, transform (chunk, controller) { controller.enqueue(chunk); // Start the streaming if it hasn't already been started yet. if (delayDataUntilFirstHtmlChunk) { startOrContinuePulling(controller); } }, flush (controller) { htmlStreamFinished = true; if (donePulling) { return; } return startOrContinuePulling(controller); } }); } const CLOSE_TAG = '</body></html>'; /** * This transform stream moves the suffix to the end of the stream, so results * like `</body></html><script>...</script>` will be transformed to * `<script>...</script></body></html>`. */ function createMoveSuffixStream() { let foundSuffix = false; return new TransformStream({ transform (chunk, controller) { if (foundSuffix) { return controller.enqueue(chunk); } const index = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$uint8array$2d$helpers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["indexOfUint8Array"])(chunk, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].CLOSED.BODY_AND_HTML); if (index > -1) { foundSuffix = true; // If the whole chunk is the suffix, then don't write anything, it will // be written in the flush. if (chunk.length === __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].CLOSED.BODY_AND_HTML.length) { return; } // Write out the part before the suffix. const before = chunk.slice(0, index); controller.enqueue(before); // In the case where the suffix is in the middle of the chunk, we need // to split the chunk into two parts. if (chunk.length > __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].CLOSED.BODY_AND_HTML.length + index) { // Write out the part after the suffix. const after = chunk.slice(index + __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].CLOSED.BODY_AND_HTML.length); controller.enqueue(after); } } else { controller.enqueue(chunk); } }, flush (controller) { // Even if we didn't find the suffix, the HTML is not valid if we don't // add it, so insert it at the end. controller.enqueue(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].CLOSED.BODY_AND_HTML); } }); } function createStripDocumentClosingTagsTransform() { return new TransformStream({ transform (chunk, controller) { // We rely on the assumption that chunks will never break across a code unit. // This is reasonable because we currently concat all of React's output from a single // flush into one chunk before streaming it forward which means the chunk will represent // a single coherent utf-8 string. This is not safe to use if we change our streaming to no // longer do this large buffered chunk if ((0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$uint8array$2d$helpers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["isEquivalentUint8Arrays"])(chunk, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].CLOSED.BODY_AND_HTML) || (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$uint8array$2d$helpers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["isEquivalentUint8Arrays"])(chunk, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].CLOSED.BODY) || (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$uint8array$2d$helpers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["isEquivalentUint8Arrays"])(chunk, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].CLOSED.HTML)) { // the entire chunk is the closing tags; return without enqueueing anything. return; } // We assume these tags will go at together at the end of the document and that // they won't appear anywhere else in the document. This is not really a safe assumption // but until we revamp our streaming infra this is a performant way to string the tags chunk = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$uint8array$2d$helpers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["removeFromUint8Array"])(chunk, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].CLOSED.BODY); chunk = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$uint8array$2d$helpers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["removeFromUint8Array"])(chunk, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].CLOSED.HTML); controller.enqueue(chunk); } }); } function createHtmlDataDplIdTransformStream(dplId) { let didTransform = false; return new TransformStream({ transform (chunk, controller) { if (didTransform) { controller.enqueue(chunk); return; } const htmlTagIndex = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$uint8array$2d$helpers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["indexOfUint8Array"])(chunk, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].OPENING.HTML); if (htmlTagIndex === -1) { controller.enqueue(chunk); return; } // Insert the data-dpl-id attribute right after "<html " const insertionPoint = htmlTagIndex + __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].OPENING.HTML.length; const attribute = ` data-dpl-id="${dplId}"`; const encodedAttribute = encoder.encode(attribute); const modifiedChunk = new Uint8Array(chunk.length + encodedAttribute.length); // Copy everything before the insertion point modifiedChunk.set(chunk.subarray(0, insertionPoint)); // Insert the attribute modifiedChunk.set(encodedAttribute, insertionPoint); // Copy everything after modifiedChunk.set(chunk.subarray(insertionPoint), insertionPoint + encodedAttribute.length); controller.enqueue(modifiedChunk); didTransform = true; } }); } function createRootLayoutValidatorStream() { let foundHtml = false; let foundBody = false; return new TransformStream({ async transform (chunk, controller) { // Peek into the streamed chunk to see if the tags are present. if (!foundHtml && (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$uint8array$2d$helpers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["indexOfUint8Array"])(chunk, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].OPENING.HTML) > -1) { foundHtml = true; } if (!foundBody && (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$uint8array$2d$helpers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["indexOfUint8Array"])(chunk, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$encoded$2d$tags$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["ENCODED_TAGS"].OPENING.BODY) > -1) { foundBody = true; } controller.enqueue(chunk); }, flush (controller) { const missingTags = []; if (!foundHtml) missingTags.push('html'); if (!foundBody) missingTags.push('body'); if (!missingTags.length) return; controller.enqueue(encoder.encode(`<html id="__next_error__"> <template data-next-error-message="Missing ${missingTags.map((c)=>`<${c}>`).join(missingTags.length > 1 ? ' and ' : '')} tags in the root layout.\nRead more at https://nextjs.org/docs/messages/missing-root-layout-tags" data-next-error-digest="${__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$errors$2f$constants$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["MISSING_ROOT_TAGS_ERROR"]}" data-next-error-stack="" ></template> `)); } }); } function chainTransformers(readable, transformers) { let stream = readable; for (const transformer of transformers){ if (!transformer) continue; stream = stream.pipeThrough(transformer); } return stream; } async function continueFizzStream(renderStream, { suffix, inlinedDataStream, isStaticGeneration, deploymentId, getServerInsertedHTML, getServerInsertedMetadata, validateRootLayout }) { // Suffix itself might contain close tags at the end, so we need to split it. const suffixUnclosed = suffix ? suffix.split(CLOSE_TAG, 1)[0] : null; if (isStaticGeneration) { // If we're generating static HTML we need to wait for it to resolve before continuing. await renderStream.allReady; } else { // Otherwise, we want to make sure Fizz is done with all microtasky work // before we start pulling the stream and cause a flush. await (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$scheduler$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["waitAtLeastOneReactRenderTask"])(); } return chainTransformers(renderStream, [ // Buffer everything to avoid flushing too frequently createBufferedTransformStream(), // Insert data-dpl-id attribute on the html tag deploymentId ? createHtmlDataDplIdTransformStream(deploymentId) : null, // Transform metadata createMetadataTransformStream(getServerInsertedMetadata), // Insert suffix content suffixUnclosed != null && suffixUnclosed.length > 0 ? createDeferredSuffixStream(suffixUnclosed) : null, // Insert the inlined data (Flight data, form state, etc.) stream into the HTML inlinedDataStream ? createFlightDataInjectionTransformStream(inlinedDataStream, true) : null, // Validate the root layout for missing html or body tags validateRootLayout ? createRootLayoutValidatorStream() : null, // Close tags should always be deferred to the end createMoveSuffixStream(), // Special head insertions // TODO-APP: Insert server side html to end of head in app layout rendering, to avoid // hydration errors. Remove this once it's ready to be handled by react itself. createHeadInsertionTransformStream(getServerInsertedHTML) ]); } async function continueDynamicPrerender(prerenderStream, { getServerInsertedHTML, getServerInsertedMetadata, deploymentId }) { return chainTransformers(prerenderStream, [ // Buffer everything to avoid flushing too frequently createBufferedTransformStream(), createStripDocumentClosingTagsTransform(), // Insert data-dpl-id attribute on the html tag deploymentId ? createHtmlDataDplIdTransformStream(deploymentId) : null, // Insert generated tags to head createHeadInsertionTransformStream(getServerInsertedHTML), // Transform metadata createMetadataTransformStream(getServerInsertedMetadata) ]); } async function continueStaticPrerender(prerenderStream, { inlinedDataStream, getServerInsertedHTML, getServerInsertedMetadata, deploymentId }) { return chainTransformers(prerenderStream, [ // Buffer everything to avoid flushing too frequently createBufferedTransformStream(), // Add build id comment to start of the HTML document (in export mode) // Insert data-dpl-id attribute on the html tag deploymentId ? createHtmlDataDplIdTransformStream(deploymentId) : null, // Insert generated tags to head createHeadInsertionTransformStream(getServerInsertedHTML), // Transform metadata createMetadataTransformStream(getServerInsertedMetadata), // Insert the inlined data (Flight data, form state, etc.) stream into the HTML createFlightDataInjectionTransformStream(inlinedDataStream, true), // Close tags should always be deferred to the end createMoveSuffixStream() ]); } async function continueStaticFallbackPrerender(prerenderStream, { inlinedDataStream, getServerInsertedHTML, getServerInsertedMetadata, deploymentId }) { // Same as `continueStaticPrerender`, but also inserts an additional script // to instruct the client to start fetching the hydration data as early // as possible. return chainTransformers(prerenderStream, [ // Buffer everything to avoid flushing too frequently createBufferedTransformStream(), // Insert data-dpl-id attribute on the html tag deploymentId ? createHtmlDataDplIdTransformStream(deploymentId) : null, // Insert generated tags to head createHeadInsertionTransformStream(getServerInsertedHTML), // Insert the client resume script into the head await createClientResumeScriptInsertionTransformStream(), // Transform metadata createMetadataTransformStream(getServerInsertedMetadata), // Insert the inlined data (Flight data, form state, etc.) stream into the HTML createFlightDataInjectionTransformStream(inlinedDataStream, true), // Close tags should always be deferred to the end createMoveSuffixStream() ]); } async function continueDynamicHTMLResume(renderStream, { delayDataUntilFirstHtmlChunk, inlinedDataStream, getServerInsertedHTML, getServerInsertedMetadata, deploymentId }) { return chainTransformers(renderStream, [ // Buffer everything to avoid flushing too frequently createBufferedTransformStream(), // Insert data-dpl-id attribute on the html tag deploymentId ? createHtmlDataDplIdTransformStream(deploymentId) : null, // Insert generated tags to head createHeadInsertionTransformStream(getServerInsertedHTML), // Transform metadata createMetadataTransformStream(getServerInsertedMetadata), // Insert the inlined data (Flight data, form state, etc.) stream into the HTML createFlightDataInjectionTransformStream(inlinedDataStream, delayDataUntilFirstHtmlChunk), // Close tags should always be deferred to the end createMoveSuffixStream() ]); } function createDocumentClosingStream() { return streamFromString(CLOSE_TAG); } function createRuntimePrefetchTransformStream(sentinel, isPartial, staleTime) { const enc = new TextEncoder(); // Search for: [<sentinel>] // Replace with: [<isPartial>,<staleTime>] const search = enc.encode(`[${sentinel}]`); const first = search[0]; const replace = enc.encode(`[${isPartial},${staleTime}]`); const searchLen = search.length; let currentChunk = null; let found = false; function processChunk(controller, nextChunk) { if (found) { if (nextChunk) { controller.enqueue(nextChunk); } return; } if (currentChunk) { // We can't search past the index that can contain a full match let exclusiveUpperBound = currentChunk.length - (searchLen - 1); if (nextChunk) { // If we have any overflow bytes we can search up to the chunk's final byte exclusiveUpperBound += Math.min(nextChunk.length, searchLen - 1); } if (exclusiveUpperBound < 1) { // we can't match the current chunk. controller.enqueue(currentChunk); currentChunk = nextChunk // advance so we don't process this chunk again ; return; } let currentIndex = currentChunk.indexOf(first); // check the current candidate match if it is within the bounds of our search space for the currentChunk candidateLoop: while(-1 < currentIndex && currentIndex < exclusiveUpperBound){ // We already know index 0 matches because we used indexOf to find the candidateIndex so we start at index 1 let matchIndex = 1; while(matchIndex < searchLen){ const candidateIndex = currentIndex + matchIndex; const candidateValue = candidateIndex < currentChunk.length ? currentChunk[candidateIndex] : nextChunk[candidateIndex - currentChunk.length]; if (candidateValue !== search[matchIndex]) { // No match, reset and continue the search from the next position currentIndex = currentChunk.indexOf(first, currentIndex + 1); continue candidateLoop; } matchIndex++; } // We found a complete match. currentIndex is our starting point to replace the value. found = true; // enqueue everything up to the match controller.enqueue(currentChunk.subarray(0, currentIndex)); // enqueue the replacement value controller.enqueue(replace); // If there are bytes in the currentChunk after the match enqueue them if (currentIndex + searchLen < currentChunk.length) { controller.enqueue(currentChunk.slice(currentIndex + searchLen)); } // If we have a next chunk we enqueue it now if (nextChunk) { // if replacement spills over to the next chunk we first exclude the replaced bytes const overflowBytes = currentIndex + searchLen - currentChunk.length; const truncatedChunk = overflowBytes > 0 ? nextChunk.subarray(overflowBytes) : nextChunk; controller.enqueue(truncatedChunk); } // We are now in found mode and don't need to track currentChunk anymore currentChunk = null; return; } // No match found in this chunk, emit it and wait for the next one controller.enqueue(currentChunk); } // Advance to the next chunk currentChunk = nextChunk; } return new TransformStream({ transform (chunk, controller) { processChunk(controller, chunk); }, flush (controller) { processChunk(controller, null); } }); } }), "[project]/node_modules/next/dist/esm/lib/constants.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "ACTION_SUFFIX", ()=>ACTION_SUFFIX, "APP_DIR_ALIAS", ()=>APP_DIR_ALIAS, "CACHE_ONE_YEAR_SECONDS", ()=>CACHE_ONE_YEAR_SECONDS, "DOT_NEXT_ALIAS", ()=>DOT_NEXT_ALIAS, "ESLINT_DEFAULT_DIRS", ()=>ESLINT_DEFAULT_DIRS, "GSP_NO_RETURNED_VALUE", ()=>GSP_NO_RETURNED_VALUE, "GSSP_COMPONENT_MEMBER_ERROR", ()=>GSSP_COMPONENT_MEMBER_ERROR, "GSSP_NO_RETURNED_VALUE", ()=>GSSP_NO_RETURNED_VALUE, "HTML_CONTENT_TYPE_HEADER", ()=>HTML_CONTENT_TYPE_HEADER, "INFINITE_CACHE", ()=>INFINITE_CACHE, "INSTRUMENTATION_HOOK_FILENAME", ()=>INSTRUMENTATION_HOOK_FILENAME, "JSON_CONTENT_TYPE_HEADER", ()=>JSON_CONTENT_TYPE_HEADER, "MATCHED_PATH_HEADER", ()=>MATCHED_PATH_HEADER, "MIDDLEWARE_FILENAME", ()=>MIDDLEWARE_FILENAME, "MIDDLEWARE_LOCATION_REGEXP", ()=>MIDDLEWARE_LOCATION_REGEXP, "NEXT_BODY_SUFFIX", ()=>NEXT_BODY_SUFFIX, "NEXT_CACHE_IMPLICIT_TAG_ID", ()=>NEXT_CACHE_IMPLICIT_TAG_ID, "NEXT_CACHE_REVALIDATED_TAGS_HEADER", ()=>NEXT_CACHE_REVALIDATED_TAGS_HEADER, "NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER", ()=>NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER, "NEXT_CACHE_ROOT_PARAM_TAG_ID", ()=>NEXT_CACHE_ROOT_PARAM_TAG_ID, "NEXT_CACHE_SOFT_TAG_MAX_LENGTH", ()=>NEXT_CACHE_SOFT_TAG_MAX_LENGTH, "NEXT_CACHE_TAGS_HEADER", ()=>NEXT_CACHE_TAGS_HEADER, "NEXT_CACHE_TAG_MAX_ITEMS", ()=>NEXT_CACHE_TAG_MAX_ITEMS, "NEXT_CACHE_TAG_MAX_LENGTH", ()=>NEXT_CACHE_TAG_MAX_LENGTH, "NEXT_DATA_SUFFIX", ()=>NEXT_DATA_SUFFIX, "NEXT_INTERCEPTION_MARKER_PREFIX", ()=>NEXT_INTERCEPTION_MARKER_PREFIX, "NEXT_META_SUFFIX", ()=>NEXT_META_SUFFIX, "NEXT_NAV_DEPLOYMENT_ID_HEADER", ()=>NEXT_NAV_DEPLOYMENT_ID_HEADER, "NEXT_QUERY_PARAM_PREFIX", ()=>NEXT_QUERY_PARAM_PREFIX, "NEXT_RESUME_HEADER", ()=>NEXT_RESUME_HEADER, "NEXT_RESUME_STATE_LENGTH_HEADER", ()=>NEXT_RESUME_STATE_LENGTH_HEADER, "NON_STANDARD_NODE_ENV", ()=>NON_STANDARD_NODE_ENV, "PAGES_DIR_ALIAS", ()=>PAGES_DIR_ALIAS, "PRERENDER_REVALIDATE_HEADER", ()=>PRERENDER_REVALIDATE_HEADER, "PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER", ()=>PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER, "PROXY_FILENAME", ()=>PROXY_FILENAME, "PROXY_LOCATION_REGEXP", ()=>PROXY_LOCATION_REGEXP, "PUBLIC_DIR_MIDDLEWARE_CONFLICT", ()=>PUBLIC_DIR_MIDDLEWARE_CONFLICT, "ROOT_DIR_ALIAS", ()=>ROOT_DIR_ALIAS, "RSC_ACTION_CLIENT_WRAPPER_ALIAS", ()=>RSC_ACTION_CLIENT_WRAPPER_ALIAS, "RSC_ACTION_ENCRYPTION_ALIAS", ()=>RSC_ACTION_ENCRYPTION_ALIAS, "RSC_ACTION_PROXY_ALIAS", ()=>RSC_ACTION_PROXY_ALIAS, "RSC_ACTION_VALIDATE_ALIAS", ()=>RSC_ACTION_VALIDATE_ALIAS, "RSC_CACHE_WRAPPER_ALIAS", ()=>RSC_CACHE_WRAPPER_ALIAS, "RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS", ()=>RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS, "RSC_MOD_REF_PROXY_ALIAS", ()=>RSC_MOD_REF_PROXY_ALIAS, "RSC_SEGMENTS_DIR_SUFFIX", ()=>RSC_SEGMENTS_DIR_SUFFIX, "RSC_SEGMENT_SUFFIX", ()=>RSC_SEGMENT_SUFFIX, "RSC_SUFFIX", ()=>RSC_SUFFIX, "SERVER_PROPS_EXPORT_ERROR", ()=>SERVER_PROPS_EXPORT_ERROR, "SERVER_PROPS_GET_INIT_PROPS_CONFLICT", ()=>SERVER_PROPS_GET_INIT_PROPS_CONFLICT, "SERVER_PROPS_SSG_CONFLICT", ()=>SERVER_PROPS_SSG_CONFLICT, "SERVER_RUNTIME", ()=>SERVER_RUNTIME, "SSG_FALLBACK_EXPORT_ERROR", ()=>SSG_FALLBACK_EXPORT_ERROR, "SSG_GET_INITIAL_PROPS_CONFLICT", ()=>SSG_GET_INITIAL_PROPS_CONFLICT, "STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR", ()=>STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR, "TEXT_PLAIN_CONTENT_TYPE_HEADER", ()=>TEXT_PLAIN_CONTENT_TYPE_HEADER, "UNSTABLE_REVALIDATE_RENAME_ERROR", ()=>UNSTABLE_REVALIDATE_RENAME_ERROR, "WEBPACK_LAYERS", ()=>WEBPACK_LAYERS, "WEBPACK_RESOURCE_QUERIES", ()=>WEBPACK_RESOURCE_QUERIES, "WEB_SOCKET_MAX_RECONNECTIONS", ()=>WEB_SOCKET_MAX_RECONNECTIONS ]); const TEXT_PLAIN_CONTENT_TYPE_HEADER = 'text/plain'; const HTML_CONTENT_TYPE_HEADER = 'text/html; charset=utf-8'; const JSON_CONTENT_TYPE_HEADER = 'application/json; charset=utf-8'; const NEXT_QUERY_PARAM_PREFIX = 'nxtP'; const NEXT_INTERCEPTION_MARKER_PREFIX = 'nxtI'; const MATCHED_PATH_HEADER = 'x-matched-path'; const PRERENDER_REVALIDATE_HEADER = 'x-prerender-revalidate'; const PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER = 'x-prerender-revalidate-if-generated'; const RSC_SEGMENTS_DIR_SUFFIX = '.segments'; const RSC_SEGMENT_SUFFIX = '.segment.rsc'; const RSC_SUFFIX = '.rsc'; const ACTION_SUFFIX = '.action'; const NEXT_DATA_SUFFIX = '.json'; const NEXT_META_SUFFIX = '.meta'; const NEXT_BODY_SUFFIX = '.body'; const NEXT_NAV_DEPLOYMENT_ID_HEADER = 'x-nextjs-deployment-id'; const NEXT_CACHE_TAGS_HEADER = 'x-next-cache-tags'; const NEXT_CACHE_REVALIDATED_TAGS_HEADER = 'x-next-revalidated-tags'; const NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER = 'x-next-revalidate-tag-token'; const NEXT_RESUME_HEADER = 'next-resume'; const NEXT_RESUME_STATE_LENGTH_HEADER = 'x-next-resume-state-length'; const NEXT_CACHE_TAG_MAX_ITEMS = 128; const NEXT_CACHE_TAG_MAX_LENGTH = 256; const NEXT_CACHE_SOFT_TAG_MAX_LENGTH = 1024; const NEXT_CACHE_IMPLICIT_TAG_ID = '_N_T_'; const NEXT_CACHE_ROOT_PARAM_TAG_ID = '_N_RP_'; const CACHE_ONE_YEAR_SECONDS = 31536000; const INFINITE_CACHE = 0xfffffffe; const MIDDLEWARE_FILENAME = 'middleware'; const MIDDLEWARE_LOCATION_REGEXP = `(?:src/)?${MIDDLEWARE_FILENAME}`; const PROXY_FILENAME = 'proxy'; const PROXY_LOCATION_REGEXP = `(?:src/)?${PROXY_FILENAME}`; const INSTRUMENTATION_HOOK_FILENAME = 'instrumentation'; const PAGES_DIR_ALIAS = 'private-next-pages'; const DOT_NEXT_ALIAS = 'private-dot-next'; const ROOT_DIR_ALIAS = 'private-next-root-dir'; const APP_DIR_ALIAS = 'private-next-app-dir'; const RSC_MOD_REF_PROXY_ALIAS = 'private-next-rsc-mod-ref-proxy'; const RSC_ACTION_VALIDATE_ALIAS = 'private-next-rsc-action-validate'; const RSC_ACTION_PROXY_ALIAS = 'private-next-rsc-server-reference'; const RSC_CACHE_WRAPPER_ALIAS = 'private-next-rsc-cache-wrapper'; const RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS = 'private-next-rsc-track-dynamic-import'; const RSC_ACTION_ENCRYPTION_ALIAS = 'private-next-rsc-action-encryption'; const RSC_ACTION_CLIENT_WRAPPER_ALIAS = 'private-next-rsc-action-client-wrapper'; const PUBLIC_DIR_MIDDLEWARE_CONFLICT = `You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict`; const SSG_GET_INITIAL_PROPS_CONFLICT = `You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps`; const SERVER_PROPS_GET_INIT_PROPS_CONFLICT = `You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.`; const SERVER_PROPS_SSG_CONFLICT = `You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps`; const STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR = `can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props`; const SERVER_PROPS_EXPORT_ERROR = `pages with \`getServerSideProps\` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export`; const GSP_NO_RETURNED_VALUE = 'Your `getStaticProps` function did not return an object. Did you forget to add a `return`?'; const GSSP_NO_RETURNED_VALUE = 'Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?'; const UNSTABLE_REVALIDATE_RENAME_ERROR = 'The `unstable_revalidate` property is available for general use.\n' + 'Please use `revalidate` instead.'; const GSSP_COMPONENT_MEMBER_ERROR = `can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member`; const NON_STANDARD_NODE_ENV = `You are using a non-standard "NODE_ENV" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env`; const SSG_FALLBACK_EXPORT_ERROR = `Pages with \`fallback\` enabled in \`getStaticPaths\` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export`; const ESLINT_DEFAULT_DIRS = [ 'app', 'pages', 'components', 'lib', 'src' ]; const SERVER_RUNTIME = { edge: 'edge', experimentalEdge: 'experimental-edge', nodejs: 'nodejs' }; const WEB_SOCKET_MAX_RECONNECTIONS = 12; /** * The names of the webpack layers. These layers are the primitives for the * webpack chunks. */ const WEBPACK_LAYERS_NAMES = { /** * The layer for the shared code between the client and server bundles. */ shared: 'shared', /** * The layer for server-only runtime and picking up `react-server` export conditions. * Including app router RSC pages and app router custom routes and metadata routes. */ reactServerComponents: 'rsc', /** * Server Side Rendering layer for app (ssr). */ serverSideRendering: 'ssr', /** * The browser client bundle layer for actions. */ actionBrowser: 'action-browser', /** * The Node.js bundle layer for the API routes. */ apiNode: 'api-node', /** * The Edge Lite bundle layer for the API routes. */ apiEdge: 'api-edge', /** * The layer for the middleware code. */ middleware: 'middleware', /** * The layer for the instrumentation hooks. */ instrument: 'instrument', /** * The layer for assets on the edge. */ edgeAsset: 'edge-asset', /** * The browser client bundle layer for App directory. */ appPagesBrowser: 'app-pages-browser', /** * The browser client bundle layer for Pages directory. */ pagesDirBrowser: 'pages-dir-browser', /** * The Edge Lite bundle layer for Pages directory. */ pagesDirEdge: 'pages-dir-edge', /** * The Node.js bundle layer for Pages directory. */ pagesDirNode: 'pages-dir-node' }; const WEBPACK_LAYERS = { ...WEBPACK_LAYERS_NAMES, GROUP: { builtinReact: [ WEBPACK_LAYERS_NAMES.reactServerComponents, WEBPACK_LAYERS_NAMES.actionBrowser ], serverOnly: [ WEBPACK_LAYERS_NAMES.reactServerComponents, WEBPACK_LAYERS_NAMES.actionBrowser, WEBPACK_LAYERS_NAMES.instrument, WEBPACK_LAYERS_NAMES.middleware ], neutralTarget: [ // pages api WEBPACK_LAYERS_NAMES.apiNode, WEBPACK_LAYERS_NAMES.apiEdge ], clientOnly: [ WEBPACK_LAYERS_NAMES.serverSideRendering, WEBPACK_LAYERS_NAMES.appPagesBrowser ], bundled: [ WEBPACK_LAYERS_NAMES.reactServerComponents, WEBPACK_LAYERS_NAMES.actionBrowser, WEBPACK_LAYERS_NAMES.serverSideRendering, WEBPACK_LAYERS_NAMES.appPagesBrowser, WEBPACK_LAYERS_NAMES.shared, WEBPACK_LAYERS_NAMES.instrument, WEBPACK_LAYERS_NAMES.middleware ], appPages: [ // app router pages and layouts WEBPACK_LAYERS_NAMES.reactServerComponents, WEBPACK_LAYERS_NAMES.serverSideRendering, WEBPACK_LAYERS_NAMES.appPagesBrowser, WEBPACK_LAYERS_NAMES.actionBrowser ] } }; const WEBPACK_RESOURCE_QUERIES = { edgeSSREntry: '__next_edge_ssr_entry__', metadata: '__next_metadata__', metadataRoute: '__next_metadata_route__', metadataImageMeta: '__next_metadata_image_meta__' }; ; }), "[project]/node_modules/next/dist/esm/server/web/utils.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "fromNodeOutgoingHttpHeaders", ()=>fromNodeOutgoingHttpHeaders, "normalizeNextQueryParam", ()=>normalizeNextQueryParam, "splitCookiesString", ()=>splitCookiesString, "toNodeOutgoingHttpHeaders", ()=>toNodeOutgoingHttpHeaders, "validateURL", ()=>validateURL ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/lib/constants.js [ssr] (ecmascript)"); ; function fromNodeOutgoingHttpHeaders(nodeHeaders) { const headers = new Headers(); for (let [key, value] of Object.entries(nodeHeaders)){ const values = Array.isArray(value) ? value : [ value ]; for (let v of values){ if (typeof v === 'undefined') continue; if (typeof v === 'number') { v = v.toString(); } headers.append(key, v); } } return headers; } function splitCookiesString(cookiesString) { var cookiesStrings = []; var pos = 0; var start; var ch; var lastComma; var nextStart; var cookiesSeparatorFound; function skipWhitespace() { while(pos < cookiesString.length && /\s/.test(cookiesString.charAt(pos))){ pos += 1; } return pos < cookiesString.length; } function notSpecialChar() { ch = cookiesString.charAt(pos); return ch !== '=' && ch !== ';' && ch !== ','; } while(pos < cookiesString.length){ start = pos; cookiesSeparatorFound = false; while(skipWhitespace()){ ch = cookiesString.charAt(pos); if (ch === ',') { // ',' is a cookie separator if we have later first '=', not ';' or ',' lastComma = pos; pos += 1; skipWhitespace(); nextStart = pos; while(pos < cookiesString.length && notSpecialChar()){ pos += 1; } // currently special character if (pos < cookiesString.length && cookiesString.charAt(pos) === '=') { // we found cookies separator cookiesSeparatorFound = true; // pos is inside the next cookie, so back up and return it. pos = nextStart; cookiesStrings.push(cookiesString.substring(start, lastComma)); start = pos; } else { // in param ',' or param separator ';', // we continue from that comma pos = lastComma + 1; } } else { pos += 1; } } if (!cookiesSeparatorFound || pos >= cookiesString.length) { cookiesStrings.push(cookiesString.substring(start, cookiesString.length)); } } return cookiesStrings; } function toNodeOutgoingHttpHeaders(headers) { const nodeHeaders = {}; const cookies = []; if (headers) { for (const [key, value] of headers.entries()){ if (key.toLowerCase() === 'set-cookie') { // We may have gotten a comma joined string of cookies, or multiple // set-cookie headers. We need to merge them into one header array // to represent all the cookies. cookies.push(...splitCookiesString(value)); nodeHeaders[key] = cookies.length === 1 ? cookies[0] : cookies; } else { nodeHeaders[key] = value; } } } return nodeHeaders; } function validateURL(url) { try { return String(new URL(String(url))); } catch (error) { throw Object.defineProperty(new Error(`URL is malformed "${String(url)}". Please use only absolute URLs - https://nextjs.org/docs/messages/middleware-relative-urls`, { cause: error }), "__NEXT_ERROR_CODE", { value: "E61", enumerable: false, configurable: true }); } } function normalizeNextQueryParam(key) { const prefixes = [ __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["NEXT_QUERY_PARAM_PREFIX"], __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["NEXT_INTERCEPTION_MARKER_PREFIX"] ]; for (const prefix of prefixes){ if (key !== prefix && key.startsWith(prefix)) { return key.substring(prefix.length); } } return null; } }), "[project]/node_modules/next/dist/esm/shared/lib/i18n/detect-domain-locale.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "detectDomainLocale", ()=>detectDomainLocale ]); function detectDomainLocale(domainItems, hostname, detectedLocale) { if (!domainItems) return; if (detectedLocale) { detectedLocale = detectedLocale.toLowerCase(); } for (const item of domainItems){ // remove port if present const domainHostname = item.domain?.split(':', 1)[0].toLowerCase(); if (hostname === domainHostname || detectedLocale === item.defaultLocale.toLowerCase() || item.locales?.some((locale)=>locale.toLowerCase() === detectedLocale)) { return item; } } } }), "[project]/node_modules/next/dist/esm/shared/lib/router/utils/remove-trailing-slash.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; /** * Removes the trailing slash for a given route or page path. Preserves the * root page. Examples: * - `/foo/bar/` -> `/foo/bar` * - `/foo/bar` -> `/foo/bar` * - `/` -> `/` */ __turbopack_context__.s([ "removeTrailingSlash", ()=>removeTrailingSlash ]); function removeTrailingSlash(route) { return route.replace(/\/$/, '') || '/'; } }), "[project]/node_modules/next/dist/esm/shared/lib/router/utils/add-path-prefix.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "addPathPrefix", ()=>addPathPrefix ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$parse$2d$path$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/parse-path.js [ssr] (ecmascript)"); ; function addPathPrefix(path, prefix) { if (!path.startsWith('/') || !prefix) { return path; } const { pathname, query, hash } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$parse$2d$path$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["parsePath"])(path); return `${prefix}${pathname}${query}${hash}`; } }), "[project]/node_modules/next/dist/esm/shared/lib/router/utils/add-path-suffix.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "addPathSuffix", ()=>addPathSuffix ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$parse$2d$path$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/parse-path.js [ssr] (ecmascript)"); ; function addPathSuffix(path, suffix) { if (!path.startsWith('/') || !suffix) { return path; } const { pathname, query, hash } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$parse$2d$path$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["parsePath"])(path); return `${pathname}${suffix}${query}${hash}`; } }), "[project]/node_modules/next/dist/esm/shared/lib/router/utils/add-locale.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "addLocale", ()=>addLocale ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$add$2d$path$2d$prefix$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/add-path-prefix.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$path$2d$has$2d$prefix$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/path-has-prefix.js [ssr] (ecmascript)"); ; ; function addLocale(path, locale, defaultLocale, ignorePrefix) { // If no locale was given or the locale is the default locale, we don't need // to prefix the path. if (!locale || locale === defaultLocale) return path; const lower = path.toLowerCase(); // If the path is an API path or the path already has the locale prefix, we // don't need to prefix the path. if (!ignorePrefix) { if ((0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$path$2d$has$2d$prefix$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["pathHasPrefix"])(lower, '/api')) return path; if ((0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$path$2d$has$2d$prefix$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["pathHasPrefix"])(lower, `/${locale.toLowerCase()}`)) return path; } // Add the locale prefix to the path. return (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$add$2d$path$2d$prefix$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["addPathPrefix"])(path, `/${locale}`); } }), "[project]/node_modules/next/dist/esm/shared/lib/router/utils/format-next-pathname-info.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "formatNextPathnameInfo", ()=>formatNextPathnameInfo ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$remove$2d$trailing$2d$slash$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/remove-trailing-slash.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$add$2d$path$2d$prefix$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/add-path-prefix.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$add$2d$path$2d$suffix$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/add-path-suffix.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$add$2d$locale$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/add-locale.js [ssr] (ecmascript)"); ; ; ; ; function formatNextPathnameInfo(info) { let pathname = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$add$2d$locale$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["addLocale"])(info.pathname, info.locale, info.buildId ? undefined : info.defaultLocale, info.ignorePrefix); if (info.buildId || !info.trailingSlash) { pathname = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$remove$2d$trailing$2d$slash$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["removeTrailingSlash"])(pathname); } if (info.buildId) { pathname = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$add$2d$path$2d$suffix$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["addPathSuffix"])((0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$add$2d$path$2d$prefix$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["addPathPrefix"])(pathname, `/_next/data/${info.buildId}`), info.pathname === '/' ? 'index.json' : '.json'); } pathname = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$add$2d$path$2d$prefix$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["addPathPrefix"])(pathname, info.basePath); return !info.buildId && info.trailingSlash ? !pathname.endsWith('/') ? (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$add$2d$path$2d$suffix$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["addPathSuffix"])(pathname, '/') : pathname : (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$remove$2d$trailing$2d$slash$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["removeTrailingSlash"])(pathname); } }), "[project]/node_modules/next/dist/esm/shared/lib/get-hostname.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; /** * Takes an object with a hostname property (like a parsed URL) and some * headers that may contain Host and returns the preferred hostname. * @param parsed An object containing a hostname property. * @param headers A dictionary with headers containing a `host`. */ __turbopack_context__.s([ "getHostname", ()=>getHostname ]); function getHostname(parsed, headers) { // Get the hostname from the headers if it exists, otherwise use the parsed // hostname. let hostname; if (headers?.host && !Array.isArray(headers.host)) { hostname = headers.host.toString().split(':', 1)[0]; } else if (parsed.hostname) { hostname = parsed.hostname; } else return; return hostname.toLowerCase(); } }), "[project]/node_modules/next/dist/esm/shared/lib/i18n/normalize-locale-path.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "normalizeLocalePath", ()=>normalizeLocalePath ]); /** * A cache of lowercased locales for each list of locales. This is stored as a * WeakMap so if the locales are garbage collected, the cache entry will be * removed as well. */ const cache = new WeakMap(); function normalizeLocalePath(pathname, locales) { // If locales is undefined, return the pathname as is. if (!locales) return { pathname }; // Get the cached lowercased locales or create a new cache entry. let lowercasedLocales = cache.get(locales); if (!lowercasedLocales) { lowercasedLocales = locales.map((locale)=>locale.toLowerCase()); cache.set(locales, lowercasedLocales); } let detectedLocale; // The first segment will be empty, because it has a leading `/`. If // there is no further segment, there is no locale (or it's the default). const segments = pathname.split('/', 2); // If there's no second segment (ie, the pathname is just `/`), there's no // locale. if (!segments[1]) return { pathname }; // The second segment will contain the locale part if any. const segment = segments[1].toLowerCase(); // See if the segment matches one of the locales. If it doesn't, there is // no locale (or it's the default). const index = lowercasedLocales.indexOf(segment); if (index < 0) return { pathname }; // Return the case-sensitive locale. detectedLocale = locales[index]; // Remove the `/${locale}` part of the pathname. pathname = pathname.slice(detectedLocale.length + 1) || '/'; return { pathname, detectedLocale }; } }), "[project]/node_modules/next/dist/esm/shared/lib/router/utils/remove-path-prefix.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "removePathPrefix", ()=>removePathPrefix ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$path$2d$has$2d$prefix$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/path-has-prefix.js [ssr] (ecmascript)"); ; function removePathPrefix(path, prefix) { // If the path doesn't start with the prefix we can return it as is. This // protects us from situations where the prefix is a substring of the path // prefix such as: // // For prefix: /blog // // /blog -> true // /blog/ -> true // /blog/1 -> true // /blogging -> false // /blogging/ -> false // /blogging/1 -> false if (!(0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$path$2d$has$2d$prefix$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["pathHasPrefix"])(path, prefix)) { return path; } // Remove the prefix from the path via slicing. const withoutPrefix = path.slice(prefix.length); // If the path without the prefix starts with a `/` we can return it as is. if (withoutPrefix.startsWith('/')) { return withoutPrefix; } // If the path without the prefix doesn't start with a `/` we need to add it // back to the path to make sure it's a valid path. return `/${withoutPrefix}`; } }), "[project]/node_modules/next/dist/esm/shared/lib/router/utils/get-next-pathname-info.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "getNextPathnameInfo", ()=>getNextPathnameInfo ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$i18n$2f$normalize$2d$locale$2d$path$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/i18n/normalize-locale-path.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$remove$2d$path$2d$prefix$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/remove-path-prefix.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$path$2d$has$2d$prefix$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/path-has-prefix.js [ssr] (ecmascript)"); ; ; ; function getNextPathnameInfo(pathname, options) { const { basePath, i18n, trailingSlash } = options.nextConfig ?? {}; const info = { pathname, trailingSlash: pathname !== '/' ? pathname.endsWith('/') : trailingSlash }; if (basePath && (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$path$2d$has$2d$prefix$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["pathHasPrefix"])(info.pathname, basePath)) { info.pathname = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$remove$2d$path$2d$prefix$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["removePathPrefix"])(info.pathname, basePath); info.basePath = basePath; } let pathnameNoDataPrefix = info.pathname; if (info.pathname.startsWith('/_next/data/') && info.pathname.endsWith('.json')) { const paths = info.pathname.replace(/^\/_next\/data\//, '').replace(/\.json$/, '').split('/'); const buildId = paths[0]; info.buildId = buildId; pathnameNoDataPrefix = paths[1] !== 'index' ? `/${paths.slice(1).join('/')}` : '/'; // update pathname with normalized if enabled although // we use normalized to populate locale info still if (options.parseData === true) { info.pathname = pathnameNoDataPrefix; } } // If provided, use the locale route normalizer to detect the locale instead // of the function below. if (i18n) { let result = options.i18nProvider ? options.i18nProvider.analyze(info.pathname) : (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$i18n$2f$normalize$2d$locale$2d$path$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["normalizeLocalePath"])(info.pathname, i18n.locales); info.locale = result.detectedLocale; info.pathname = result.pathname ?? info.pathname; if (!result.detectedLocale && info.buildId) { result = options.i18nProvider ? options.i18nProvider.analyze(pathnameNoDataPrefix) : (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$i18n$2f$normalize$2d$locale$2d$path$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["normalizeLocalePath"])(pathnameNoDataPrefix, i18n.locales); if (result.detectedLocale) { info.locale = result.detectedLocale; } } } return info; } }), "[project]/node_modules/next/dist/esm/server/web/next-url.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "NextURL", ()=>NextURL ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$i18n$2f$detect$2d$domain$2d$locale$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/i18n/detect-domain-locale.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$format$2d$next$2d$pathname$2d$info$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/format-next-pathname-info.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$get$2d$hostname$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/get-hostname.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$get$2d$next$2d$pathname$2d$info$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/get-next-pathname-info.js [ssr] (ecmascript)"); ; ; ; ; const REGEX_LOCALHOST_HOSTNAME = /^(?:127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}|\[::1\]|localhost)$/; function parseURL(url, base) { const parsed = new URL(String(url), base && String(base)); if (REGEX_LOCALHOST_HOSTNAME.test(parsed.hostname)) { parsed.hostname = 'localhost'; } return parsed; } const Internal = Symbol('NextURLInternal'); class NextURL { constructor(input, baseOrOpts, opts){ let base; let options; if (typeof baseOrOpts === 'object' && 'pathname' in baseOrOpts || typeof baseOrOpts === 'string') { base = baseOrOpts; options = opts || {}; } else { options = opts || baseOrOpts || {}; } this[Internal] = { url: parseURL(input, base ?? options.base), options: options, basePath: '' }; this.analyze(); } analyze() { var _this_Internal_options_nextConfig_i18n, _this_Internal_options_nextConfig, _this_Internal_domainLocale, _this_Internal_options_nextConfig_i18n1, _this_Internal_options_nextConfig1; const info = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$get$2d$next$2d$pathname$2d$info$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["getNextPathnameInfo"])(this[Internal].url.pathname, { nextConfig: this[Internal].options.nextConfig, parseData: !("TURBOPACK compile-time value", void 0), i18nProvider: this[Internal].options.i18nProvider }); const hostname = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$get$2d$hostname$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["getHostname"])(this[Internal].url, this[Internal].options.headers); this[Internal].domainLocale = this[Internal].options.i18nProvider ? this[Internal].options.i18nProvider.detectDomainLocale(hostname) : (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$i18n$2f$detect$2d$domain$2d$locale$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["detectDomainLocale"])((_this_Internal_options_nextConfig = this[Internal].options.nextConfig) == null ? void 0 : (_this_Internal_options_nextConfig_i18n = _this_Internal_options_nextConfig.i18n) == null ? void 0 : _this_Internal_options_nextConfig_i18n.domains, hostname); const defaultLocale = ((_this_Internal_domainLocale = this[Internal].domainLocale) == null ? void 0 : _this_Internal_domainLocale.defaultLocale) || ((_this_Internal_options_nextConfig1 = this[Internal].options.nextConfig) == null ? void 0 : (_this_Internal_options_nextConfig_i18n1 = _this_Internal_options_nextConfig1.i18n) == null ? void 0 : _this_Internal_options_nextConfig_i18n1.defaultLocale); this[Internal].url.pathname = info.pathname; this[Internal].defaultLocale = defaultLocale; this[Internal].basePath = info.basePath ?? ''; this[Internal].buildId = info.buildId; this[Internal].locale = info.locale ?? defaultLocale; this[Internal].trailingSlash = info.trailingSlash; } formatPathname() { return (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$format$2d$next$2d$pathname$2d$info$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["formatNextPathnameInfo"])({ basePath: this[Internal].basePath, buildId: this[Internal].buildId, defaultLocale: !this[Internal].options.forceLocale ? this[Internal].defaultLocale : undefined, locale: this[Internal].locale, pathname: this[Internal].url.pathname, trailingSlash: this[Internal].trailingSlash }); } formatSearch() { return this[Internal].url.search; } get buildId() { return this[Internal].buildId; } set buildId(buildId) { this[Internal].buildId = buildId; } get locale() { return this[Internal].locale ?? ''; } set locale(locale) { var _this_Internal_options_nextConfig_i18n, _this_Internal_options_nextConfig; if (!this[Internal].locale || !((_this_Internal_options_nextConfig = this[Internal].options.nextConfig) == null ? void 0 : (_this_Internal_options_nextConfig_i18n = _this_Internal_options_nextConfig.i18n) == null ? void 0 : _this_Internal_options_nextConfig_i18n.locales.includes(locale))) { throw Object.defineProperty(new TypeError(`The NextURL configuration includes no locale "${locale}"`), "__NEXT_ERROR_CODE", { value: "E597", enumerable: false, configurable: true }); } this[Internal].locale = locale; } get defaultLocale() { return this[Internal].defaultLocale; } get domainLocale() { return this[Internal].domainLocale; } get searchParams() { return this[Internal].url.searchParams; } get host() { return this[Internal].url.host; } set host(value) { this[Internal].url.host = value; } get hostname() { return this[Internal].url.hostname; } set hostname(value) { this[Internal].url.hostname = value; } get port() { return this[Internal].url.port; } set port(value) { this[Internal].url.port = value; } get protocol() { return this[Internal].url.protocol; } set protocol(value) { this[Internal].url.protocol = value; } get href() { const pathname = this.formatPathname(); const search = this.formatSearch(); return `${this.protocol}//${this.host}${pathname}${search}${this.hash}`; } set href(url) { this[Internal].url = parseURL(url); this.analyze(); } get origin() { return this[Internal].url.origin; } get pathname() { return this[Internal].url.pathname; } set pathname(value) { this[Internal].url.pathname = value; } get hash() { return this[Internal].url.hash; } set hash(value) { this[Internal].url.hash = value; } get search() { return this[Internal].url.search; } set search(value) { this[Internal].url.search = value; } get password() { return this[Internal].url.password; } set password(value) { this[Internal].url.password = value; } get username() { return this[Internal].url.username; } set username(value) { this[Internal].url.username = value; } get basePath() { return this[Internal].basePath; } set basePath(value) { this[Internal].basePath = value.startsWith('/') ? value : `/${value}`; } toString() { return this.href; } toJSON() { return this.href; } [Symbol.for('edge-runtime.inspect.custom')]() { return { href: this.href, origin: this.origin, protocol: this.protocol, username: this.username, password: this.password, host: this.host, hostname: this.hostname, port: this.port, pathname: this.pathname, search: this.search, searchParams: this.searchParams, hash: this.hash }; } clone() { return new NextURL(String(this), this[Internal].options); } } }), "[project]/node_modules/next/dist/esm/server/web/error.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "PageSignatureError", ()=>PageSignatureError, "RemovedPageError", ()=>RemovedPageError, "RemovedUAError", ()=>RemovedUAError ]); class PageSignatureError extends Error { constructor({ page }){ super(`The middleware "${page}" accepts an async API directly with the form: export function middleware(request, event) { return NextResponse.redirect('/new-location') } Read more: https://nextjs.org/docs/messages/middleware-new-signature `); } } class RemovedPageError extends Error { constructor(){ super(`The request.page has been deprecated in favour of \`URLPattern\`. Read more: https://nextjs.org/docs/messages/middleware-request-page `); } } class RemovedUAError extends Error { constructor(){ super(`The request.ua has been removed in favour of \`userAgent\` function. Read more: https://nextjs.org/docs/messages/middleware-parse-user-agent `); } } }), "[project]/node_modules/next/dist/compiled/@edge-runtime/cookies/index.js [ssr] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all)=>{ for(var name in all)__defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc)=>{ if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from))if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: ()=>from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod)=>__copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var src_exports = {}; __export(src_exports, { RequestCookies: ()=>RequestCookies, ResponseCookies: ()=>ResponseCookies, parseCookie: ()=>parseCookie, parseSetCookie: ()=>parseSetCookie, stringifyCookie: ()=>stringifyCookie }); module.exports = __toCommonJS(src_exports); // src/serialize.ts function stringifyCookie(c) { var _a; const attrs = [ "path" in c && c.path && `Path=${c.path}`, "expires" in c && (c.expires || c.expires === 0) && `Expires=${(typeof c.expires === "number" ? new Date(c.expires) : c.expires).toUTCString()}`, "maxAge" in c && typeof c.maxAge === "number" && `Max-Age=${c.maxAge}`, "domain" in c && c.domain && `Domain=${c.domain}`, "secure" in c && c.secure && "Secure", "httpOnly" in c && c.httpOnly && "HttpOnly", "sameSite" in c && c.sameSite && `SameSite=${c.sameSite}`, "partitioned" in c && c.partitioned && "Partitioned", "priority" in c && c.priority && `Priority=${c.priority}` ].filter(Boolean); const stringified = `${c.name}=${encodeURIComponent((_a = c.value) != null ? _a : "")}`; return attrs.length === 0 ? stringified : `${stringified}; ${attrs.join("; ")}`; } function parseCookie(cookie) { const map = /* @__PURE__ */ new Map(); for (const pair of cookie.split(/; */)){ if (!pair) continue; const splitAt = pair.indexOf("="); if (splitAt === -1) { map.set(pair, "true"); continue; } const [key, value] = [ pair.slice(0, splitAt), pair.slice(splitAt + 1) ]; try { map.set(key, decodeURIComponent(value != null ? value : "true")); } catch {} } return map; } function parseSetCookie(setCookie) { if (!setCookie) { return void 0; } const [[name, value], ...attributes] = parseCookie(setCookie); const { domain, expires, httponly, maxage, path, samesite, secure, partitioned, priority } = Object.fromEntries(attributes.map(([key, value2])=>[ key.toLowerCase().replace(/-/g, ""), value2 ])); const cookie = { name, value: decodeURIComponent(value), domain, ...expires && { expires: new Date(expires) }, ...httponly && { httpOnly: true }, ...typeof maxage === "string" && { maxAge: Number(maxage) }, path, ...samesite && { sameSite: parseSameSite(samesite) }, ...secure && { secure: true }, ...priority && { priority: parsePriority(priority) }, ...partitioned && { partitioned: true } }; return compact(cookie); } function compact(t) { const newT = {}; for(const key in t){ if (t[key]) { newT[key] = t[key]; } } return newT; } var SAME_SITE = [ "strict", "lax", "none" ]; function parseSameSite(string) { string = string.toLowerCase(); return SAME_SITE.includes(string) ? string : void 0; } var PRIORITY = [ "low", "medium", "high" ]; function parsePriority(string) { string = string.toLowerCase(); return PRIORITY.includes(string) ? string : void 0; } function splitCookiesString(cookiesString) { if (!cookiesString) return []; var cookiesStrings = []; var pos = 0; var start; var ch; var lastComma; var nextStart; var cookiesSeparatorFound; function skipWhitespace() { while(pos < cookiesString.length && /\s/.test(cookiesString.charAt(pos))){ pos += 1; } return pos < cookiesString.length; } function notSpecialChar() { ch = cookiesString.charAt(pos); return ch !== "=" && ch !== ";" && ch !== ","; } while(pos < cookiesString.length){ start = pos; cookiesSeparatorFound = false; while(skipWhitespace()){ ch = cookiesString.charAt(pos); if (ch === ",") { lastComma = pos; pos += 1; skipWhitespace(); nextStart = pos; while(pos < cookiesString.length && notSpecialChar()){ pos += 1; } if (pos < cookiesString.length && cookiesString.charAt(pos) === "=") { cookiesSeparatorFound = true; pos = nextStart; cookiesStrings.push(cookiesString.substring(start, lastComma)); start = pos; } else { pos = lastComma + 1; } } else { pos += 1; } } if (!cookiesSeparatorFound || pos >= cookiesString.length) { cookiesStrings.push(cookiesString.substring(start, cookiesString.length)); } } return cookiesStrings; } // src/request-cookies.ts var RequestCookies = class { constructor(requestHeaders){ /** @internal */ this._parsed = /* @__PURE__ */ new Map(); this._headers = requestHeaders; const header = requestHeaders.get("cookie"); if (header) { const parsed = parseCookie(header); for (const [name, value] of parsed){ this._parsed.set(name, { name, value }); } } } [Symbol.iterator]() { return this._parsed[Symbol.iterator](); } /** * The amount of cookies received from the client */ get size() { return this._parsed.size; } get(...args) { const name = typeof args[0] === "string" ? args[0] : args[0].name; return this._parsed.get(name); } getAll(...args) { var _a; const all = Array.from(this._parsed); if (!args.length) { return all.map(([_, value])=>value); } const name = typeof args[0] === "string" ? args[0] : (_a = args[0]) == null ? void 0 : _a.name; return all.filter(([n])=>n === name).map(([_, value])=>value); } has(name) { return this._parsed.has(name); } set(...args) { const [name, value] = args.length === 1 ? [ args[0].name, args[0].value ] : args; const map = this._parsed; map.set(name, { name, value }); this._headers.set("cookie", Array.from(map).map(([_, value2])=>stringifyCookie(value2)).join("; ")); return this; } /** * Delete the cookies matching the passed name or names in the request. */ delete(names) { const map = this._parsed; const result = !Array.isArray(names) ? map.delete(names) : names.map((name)=>map.delete(name)); this._headers.set("cookie", Array.from(map).map(([_, value])=>stringifyCookie(value)).join("; ")); return result; } /** * Delete all the cookies in the cookies in the request. */ clear() { this.delete(Array.from(this._parsed.keys())); return this; } /** * Format the cookies in the request as a string for logging */ [Symbol.for("edge-runtime.inspect.custom")]() { return `RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`; } toString() { return [ ...this._parsed.values() ].map((v)=>`${v.name}=${encodeURIComponent(v.value)}`).join("; "); } }; // src/response-cookies.ts var ResponseCookies = class { constructor(responseHeaders){ /** @internal */ this._parsed = /* @__PURE__ */ new Map(); var _a, _b, _c; this._headers = responseHeaders; const setCookie = (_c = (_b = (_a = responseHeaders.getSetCookie) == null ? void 0 : _a.call(responseHeaders)) != null ? _b : responseHeaders.get("set-cookie")) != null ? _c : []; const cookieStrings = Array.isArray(setCookie) ? setCookie : splitCookiesString(setCookie); for (const cookieString of cookieStrings){ const parsed = parseSetCookie(cookieString); if (parsed) this._parsed.set(parsed.name, parsed); } } /** * {@link https://wicg.github.io/cookie-store/#CookieStore-get CookieStore#get} without the Promise. */ get(...args) { const key = typeof args[0] === "string" ? args[0] : args[0].name; return this._parsed.get(key); } /** * {@link https://wicg.github.io/cookie-store/#CookieStore-getAll CookieStore#getAll} without the Promise. */ getAll(...args) { var _a; const all = Array.from(this._parsed.values()); if (!args.length) { return all; } const key = typeof args[0] === "string" ? args[0] : (_a = args[0]) == null ? void 0 : _a.name; return all.filter((c)=>c.name === key); } has(name) { return this._parsed.has(name); } /** * {@link https://wicg.github.io/cookie-store/#CookieStore-set CookieStore#set} without the Promise. */ set(...args) { const [name, value, cookie] = args.length === 1 ? [ args[0].name, args[0].value, args[0] ] : args; const map = this._parsed; map.set(name, normalizeCookie({ name, value, ...cookie })); replace(map, this._headers); return this; } /** * {@link https://wicg.github.io/cookie-store/#CookieStore-delete CookieStore#delete} without the Promise. */ delete(...args) { const [name, options] = typeof args[0] === "string" ? [ args[0] ] : [ args[0].name, args[0] ]; return this.set({ ...options, name, value: "", expires: /* @__PURE__ */ new Date(0) }); } [Symbol.for("edge-runtime.inspect.custom")]() { return `ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`; } toString() { return [ ...this._parsed.values() ].map(stringifyCookie).join("; "); } }; function replace(bag, headers) { headers.delete("set-cookie"); for (const [, value] of bag){ const serialized = stringifyCookie(value); headers.append("set-cookie", serialized); } } function normalizeCookie(cookie = { name: "", value: "" }) { if (typeof cookie.expires === "number") { cookie.expires = new Date(cookie.expires); } if (cookie.maxAge) { cookie.expires = new Date(Date.now() + cookie.maxAge * 1e3); } if (cookie.path === null || cookie.path === void 0) { cookie.path = "/"; } return cookie; } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { RequestCookies, ResponseCookies, parseCookie, parseSetCookie, stringifyCookie }); }), "[project]/node_modules/next/dist/esm/server/web/spec-extension/cookies.js [ssr] (ecmascript) <locals>", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f40$edge$2d$runtime$2f$cookies$2f$index$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/@edge-runtime/cookies/index.js [ssr] (ecmascript)"); ; }), "[project]/node_modules/next/dist/esm/server/web/spec-extension/request.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "INTERNALS", ()=>INTERNALS, "NextRequest", ()=>NextRequest ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$next$2d$url$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/web/next-url.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$utils$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/web/utils.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$error$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/web/error.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$spec$2d$extension$2f$cookies$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__$3c$locals$3e$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/web/spec-extension/cookies.js [ssr] (ecmascript) <locals>"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f40$edge$2d$runtime$2f$cookies$2f$index$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/@edge-runtime/cookies/index.js [ssr] (ecmascript)"); ; ; ; ; const INTERNALS = Symbol('internal request'); class NextRequest extends Request { constructor(input, init = {}){ const url = typeof input !== 'string' && 'url' in input ? input.url : String(input); (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$utils$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["validateURL"])(url); // node Request instance requires duplex option when a body // is present or it errors, we don't handle this for // Request being passed in since it would have already // errored if this wasn't configured if ("TURBOPACK compile-time truthy", 1) { if (init.body && init.duplex !== 'half') { init.duplex = 'half'; } } if (input instanceof Request) super(input, init); else super(url, init); const nextUrl = new __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$next$2d$url$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["NextURL"](url, { headers: (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$utils$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["toNodeOutgoingHttpHeaders"])(this.headers), nextConfig: init.nextConfig }); this[INTERNALS] = { cookies: new __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f40$edge$2d$runtime$2f$cookies$2f$index$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["RequestCookies"](this.headers), nextUrl, url: ("TURBOPACK compile-time falsy", 0) ? "TURBOPACK unreachable" : nextUrl.toString() }; } [Symbol.for('edge-runtime.inspect.custom')]() { return { cookies: this.cookies, nextUrl: this.nextUrl, url: this.url, // rest of props come from Request bodyUsed: this.bodyUsed, cache: this.cache, credentials: this.credentials, destination: this.destination, headers: Object.fromEntries(this.headers), integrity: this.integrity, keepalive: this.keepalive, method: this.method, mode: this.mode, redirect: this.redirect, referrer: this.referrer, referrerPolicy: this.referrerPolicy, signal: this.signal }; } get cookies() { return this[INTERNALS].cookies; } get nextUrl() { return this[INTERNALS].nextUrl; } /** * @deprecated * `page` has been deprecated in favour of `URLPattern`. * Read more: https://nextjs.org/docs/messages/middleware-request-page */ get page() { throw new __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$error$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["RemovedPageError"](); } /** * @deprecated * `ua` has been removed in favour of \`userAgent\` function. * Read more: https://nextjs.org/docs/messages/middleware-parse-user-agent */ get ua() { throw new __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$error$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["RemovedUAError"](); } get url() { return this[INTERNALS].url; } } }), "[project]/node_modules/next/dist/esm/server/base-http/helpers.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; /** * This file provides some helpers that should be used in conjunction with * explicit environment checks. When combined with the environment checks, it * will ensure that the correct typings are used as well as enable code * elimination. */ /** * Type guard to determine if a request is a WebNextRequest. This does not * actually check the type of the request, but rather the runtime environment. * It's expected that when the runtime environment is the edge runtime, that any * base request is a WebNextRequest. */ __turbopack_context__.s([ "isNodeNextRequest", ()=>isNodeNextRequest, "isNodeNextResponse", ()=>isNodeNextResponse, "isWebNextRequest", ()=>isWebNextRequest, "isWebNextResponse", ()=>isWebNextResponse ]); const isWebNextRequest = (req)=>("TURBOPACK compile-time value", "nodejs") === 'edge'; const isWebNextResponse = (res)=>("TURBOPACK compile-time value", "nodejs") === 'edge'; const isNodeNextRequest = (req)=>("TURBOPACK compile-time value", "nodejs") !== 'edge'; const isNodeNextResponse = (res)=>("TURBOPACK compile-time value", "nodejs") !== 'edge'; }), "[project]/node_modules/next/dist/esm/server/web/spec-extension/adapters/next-request.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "NextRequestAdapter", ()=>NextRequestAdapter, "ResponseAborted", ()=>ResponseAborted, "ResponseAbortedName", ()=>ResponseAbortedName, "createAbortController", ()=>createAbortController, "signalFromNodeResponse", ()=>signalFromNodeResponse ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$request$2d$meta$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/request-meta.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$utils$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/web/utils.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$spec$2d$extension$2f$request$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/web/spec-extension/request.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$base$2d$http$2f$helpers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/base-http/helpers.js [ssr] (ecmascript)"); ; ; ; ; const ResponseAbortedName = 'ResponseAborted'; class ResponseAborted extends Error { constructor(...args){ super(...args), this.name = ResponseAbortedName; } } function createAbortController(response) { const controller = new AbortController(); // If `finish` fires first, then `res.end()` has been called and the close is // just us finishing the stream on our side. If `close` fires first, then we // know the client disconnected before we finished. response.once('close', ()=>{ if (response.writableFinished) return; controller.abort(new ResponseAborted()); }); return controller; } function signalFromNodeResponse(response) { const { errored, destroyed } = response; if (errored || destroyed) { return AbortSignal.abort(errored ?? new ResponseAborted()); } const { signal } = createAbortController(response); return signal; } class NextRequestAdapter { static fromBaseNextRequest(request, signal) { if (// environment variable check provides dead code elimination. ("TURBOPACK compile-time value", "nodejs") === 'edge' && (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$base$2d$http$2f$helpers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["isWebNextRequest"])(request)) //TURBOPACK unreachable ; else if (// environment variable check provides dead code elimination. ("TURBOPACK compile-time value", "nodejs") !== 'edge' && (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$base$2d$http$2f$helpers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["isNodeNextRequest"])(request)) { return NextRequestAdapter.fromNodeNextRequest(request, signal); } else { throw Object.defineProperty(new Error('Invariant: Unsupported NextRequest type'), "__NEXT_ERROR_CODE", { value: "E345", enumerable: false, configurable: true }); } } static fromNodeNextRequest(request, signal) { // HEAD and GET requests can not have a body. let body = null; if (request.method !== 'GET' && request.method !== 'HEAD' && request.body) { // @ts-expect-error - this is handled by undici, when streams/web land use it instead body = request.body; } let url; if (request.url.startsWith('http')) { url = new URL(request.url); } else { // Grab the full URL from the request metadata. const base = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$request$2d$meta$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["getRequestMeta"])(request, 'initURL'); if (!base || !base.startsWith('http')) { // Because the URL construction relies on the fact that the URL provided // is absolute, we need to provide a base URL. We can't use the request // URL because it's relative, so we use a dummy URL instead. url = new URL(request.url, 'http://n'); } else { url = new URL(request.url, base); } } return new __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$spec$2d$extension$2f$request$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["NextRequest"](url, { method: request.method, headers: (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$utils$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["fromNodeOutgoingHttpHeaders"])(request.headers), duplex: 'half', signal, // geo // ip // nextConfig // body can not be passed if request was aborted // or we get a Request body was disturbed error ...signal.aborted ? {} : { body } }); } static fromWebNextRequest(request) { // HEAD and GET requests can not have a body. let body = null; if (request.method !== 'GET' && request.method !== 'HEAD') { body = request.body; } return new __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$spec$2d$extension$2f$request$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["NextRequest"](request.url, { method: request.method, headers: (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$utils$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["fromNodeOutgoingHttpHeaders"])(request.headers), duplex: 'half', signal: request.request.signal, // geo // ip // nextConfig // body can not be passed if request was aborted // or we get a Request body was disturbed error ...request.request.signal.aborted ? {} : { body } }); } } }), "[project]/node_modules/next/dist/esm/server/client-component-renderer-logger.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "getClientComponentLoaderMetrics", ()=>getClientComponentLoaderMetrics, "wrapClientComponentLoader", ()=>wrapClientComponentLoader ]); // Combined load times for loading client components let clientComponentLoadStart = 0; let clientComponentLoadTimes = 0; let clientComponentLoadCount = 0; function wrapClientComponentLoader(ComponentMod) { if (!('performance' in globalThis)) { return ComponentMod.__next_app__; } return { require: (...args)=>{ const startTime = performance.now(); if (clientComponentLoadStart === 0) { clientComponentLoadStart = startTime; } try { clientComponentLoadCount += 1; return ComponentMod.__next_app__.require(...args); } finally{ clientComponentLoadTimes += performance.now() - startTime; } }, loadChunk: (...args)=>{ const startTime = performance.now(); const result = ComponentMod.__next_app__.loadChunk(...args); // Avoid wrapping `loadChunk`'s result in an extra promise in case something like React depends on its identity. // We only need to know when it's settled. result.finally(()=>{ clientComponentLoadTimes += performance.now() - startTime; }); return result; } }; } function getClientComponentLoaderMetrics(options = {}) { const metrics = clientComponentLoadStart === 0 ? undefined : { clientComponentLoadStart, clientComponentLoadTimes, clientComponentLoadCount }; if (options.reset) { clientComponentLoadStart = 0; clientComponentLoadTimes = 0; clientComponentLoadCount = 0; } return metrics; } }), "[project]/node_modules/next/dist/esm/server/pipe-readable.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "isAbortError", ()=>isAbortError, "pipeToNodeResponse", ()=>pipeToNodeResponse ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$spec$2d$extension$2f$adapters$2f$next$2d$request$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/web/spec-extension/adapters/next-request.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$detached$2d$promise$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/lib/detached-promise.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$tracer$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/lib/trace/tracer.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$constants$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/lib/trace/constants.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$client$2d$component$2d$renderer$2d$logger$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/client-component-renderer-logger.js [ssr] (ecmascript)"); ; ; ; ; ; function isAbortError(e) { return (e == null ? void 0 : e.name) === 'AbortError' || (e == null ? void 0 : e.name) === __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$spec$2d$extension$2f$adapters$2f$next$2d$request$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["ResponseAbortedName"]; } function createWriterFromResponse(res, waitUntilForEnd) { let started = false; // Create a promise that will resolve once the response has drained. See // https://nodejs.org/api/stream.html#stream_event_drain let drained = new __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$detached$2d$promise$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["DetachedPromise"](); function onDrain() { drained.resolve(); } res.on('drain', onDrain); // If the finish event fires, it means we shouldn't block and wait for the // drain event. res.once('close', ()=>{ res.off('drain', onDrain); drained.resolve(); }); // Create a promise that will resolve once the response has finished. See // https://nodejs.org/api/http.html#event-finish_1 const finished = new __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$detached$2d$promise$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["DetachedPromise"](); res.once('finish', ()=>{ finished.resolve(); }); // Create a writable stream that will write to the response. return new WritableStream({ write: async (chunk)=>{ // You'd think we'd want to use `start` instead of placing this in `write` // but this ensures that we don't actually flush the headers until we've // started writing chunks. if (!started) { started = true; if ('performance' in globalThis && process.env.NEXT_OTEL_PERFORMANCE_PREFIX) { const metrics = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$client$2d$component$2d$renderer$2d$logger$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["getClientComponentLoaderMetrics"])(); if (metrics) { performance.measure(`${process.env.NEXT_OTEL_PERFORMANCE_PREFIX}:next-client-component-loading`, { start: metrics.clientComponentLoadStart, end: metrics.clientComponentLoadStart + metrics.clientComponentLoadTimes }); } } res.flushHeaders(); (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$tracer$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["getTracer"])().trace(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$constants$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["NextNodeServerSpan"].startResponse, { spanName: 'start response' }, ()=>undefined); } try { const ok = res.write(chunk); // Added by the `compression` middleware, this is a function that will // flush the partially-compressed response to the client. if ('flush' in res && typeof res.flush === 'function') { res.flush(); } // If the write returns false, it means there's some backpressure, so // wait until it's streamed before continuing. if (!ok) { await drained.promise; // Reset the drained promise so that we can wait for the next drain event. drained = new __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$detached$2d$promise$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["DetachedPromise"](); } } catch (err) { res.end(); throw Object.defineProperty(new Error('failed to write chunk to response', { cause: err }), "__NEXT_ERROR_CODE", { value: "E321", enumerable: false, configurable: true }); } }, abort: (err)=>{ if (res.writableFinished) return; res.destroy(err); }, close: async ()=>{ // if a waitUntil promise was passed, wait for it to resolve before // ending the response. if (waitUntilForEnd) { await waitUntilForEnd; } if (res.writableFinished) return; res.end(); return finished.promise; } }); } async function pipeToNodeResponse(readable, res, waitUntilForEnd) { try { // If the response has already errored, then just return now. const { errored, destroyed } = res; if (errored || destroyed) return; // Create a new AbortController so that we can abort the readable if the // client disconnects. const controller = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$web$2f$spec$2d$extension$2f$adapters$2f$next$2d$request$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["createAbortController"])(res); const writer = createWriterFromResponse(res, waitUntilForEnd); await readable.pipeTo(writer, { signal: controller.signal }); } catch (err) { // If this isn't related to an abort error, re-throw it. if (isAbortError(err)) return; throw Object.defineProperty(new Error('failed to pipe response', { cause: err }), "__NEXT_ERROR_CODE", { value: "E180", enumerable: false, configurable: true }); } } }), "[project]/node_modules/next/dist/esm/shared/lib/invariant-error.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "InvariantError", ()=>InvariantError ]); class InvariantError extends Error { constructor(message, options){ super(`Invariant: ${message.endsWith('.') ? message : message + '.'} This is a bug in Next.js.`, options); this.name = 'InvariantError'; } } }), "[project]/node_modules/next/dist/esm/server/render-result.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "default", ()=>RenderResult ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$node$2d$web$2d$streams$2d$helper$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/stream-utils/node-web-streams-helper.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$pipe$2d$readable$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/pipe-readable.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$invariant$2d$error$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/invariant-error.js [ssr] (ecmascript)"); ; ; ; class RenderResult { static #_ = /** * A render result that represents an empty response. This is used to * represent a response that was not found or was already sent. */ this.EMPTY = new RenderResult(null, { metadata: {}, contentType: null }); /** * Creates a new RenderResult instance from a static response. * * @param value the static response value * @param contentType the content type of the response * @returns a new RenderResult instance */ static fromStatic(value, contentType) { return new RenderResult(value, { metadata: {}, contentType }); } constructor(response, { contentType, waitUntil, metadata }){ this.response = response; this.contentType = contentType; this.metadata = metadata; this.waitUntil = waitUntil; } assignMetadata(metadata) { Object.assign(this.metadata, metadata); } /** * Returns true if the response is null. It can be null if the response was * not found or was already sent. */ get isNull() { return this.response === null; } /** * Returns false if the response is a string. It can be a string if the page * was prerendered. If it's not, then it was generated dynamically. */ get isDynamic() { return typeof this.response !== 'string'; } toUnchunkedString(stream = false) { if (this.response === null) { // If the response is null, return an empty string. This behavior is // intentional as we're now providing the `RenderResult.EMPTY` value. return ''; } if (typeof this.response !== 'string') { if (!stream) { throw Object.defineProperty(new __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$invariant$2d$error$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["InvariantError"]('dynamic responses cannot be unchunked. This is a bug in Next.js'), "__NEXT_ERROR_CODE", { value: "E732", enumerable: false, configurable: true }); } return (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$node$2d$web$2d$streams$2d$helper$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["streamToString"])(this.readable); } return this.response; } /** * Returns a readable stream of the response. */ get readable() { if (this.response === null) { // If the response is null, return an empty stream. This behavior is // intentional as we're now providing the `RenderResult.EMPTY` value. return new ReadableStream({ start (controller) { controller.close(); } }); } if (typeof this.response === 'string') { return (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$node$2d$web$2d$streams$2d$helper$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["streamFromString"])(this.response); } if (Buffer.isBuffer(this.response)) { return (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$node$2d$web$2d$streams$2d$helper$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["streamFromBuffer"])(this.response); } // If the response is an array of streams, then chain them together. if (Array.isArray(this.response)) { return (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$node$2d$web$2d$streams$2d$helper$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["chainStreams"])(...this.response); } return this.response; } /** * Coerces the response to an array of streams. This will convert the response * to an array of streams if it is not already one. * * @returns An array of streams */ coerce() { if (this.response === null) { // If the response is null, return an empty stream. This behavior is // intentional as we're now providing the `RenderResult.EMPTY` value. return []; } if (typeof this.response === 'string') { return [ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$node$2d$web$2d$streams$2d$helper$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["streamFromString"])(this.response) ]; } else if (Array.isArray(this.response)) { return this.response; } else if (Buffer.isBuffer(this.response)) { return [ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$stream$2d$utils$2f$node$2d$web$2d$streams$2d$helper$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["streamFromBuffer"])(this.response) ]; } else { return [ this.response ]; } } /** * Pipes the response through a transform stream. This converts the response * to a single readable stream (chaining if needed) and pipes it through the * provided transform. * * @param transform The transform stream to pipe through */ pipeThrough(transform) { this.response = this.readable.pipeThrough(transform); } /** * Unshifts a new stream to the response. This will convert the response to an * array of streams if it is not already one and will add the new stream to * the start of the array. When this response is piped, all of the streams * will be piped one after the other. * * @param readable The new stream to unshift */ unshift(readable) { // Coerce the response to an array of streams. this.response = this.coerce(); // Add the new stream to the start of the array. this.response.unshift(readable); } /** * Chains a new stream to the response. This will convert the response to an * array of streams if it is not already one and will add the new stream to * the end. When this response is piped, all of the streams will be piped * one after the other. * * @param readable The new stream to chain */ push(readable) { // Coerce the response to an array of streams. this.response = this.coerce(); // Add the new stream to the end of the array. this.response.push(readable); } /** * Pipes the response to a writable stream. This will close/cancel the * writable stream if an error is encountered. If this doesn't throw, then * the writable stream will be closed or aborted. * * @param writable Writable stream to pipe the response to */ async pipeTo(writable) { try { await this.readable.pipeTo(writable, { // We want to close the writable stream ourselves so that we can wait // for the waitUntil promise to resolve before closing it. If an error // is encountered, we'll abort the writable stream if we swallowed the // error. preventClose: true }); // If there is a waitUntil promise, wait for it to resolve before // closing the writable stream. if (this.waitUntil) await this.waitUntil; // Close the writable stream. await writable.close(); } catch (err) { // If this is an abort error, we should abort the writable stream (as we // took ownership of it when we started piping). We don't need to re-throw // because we handled the error. if ((0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$pipe$2d$readable$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["isAbortError"])(err)) { // Abort the writable stream if an error is encountered. await writable.abort(err); return; } // We're not aborting the writer here as when this method throws it's not // clear as to how so the caller should assume it's their responsibility // to clean up the writer. throw err; } } /** * Pipes the response to a node response. This will close/cancel the node * response if an error is encountered. * * @param res */ async pipeToNodeResponse(res) { await (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$pipe$2d$readable$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["pipeToNodeResponse"])(this.readable, res, this.waitUntil); } } }), "[project]/node_modules/next/dist/esm/server/response-cache/utils.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "fromResponseCacheEntry", ()=>fromResponseCacheEntry, "routeKindToIncrementalCacheKind", ()=>routeKindToIncrementalCacheKind, "toResponseCacheEntry", ()=>toResponseCacheEntry ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/response-cache/types.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$render$2d$result$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/render-result.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$route$2d$kind$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/route-kind.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/lib/constants.js [ssr] (ecmascript)"); ; ; ; ; async function fromResponseCacheEntry(cacheEntry) { var _cacheEntry_value, _cacheEntry_value1; return { ...cacheEntry, value: ((_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) === __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["CachedRouteKind"].PAGES ? { kind: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["CachedRouteKind"].PAGES, html: await cacheEntry.value.html.toUnchunkedString(true), pageData: cacheEntry.value.pageData, headers: cacheEntry.value.headers, status: cacheEntry.value.status } : ((_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind) === __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["CachedRouteKind"].APP_PAGE ? { kind: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["CachedRouteKind"].APP_PAGE, html: await cacheEntry.value.html.toUnchunkedString(true), postponed: cacheEntry.value.postponed, rscData: cacheEntry.value.rscData, headers: cacheEntry.value.headers, status: cacheEntry.value.status, segmentData: cacheEntry.value.segmentData } : cacheEntry.value }; } async function toResponseCacheEntry(response) { var _response_value, _response_value1; if (!response) return null; return { isMiss: response.isMiss, isStale: response.isStale, cacheControl: response.cacheControl, isFallback: response.isFallback, value: ((_response_value = response.value) == null ? void 0 : _response_value.kind) === __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["CachedRouteKind"].PAGES ? { kind: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["CachedRouteKind"].PAGES, html: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$render$2d$result$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["default"].fromStatic(response.value.html, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["HTML_CONTENT_TYPE_HEADER"]), pageData: response.value.pageData, headers: response.value.headers, status: response.value.status } : ((_response_value1 = response.value) == null ? void 0 : _response_value1.kind) === __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["CachedRouteKind"].APP_PAGE ? { kind: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["CachedRouteKind"].APP_PAGE, html: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$render$2d$result$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["default"].fromStatic(response.value.html, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["HTML_CONTENT_TYPE_HEADER"]), rscData: response.value.rscData, headers: response.value.headers, status: response.value.status, postponed: response.value.postponed, segmentData: response.value.segmentData } : response.value }; } function routeKindToIncrementalCacheKind(routeKind) { switch(routeKind){ case __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$route$2d$kind$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["RouteKind"].PAGES: return __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["IncrementalCacheKind"].PAGES; case __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$route$2d$kind$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["RouteKind"].APP_PAGE: return __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["IncrementalCacheKind"].APP_PAGE; case __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$route$2d$kind$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["RouteKind"].IMAGE: return __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["IncrementalCacheKind"].IMAGE; case __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$route$2d$kind$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["RouteKind"].APP_ROUTE: return __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["IncrementalCacheKind"].APP_ROUTE; case __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$route$2d$kind$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["RouteKind"].PAGES_API: // Pages Router API routes are not cached in the incremental cache. throw Object.defineProperty(new Error(`Unexpected route kind ${routeKind}`), "__NEXT_ERROR_CODE", { value: "E64", enumerable: false, configurable: true }); default: return routeKind; } } }), "[project]/node_modules/next/dist/esm/server/response-cache/index.js [ssr] (ecmascript) <locals>", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "default", ()=>ResponseCache ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$batcher$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/lib/batcher.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$lru$2d$cache$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/lib/lru-cache.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$build$2f$output$2f$log$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/build/output/log.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$scheduler$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/lib/scheduler.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$utils$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/response-cache/utils.js [ssr] (ecmascript)"); ; ; ; ; ; /** * Parses an environment variable as a positive integer, returning the fallback * if the value is missing, not a number, or not positive. */ function parsePositiveInt(envValue, fallback) { if (!envValue) return fallback; const parsed = parseInt(envValue, 10); return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback; } /** * Default TTL (in milliseconds) for minimal mode response cache entries. * Used for cache hit validation as a fallback for providers that don't * send the x-invocation-id header yet. * * 10 seconds chosen because: * - Long enough to dedupe rapid successive requests (e.g., page + data) * - Short enough to not serve stale data across unrelated requests * * Can be configured via `NEXT_PRIVATE_RESPONSE_CACHE_TTL` environment variable. */ const DEFAULT_TTL_MS = parsePositiveInt(process.env.NEXT_PRIVATE_RESPONSE_CACHE_TTL, 10000); /** * Default maximum number of entries in the response cache. * Can be configured via `NEXT_PRIVATE_RESPONSE_CACHE_MAX_SIZE` environment variable. */ const DEFAULT_MAX_SIZE = parsePositiveInt(process.env.NEXT_PRIVATE_RESPONSE_CACHE_MAX_SIZE, 150); /** * Separator used in compound cache keys to join pathname and invocationID. * Using null byte (\0) since it cannot appear in valid URL paths or UUIDs. */ const KEY_SEPARATOR = '\0'; /** * Sentinel value used for TTL-based cache entries (when invocationID is undefined). * Chosen to be a clearly reserved marker for internal cache keys. */ const TTL_SENTINEL = '__ttl_sentinel__'; /** * Creates a compound cache key from pathname and invocationID. */ function createCacheKey(pathname, invocationID) { return `${pathname}${KEY_SEPARATOR}${invocationID ?? TTL_SENTINEL}`; } /** * Extracts the invocationID from a compound cache key. * Returns undefined if the key used TTL_SENTINEL. */ function extractInvocationID(compoundKey) { const separatorIndex = compoundKey.lastIndexOf(KEY_SEPARATOR); if (separatorIndex === -1) return undefined; const invocationID = compoundKey.slice(separatorIndex + 1); return invocationID === TTL_SENTINEL ? undefined : invocationID; } ; class ResponseCache { constructor(minimal_mode, maxSize = DEFAULT_MAX_SIZE, ttl = DEFAULT_TTL_MS){ this.getBatcher = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$batcher$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["Batcher"].create({ // Ensure on-demand revalidate doesn't block normal requests, it should be // safe to run an on-demand revalidate for the same key as a normal request. cacheKeyFn: ({ key, isOnDemandRevalidate })=>`${key}-${isOnDemandRevalidate ? '1' : '0'}`, // We wait to do any async work until after we've added our promise to // `pendingResponses` to ensure that any any other calls will reuse the // same promise until we've fully finished our work. schedulerFn: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$scheduler$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["scheduleOnNextTick"] }); this.revalidateBatcher = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$batcher$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["Batcher"].create({ // We wait to do any async work until after we've added our promise to // `pendingResponses` to ensure that any any other calls will reuse the // same promise until we've fully finished our work. schedulerFn: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$scheduler$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["scheduleOnNextTick"] }); /** * Set of invocation IDs that have had cache entries evicted. * Used to detect when the cache size may be too small. * Bounded to prevent memory growth. */ this.evictedInvocationIDs = new Set(); this.minimal_mode = minimal_mode; this.maxSize = maxSize; this.ttl = ttl; // Create the LRU cache with eviction tracking this.cache = new __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$lru$2d$cache$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["LRUCache"](maxSize, undefined, (compoundKey)=>{ const invocationID = extractInvocationID(compoundKey); if (invocationID) { // Bound to 100 entries to prevent unbounded memory growth. // FIFO eviction is acceptable here because: // 1. Invocations are short-lived (single request lifecycle), so older // invocations are unlikely to still be active after 100 newer ones // 2. This warning mechanism is best-effort for developer guidance— // missing occasional eviction warnings doesn't affect correctness // 3. If a long-running invocation is somehow evicted and then has // another cache entry evicted, it will simply be re-added if (this.evictedInvocationIDs.size >= 100) { const first = this.evictedInvocationIDs.values().next().value; if (first) this.evictedInvocationIDs.delete(first); } this.evictedInvocationIDs.add(invocationID); } }); } /** * Gets the response cache entry for the given key. * * @param key - The key to get the response cache entry for. * @param responseGenerator - The response generator to use to generate the response cache entry. * @param context - The context for the get request. * @returns The response cache entry. */ async get(key, responseGenerator, context) { // If there is no key for the cache, we can't possibly look this up in the // cache so just return the result of the response generator. if (!key) { return responseGenerator({ hasResolved: false, previousCacheEntry: null }); } // Check minimal mode cache before doing any other work. if (this.minimal_mode) { const cacheKey = createCacheKey(key, context.invocationID); const cachedItem = this.cache.get(cacheKey); if (cachedItem) { // With invocationID: exact match found - always a hit // With TTL mode: must check expiration if (context.invocationID !== undefined) { return (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$utils$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["toResponseCacheEntry"])(cachedItem.entry); } // TTL mode: check expiration const now = Date.now(); if (cachedItem.expiresAt > now) { return (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$utils$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["toResponseCacheEntry"])(cachedItem.entry); } // TTL expired - clean up this.cache.remove(cacheKey); } // Warn if this invocation had entries evicted - indicates cache may be too small. if (context.invocationID && this.evictedInvocationIDs.has(context.invocationID)) { (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$build$2f$output$2f$log$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["warnOnce"])(`Response cache entry was evicted for invocation ${context.invocationID}. ` + `Consider increasing NEXT_PRIVATE_RESPONSE_CACHE_MAX_SIZE (current: ${this.maxSize}).`); } } const { incrementalCache, isOnDemandRevalidate = false, isFallback = false, isRoutePPREnabled = false, isPrefetch = false, waitUntil, routeKind, invocationID } = context; const response = await this.getBatcher.batch({ key, isOnDemandRevalidate }, ({ resolve })=>{ const promise = this.handleGet(key, responseGenerator, { incrementalCache, isOnDemandRevalidate, isFallback, isRoutePPREnabled, isPrefetch, routeKind, invocationID }, resolve); // We need to ensure background revalidates are passed to waitUntil. if (waitUntil) waitUntil(promise); return promise; }); return (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$utils$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["toResponseCacheEntry"])(response); } /** * Handles the get request for the response cache. * * @param key - The key to get the response cache entry for. * @param responseGenerator - The response generator to use to generate the response cache entry. * @param context - The context for the get request. * @param resolve - The resolve function to use to resolve the response cache entry. * @returns The response cache entry. */ async handleGet(key, responseGenerator, context, resolve) { let previousIncrementalCacheEntry = null; let resolved = false; try { // Get the previous cache entry if not in minimal mode previousIncrementalCacheEntry = !this.minimal_mode ? await context.incrementalCache.get(key, { kind: (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$utils$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["routeKindToIncrementalCacheKind"])(context.routeKind), isRoutePPREnabled: context.isRoutePPREnabled, isFallback: context.isFallback }) : null; if (previousIncrementalCacheEntry && !context.isOnDemandRevalidate) { resolve(previousIncrementalCacheEntry); resolved = true; if (!previousIncrementalCacheEntry.isStale || context.isPrefetch) { // The cached value is still valid, so we don't need to update it yet. return previousIncrementalCacheEntry; } } // Revalidate the cache entry const incrementalResponseCacheEntry = await this.revalidate(key, context.incrementalCache, context.isRoutePPREnabled, context.isFallback, responseGenerator, previousIncrementalCacheEntry, previousIncrementalCacheEntry !== null && !context.isOnDemandRevalidate, undefined, context.invocationID); // Handle null response if (!incrementalResponseCacheEntry) { // Remove the cache item if it was set so we don't use it again. if (this.minimal_mode) { const cacheKey = createCacheKey(key, context.invocationID); this.cache.remove(cacheKey); } return null; } // Resolve for on-demand revalidation or if not already resolved if (context.isOnDemandRevalidate && !resolved) { return incrementalResponseCacheEntry; } return incrementalResponseCacheEntry; } catch (err) { // If we've already resolved the cache entry, we can't reject as we // already resolved the cache entry so log the error here. if (resolved) { console.error(err); return null; } throw err; } } /** * Revalidates the cache entry for the given key. * * @param key - The key to revalidate the cache entry for. * @param incrementalCache - The incremental cache to use to revalidate the cache entry. * @param isRoutePPREnabled - Whether the route is PPR enabled. * @param isFallback - Whether the route is a fallback. * @param responseGenerator - The response generator to use to generate the response cache entry. * @param previousIncrementalCacheEntry - The previous cache entry to use to revalidate the cache entry. * @param hasResolved - Whether the response has been resolved. * @param waitUntil - Optional function to register background work. * @param invocationID - The invocation ID for cache key scoping. * @returns The revalidated cache entry. */ async revalidate(key, incrementalCache, isRoutePPREnabled, isFallback, responseGenerator, previousIncrementalCacheEntry, hasResolved, waitUntil, invocationID) { return this.revalidateBatcher.batch(key, ()=>{ const promise = this.handleRevalidate(key, incrementalCache, isRoutePPREnabled, isFallback, responseGenerator, previousIncrementalCacheEntry, hasResolved, invocationID); // We need to ensure background revalidates are passed to waitUntil. if (waitUntil) waitUntil(promise); return promise; }); } async handleRevalidate(key, incrementalCache, isRoutePPREnabled, isFallback, responseGenerator, previousIncrementalCacheEntry, hasResolved, invocationID) { try { // Generate the response cache entry using the response generator. const responseCacheEntry = await responseGenerator({ hasResolved, previousCacheEntry: previousIncrementalCacheEntry, isRevalidating: true }); if (!responseCacheEntry) { return null; } // Convert the response cache entry to an incremental response cache entry. const incrementalResponseCacheEntry = await (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$utils$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["fromResponseCacheEntry"])({ ...responseCacheEntry, isMiss: !previousIncrementalCacheEntry }); // We want to persist the result only if it has a cache control value // defined. if (incrementalResponseCacheEntry.cacheControl) { if (this.minimal_mode) { // Set TTL expiration for cache hit validation. Entries are validated // by invocationID when available, with TTL as a fallback for providers // that don't send x-invocation-id. Memory is managed by LRU eviction. const cacheKey = createCacheKey(key, invocationID); this.cache.set(cacheKey, { entry: incrementalResponseCacheEntry, expiresAt: Date.now() + this.ttl }); } else { await incrementalCache.set(key, incrementalResponseCacheEntry.value, { cacheControl: incrementalResponseCacheEntry.cacheControl, isRoutePPREnabled, isFallback }); } } return incrementalResponseCacheEntry; } catch (err) { // When a path is erroring we automatically re-set the existing cache // with new revalidate and expire times to prevent non-stop retrying. if (previousIncrementalCacheEntry == null ? void 0 : previousIncrementalCacheEntry.cacheControl) { const revalidate = Math.min(Math.max(previousIncrementalCacheEntry.cacheControl.revalidate || 3, 3), 30); const expire = previousIncrementalCacheEntry.cacheControl.expire === undefined ? undefined : Math.max(revalidate + 3, previousIncrementalCacheEntry.cacheControl.expire); await incrementalCache.set(key, previousIncrementalCacheEntry.value, { cacheControl: { revalidate: revalidate, expire: expire }, isRoutePPREnabled, isFallback }); } // We haven't resolved yet, so let's throw to indicate an error. throw err; } } } }), "[project]/node_modules/next/dist/esm/server/lib/cache-control.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "getCacheControlHeader", ()=>getCacheControlHeader ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/lib/constants.js [ssr] (ecmascript)"); ; function getCacheControlHeader({ revalidate, expire }) { const swrHeader = typeof revalidate === 'number' && expire !== undefined && revalidate < expire ? `, stale-while-revalidate=${expire - revalidate}` : ''; if (revalidate === 0) { return 'private, no-cache, no-store, max-age=0, must-revalidate'; } else if (typeof revalidate === 'number') { return `s-maxage=${revalidate}${swrHeader}`; } return `s-maxage=${__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["CACHE_ONE_YEAR_SECONDS"]}${swrHeader}`; } }), "[project]/node_modules/next/dist/esm/shared/lib/utils.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; /** * Web vitals provided to _app.reportWebVitals by Core Web Vitals plugin developed by Google Chrome team. * https://nextjs.org/blog/next-9-4#integrated-web-vitals-reporting */ __turbopack_context__.s([ "DecodeError", ()=>DecodeError, "MiddlewareNotFoundError", ()=>MiddlewareNotFoundError, "MissingStaticPage", ()=>MissingStaticPage, "NormalizeError", ()=>NormalizeError, "PageNotFoundError", ()=>PageNotFoundError, "SP", ()=>SP, "ST", ()=>ST, "WEB_VITALS", ()=>WEB_VITALS, "execOnce", ()=>execOnce, "getDisplayName", ()=>getDisplayName, "getLocationOrigin", ()=>getLocationOrigin, "getURL", ()=>getURL, "isAbsoluteUrl", ()=>isAbsoluteUrl, "isResSent", ()=>isResSent, "loadGetInitialProps", ()=>loadGetInitialProps, "normalizeRepeatedSlashes", ()=>normalizeRepeatedSlashes, "stringifyError", ()=>stringifyError ]); const WEB_VITALS = [ 'CLS', 'FCP', 'FID', 'INP', 'LCP', 'TTFB' ]; function execOnce(fn) { let used = false; let result; return (...args)=>{ if (!used) { used = true; result = fn(...args); } return result; }; } // Scheme: https://tools.ietf.org/html/rfc3986#section-3.1 // Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3 const ABSOLUTE_URL_REGEX = /^[a-zA-Z][a-zA-Z\d+\-.]*?:/; const isAbsoluteUrl = (url)=>ABSOLUTE_URL_REGEX.test(url); function getLocationOrigin() { const { protocol, hostname, port } = window.location; return `${protocol}//${hostname}${port ? ':' + port : ''}`; } function getURL() { const { href } = window.location; const origin = getLocationOrigin(); return href.substring(origin.length); } function getDisplayName(Component) { return typeof Component === 'string' ? Component : Component.displayName || Component.name || 'Unknown'; } function isResSent(res) { return res.finished || res.headersSent; } function normalizeRepeatedSlashes(url) { const urlParts = url.split('?'); const urlNoQuery = urlParts[0]; return urlNoQuery // first we replace any non-encoded backslashes with forward // then normalize repeated forward slashes .replace(/\\/g, '/').replace(/\/\/+/g, '/') + (urlParts[1] ? `?${urlParts.slice(1).join('?')}` : ''); } async function loadGetInitialProps(App, ctx) { if ("TURBOPACK compile-time truthy", 1) { if (App.prototype?.getInitialProps) { const message = `"${getDisplayName(App)}.getInitialProps()" is defined as an instance method - visit https://nextjs.org/docs/messages/get-initial-props-as-an-instance-method for more information.`; throw Object.defineProperty(new Error(message), "__NEXT_ERROR_CODE", { value: "E1035", enumerable: false, configurable: true }); } } // when called from _app `ctx` is nested in `ctx` const res = ctx.res || ctx.ctx && ctx.ctx.res; if (!App.getInitialProps) { if (ctx.ctx && ctx.Component) { // @ts-ignore pageProps default return { pageProps: await loadGetInitialProps(ctx.Component, ctx.ctx) }; } return {}; } const props = await App.getInitialProps(ctx); if (res && isResSent(res)) { return props; } if (!props) { const message = `"${getDisplayName(App)}.getInitialProps()" should resolve to an object. But found "${props}" instead.`; throw Object.defineProperty(new Error(message), "__NEXT_ERROR_CODE", { value: "E1025", enumerable: false, configurable: true }); } if ("TURBOPACK compile-time truthy", 1) { if (Object.keys(props).length === 0 && !ctx.ctx) { console.warn(`${getDisplayName(App)} returned an empty object from \`getInitialProps\`. This de-optimizes and prevents automatic static optimization. https://nextjs.org/docs/messages/empty-object-getInitialProps`); } } return props; } const SP = typeof performance !== 'undefined'; const ST = SP && [ 'mark', 'measure', 'getEntriesByName' ].every((method)=>typeof performance[method] === 'function'); class DecodeError extends Error { } class NormalizeError extends Error { } class PageNotFoundError extends Error { constructor(page){ super(); this.code = 'ENOENT'; this.name = 'PageNotFoundError'; this.message = `Cannot find module for page: ${page}`; } } class MissingStaticPage extends Error { constructor(page, message){ super(); this.message = `Failed to load static file for page: ${page} ${message}`; } } class MiddlewareNotFoundError extends Error { constructor(){ super(); this.code = 'ENOENT'; this.message = `Cannot find the middleware module`; } } function stringifyError(error) { return JSON.stringify({ message: error.message, stack: error.stack }); } }), "[project]/node_modules/next/dist/esm/client/components/redirect-status-code.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "RedirectStatusCode", ()=>RedirectStatusCode ]); var RedirectStatusCode = /*#__PURE__*/ function(RedirectStatusCode) { RedirectStatusCode[RedirectStatusCode["SeeOther"] = 303] = "SeeOther"; RedirectStatusCode[RedirectStatusCode["TemporaryRedirect"] = 307] = "TemporaryRedirect"; RedirectStatusCode[RedirectStatusCode["PermanentRedirect"] = 308] = "PermanentRedirect"; return RedirectStatusCode; }({}); }), "[project]/node_modules/next/dist/esm/lib/redirect-status.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "allowedStatusCodes", ()=>allowedStatusCodes, "getRedirectStatus", ()=>getRedirectStatus, "modifyRouteRegex", ()=>modifyRouteRegex ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$redirect$2d$status$2d$code$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/client/components/redirect-status-code.js [ssr] (ecmascript)"); ; const allowedStatusCodes = new Set([ 301, 302, 303, 307, 308 ]); function getRedirectStatus(route) { return route.statusCode || (route.permanent ? __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$redirect$2d$status$2d$code$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["RedirectStatusCode"].PermanentRedirect : __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$redirect$2d$status$2d$code$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["RedirectStatusCode"].TemporaryRedirect); } function modifyRouteRegex(regex, restrictedPaths) { if (restrictedPaths) { regex = regex.replace(/\^/, `^(?!${restrictedPaths.map((path)=>path.replace(/\//g, '\\/')).join('|')})`); } regex = regex.replace(/\$$/, '(?:\\/)?$'); return regex; } }), "[project]/node_modules/next/dist/esm/server/lib/etag.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; /** * FNV-1a Hash implementation * @author Travis Webb (tjwebb) <me@traviswebb.com> * * Ported from https://github.com/tjwebb/fnv-plus/blob/master/index.js * * Simplified, optimized and add modified for 52 bit, which provides a larger hash space * and still making use of Javascript's 53-bit integer space. */ __turbopack_context__.s([ "fnv1a52", ()=>fnv1a52, "generateETag", ()=>generateETag ]); const fnv1a52 = (str)=>{ const len = str.length; let i = 0, t0 = 0, v0 = 0x2325, t1 = 0, v1 = 0x8422, t2 = 0, v2 = 0x9ce4, t3 = 0, v3 = 0xcbf2; while(i < len){ v0 ^= str.charCodeAt(i++); t0 = v0 * 435; t1 = v1 * 435; t2 = v2 * 435; t3 = v3 * 435; t2 += v0 << 8; t3 += v1 << 8; t1 += t0 >>> 16; v0 = t0 & 65535; t2 += t1 >>> 16; v1 = t1 & 65535; v3 = t3 + (t2 >>> 16) & 65535; v2 = t2 & 65535; } return (v3 & 15) * 281474976710656 + v2 * 4294967296 + v1 * 65536 + (v0 ^ v3 >> 4); }; const generateETag = (payload, weak = false)=>{ const prefix = weak ? 'W/"' : '"'; return prefix + fnv1a52(payload).toString(36) + payload.length.toString(36) + '"'; }; }), "[project]/node_modules/next/dist/compiled/fresh/index.js [ssr] (ecmascript)", ((__turbopack_context__, module, exports) => { (()=>{ "use strict"; var e = { 695: (e)=>{ /*! * fresh * Copyright(c) 2012 TJ Holowaychuk * Copyright(c) 2016-2017 Douglas Christopher Wilson * MIT Licensed */ var r = /(?:^|,)\s*?no-cache\s*?(?:,|$)/; e.exports = fresh; function fresh(e, a) { var t = e["if-modified-since"]; var s = e["if-none-match"]; if (!t && !s) { return false; } var i = e["cache-control"]; if (i && r.test(i)) { return false; } if (s && s !== "*") { var f = a["etag"]; if (!f) { return false; } var n = true; var u = parseTokenList(s); for(var _ = 0; _ < u.length; _++){ var o = u[_]; if (o === f || o === "W/" + f || "W/" + o === f) { n = false; break; } } if (n) { return false; } } if (t) { var p = a["last-modified"]; var v = !p || !(parseHttpDate(p) <= parseHttpDate(t)); if (v) { return false; } } return true; } function parseHttpDate(e) { var r = e && Date.parse(e); return typeof r === "number" ? r : NaN; } function parseTokenList(e) { var r = 0; var a = []; var t = 0; for(var s = 0, i = e.length; s < i; s++){ switch(e.charCodeAt(s)){ case 32: if (t === r) { t = r = s + 1; } break; case 44: a.push(e.substring(t, r)); t = r = s + 1; break; default: r = s + 1; break; } } a.push(e.substring(t, r)); return a; } } }; var r = {}; function __nccwpck_require__(a) { var t = r[a]; if (t !== undefined) { return t.exports; } var s = r[a] = { exports: {} }; var i = true; try { e[a](s, s.exports, __nccwpck_require__); i = false; } finally{ if (i) delete r[a]; } return s.exports; } if (typeof __nccwpck_require__ !== "undefined") __nccwpck_require__.ab = ("TURBOPACK compile-time value", "/ROOT/node_modules/next/dist/compiled/fresh") + "/"; var a = __nccwpck_require__(695); module.exports = a; })(); }), "[project]/node_modules/next/dist/esm/server/send-payload.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "sendEtagResponse", ()=>sendEtagResponse, "sendRenderResult", ()=>sendRenderResult ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$utils$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/utils.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$etag$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/lib/etag.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$fresh$2f$index$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/fresh/index.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$cache$2d$control$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/lib/cache-control.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/lib/constants.js [ssr] (ecmascript)"); ; ; ; ; ; function sendEtagResponse(req, res, etag) { if (etag) { /** * The server generating a 304 response MUST generate any of the * following header fields that would have been sent in a 200 (OK) * response to the same request: Cache-Control, Content-Location, Date, * ETag, Expires, and Vary. https://tools.ietf.org/html/rfc7232#section-4.1 */ res.setHeader('ETag', etag); } if ((0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$fresh$2f$index$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["default"])(req.headers, { etag })) { res.statusCode = 304; res.end(); return true; } return false; } async function sendRenderResult({ req, res, result, generateEtags, poweredByHeader, cacheControl }) { if ((0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$utils$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["isResSent"])(res)) { return; } if (poweredByHeader && result.contentType === __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["HTML_CONTENT_TYPE_HEADER"]) { res.setHeader('X-Powered-By', 'Next.js'); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheControl && !res.getHeader('Cache-Control')) { res.setHeader('Cache-Control', (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$cache$2d$control$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["getCacheControlHeader"])(cacheControl)); } const payload = result.isDynamic ? null : result.toUnchunkedString(); if (generateEtags && payload !== null) { const etag = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$etag$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["generateETag"])(payload); if (sendEtagResponse(req, res, etag)) { return; } } if (!res.getHeader('Content-Type') && result.contentType) { res.setHeader('Content-Type', result.contentType); } if (payload) { res.setHeader('Content-Length', Buffer.byteLength(payload)); } if (req.method === 'HEAD') { res.end(null); return; } if (payload !== null) { res.end(payload); return; } // Pipe the render result to the response after we get a writer for it. await result.pipeToNodeResponse(res); } }), "[project]/node_modules/next/dist/esm/shared/lib/router/utils/html-bots.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; // This regex contains the bots that we need to do a blocking render for and can't safely stream the response // due to how they parse the DOM. For example, they might explicitly check for metadata in the `head` tag, so we can't stream metadata tags after the `head` was sent. // Note: The pattern [\w-]+-Google captures all Google crawlers with "-Google" suffix (e.g., Mediapartners-Google, AdsBot-Google, Storebot-Google) // as well as crawlers starting with "Google-" (e.g., Google-PageRenderer, Google-InspectionTool) __turbopack_context__.s([ "HTML_LIMITED_BOT_UA_RE", ()=>HTML_LIMITED_BOT_UA_RE ]); const HTML_LIMITED_BOT_UA_RE = /[\w-]+-Google|Google-[\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight/i; }), "[project]/node_modules/next/dist/esm/shared/lib/router/utils/is-bot.js [ssr] (ecmascript) <locals>", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "HTML_LIMITED_BOT_UA_RE_STRING", ()=>HTML_LIMITED_BOT_UA_RE_STRING, "getBotType", ()=>getBotType, "isBot", ()=>isBot ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$html$2d$bots$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/html-bots.js [ssr] (ecmascript)"); ; // Bot crawler that will spin up a headless browser and execute JS. // Only the main Googlebot search crawler executes JavaScript, not other Google crawlers. // x-ref: https://developers.google.com/search/docs/crawling-indexing/google-common-crawlers // This regex specifically matches "Googlebot" but NOT "Mediapartners-Google", "AdsBot-Google", etc. const HEADLESS_BROWSER_BOT_UA_RE = /Googlebot(?!-)|Googlebot$/i; const HTML_LIMITED_BOT_UA_RE_STRING = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$html$2d$bots$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["HTML_LIMITED_BOT_UA_RE"].source; ; function isDomBotUA(userAgent) { return HEADLESS_BROWSER_BOT_UA_RE.test(userAgent); } function isHtmlLimitedBotUA(userAgent) { return __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$html$2d$bots$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["HTML_LIMITED_BOT_UA_RE"].test(userAgent); } function isBot(userAgent) { return isDomBotUA(userAgent) || isHtmlLimitedBotUA(userAgent); } function getBotType(userAgent) { if (isDomBotUA(userAgent)) { return 'dom'; } if (isHtmlLimitedBotUA(userAgent)) { return 'html'; } return undefined; } }), "[project]/node_modules/next/dist/esm/server/route-modules/pages/pages-handler.js [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "getHandler", ()=>getHandler ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$route$2d$kind$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/route-kind.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$constants$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/lib/trace/constants.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$tracer$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/lib/trace/tracer.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$format$2d$url$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/format-url.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$request$2d$meta$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/request-meta.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$app$2d$render$2f$interop$2d$default$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/app-render/interop-default.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$instrumentation$2f$utils$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/instrumentation/utils.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$page$2d$path$2f$normalize$2d$data$2d$path$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/page-path/normalize-data-path.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$index$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__$3c$locals$3e$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/response-cache/index.js [ssr] (ecmascript) <locals>"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/response-cache/types.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$cache$2d$control$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/lib/cache-control.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$utils$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/utils.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$redirect$2d$status$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/lib/redirect-status.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/lib/constants.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$externals$5d2f$path__$5b$external$5d$__$28$path$2c$__cjs$29$__ = __turbopack_context__.i("[externals]/path [external] (path, cjs)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$send$2d$payload$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/send-payload.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$render$2d$result$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/render-result.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$utils$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/response-cache/utils.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$externals$5d2f$next$2f$dist$2f$shared$2f$lib$2f$no$2d$fallback$2d$error$2e$external$2e$js__$5b$external$5d$__$28$next$2f$dist$2f$shared$2f$lib$2f$no$2d$fallback$2d$error$2e$external$2e$js$2c$__cjs$29$__ = __turbopack_context__.i("[externals]/next/dist/shared/lib/no-fallback-error.external.js [external] (next/dist/shared/lib/no-fallback-error.external.js, cjs)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$redirect$2d$status$2d$code$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/client/components/redirect-status-code.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$is$2d$bot$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__$3c$locals$3e$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/is-bot.js [ssr] (ecmascript) <locals>"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$add$2d$path$2d$prefix$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/add-path-prefix.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$remove$2d$trailing$2d$slash$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/shared/lib/router/utils/remove-trailing-slash.js [ssr] (ecmascript)"); ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; const getHandler = ({ srcPage: originalSrcPage, config, userland, routeModule, isFallbackError, getStaticPaths, getStaticProps, getServerSideProps })=>{ return async function handler(req, res, ctx) { var _serverFilesManifest_config_experimental, _serverFilesManifest_config; if (ctx.requestMeta) { (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$request$2d$meta$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["setRequestMeta"])(req, ctx.requestMeta); } if (routeModule.isDev) { (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$request$2d$meta$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["addRequestMeta"])(req, 'devRequestTimingInternalsEnd', process.hrtime.bigint()); } let srcPage = originalSrcPage; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if ("TURBOPACK compile-time truthy", 1) { srcPage = srcPage.replace(/\/index$/, '') || '/'; } else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = ("TURBOPACK compile-time value", false); const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return; } const isMinimalMode = Boolean((0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$request$2d$meta$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["getRequestMeta"])(req, 'minimalMode')); const render404 = async ()=>{ // TODO: should route-module itself handle rendering the 404 if (routerServerContext == null ? void 0 : routerServerContext.render404) { await routerServerContext.render404(req, res, parsedUrl, false); } else { res.end('This page could not be found'); } }; const { buildId, query, params, parsedUrl, originalQuery, originalPathname, buildManifest, fallbackBuildManifest, nextFontManifest, serverFilesManifest, reactLoadableManifest, prerenderManifest, isDraftMode, isOnDemandRevalidate, revalidateOnlyGenerated, locale, locales, defaultLocale, routerServerContext, nextConfig, resolvedPathname, encodedResolvedPathname, deploymentId, clientAssetToken } = prepareResult; const isExperimentalCompile = serverFilesManifest == null ? void 0 : (_serverFilesManifest_config = serverFilesManifest.config) == null ? void 0 : (_serverFilesManifest_config_experimental = _serverFilesManifest_config.experimental) == null ? void 0 : _serverFilesManifest_config_experimental.isExperimentalCompile; const hasServerProps = Boolean(getServerSideProps); const hasStaticProps = Boolean(getStaticProps); const hasStaticPaths = Boolean(getStaticPaths); const hasGetInitialProps = Boolean((userland.default || userland).getInitialProps); let cacheKey = null; let isIsrFallback = false; let isNextDataRequest = prepareResult.isNextDataRequest && (hasStaticProps || hasServerProps); const is404Page = srcPage === '/404'; const is500Page = srcPage === '/500'; const isErrorPage = srcPage === '/_error'; if (!routeModule.isDev && !isDraftMode && hasStaticProps) { cacheKey = `${locale ? `/${locale}` : ''}${(srcPage === '/' || resolvedPathname === '/') && locale ? '' : resolvedPathname}`; if (is404Page || is500Page || isErrorPage) { cacheKey = `${locale ? `/${locale}` : ''}${srcPage}`; } // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } if (hasStaticPaths && !isDraftMode) { const decodedPathname = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$remove$2d$trailing$2d$slash$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["removeTrailingSlash"])(locale ? (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$add$2d$path$2d$prefix$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["addPathPrefix"])(resolvedPathname, `/${locale}`) : resolvedPathname); const isPrerendered = Boolean(prerenderManifest.routes[decodedPathname]) || prerenderManifest.notFoundRoutes.includes(decodedPathname); const prerenderInfo = prerenderManifest.dynamicRoutes[srcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { if (nextConfig.adapterPath) { return await render404(); } throw new __TURBOPACK__imported__module__$5b$externals$5d2f$next$2f$dist$2f$shared$2f$lib$2f$no$2d$fallback$2d$error$2e$external$2e$js__$5b$external$5d$__$28$next$2f$dist$2f$shared$2f$lib$2f$no$2d$fallback$2d$error$2e$external$2e$js$2c$__cjs$29$__["NoFallbackError"](); } if (typeof prerenderInfo.fallback === 'string' && !isPrerendered && !isNextDataRequest) { isIsrFallback = true; } } } // When serving a bot request, we want to serve a blocking render and not // the prerendered page. This ensures that the correct content is served // to the bot in the head. if (isIsrFallback && (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$is$2d$bot$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__$3c$locals$3e$__["isBot"])(req.headers['user-agent'] || '') || isMinimalMode) { isIsrFallback = false; } const tracer = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$tracer$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["getTracer"])(); const activeSpan = tracer.getActiveScopeSpan(); try { var _parsedUrl_pathname; const method = req.method || 'GET'; const resolvedUrl = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$format$2d$url$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["formatUrl"])({ pathname: nextConfig.trailingSlash ? `${encodedResolvedPathname}${!encodedResolvedPathname.endsWith('/') && ((_parsedUrl_pathname = parsedUrl.pathname) == null ? void 0 : _parsedUrl_pathname.endsWith('/')) ? '/' : ''}` : (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$remove$2d$trailing$2d$slash$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["removeTrailingSlash"])(encodedResolvedPathname || '/'), // make sure to only add query values from original URL query: hasStaticProps ? {} : originalQuery }); let parentSpan; const handleResponse = async (span)=>{ const responseGenerator = async ({ previousCacheEntry })=>{ var _previousCacheEntry_value; const doRender = async ()=>{ try { var _nextConfig_i18n; return await routeModule.render(req, res, { query: hasStaticProps && !isExperimentalCompile ? { ...params } : { ...query, ...params }, params, page: srcPage, renderContext: { isDraftMode, isFallback: isIsrFallback, developmentNotFoundSourcePage: (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$request$2d$meta$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["getRequestMeta"])(req, 'developmentNotFoundSourcePage') }, sharedContext: { buildId, customServer: Boolean(routerServerContext == null ? void 0 : routerServerContext.isCustomServer) || undefined, deploymentId, clientAssetToken }, renderOpts: { params, routeModule, page: srcPage, pageConfig: config || {}, Component: (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$app$2d$render$2f$interop$2d$default$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["interopDefault"])(userland), ComponentMod: userland, getStaticProps, getStaticPaths, getServerSideProps, supportsDynamicResponse: !hasStaticProps, buildManifest: isFallbackError ? fallbackBuildManifest : buildManifest, nextFontManifest, reactLoadableManifest, assetPrefix: nextConfig.assetPrefix, previewProps: prerenderManifest.preview, images: nextConfig.images, nextConfigOutput: nextConfig.output, optimizeCss: Boolean(nextConfig.experimental.optimizeCss), nextScriptWorkers: Boolean(nextConfig.experimental.nextScriptWorkers), domainLocales: (_nextConfig_i18n = nextConfig.i18n) == null ? void 0 : _nextConfig_i18n.domains, crossOrigin: nextConfig.crossOrigin, multiZoneDraftMode, basePath: nextConfig.basePath, disableOptimizedLoading: nextConfig.experimental.disableOptimizedLoading, largePageDataBytes: nextConfig.experimental.largePageDataBytes, isExperimentalCompile, experimental: { clientTraceMetadata: nextConfig.experimental.clientTraceMetadata || [] }, locale, locales, defaultLocale, setIsrStatus: routerServerContext == null ? void 0 : routerServerContext.setIsrStatus, isNextDataRequest: isNextDataRequest && (hasServerProps || hasStaticProps), resolvedUrl, // For getServerSideProps and getInitialProps we need to ensure we use the original URL // and not the resolved URL to prevent a hydration mismatch on // asPath resolvedAsPath: hasServerProps || hasGetInitialProps ? (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$router$2f$utils$2f$format$2d$url$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["formatUrl"])({ // we use the original URL pathname less the _next/data prefix if // present pathname: isNextDataRequest ? (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$page$2d$path$2f$normalize$2d$data$2d$path$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["normalizeDataPath"])(originalPathname) : originalPathname, query: originalQuery }) : resolvedUrl, isOnDemandRevalidate, ErrorDebug: (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$request$2d$meta$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["getRequestMeta"])(req, 'PagesErrorDebug'), err: (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$request$2d$meta$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["getRequestMeta"])(req, 'invokeError'), // needed for experimental.optimizeCss feature distDir: __TURBOPACK__imported__module__$5b$externals$5d2f$path__$5b$external$5d$__$28$path$2c$__cjs$29$__["default"].join(/* turbopackIgnore: true */ process.cwd(), routeModule.relativeProjectDir, routeModule.distDir) } }).then((renderResult)=>{ const { metadata } = renderResult; let cacheControl = metadata.cacheControl; if ('isNotFound' in metadata && metadata.isNotFound) { return { value: null, cacheControl }; } // Handle `isRedirect`. if (metadata.isRedirect) { return { value: { kind: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["CachedRouteKind"].REDIRECT, props: metadata.pageData ?? metadata.flightData }, cacheControl }; } return { value: { kind: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["CachedRouteKind"].PAGES, html: renderResult, pageData: renderResult.metadata.pageData, headers: renderResult.metadata.headers, status: renderResult.metadata.statusCode }, cacheControl }; }).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$constants$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["BaseServerSpan"].handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); // Propagate http.route to the parent span if one exists // (e.g. a platform-created HTTP span in adapter // deployments). if (parentSpan && parentSpan !== span) { parentSpan.setAttribute('http.route', route); parentSpan.updateName(name); } } else { span.updateName(`${method} ${srcPage}`); } }); } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { const silenceLog = false; await routeModule.onRequestError(req, err, { routerKind: 'Pages Router', routePath: srcPage, routeType: 'render', revalidateReason: (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$instrumentation$2f$utils$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["getRevalidateReason"])({ isStaticGeneration: hasStaticProps, isOnDemandRevalidate }) }, silenceLog, routerServerContext); } throw err; } }; // if we've already generated this page we no longer // serve the fallback if (previousCacheEntry) { isIsrFallback = false; } if (isIsrFallback) { const fallbackResponse = await routeModule.getResponseCache(req).get(routeModule.isDev ? null : locale ? `/${locale}${srcPage}` : srcPage, async ({ previousCacheEntry: previousFallbackCacheEntry = null })=>{ if (!routeModule.isDev) { return (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$utils$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["toResponseCacheEntry"])(previousFallbackCacheEntry); } return doRender(); }, { routeKind: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$route$2d$kind$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["RouteKind"].PAGES, isFallback: true, isRoutePPREnabled: false, isOnDemandRevalidate: false, incrementalCache: await routeModule.getIncrementalCache(req, nextConfig, prerenderManifest, isMinimalMode), waitUntil: ctx.waitUntil }); if (fallbackResponse) { // Remove the cache control from the response to prevent it from being // used in the surrounding cache. delete fallbackResponse.cacheControl; fallbackResponse.isMiss = true; return fallbackResponse; } } if (!isMinimalMode && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } if (isIsrFallback && (previousCacheEntry == null ? void 0 : (_previousCacheEntry_value = previousCacheEntry.value) == null ? void 0 : _previousCacheEntry_value.kind) === __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["CachedRouteKind"].PAGES) { return { value: { kind: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["CachedRouteKind"].PAGES, html: new __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$render$2d$result$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["default"](Buffer.from(previousCacheEntry.value.html), { contentType: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["HTML_CONTENT_TYPE_HEADER"], metadata: { statusCode: previousCacheEntry.value.status, headers: previousCacheEntry.value.headers } }), pageData: {}, status: previousCacheEntry.value.status, headers: previousCacheEntry.value.headers }, cacheControl: { revalidate: 0, expire: undefined } }; } return doRender(); }; const result = await routeModule.handleResponse({ cacheKey, req, nextConfig, routeKind: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$route$2d$kind$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["RouteKind"].PAGES, isOnDemandRevalidate, revalidateOnlyGenerated, waitUntil: ctx.waitUntil, responseGenerator: responseGenerator, prerenderManifest, isMinimalMode }); // if we got a cache hit this wasn't an ISR fallback // but it wasn't generated during build so isn't in the // prerender-manifest if (isIsrFallback && !(result == null ? void 0 : result.isMiss)) { isIsrFallback = false; } // response is finished is no cache entry if (!result) { return; } if (hasStaticProps && !isMinimalMode) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : result.isMiss ? 'MISS' : result.isStale ? 'STALE' : 'HIT'); } let cacheControl; if (!hasStaticProps || isIsrFallback) { if (!res.getHeader('Cache-Control')) { cacheControl = { revalidate: 0, expire: undefined }; } } else if (is404Page) { const notFoundRevalidate = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$request$2d$meta$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["getRequestMeta"])(req, 'notFoundRevalidate'); cacheControl = { revalidate: typeof notFoundRevalidate === 'undefined' ? 0 : notFoundRevalidate, expire: undefined }; } else if (is500Page) { cacheControl = { revalidate: 0, expire: undefined }; } else if (result.cacheControl) { // If the cache entry has a cache control with a revalidate value that's // a number, use it. if (typeof result.cacheControl.revalidate === 'number') { var _result_cacheControl; if (result.cacheControl.revalidate < 1) { throw Object.defineProperty(new Error(`Invalid revalidate configuration provided: ${result.cacheControl.revalidate} < 1`), "__NEXT_ERROR_CODE", { value: "E22", enumerable: false, configurable: true }); } cacheControl = { revalidate: result.cacheControl.revalidate, expire: ((_result_cacheControl = result.cacheControl) == null ? void 0 : _result_cacheControl.expire) ?? nextConfig.expireTime }; } else { // revalidate: false cacheControl = { revalidate: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["CACHE_ONE_YEAR_SECONDS"], expire: undefined }; } } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheControl && !res.getHeader('Cache-Control')) { res.setHeader('Cache-Control', (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$cache$2d$control$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["getCacheControlHeader"])(cacheControl)); } // notFound: true case if (!result.value) { var _result_cacheControl1; // add revalidate metadata before rendering 404 page // so that we can use this as source of truth for the // cache-control header instead of what the 404 page returns // for the revalidate value (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$request$2d$meta$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["addRequestMeta"])(req, 'notFoundRevalidate', (_result_cacheControl1 = result.cacheControl) == null ? void 0 : _result_cacheControl1.revalidate); res.statusCode = 404; if (isNextDataRequest) { if (deploymentId) { res.setHeader(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["NEXT_NAV_DEPLOYMENT_ID_HEADER"], deploymentId); } res.end('{"notFound":true}'); return; } return await render404(); } if (result.value.kind === __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["CachedRouteKind"].REDIRECT) { if (isNextDataRequest) { if (deploymentId) { res.setHeader(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["NEXT_NAV_DEPLOYMENT_ID_HEADER"], deploymentId); } res.setHeader('content-type', __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["JSON_CONTENT_TYPE_HEADER"]); res.end(JSON.stringify(result.value.props)); return; } else { const handleRedirect = (pageData)=>{ const redirect = { destination: pageData.pageProps.__N_REDIRECT, statusCode: pageData.pageProps.__N_REDIRECT_STATUS, basePath: pageData.pageProps.__N_REDIRECT_BASE_PATH }; const statusCode = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$redirect$2d$status$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["getRedirectStatus"])(redirect); const { basePath } = nextConfig; if (basePath && redirect.basePath !== false && redirect.destination.startsWith('/')) { redirect.destination = `${basePath}${redirect.destination}`; } if (redirect.destination.startsWith('/')) { redirect.destination = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$shared$2f$lib$2f$utils$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["normalizeRepeatedSlashes"])(redirect.destination); } res.statusCode = statusCode; res.setHeader('Location', redirect.destination); if (statusCode === __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$client$2f$components$2f$redirect$2d$status$2d$code$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["RedirectStatusCode"].PermanentRedirect) { res.setHeader('Refresh', `0;url=${redirect.destination}`); } res.end(redirect.destination); }; await handleRedirect(result.value.props); return null; } } if (result.value.kind !== __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$response$2d$cache$2f$types$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["CachedRouteKind"].PAGES) { throw Object.defineProperty(new Error(`Invariant: received non-pages cache entry in pages handler`), "__NEXT_ERROR_CODE", { value: "E695", enumerable: false, configurable: true }); } // In dev, we should not cache pages for any reason. if (routeModule.isDev) { res.setHeader('Cache-Control', 'no-cache, must-revalidate'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } // when invoking _error before pages/500 we don't actually // send the _error response if ((0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$request$2d$meta$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["getRequestMeta"])(req, 'customErrorRender') || isErrorPage && isMinimalMode && res.statusCode === 500) { return null; } // Add deployment ID header for data requests if (isNextDataRequest && !isErrorPage && !is500Page) { if (deploymentId) { res.setHeader(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["NEXT_NAV_DEPLOYMENT_ID_HEADER"], deploymentId); } } await (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$send$2d$payload$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["sendRenderResult"])({ req, res, // If we are rendering the error page it's not a data request // anymore result: isNextDataRequest && !isErrorPage && !is500Page ? new __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$render$2d$result$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["default"](Buffer.from(JSON.stringify(result.value.pageData)), { contentType: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$lib$2f$constants$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["JSON_CONTENT_TYPE_HEADER"], metadata: result.value.html.metadata }) : result.value.html, generateEtags: nextConfig.generateEtags, poweredByHeader: nextConfig.poweredByHeader, cacheControl: routeModule.isDev ? undefined : cacheControl }); }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(); } else { parentSpan = tracer.getActiveScopeSpan(); await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$constants$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["BaseServerSpan"].handleRequest, { spanName: `${method} ${srcPage}`, kind: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$lib$2f$trace$2f$tracer$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["SpanKind"].SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof __TURBOPACK__imported__module__$5b$externals$5d2f$next$2f$dist$2f$shared$2f$lib$2f$no$2d$fallback$2d$error$2e$external$2e$js__$5b$external$5d$__$28$next$2f$dist$2f$shared$2f$lib$2f$no$2d$fallback$2d$error$2e$external$2e$js$2c$__cjs$29$__["NoFallbackError"])) { const silenceLog = false; await routeModule.onRequestError(req, err, { routerKind: 'Pages Router', routePath: srcPage, routeType: 'render', revalidateReason: (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$instrumentation$2f$utils$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["getRevalidateReason"])({ isStaticGeneration: hasStaticProps, isOnDemandRevalidate }) }, silenceLog, routerServerContext); } // rethrow so that we can handle serving error page throw err; } }; }; }), "[project]/node_modules/next/dist/esm/build/templates/pages.js { INNER_PAGE => \"[project]/node_modules/next/dist/pages/_error.js [ssr] (ecmascript)\", INNER_DOCUMENT => \"[project]/node_modules/next/document.js [ssr] (ecmascript)\", INNER_APP => \"[project]/node_modules/next/app.js [ssr] (ecmascript)\" } [ssr] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "config", ()=>config, "default", ()=>__TURBOPACK__default__export__, "getServerSideProps", ()=>getServerSideProps, "getStaticPaths", ()=>getStaticPaths, "getStaticProps", ()=>getStaticProps, "handler", ()=>handler, "reportWebVitals", ()=>reportWebVitals, "routeModule", ()=>routeModule, "unstable_getServerProps", ()=>unstable_getServerProps, "unstable_getServerSideProps", ()=>unstable_getServerSideProps, "unstable_getStaticParams", ()=>unstable_getStaticParams, "unstable_getStaticPaths", ()=>unstable_getStaticPaths, "unstable_getStaticProps", ()=>unstable_getStaticProps ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$route$2d$modules$2f$pages$2f$module$2e$compiled$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/route-modules/pages/module.compiled.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$route$2d$kind$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/route-kind.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$build$2f$templates$2f$helpers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/build/templates/helpers.js [ssr] (ecmascript)"); // Import the app and document modules. var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$document$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/document.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$app$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/app.js [ssr] (ecmascript)"); // Import the userland code. var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$pages$2f$_error$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/pages/_error.js [ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$route$2d$modules$2f$pages$2f$pages$2d$handler$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/esm/server/route-modules/pages/pages-handler.js [ssr] (ecmascript)"); ; ; ; ; ; ; ; const __TURBOPACK__default__export__ = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$build$2f$templates$2f$helpers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["hoist"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$pages$2f$_error$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__, 'default'); const getStaticProps = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$build$2f$templates$2f$helpers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["hoist"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$pages$2f$_error$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__, 'getStaticProps'); const getStaticPaths = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$build$2f$templates$2f$helpers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["hoist"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$pages$2f$_error$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__, 'getStaticPaths'); const getServerSideProps = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$build$2f$templates$2f$helpers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["hoist"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$pages$2f$_error$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__, 'getServerSideProps'); const config = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$build$2f$templates$2f$helpers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["hoist"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$pages$2f$_error$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__, 'config'); const reportWebVitals = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$build$2f$templates$2f$helpers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["hoist"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$pages$2f$_error$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__, 'reportWebVitals'); const unstable_getStaticProps = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$build$2f$templates$2f$helpers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["hoist"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$pages$2f$_error$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__, 'unstable_getStaticProps'); const unstable_getStaticPaths = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$build$2f$templates$2f$helpers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["hoist"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$pages$2f$_error$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__, 'unstable_getStaticPaths'); const unstable_getStaticParams = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$build$2f$templates$2f$helpers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["hoist"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$pages$2f$_error$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__, 'unstable_getStaticParams'); const unstable_getServerProps = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$build$2f$templates$2f$helpers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["hoist"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$pages$2f$_error$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__, 'unstable_getServerProps'); const unstable_getServerSideProps = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$build$2f$templates$2f$helpers$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["hoist"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$pages$2f$_error$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__, 'unstable_getServerSideProps'); const routeModule = new __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$route$2d$modules$2f$pages$2f$module$2e$compiled$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["PagesRouteModule"]({ definition: { kind: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$route$2d$kind$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["RouteKind"].PAGES, page: "/_error", pathname: "/_error", // The following aren't used in production. bundlePath: '', filename: '' }, distDir: ("TURBOPACK compile-time value", ".next/dev") || '', relativeProjectDir: ("TURBOPACK compile-time value", "") || '', components: { // default export might not exist when optimized for data only App: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$app$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["default"], Document: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$document$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["default"] }, userland: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$pages$2f$_error$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__ }); const handler = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$esm$2f$server$2f$route$2d$modules$2f$pages$2f$pages$2d$handler$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__["getHandler"])({ srcPage: "/_error", config, userland: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$pages$2f$_error$2e$js__$5b$ssr$5d$__$28$ecmascript$29$__, routeModule, getStaticPaths, getStaticProps, getServerSideProps }); }), ]; //# sourceMappingURL=node_modules_01ed9g5._.js.map